`
lvwenwen
  • 浏览: 964168 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

优秀程序员的10种特质

阅读更多
代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。
  1. 热爱编程
  2. 完成事情
  3. 持续重构代码
  4. 使用设计模式
  5. 编写测试
  6. 善用现有代码
  7. 专注可用性
  8. 编写可维护的代码
  9. 能用任何语言编程
  10. 知晓基本的计算机科学
  1. 热爱编程
  编程是一种为了满足兴趣而心甘情愿去做的劳动(Programming is a labor oflove)。和其他任何职业一样,唯有真正的热情,才能完成真正的伟大事情。这里有个误解,认为编写代码是机械化并纯科学性的。事实上,最优秀的软件工程师是工匠,他们能把能量、独创性和创造力融入到每一行代码中。伟大的工程师知道何时该把代码雕琢至完美,知道何时把大型系统像拼图一样组装到一块。热爱编程的工程师从构建软件中获得满足,就好比一位作曲家在完成一部交响乐后而欣喜若狂。正是兴奋感和成就感,才造就了喜爱编程的明星工程师。

  2. 完成事情
  有很多技术人员只谈论软件而不编写代码(只说不做型)。而伟大软件工程师会真正去编码,这也是他们最为重要的品质之一。他们是实际做事的人。聪明人都知道,解决问题的最佳途径是直面问题,而不是花上数周来设计复杂又不必要的架构和函数库。优秀工程师应当会问:解决手头问题的最简单方法是什么?最近的软件开发方法——敏捷实践,正是专注那个。它的思想是,把复杂的项目拆分为短小的迭代,每个迭代只关注一小部分的增量功能。因为每个迭代对应的编码只需要数周,所以功能易于管理并简单。

  3. 持续重构代码
  编码很像雕刻。要像艺术家一样不断完善自己的作品,软件工程师也要通过可能的最佳方式来持续完善自己的代码,以达到目标。重新塑造代码的原则称为“重构”,Martin Fowler在他的创意书中有相应描述。重构背后的原始思想是:改善代码而不改变其功能,移动调整部分代码以确保系统不腐,还有确保系统完成基于当前需求该完成的事。持续重构可以让开发人员解决另一个著名的问题——“黑盒遗留代码”(这个问题基本无人想触及)。
  几十年的软件开发文化要求我们,不应该去改变正常工作的东西。然而,随着时间推移,问题是我们成为了老旧代码的奴隶,老旧代码变得不稳定和不兼容。而重构正好可以改变这一状况,因为我们是代码的主人,不是它的奴隶。重构在工程师和代码之间建立起持续的“对话”,并带来所有权、确定性、自信心和系统的稳定性。
  千万不要成为老旧代码的奴隶。如果代码是他人所写,或许你可以轻易推脱责任。但大多数时候,那些代码是自己所写,要拿得起放得下,旧代码该埋时,就把它埋了!

  4. 使用设计模式
  自从所谓的“四人帮”(Erich Gamma、Richard Helm、Ralph Johnson和JohnVlissides)发表他们的著作——《设计模式》后,全世界的软件工程师一直都在讨论模式。在我们所处的世界,不管是自然界还是人类行为,模式无处不在。软件工程自然也不例外。模式就是不断重现的跨语言跨系统的场景和机制。一位优秀的工程师通常能识别并利用模式,而不是受制于模式。工程师不应(强制)让系统去适应某种模式,而需发现在系统中使用模式的时机(恰当使用模式)。在使用模式来确保正确性时,应借鉴利用前人的智慧结晶,使用以前能正当解决特定工程问题的方法。但请切记:模式不是万灵药;不要为了使用设计模式而使用设计模式。

  5. 编写测试
  曾有段时间,软件工程师们认为测试不值得他们去做。然而,如果你不做测试,你怎么能确保代码就能正常工作呢?敏捷实践中的“单元测试”已获得普遍认可,因为它注重编写测试来反映代码是否有效。随着系统增大,测试也随之增大。有经验的工程师知道并了解测试的价值所在,因为测试的目的就是创建一个能正常运作的系统。优秀的工程师通常会确保出现过一次的Bug不会再出现第二次。但优秀的工程师也知道,不应该浪费时间写那些琐碎或多余的测试,而需要专注测试各个组件中的核心部分。

  6. 善用现有代码
  “重新发明轮子”一直是软件行业中的巨大问题之一。从发明新语言到从写函数库,忽视并重写那些已经存在并已能工作的奇怪驱动力,已经造成大量软件开发的失败案例。一位明星工程师会专注三种基本类型的重用:第一,内部基础架构的重用,相应代码是他自己或同事编写的;第二,使用第三方的函数库,比如JDK。最后,研究使用某些大型网络服务商提供的相应服务,比如Amazon。总之,正确善用现有的代码,使得软件工程师能真正专注于最为重要的事情上——应用程序本身。

  7. 专注可用性
  优秀的工程师通常都专注于用户。无论用户是企业还是个人,无论是为消费型的软件公司还是投资银行,需要关注的都是可用性。用户如何和系统交互?系统是否提供一种简单、直接和平稳的操作体验?有种说法,因为软件工程师是技术人员,他/她和“用户如何与系统交互”没有关联,这种说法严重错误。优秀工程师努力工作是为了什么?不正是让系统简单并易于使用。他们无时无刻都会想到用户,不会尝试去发明那些令人费解,只有极客才能理解并欣赏的东西。
  有些时候,一些软件工程师过于投入,反而忘记所编写的程序/软件,是供他人使用,不是做给自己看的“艺术品”。所以,在软件开发过程中,一直要把“用户”放在心中。

  8. 编写可维护的代码
  软件开发界的另外一个小秘密是:编写优秀代码和糟糕代码所花费的时间是一样多。一位训练有素的工程师,他/她会从第一行代码开始就考虑可维护性和代码的演化。没有任何理由编写“丑陋”的代码、长达数页的函数,或是稀奇古怪的变量名。优秀的工程师编写代码会遵循命名惯例,代码编写紧凑、简单和不过度炫耀聪明。代码的每一行,都应恰如其分地展现出其原有目的。在给不便理解的代码(块)合理注释时,别忘了命名规则。清晰明了的函数名和变量名可以让代码不言而明。
  在编码时,有些程序员会有这种心态:过一会儿再来修改或完善某部分代码或某条语句。但谁知这一“过一会”竟然是“一天”、“一周”、“一个月”或“一年”,甚至以后根本就没机会再回头修改。所以,尽量别妥协写出暂时堪用(可以使用)的代码。否则,不仅不会节省开发时间,也可以阻碍整个进程。当然也不利于后续维护人员的工作。

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

  10. 知晓基本的计算机科学知识
  最后,但肯定不是优秀工程师最不重要的特质就是:扎实的基础。优秀的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型的软件?这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础就是你在构建任何现代软件中做抉择时的必备品。
  结束语
  以上就是区分伟大软件工程师的诸多特质。其中讨论的“热情”,是非常重要的。代码重用、设计模式、基础数据结构和算法都是必须知道的,而敏捷实践中的重构和单元测试则有助于工程师应对复杂的软件。尤为重要的是,明星工程师相信简洁和常识。也正是这些信念,帮助他们成功构建当今世界所需的看似不可能又错综复杂的系统。
  引用网上看到的一段话:对于知识,要求知若渴;对于自己,要虚怀若谷。保持开放的心态,保持孩童般的好奇心看待新鲜事物。当今世界,日新月异,不仅要从书中获取知识,更要尽可能从其他途径来学习经验和知识,在求知过程中,《请谨记5件事,做一名快速的学习者》。
  如果你觉得一位明星软件工程师还应具备其他特质,请在评论或微博中和大家分享讨论。
分享到:
评论

相关推荐

    优秀程序员的十个习惯

    6. 成为优秀的团队合作者:良好的团队协作精神是优秀程序员的重要特质。积极参与团队沟通,尊重团队成员,提升团队合作效率,如同足球队员一样,为团队的整体成功贡献力量。 7. 文档化工作:编写清晰、详尽的文档是...

    如何成为一名优秀的程序员.docx

    2. 学习力量:学习力量强是成为优秀程序员的魔法。 3. 聪慧和虚心:高智商与优秀程序之间没有亲密的关系,需要充分理解一个一般的程序,你得有很强的吸取详情的力量并同时消化它们。 4. 求知欲:在成长为高手的...

    优秀程序员之路——ASP.NET开发经验及技巧大汇总

    最后,不断跟进ASP.NET的新技术和趋势是优秀程序员的特质。随着ASP.NET Core的发展,跨平台支持、容器化部署和微服务架构成为新的热门话题。了解Docker、Kubernetes等技术,结合ASP.NET Core,可以帮助你构建云原生...

    如何成为一名优秀的程序员

    解决这些问题需要程序员具备以下特质: 1. 持续关心并提升自己的编程技艺,时刻保持学习的态度。 2. 以工作为中心思考,培养批判性思维,对所阅读和听到的信息进行分析和评估。 3. 拥有多样化的技能,熟悉各种技术...

    什么样的人适合做程序员?程序员应该具有什么样的素质程序员四大禁忌

    此外,勇于挑战难题也是优秀程序员的特质之一。面对复杂的问题,他们不仅不会退缩,反而会感到兴奋,因为解决这些问题正是他们工作的一大乐趣所在。他们乐于在解决问题的过程中不断提升自己的技能。 最后,愿意与...

    程序员简历模板-优秀毕业生8.zip

    【程序员简历模板—优秀毕业生8.zip】是一个包含程序员求职简历的文档资源,主要适用于那些刚刚毕业或即将毕业的计算机科学和技术专业的学生。这个压缩包中的核心文件是“程序员简历模板—优秀毕业生8.docx”,这是...

    程序员如何做导师

    除此之外,做导师对于程序员自身也是一种提升,它能帮助你成为高阶工程师,并且是职业成长的一个重要方向。在指导他人的过程中,你会学到很多新的知识,学生也会将他们的知识和经验反馈给你,这无疑是一种双赢的体验...

    程序员优秀个人简历范文模板

    【程序员优秀个人简历范文模板】 在信息技术日新月异的时代,程序员成为了许多企业和创新团队不可或缺的角色。编写一份高质量的个人简历对于程序员来说至关重要,因为这不仅展示了他们的技术能力,也体现了他们的...

    程序员求职专用简历模板

    在程序员的求职过程中,一份优秀的简历是至关重要的第一步。这两份专门为程序员设计的简历模板——"简历模板二(明快).doc" 和 "简历模板一(简约).docx",提供了很好的参考,旨在帮助新手程序员更好地展示自己的...

    程序员简历模板-优秀毕业生7.docx

    本文将基于一份特别的程序员简历模板——“程序员简历模板—优秀毕业生7.docx”进行深入分析,揭示优秀程序员的职场竞争力所在。 首先,我们注意到,宸兮虽然是财务管理专业的毕业生,但她并未受限于自己的本专业,...

    程序员自我评价.zip

    在这个名为"程序员自我评价.zip"的压缩文件中,包含了一个文档"程序员自我评价.docx",很可能是程序员对自身技能、工作经验和个人特质的全面分析。 自我评价通常涵盖以下几个关键方面: 1. 技能掌握:程序员会列出...

    8种类型极品程序员,不知你属于哪一种?

    总的来说,成为一名优秀的程序员不仅仅是技术能力的比拼,更是个人特质和工作态度的体现。了解自身的类型,结合项目和团队需求,采取平衡的方法,能够在提高效率的同时保证产品质量,最终为个人和组织带来更大的价值...

    程序员优秀简历模板程序员优秀简历模板

    ### 知识点一:构建高效程序员简历的关键要素 #### 教育背景的重要性 - **专业选择**:彭艳梅选择了软件工程作为她的本科学习方向,这为她打下了坚实的理论基础和技术背景。在简历中突出自己的专业背景,尤其是对于...

    优秀的程序员必备求职简历模板

    在IT行业中,一份优秀的程序员求职简历是成功敲开心仪公司大门的关键。简历是展示自己技能、经验和成就的窗口,能够帮助雇主快速理解你的专业能力。以下是一些制作出色程序员简历的重要知识点: 1. **个人信息**:...

    java程序员参考求职简历

    Java程序员在求职过程中,一份优秀的简历是至关重要的。简历不仅体现了候选人的专业技能,还展示了他们的个人特质和项目经验。以下是一些关于如何构建一份出色的Java程序员求职简历的知识点: 一、个人信息 简历的...

    优秀的PHP程序员至少应该了解PHP代码的优缺点

    除此之外,一个优秀的PHP程序员还应具备以下特质: 5. 学习能力:随着技术的不断更新,PHP程序员需要持续学习新技术,如PHP的新版本特性、Web开发框架、现代化的前端技术等。 6. 问题解决能力:遇到错误和挑战时,...

    程序员精选简历模板大全

    一个优秀的简历模板应该具备以下几点: 1. **清晰明了**:简历应简洁、易读,避免过多的装饰元素干扰信息的传递。使用清晰的字体和合适的间距,确保阅读体验良好。 2. **突出技能**:IT行业的简历要重点列出编程...

    JAVA程序员简历模板

    3. **自我评价**:这部分展示了求职者的个人特质,如积极的工作态度、扎实的沟通和团队协作能力,以及独立解决问题和承受压力的能力。这些软技能对于软件开发团队的成功同样重要。 4. **专业技能**:求职者熟练掌握...

    如 何 识 别 真 正 的程序员 面试 笔试 人力资源

    首先,激情是区分优秀程序员与普通开发者的显著标志。一个优秀的程序员对编程有着强烈的热情,他们不仅在工作中编写代码,还会在业余时间主动学习和探索新的技术和工具。这种热情驱使他们不断进步,不断提升自己的...

    程序员简历模板-优秀毕业生3.zip

    【程序员简历模板—优秀毕业生3.zip】是一个包含程序员求职简历的资源包,主要针对刚刚走出校园的优秀毕业生。这个压缩包中的核心文件是"程序员简历模板—优秀毕业生3.docx",它为即将踏入IT行业的新人提供了一份...

Global site tag (gtag.js) - Google Analytics