Bisect, don't guess
当一个bug在工作版本和破损版本之间某个地方出现时,二进制搜索历史而不是眼球diff——检查中点,然后重复,直到一个变化被保留下来.
格子越深,表示该主题在这项指标上越高。
低高
大部分时间分写新的代码,在审查期间读别人的代码,修补bug,和队友谈论下一步要建设什么. 会议、规划和指导花费的时间比新来者预期的要多。 高级工程师个人写的代码往往比初级工程师要少,在设计决策,评论和解除对他人的封锁方面花费更多的时间.
没有,但它仍然是最常见和最低的防爆路线。 四年制学位教授算法,数据结构和系统概念,在工作上学习费用昂贵. Bootcamp毕业生和自学工程师确实被雇佣,尤其是被较小的公司雇用,但通常需要强大的组合或开源工作来取代证书.
部分已经是了。 现代代码编辑器中构建的工具现在为经常使用这些代码的工程师写了很大一部分常规代码——锅炉板,第一稿测试,语言之间的翻译. 更难实现自动化的是决定构建什么,为什么,以及如何塑造一个系统,使它能与真正的用户保持接触和失败。
它因国家和公司而异。 在美国,年中值约为133 000美元;在德国,约为69 000欧元;在印度,该行业雇用人数最多,全国平均接近900,000美元。 大型技术公司的高级工程师和工作人员工程师,一旦列入股票补偿,可以赚取全国中位数的数倍。
在实践中,很少——标题重叠,公司使用时不一致。 "程序员"是最早的术语和强调书写代码;"开发者"在网络和产品公司中很常见;"软件工程师"倾向于应用从旧的工程领域借来的有纪律的流程,测试和设计的想法,用于建设软件. 职务说明很少一致地加以区分。
在大多数已经成立的技术公司,是的:现场或带回家的技术访谈,经常涉及共享文档或白板上的算法问题,仍然是标准过滤器,同时是系统设计回合,用于更高级的角色. 较小的公司和初创企业更可能取代付费的试办项目、投资组合审查或关于过去工作的对话。
工程师连续打字8小时的形象大多是错误的. 读别人的代码,推理一个没有明显原因的失败,向那些不是工程师的人解释技术权衡,承担着与写新代码一样多的工作——往往更多的是,为过头几年的任何人.
专业内部流传下来的手艺 不太了解要学习哪种语言, 更了解思维习惯: 如何系统地寻找一个错误而不是猜测, 何时离开工作代码, 当删除代码是你整个星期所做的最有价值的事情。
将一个模糊,大的要求打碎成小的,可独立建造的和可测试的棋子——这种技能最能将生产工程师与那些拖延大任务的人区分开来.
系统缩小一个系统在何地和为何行为不当,而不是猜测和改变事物,直到它发生作用.
选择如何将服务,数据和团队分开,这样整个事情可以持续安全地改变多年,而不仅仅是在第一天工作.
向非工程师解释技术取舍,为审查者写出明确的改动,谈判范围——大多数专业守则的阅读和争论远远超出其写法.
写作检查,在用户完成前会捕捉破损的更改,并保持一个代码库足够清晰,让下一个人——常常是同一个工程师,几个月后——能够安全地修改.
语言,框架和现在的AI工具每隔几年翻一次;工程师在第一个工作高原后就刻意停止学习.
赶在一夜之间发出警报和信息,然后举行一个简短的站立会议,小组在会上说出它的工作内容和阻碍的内容。
当今最受保护的区块,理想的做法是取消通知,执行需要持续集中的特征或固定。
真正的突破;许多工程师报告说,这是在紧缩中消失的第一件事,也是他们后悔失去的第一件事。
阅读同事的拉拉请求,在难题上配对,以及往往在下午集群的设计或规划会议.
完成和运送一天的零钱, 看着它安全地推出, 留下的笔记明天或任何人在待命一夜。
个人时间和睡眠——除非是随时待命的一周,电话警报可以把凌晨3点变成计划外的生产事件.
从业者真正口耳相传的技艺——不是鸡汤。
当一个bug在工作版本和破损版本之间某个地方出现时,二进制搜索历史而不是眼球diff——检查中点,然后重复,直到一个变化被保留下来.
完整的错误消息,堆栈跟踪和周围的日志行通常已经包含答案;跳跃直达源头,猜想浪费了计算机自由提供给你的一个证据.
当一个特性难于添加时,这通常是一个符号,代码的形状会对其产生错误. 首先重构,没有行为改变,直到特性变成一个小的,明显的diff——然后做diff.
在删除或简化代码之前,一个配置值,或者一个你不明白的支票,找出它放在那里的原因. 这可能是悄悄地保护 防止多年没有发生的失败 正是因为这个原因
已经不存在的代码不能有一个错误,不能混淆下一个读者,并且不需要更新. 清除死路和未使用的特征应与运输特征的方式相同。
大声解释问题,逐行解释,在请求帮助之前,先向同事甚至无生命的物体解释. 解释它的行为 经常在任何人回答之前 暴露出虫子
Visual Studio Code和JetBrains的IDES占据主导地位;现在两者都构建了AI辅助的自动完成,并直接聊天进入编辑器.
在Torvalds于2005年撰写之后,版本控制系统几乎使整个行业标准化;没有它,几乎没有船只。
Jira, Linear 或 GitHub Issues 将积压的bug 和特征变成一个团队可以规划一周或四分之一左右的东西.
自动系统,在每个变化上建立,测试和部署代码,将神经手动事件的释放变成例行事件.
像GitHub Copilot这样的工具现在写了工程师所接受的一大部分线路,将日常工作转向审查和指导而不是打字.
选择时髦的语言,框架或架构,因为它在简历上看起来不错,而不是因为它适合问题,留下了复杂性,下一个团队必须保持.
模式匹配一个被记住的固定,而不是读到程序实际报告的内容,这可以燃烧时间追逐错误的事业.
刮掉一个工作系统,从头重建它"适当"是一个有名的冒险动作——Netscape的1990年代后期完全重写它的浏览器是一个被广泛引用的例子,它让公司付出了市场领先的代价.
不限同一领域,六项评分最接近的职业。
从数据中寻找规律、构建预测模型——一个2008年才出现的职位名称,建立在三个世纪计数、检验与可视化证据的传统之上。
抗AI 38 📦构建用于训练、部署、监控和治理生产环境中机器学习模型的系统。
抗AI 54 🗺️决定公司接下来该做什么、为什么要做——把顾客需求、商业目标和工程限制,整合成一份没有其他人能完全独自拥有的共同计划。
抗AI 50 🔐通过发现、防范和响应数字攻击,保护系统、数据与人员的安全。
抗AI 63 🌿领导战略、衡量和报告,帮助组织减少环境和社会危害,同时履行业务义务。
抗AI 66 🧾账簿的守护者:这门手艺古老到几乎发明了文字本身,如今却在与为自动化它而造的软件谈判。
抗AI 35设计并测试了机器智能背后的算法,在一个领域,现在竞相将自己研究过程中越来越大的份额自动化.
抗AI 50 🛰️设计、分析并认证离地而行的飞机、火箭与航天器,在不容猜测的安全裕度下工作。
抗AI 74 🌉把河流、岩石与重力变成桥梁、道路与清洁饮水的职业——自伊姆霍特普起,文明安静的承重行当。
抗AI 72 🔌每台计算机,手机和武器内部的设计和编织晶体管,使用精确到只有地球上少数工厂能运行的机器.
抗AI 60 🦾设计那些能感知,决定和采取行动的机器 在物理世界里,困难的问题永远不是智能,而是世界本身.
抗AI 65 🔐通过发现、防范和响应数字攻击,保护系统、数据与人员的安全。
抗AI 63 📦构建用于训练、部署、监控和治理生产环境中机器学习模型的系统。
抗AI 54 🌬️设计、建造和改进风能、太阳能、存储和电网系统,将可再生资源转化为可靠的电力。
抗AI 72