Thomas Bormans在Unsplash上拍摄的照片
为了成为一名可以委托事情的工程师,我总结了我希望你记住的事情。
比那些技能技能低下(如无法编码)的工程师更被回避的工程师是那些无法估计事情的工程师。那些在前哨事情的人比其他人更准确地估计事情。

为了进行估计,有必要精确理解要进行什么样的设计,要创建哪些功能,以及影响范围是什么。无法估计意味着我们没有精确理解事情内容,我们没有理解技能困难,我们没有识别不愿定性,我们没有精确理解自己的技能。
2.您可以详细识别事情任务并创建TODO。如果您精确理解了要创建的功能和设计,您可以将事情分解为详细的任务。如果您无法将任务分解成更小的部分,这意味着您对须要创建的功能没有足够的理解。
如果你能创建一个TODO,将任务分解成小块,然后连续事情,你可以大致理解完成任务须要多少韶光。能够将你的任务分解成更小的部分,纵然你把它们写在纸上。
3.准确报告进度进度报告很主要。这真的很主要。如果你见告客户事情将在一天内完成,而你做不到,这会给人留下不好的印象。你不会再找到另一份事情了。
请不要再试图用你的胆量做一些事情,只是由于你说它很快就会完成。熬夜无法精确完成第二天的任务,这很烦人。主要的是准确报告进展情形。
如果你要迟到,让他们知道你会迟到。纵然你做不到,如果你清楚地见告他们你由于某种缘故原由会迟到,他们也会理解的。你周围的人也会支持你。如果你做不到,就说“我做不到”。
4.不要只是照你说的去做我有时会听到人们说:“这便是详细设计文档所说的,以是我认为这很奇怪,但我完备按照写的构建了它。”不要仅仅由于设计文档中写着就连续建造一些东西。如果您认为事情不对劲,请报告并自行考虑。我们不须要只做被奉告的事情的工程师。
一些才华横溢的工程师已经实现了这个功能,由于他们认为这是必要的,并建议添加它。能够在不报告的情形下添加任意功能令人不安,但我更乐意将事情委托给提出此类建议的人。
5.如果你不明白,就搜聚见地有时,有些人不理解某件事,思考了好几天,在任务上没有任何进展。我希望你尽快与我切磋,由于分配给那个人的事情韶光表会被打乱,给你周围的人带来不便。当一个项目变得繁忙时,领导者可能无法关注每个人,因此他或她可能不会把稳到这个人的事情没有进展。
如果您在考虑了30分钟后无法弄清楚,请咨询我们。然而,请不要只是说你不明白,只是不假思虑地寻求建议。
6.理解你能做什么和不能做什么每个人都有上风和劣势。如果你不善于某件事,而且彷佛须要很永劫光,请见告我,或者你可以把任务传给别人。不要说你什么都能做。它打乱了我的日程安排,而且很烦人,由于当我做不到的时候,我周围的人必须打扫卫生。
7.理解生产力的悲观方面听说工程师的生产力相差10到100倍,我认为这是真的。同样真实的是,有些人对生产力产生了负面影响。
有时,设计或程序非常不得当,以至于下一个创建功能的人终极不得不重做所有事情,这对做这种事情的人的生产力产生了负面影响。最好不要让人们以悲观的办法事情,以是请只管即便不要让这种情形发生。
8.立即显示您的结果精良的人会立即向您展示他们创造的东西。另一方面,有些人不愿意向我们展示他们的结果。有些人在事情到期时给我看。当有人提出这样的建议时,这是最糟糕的事情,比如“让我们连续吧,由于已经没有末了期限了。”
请立即向我们显示结果,以确认政策是否精确。如果您是一名程序员,请每天至少发送一次PR。如果您是设计师,请以书面形式向我们展示您的想法,纵然很粗糙。
9.卖力创建的功能有些人只是创建一个函数,让它独处,如果发生缺点,他们会把它留给别人。乐意照顾你创建的功能,直到末了。我不能把事情请托给那些不能为自己创造的东西卖力的人。
10。对技能卖力采取新技能时,不要仅仅由于它受欢迎或你想考试测验而采取它。如果您正在招聘某人,请努力成为最好的专业人士,并乐意教诲他人。
请不要溘然采取您以前在生产中从未利用过的技能。任何人引入一项新技能都是不幸的,纵然他们不熟习它,只是系统崩溃了,其他人也不理解它。
11.考虑速率和质量之间的平衡根据阶段和开拓地点,有时须要开拓速率,有时须要质量。
对付处理金钱、合同等的功能,如果缺点绝对会毁坏该功能,请小心减慢开拓速率并提高质量。另一方面,对付管理屏幕等东西,纵然有缺点也没紧要,请开拓强调速率的功能。
12.对创建的功能感兴趣请对您即将创造的东西感兴趣。请想象一下这里会发生什么,这种模式会发生什么,它将如何用于实际业务,并创建一个功能。请不要在没有任何兴趣的情形下事情是可以的。
13.考试测验艰巨的任务有些人总是承担看似随意马虎的任务,而从意外验测验困难的任务。他们可能担心,如果他们做了一些困难的事情,没有取得进展,会给他们留下不好的印象,但领导们很理解这项技能,以是他们明白这项任务很困难,须要很永劫光。他们会理解和欣赏它。如果你只做看似随意马虎的任务,终极做了很多事情,人们可以通过看着你来判断,而你不能评判他们。
14.理解你的优先事变与其从你想做的任务开始,不如从最高优先级开始。在最坏的情形下,你不想迟到,由于你正在创建一个无关紧要的功能。
15.提高把稳力理解设计程序或编写代码须要非常专注。试着提高你的把稳力,只管即便减少滋扰。
16.永劫光事情=不认为自己在事情出于某种缘故原由,有些人仍旧有误解,认为永劫光事情的人意味着能做到这一点的人。有些人彷佛已经事情了很永劫光,但实际上,他们根本没有取得任何成果。在外洋,永劫光事情的人被认为无法在规定的韶光范围内完成事情,并且得到的分数很低,我也这么认为。
要明白,你一天集中把稳力的能力是有限的。如果您不介意17.如果你觉得不舒畅,就安歇一下
如果你在觉得不舒畅的情形下事情,你不会得到任何结果。如果你不专注于事情,你将不会得到任何结果。请安歇。
18.让统统都更有效率如果你创造自己一遍又一各处做同样的事情,想想如何让它更有效率。我希望工程师能成为提高事情效率的人。
19.不要有太多的任务不要有太多的任务。缘故原由可能是他们必须自己照顾好统统,他们想做统统,他们对自己的能力过于自傲,或者根本没有足够的人。如果你有太多的任务,它们都会出毛利。其他人也会被任务所动摇。
不要承担超过你能处理的任务。如果您有太多任务,请通过提高警报、移交或将任务交给其他人或决定不实行任务来做出回应。能够决定不做某事的人是精良的人。
20.理解小任务频年夜任务须要更长的韶光如果你有8个任务可以在一小时内完成,1个任务须要一整天,前者将须要更长的韶光。理解高下文切换是有代价的。
21.要知道,从0到1到1到9完成所需的韶光不是线性的。从头开始创建函数与创建函数所需的韶光不同。并理解完成它须要更多韶光。仅仅由于它完成了90%,并不虞味着只剩下一点点事情了。
22.明白会议会占用人们的韶光不要不假思虑地哀求开会。要明白,会议会占用其他人的事情韶光。如果会议是绝对必要的,请制订议程,设定目标,只约请必要的人,并保持会议简短。试着让你的会议更有效率。持续超过一个小时的会议是摧残浪费蹂躏韶光,由于你无法集中把稳力,你的效率会低落。
23.成为利用Y理论管理或被管理的工程师令人惊异的是,有一定数量的工程师,无论他们站多久,除非供应详细的事情指示,否则都无法连续事情。过去有一些工程师声称,除非他们给出详细的指示,否则他们什么都做不了。
我不想让工程师认为那个人总是
成为一名能够独立行动的工程师。与其把任务交给你,不如学习如何自己创建它们。我希望我的事情场所成为X/Y理论的理论。
24.理解业务理解这个别系是基于业务的。请试着设身处地为那些在创建系统时将利用这些功能的人着想。创建系统时,请理解如何利用此功能,当前的事情流是什么,以及该当利用哪些功能使其更易于利用。
业务系统每每更难利用,但在许多情形下,这是由于工程师不理解实际事情。请不要让人们说工程师创建的屏幕很难利用。
25.想想未来不要创建临时功能。在创建新函数时,想象一下未来会进行什么样的扩展,以及您认为在创建系统时会变成什么样的函数。
你不必一下子创造统统。然而,请努力设计和想象。常常发生的情形是,统统都被颠覆了,或者全体功能必须重写,由于它无法处理某些情形。一旦系统开始事情,要变动它并不随意马虎。人才越多,他们在设计和开拓系统方面就越积极主动。成为千里眼。
26.理解影响范围在添加新功能或修正现有功能时,请务必澄清哪些功能受到影响以及影响范围。
27.理解掩护须要韶光不要不假思虑地添加新功能。照顾创建和激活的功能也本钱高昂。
28.保持功能大略最好的系统在功能上出人意料地大略。一个有许多条件分支的系统质量会很差,开拓、掩护和测试事情量将呈指数级增长。让我们只管即便不要增加模式的数量。
29.关注非常系统设计一个非常系统比一个正常系统更难。工程师技能水平的差异决定了他们如何处理和设计非常系统。
请能够精确编写验证。仅仅输入你想要的数据并让它发挥浸染是不足的。请成为一个可以想象如果您将此字段为空会发生什么的人,或者如果您输入无效的输入值,该当会发生什么行为。用户以他们从未想象过的办法实行操作。
30.理解如何测试学习软件测试的根本知识。没有测试设计,就无法实现高质量的系统设计。
测试不仅仅是随机击中屏幕。这是关于确定精确的成分(水平/成分)和情景,思考组合,并设想各种模式。可以肯定地说,没有或无法精确进行测试的工程师的技能水平很低。
31.理解实质不要只相信客户的话。“我须要这种功能,我认为有这样的屏幕会很好。”有些客户会提出这样的建议,但你必须自己考虑是否有必要让他们完备按照原样。
纵然您完备按照客户所说的创建系统,在许多情形下,您也无法创建一个好的系统。当事情出错时,不要把任务推到客户身上。请提出您自己的改进想法。
32.做事器端验证请务必在做事器端也进行验证。对UI/UX实行客户端验证。做事器处理数据。无论您屏蔽屏幕多少,创建保存无效值的情形都没故意义。
33.不要不假思虑地复制和粘贴,不要留下你不明白的东西。不要只是从互联网上复制和粘贴代码。不要遗漏你不理解的功能。请思考并编写自己的代码。
34.在开拓期间查看日志有些人在开拓过程中根本不看日志。您可以看到缺点并找到像N+1这样的性能问题。不要忽略这些基本问题。
35.试着修复破碎的窗户有一种东西叫做破碎的窗户理论。如果窗户分裂的建筑物无人扼守,该地区的公共安全将恶化。
系统是一样的。如果引入肮脏的代码或设计,周边地区将变得不屈安,质量将恶化。只管即便不要冲破窗户。如果你创造一些肮脏的东西,试着修复它。
36.评论者不是测试者当我们提交代码审查时,一些工程师提交的代码显然不起浸染。你自己正常运行吗?修正代码,自己“测试”,然后提交以供审核。编写代码并提交评论而不至少运行一次是不礼貌的。审阅者不是测试者。请遵守最低限度的礼仪。
37.不要用强硬的词语避免说“这个代码很糟糕”或“这是一个糟糕的设计”之类的话,或任何贬低某人性情的话。无论一个人多么有才华,我都不想把事情委托给行为有问题的人。这是由于那个人说的话会大大降落他们周围人的积极性和生产力。
38.能够自己创建新功能修正现有功能是可能的,但当受托设计和开拓新功能时,有些人根本做不到,或者创造了质量极低的东西。请发展您的技能技能,以便您可以自己创建新功能。如果你不能创造新的东西,你就不能把事情永久留给我们。
39.理解已经利用了很永劫光的技能有些工程师不理解基本技能,认为RDB现在不盛行,Linux操作可以留给托管做事。有动力去研究自古以来一贯利用的技能。它本日仍在利用是有缘故原由的。不懂根本知识的工程师将无法运用它。
40.始终努力跟上新技能。技能在软件行业发展非常迅速。常常发生的情形是,去年盛行的技能今年已经由时了。关键是跟上新技能,并理解它为什么受欢迎。如果你每天忙于事情,无法跟上新技能,你终极会在意识到之前成为一名效率低下的工程师。
41.站在巨人的肩膀上你很少是第一个提出全新想法的人。一定有先例。复制其他人创建的内容并在此根本上构建。如果你骑在巨人上,你可以更快地做出更好的事情。
42.学习功能性措辞请学习功能性措辞,纵然只有一次。精良的工程师理解函数式措辞的根本知识。编写没有副浸染的代码,以声明性而不是命令性编写流程,并精确划分流程。学习函数式编程的根本知识将极大地改变您设计和编写程序的办法。
43.节制一种措辞/技能拥抱你的上风。广泛和浅薄地学习很主要,但如果你没有任何分外技能,你就不会知道你可以把什么样的事情请托给别人。
44.学习多种编程措辞或框架努力每年至少学习一种新措辞/框架。伟大的工程师总是学习多种措辞。你可以从其他措辞中学习新的想法。用Ruby编写干净代码的人纵然措辞发生变革,无论是Java还是PHP,也会编写干净的代码。
45.提高你的调试技能请能够调试程序。当缺点发生时,得到立即想象缺点发生缘故原由的能力。大多数时候,处理失落败的人都是才华横溢的工程师。
46.保存你的技能技能不要只是在安歇日事情。请努力创造新技能。技能技能须要节约。纵然是与事情无关的技能,总有一天也会对项目派上用场。
47.不要关心或依赖别人的评价唯一最理解你的人便是你自己。与其以能赢得他人赞赏的办法事情或行为,不如每天努力做你能知足的最好的事情。
48.要明白,你一天集中把稳力的能力是有限的。工程师一天能集中多少韶光是有限的。系统开拓是一项令人紧张的任务。你不能连续事情那么久,以是当你事情时一定要明白这一点。如果你熬夜事情,你的事情效率第二天肯定会低落,永劫光