如何成为明星软件工程师
如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列.代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢
1. 尽可能找一个这样的优秀导师,他乐意批评你的代码,并传授他是如何解决问题。当你的水平已达成一个体面不错的级别时,你可以正当地挑战你的导师观点,并赢得一些辩论。
2. 经常提高你所在解决问题的难度和范围。大多数人并没有20年的经验,他们只有1年的经验,只不过反反复复使用了20年。别做这种人。
3. 关注这些东西:文档、方法名或函数名、(变量名)、广泛编写测试。你的代码应该看起来专业。
4. 粗略看看所有的标准库,以便知道库中有什么。然后,当你首次使用某个特定库时,来回地学习它。如果正好是你学过的语言,并且又有源代码,也可以看看。
5. 如果不完全理解某写东西,得鞭策自己去了解它,得经常深入去研究。
6. 尽可能选择使用你的编程语言的最佳IDE。反复了解IDE。一个优秀的IDE,对你有莫大的帮助。
7. 当面对一个新挑战,(比如说,你从没有用 SOAP/XML,)在你开始编码之前,做些广泛研究。在互联网上找找,或者到你的库中看看,是否能找到其他程序员解决对应问题的最新最优解。三思而后行。就像成为一个忍者或海盗,成为一个明星是相当费时的。因此,我建议把你的早期职业生涯分成“明星”和“开发人员”两个阶段。只有在职业生涯后期,你才能自称为一个“明星开发人员”。
要想成为明星开发人员,必须具备如下的10种特质
1. 热爱编程
编程是一种为了满足兴趣而心甘情愿去做的劳动(Programming is a labor of love)。和其他任何职业一样,唯有真正的热情,才能完成真正的伟大事情。热爱编程的工程师从构建软件中获得满足,就好比一位作曲家在完成一部交响乐后而欣喜若狂。正是兴奋感和成就感,才造就了喜爱编程的明星工程师。
2. 完成事情
伟大软件工程师会真正去编码,这也是他们最为重要的品质之一。他们是实际做事的人。聪明人都知道,解决问题的最佳途径是直面问题,而不是花上数周来设计复杂又不必要的架构和函数库。
3. 持续重构代码
编码很像雕刻。要像艺术家一样不断完善自己的作品,软件工程师也要通过可能的最佳方式来持续完善自己的代码,以达到目标。重构背后的原始思想是:改善代码而不改变其功能,移动调整部分代码以确保系统不腐,还有确保系统完成基于当前需求该完成的事。
4. 使用设计模式
一位优秀的工程师通常能识别并利用模式,而不是受制于模式。工程师不应(强制)让系统去适应某种模式,而需发现在系统中使用模式的时机(恰当使用模式)。但请切记:模式不是万灵药;不要为了使用设计模式而使用设计模式。
5. 编写测试
有经验的工程师知道并了解测试的价值所在,因为测试的目的就是创建一个能正常运作的系统。优秀的工程师通常会确保出现过一次的Bug不会再出现第二次。但优秀的工程师也知道,不应该浪费时间写那些琐碎或多余的测试,而需要专注测试各个组件中的核心部分。
6. 善用现有代码
“重新发明轮子”一直是软件行业中的巨大问题之一。从发明新语言到从写函数库,忽视并重写那些已经存在并已能工作的奇怪驱动力,已经造成大量软件开发的失败案例。一位明星工程师会专注三种基本类型的重用:第一,内部基础架构的重用,相应代码是他自己或同事编写的;第二,使用第三方的函数库,比如JDK。最后,研究使用某些大型网络服务商提供的相应服务,比如Amazon。总之,正确善用现有的代码,使得软件工程师能真正专注于最为重要的事情上——应用程序本身。
7. 专注可用性
优秀工程师努力工作是为了什么?不正是让系统简单并易于使用。他们无时无刻都会想到用户,不会尝试去发明那些令人费解,只有极客才能理解并欣赏的东西。
8. 编写可维护的代码
一位训练有素的工程师,他/她会从第一行代码开始就考虑可维护性和代码的演化。没有任何理由编写“丑陋”的代码、长达数页的函数,或是稀奇古怪的变量名。优秀的工程师编写代码会遵循命名惯例,代码编写紧凑、简单和不过度炫耀聪明。代码的每一行,都应恰如其分地展现出其原有目的。在给不便理解的代码(块)合理注释时,别忘了命名规则。清晰明了的函数名和变量名可以让代码不言而明。
9. 能用任何语言编程
优秀的软件工程师或许有自己一门特别钟爱的编程语言,但从不会执迷于当中。
10. 知晓基本的计算机科学
优秀的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型的软件?。这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础就是你在构建任何现代软件中做抉择时的必备品。
以上就是成为明星的方法和区分伟大软件工程师的诸多特质,引用一段话:对于知识,要求知若渴;对于自己,要虚怀若谷。保持开放的心态,保持孩童般的好奇心看待新鲜事物。当今世界,日新月异,不仅要从书中获取知识,更要尽可能从其他途径来学习经验和知识,在求知过程中
如果你有成为明星软件工程师的方法和感悟,请在此评论,大家一起分享,一起进步。