新手软件工程师如何避免犯下最大的错误

作者:Edmond Lau ,The Effective Engineer   作者。  Soft & Share 获作者授权翻译。

身为新手软件工程师,由于缺少经验你很有可能犯了些战略上的错误。 也许你自己创建了某一个功能后才发现原来早就有一个共同的设计模式原本可帮助你做得更好,或是你意外地在已经上线的服务或是产品推出有问题的代码,或是你忘了处理系统扩展与性能表现,让你在截止日前完工前备感压力辛苦地赶工。

错误会发生,且这些错误都只是学习中正常的部分。

更重要的是你要确定大的决策都正确且你避开了最昂贵的错误。对于新进的软件工程师,长期来看最大的错误会是你没有将你的学习速度最佳化。 有些人犯了这个错误是因为他们安于现状,其他则是因为他/她们自以为已经懂很多而太过骄傲,更多人掉入这陷阱是因为他/她们害怕失败而不去尝试新的东西,而这也是注定落后原因之一。

在学习速度上一点点差额长期下来就变成很大的差别,因为对自己的投资的效果会随着时间复利增加。今日你所学的知识与教训奠定了你未来机会的基础,让你能在机会来临的时候已经准备好。而且越早对自己投资,这些投资在你事业上将有更高的的加倍效果。

Alfred Lin 与其他在 Zappos 的领导团队要求成员每天进步1% ( 注一 ),如果你可以持续每天1%,一年365天,在一年过后,你将会超越37倍的增强,不是365% (3.65倍)。 这是复利成长的力量。

所以没有把握时间学习与成长的机会成本非常得高。当在做决策的当下,你应该要自问: 哪个选择将增加我学习的速度? 长期来说,能让你更快学习成长的抉择,将带你走向更宽广的成功大道。

另一个专注于你的学习速度非常有价值的理由—这是个可行的框架,帮助你决策而且常常帮你做到工程上所谓的最佳实践标准。一旦你选择了增加学习速度做准则的框架,当你作为一个新手工程师所面临的一些其它艰难的决定会自然地遵循这个框架:

  • 如何决定要做哪一份工作? 要在新创公司还是大公司工作? 要在一家普通的公司还是一个高成长 、能和一群聪明的人互相学习的团队工作?
  • 你什么时候要寻求帮助,又什么时候应该自己挣扎着解决问题? 当你越花越多时间挣扎时却没有再学到任何东西时你需要一点指引,帮助你有更充裕的时间学到更多。
  • 你应该将你的程序送给谁审查? 如果你的目的是学习,你应该送给最苛薄的批评家,他/她能给你可行动且详细的回馈,告诉你要如何改进你的设计跟代码,而不是给你团队中的同伴,他会倾向很快地像盖橡皮图章似的表示赞同。
  • 你每次提交多少代码的区块大小是合适的? 由于早点获得回馈将让你有办法将回馈纳入你未来的程序中,你应该要做比较小,渐增的变更。我刚开始做软件工程时,在 Google 担任实习生,犯了一个错误:我把上一星期做的所有项目的代码全部一起提交 。 我的辅导师的信箱上面写着 “Edmond 已经送给你极大一包的代码等您审查”。这不只让代码审查进度延迟而且我的暑期工作变成没人理会。如果我的辅导师没有批准任何变更,我也失去了跟他学习并采行他的回馈练习的机会。你可以确定我在这样的经验后,所有代码的提交都采行渐进式的方法。
  • 你要挑选比较熟悉的工作还是不在你舒适圈范围内的工作来做?或许在与你相关专长领域还是有关联状况下,如果处理非舒适圈范围的工作将让你学到很宝贵的技术,那么你可以考虑接受这个挑战,而不是一直在做同样的事。
  • 你做的项目失败了或是你做的某一个功能并没有发挥到你预期的影响力你要怎么办? 为了让你能从这里得到最大的教训,你应该开放与诚实地和团队成员做检讨,整理出从这教训所获得的知识,以及下次如何避免再犯同样的错误。
  • 要如何应对你工作中一定要共事但却又难相处的同事呢? 在你的职涯中你肯定会遇到难相处的人。一旦沈沦,采取被动攻击(passive-aggressive)或尽量避免接触这位同事,对你未来与人相处是不会有任何改善。 反之,把这件事当做挑战做为一个经验会比较好。主动的学习如何展开困难的对话,如何解决争端,以及如何让这份关系变得富有生产力。也许刚开始你会遇到挫折,但你在每次尝试都累积未来如何应对的经验。
  • 如果你在计划于近期换工作,在最后的几个月你应该如何做呢? 假设每个人每两年就换一次工作,那所谓的”最后几个月”随着时间累加起来 ,简单地不费力地工作代表你将失去很多学习的机会。 那为何不仍然设法在这几个月也尽情的工作与学习呢?

还有很多其它的例子证实从进入职场的早期就遵循学习与成长的途径,通常都会有更好的成果,尤其是当你比较不需要去顾虑限制和责任的时候。

几个星期前,我和一家正在成长的新创公司的共同创办人共进晚餐,期间我们聊到征才的话题。我们两个都已经做过许多的面试,都观察到一位观念正向、积极成长的应征者通常比不太关心自我精进的人有比较强的技术与成就。就算现在你的技术层级还不是很强,如果你的学习曲线是以指数比率增长的话,很快地你将超越很多资深的工程师。

所以请专注于增长你的学习速度。刻意安排你时间中的20%投资你自己。读书、升级你的技术或是非技术的技艺、寻找导师、参加研讨会。 要留意,如果你避免了对于你的学习速度不做最佳化的错误,你已经走在成为最好的工程师的路上了。

这个博客源自 Edmond 在Quora上的回复

Alfred Lin, “The Power of 1%”, Zappos Blog, Jan 8. 2009.

原文 : How to Avoid the Biggest Mistake You Can Make as a New Software Engineer

关于这篇文章作者

edmondlau-headshot-1-w400-54af35b37dcef5c8646f247dcd0e9ed570e6ea506a7a00d19c3e1880d3b1485f

 

Edmond 目前教导软件工程师和技术经理如何有效率的创建有意义的影响力。

他是 Quip 早期的软件工程师,曾经在 Quora、Google和 Ooyala 带领软件开发团队。

著作:The Effective Engineer

♥欢迎关注 Soft & Share 微博

 

发表评论

Powered by WordPress.com.

Up ↑

%d 博主赞过: