在编码时,有些程序员会有这种心态:过一会儿再来修改或完善某部分代码或某条语句。但谁知这一“过一会”竟然是“”、“一周”、“一个月”或“一年”,甚至以后根本没机会再回头修改。所以,尽量别妥协写出暂时堪用的代码。否则,不仅不会节省开发时间,也可以阻碍整个进程。当然也不利于后续维护人员的工作。

  9. 能用任何语言编程

  的软件工程师活血有自己一门特别钟爱的编程语言,但从不会执迷于当中。如今已有很多的编程语言,也是说,如果你只会使用其中一门语言,说明你缺乏多样性。你可以用 Java、C#或C++编写任何现代软件,可以用PHP、Perl或Ruby编写任何网站的后台。简而言之,编程所用语言,远远没有语言相应的函数库重要。的工程师能够认知到这一点,并愿意去学习新语言、新函数库和构建系统的新方法。

  10. 知晓基本的计算机科学知识

  后,但肯定不是工程师不重要的特质是:扎实的基础。的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型的软件?。这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础是你在构建任何现代软件中做抉择时的必备品。

  结束语

  以上是区分伟大软件工程师的诸多特质。其中讨论的“热情”,是非常重要的。代码重用、设计模式、基础数据结构和算法都是必须知道的,而敏捷实践中的重构和单元测试则有助于工程师应对复杂的软件。尤为重要的是,明星工程师相信简洁和常识。也正是这些信念,帮助他们成功构建当今世界所需的看似不可能又错综复杂的系统