大多数程序员在工作4-5年后,才华和效率就会停滞不前。他们大都是在选择了一些工具,选择了一些框架,学习了1-2种语言后进入公司工作,他们也许能在团队中为一些好的产品作出贡献,这很好!
但是,如果让他们去处理一个空白文档或者一个全新的产品,情况会是怎样呢?结果很有可能大部分都是混乱和失败。很多程序员都会幻想能够拥有自己的产品和做出一些技术进步,但现实的情况是离开现有的框架,他们什么都做不了。来自Petabridge的首席技术官和联合创始人AaronStannard做了很好的分析。他在创业初期招聘程序员时,即使他设置了很高的技术要求门槛,还是发现招聘来的程序员难于处理复杂的产品。他列举了10个让你的程序员生涯停滞不前的低效行为。
一、
害怕学习新的工具/语言/框架。
互联网技术发展快速,常常会有新的工具/语言/框架来替代现有的,但是如果你不去尝试,觉得他们不够主流,不会有发展前景,一直使用现有的自己喜爱的工具/语言/框架,这就会让你的技术落后于时代。小结:避免让自己成为用了1年工作经验混了5年的人,而不是有5年的工作经验的人。 的程序员会敢于拥抱挑战和机遇,学习新的做事方式。
二、
完成比完美重要
很多程序员编写出了代码但不提交代码,直到 一刻需要了才提交代码。我们把这个叫做“囤积提交”,这常常发生在对自己代码没有信心的程序员上,他们害怕团队其他人的评批和建议,因此要常常等到“代码全部完成”后再提交代码。这显然会 团队其他人的工作效率,因为团队其他人没办法看到他们每天的成果,也没办法看到代码可能存在的问题,等到“代码全部完成”后再提交,可能会导致大量的错误和Bugs。小结:无论怎样,你都要确保每天有所输出,而不是“闭门造车”,然后“弄个大新闻”。这也是人们常常说的“完成比完美更重要”。
三、
知其然,不知其所以然。
由于技术的发展,一些功能技术的实现往往变得非常简单,但如果你只是知道可以这么用,而不知道为什么可以这么用,这往往会导致难以预测的和难以测试的代码,同时你也并没有真正掌握这门技术。小结: 的程序员要知其然,也要知其所以然。
四、
过度调研。
技术总是变化很快,新技术总是层出不穷,总是害怕自己错过了更为先进的技术。比如喜欢React,但总觉得vue更先进,这时你会处于一种技术焦虑的状态,花费大量的时间纠结在应该选择A方案还是B方案。
调研总是简单的,而实现总是困难的,选择了错的方案,代价并没有想你象的那么大, 的选择是有选择,而不是 选择,最糟糕的选择不是做了错的选择,而是不做选择。小结:面对技术焦虑,你不应该纠结什么是 解,而应该想尽办法把技术实现出来。如同中国*队的发展理念一样:“装备一代,设计一代,预研一代“。你正在使用的技术要精通,也要发现其不足。那些很大可能会变成市场主流的技术要保持学习,有机会就实践。同时了解那些更加前沿的技术。
五、
不投资时间在开发工具和开发流程上。
诚然,要成为有才华的程序员,你需要投资时间在技能和知识上,但除此之外, 影响因素就是你的开发工具/开发流程/开发环境,它能给你更好的代码和更快的速度。小结:程序员最能提升的部分不是你写的代码,而是优化你写代码的流程。
六、
羞于向别人求助。
我们常常会羞于向人求助,因为这会暴露了我们的无知,所以我们就常常会假装自己知道,直到有一天导致了大的问题。我们都在尝试 的可能的做一个自主解决问题的程序员,但我们也应该要知道什么时候应该向别人求助,而不是自己一个人在角落里头脑风暴数小时。小结: 的程序员不会觉得说“我不知道这个怎么做”有什么大不了的。不耻下问是多个简单而朴素的道理啊。
七、
不知道如何让别人更好的使用你的代码
就像小孩子成长一样,你从来不向其他小朋友分享你的玩具,代码也是一样。在一个高效的团队里从来都是分工合作的,你不分享代码或者代码难于其他人使用,都会让团队无法高效工作,同时也让会团队无法实现异步工作,因此你需要为你的代码做好注释,这有利于团队其他人的理解,也有利于自己的理解。小结:所谓的”talkingischeap,showmethecode"是建立在双方有共同的上下文才成立。否则文字、图片、视频等非代码形式的解释才是最有效的沟通方式。
八、
不知道或者不愿意读别人的代码。
当你加入一个已经成立的的项目团队,你可能会遇到自己不熟悉的代码/语言/框架,重来是避免这一麻烦 的方法,但成本是巨大的, 的程序员会认真阅读、学习和修改现有的代码库。小结:阅读代码相比编写代码会更难,但 的程序员投资时间去驾驭它。
九、
不能从用户的角度来写代码。
即使你认真地遵循了代码规范,代码细节也上能够与其他程序员交流,但你也不能忘记最重要的一部分:“能够从真实世界的视角看待你的代码”。因为作为一个程序员,你的工作并不是真的去解决技术问题,而是为了解决业务问题而去解决技术问题。
你应该从用户角度出发,如何让用户更简单地解决他们的需求,让用户有更好的体验。如果你不能从用户的角度出发问题自己这些问题,那你也仅仅只是一个刚刚及格的程序员而已。小结:纠结于技术上的问题而忽略了用户体验,这是为什么很多程序员被困于写代码上,而不能做出产品来。
十、
不能评估每项技术任务的商业价值。
很多程序员常常不会退一步思考技术的商业价值,而 的程序员常常会思考这样的问题:“我现在做的事是最有价值的吗”?“做这个任务我应该要花多少时间”?“两个星期内应该要达到什么样的成绩”?“有没有更加简单的方法来实现这个目标”?小结:对于一个技术开发团队来说 的成本是开发时间,不要浪费时间在技术细节和支线任务上。
总结:
如果你想要更为更好的程序员,你要先从改变看待你的代码和编程方式开始。你要理解和分析你写的每一行代码背后的商业成本。你要跳出你的代码,从用户的角度来看待你的工作。你要设计你的代码在任何组织中都能使用,在某一天能够被其他程序员所继承使用。更重要的是,不要害怕迎接新的挑战和羞于寻求帮助,用着熟悉的技术独自在某个角落工作是得不到提升的,因为编程开发的本质是社会的。编辑如人生,这些道理迁移到人生的其他问题上也同样适用。
Resource:(非直译,总结性翻译by奔跑中的奶酪)