英文原文:How to be a great software developer
作者简介:Peter Nixey,Ruby on Rails 程序员,前计算机视觉学者、企业家,Clickpass 公司 CEO,YC 孵化器的企业规划导师,Brojure 公司 CTO。
如何成为一个伟大的开发者(一)
如何成为一个伟大的开发者(二)
新手开发者们热衷探索和折腾。他们热爱那些最新最闪亮的技术,不管是 No-SQL 数据库还是高并发的移动服务器,总是恨不得把所有新工具新特性全部使用起来,但这往往给后来的开发者留下一堆烂摊子。
功能和架构的选择会影响到建于其上的一切。潜在的抽象泄露风险,引发的后果将不堪设想。除非你有足够的理由,否则千万不要使用那些尚处于测试中的功能。所有主要项目的开发,都应该小心翼翼。如果非要尝试这些新特性,最好在那些辅助项目上尝试,这样保险得多。为了将来不把大量的时间都用来弥补前期捅的娄子,要谨慎使用新特性。
理解技术负债
技术负债是指那些混乱糟糕,但还能工作的代码。比如一个本应该用面向服务的架构,却单独开发了的 APP;或者一个重构后只需要十分之一执行时间的 Cron 任务脚本。
技术负载不仅会累加,还会带来复合效应。爱因斯坦说过,“世界上最强大的力量是复利”。类比到软件开发上,技术负载的复合效应也最具有毁灭性。多数开发者遭遇过这样的项目:哪怕是一点轻微改变,都不得不花费几个月的时间。这种情况下,你会失去保持代码整洁优雅的兴趣和耐心,只求不要把整个服务弄崩掉。
技术负债还有一个特点是:你不需要偿还。当开发的一个功能最后发现是错误的、不工作的,你会直接放弃它,同时也放弃所有的优化、测试及重构。所以,如果不是真正需要的话,那就不要去开发。将效用最大化,忽略错误。
技术负债,就像一个蛙跳游戏。最初的代码都只是尝试,只要能实现目标快速推进就好。这让我们有足够的时间来提出解决方案,足够的空间来建立基础设施。产品的生命周期越长,投入在基础设施上的时间就越长。有了稳固可靠的基础设施架构,才能支撑起一个高质量的产品。
总结并分享所完成的工作
不管用什么样的风格来注释文档,不管是用邮件还是 Wiki,一定要花时间记录开发流程以及所用到的资料,并分享给其他团队成员。他们和你一样,也会遇到各种安装和调试的问题。软件开发中,最令人头疼的事情就是花费大量的时间来解决 bug 和安装调试。如果你用一点时间来制作文档或者教程的话,将为团队省下更多的宝贵时间。