不知不觉入行软件开发已经9年了,9年里我有幸跟一些非常厉害的开发者一起工作过。这些同事不仅代码写得好,产出成果的速度也很快。不过,我也见过不少平平无奇的开发者。这种差距让我很好奇,于是我决定搞清楚其中的原因。
一个简单的概念
我发现关键差异其实很简单:数量。具体来说,就是这些“高手”每天Git提交的代码量、迭代次数和接触的开源项目数量远远超过普通开发者。所以不是他们更有天赋或者更聪明,而是因为他们投入了更多的时间和精力。
数量:通向质量的钥匙
让我通过几个例子来解释:
- 迭代和改进:在我早年的工作中,我注意到最好的开发者是那些不断迭代自己工作的。他们不满足于第一个版本的代码,而是会多次编写、测试、重构和改进代码。正是这种不断循环的迭代过程磨练了他们的技能,带来了更高质量的成果。
- 面对挑战的经验:处理的项目和问题越多,他们的能力就越强。我曾经有一个同事是个个子小小的女生。刚毕业可能也就两三年的样子,在业余时间热衷于参加黑客马拉松或贡献开源项目。她的技术水平迅速提升,当我离开公司时,她已经成为了iOS开发团队的技术领袖。
- 反馈和学习:主动寻求反馈并从错误中学习。如果只做最低要求并避免批评的人则会一直停滞不前。这也是为什么团队中需要有Code Review和定期复盘的原因。
误解:数量与质量的对立
我遇到的最大误解之一是认为数量和质量是相互排斥的。许多人认为,生产大量工作意味着牺牲质量。然而,我的经验与事实往往相反。就像在其他领域一样,软件开发的确是一项创造性的劳动,但是并不多。大部分人一辈子写的代码都是在已有的轮子上叠加不同业务。因此决定你的技术水平上限的是,有没有见过更多更好的轮子。想写出优秀代码的前提是要见过优秀的代码。另外你写的越多,你就越能写出干净、高效、有效的代码。
结论
通过转变我们的视角,认识到许多质量问题其实是数量问题,快速试错比完美主义更有价值。特别是在工作中,不必因为追求完美而拖延,而是要不断尝试、学习、改进。只有这样才能不断进步。