别满足于足够好 —— 来自一位技术总监的忠告。
作为一名年轻的程序员,我渴望在我的职业生涯中成长,我想要知道为了成为一名高级程序员,我们的目标要怎么设定。我询问过我的经理和导师,并惊讶地发现,要成为高级程序员,不仅仅是依靠学习和掌握技术(当然你需要不断学习,要保持技术领先)。除了技术之外,成为优秀程序员需要关注团队合作、沟通和注意细节。几乎没有一点行业经验的新手也可以根据技术判断出什么样的程序员是优秀的,但是需要一点技术之外的东西才能让你从优秀程序员中脱颖而出,成为伟大的程序员。
好程序员测试她的代码来确保它能正常工作。
伟大的程序员测试她的代码来确保它不会不工作。
这可不是文字游戏 —— 正向和逆向测试之间有明显区别,而两者在软件工程中都是必不可少的。每个人在写好代码之后都测试他们的代码来确保它能按照他们的预期工作。但是,这只是第一步。通过不同的用例或用户行为,充分思考出错的潜在风险并防御性地编程来避免一些问题,能有助于让你的应用有很长的“保质期”。
好程序员积极协助设置代码约定。
伟大的程序员遵守代码约定,即使它们与她自己的习惯不符。
遵守代码约定是一件大事。这么做的目的是让开发团队的思想统一,而约定对实现理想的思想统一是至关重要的。它需要成熟的心态和卓越的承诺,为了团队更好,妥协你做事情的方式,从而产生更多的凝聚力和一致的工作。团队中的最强的人会理解团队合作和达成共识的重要性。
好程序员写简洁的代码。
伟大的程序员写简洁的代码,最后再整理一遍并为它撰写文档。
如果你满足于让代码“足够好”,那么它实际上还不够好。要以高标准来对待你的工作,要记住当下一次你再阅读你写的代码的时候,由于时过境迁,你不会马上有相同的理解,而其他人检阅代码时,他们可能需要你的指点,你得告诉他们为什么你当时用这个方法实现。考虑以最好的方式来组织你的代码,并在你写了与它有关的其他组件之后再重新审视它。这些都是关于精益求精,重构使它优雅而高效。同时,为你的代码写文档。这非常重要。你团队的标准和代码约定应当强制使用代码注释。要把你的想法准确传达给使用你的代码的其他程序员,通过一个 readme 文件甚至一个 wiki 来整理清晰的文档,告诉使用者这些代码能做什么以及如何使用(给出例子)。
好程序员能独立解决问题。
伟大的程序员认识到她所在团队的专业知识的价值并在需要的时候充分挖掘团队的力量。
虽然对于工程师来说独立工作的能力是重要的,但依赖团队也是很好理解的,每个人都需要在项目的某个点上接受指导,甚至需要一点点帮助。一名初级工程师可能在日常任务上需要更多手把手的指导,而一个更高级的工程师可能需要对岗位要求的澄清或者在性能优化方面的指导。需要指导没什么不好意思的。最重要的一点是别害怕问问题,而一旦你的问题解决了,你可以继续前进直到遇到下一个障碍。成为一个独行侠没什么好处,那样你会为迟迟无法成功而感到沮丧,而那些驱动整个项目的人也会为项目迟迟没有进展而感到沮丧。一个成熟的、有自信的程序员知道她的能力和弱点,不害怕向团队成员求助,必要时借助团队力量而不是试图成为个人英雄。
好程序员学习效率工具并将它们有效地用于简化她的工作流。
伟大的程序员自己定制工作来提高效率并改进她的工作环境和工作流。
用你在项目中使用到的一切技术,花点时间改进流程。它也能对前面提到的一些点有帮助,比如写一个 linter(代码提示工具)来检查你的代码,看是否严谨和符合约定,或者写测试工具来自动化测试你的代码流程。
好程序员评审她团队成员的代码来保证质量。
伟大的程序员在代码评审中给出详细的,合理的,建设性的评论来帮助与她一起共事的程序员,让他们在知识和专业领域上有所成长。
理解沟通的重要性并以高标准严格要求。优雅地推动你的同事不断进步,为他们的职业生涯清除障碍,这将会让你成为一名好的领导者。这让我们回归合作的本质 —— 为了更大的群体利益,而且这也是在知识上的投资,能帮助你的团队成功。
这些都是随着时间的推移而建立的技能和习惯。我坚信“我们从一开始就要相信自己能行”(凡事都得有开始),但是我也相信“我们没法掩盖沮丧”。成功没有捷径。真正的技巧和专业知识是经过长时间的开发实践积累的。都说做一件事需要花费 10000 小时,才能成为行家。谁都可以选择掌握深度或者掌握广度,广度提升我们对大方向的理解而深度则提升我们的专业能力 —— 其实,这两者都不可或缺。热爱你的职业生涯旅途并学会欣赏你自己成长的过程。但不管你是一名有十年经验的老手还是才入行一个月的菜鸟,不要满足于足够好。在你的团队成为伟大的程序员并领导其他人,照顾好他们。
好程序员测试她的代码来确保它能正常工作。
公众号内回复“1”带你进粉丝群!