`
- 浏览:
2739322 次
- 来自:
深圳
-
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. 知晓基本的计算机科学知识
最后,但肯定不是优秀工程师最不重要的特质就是:扎实的基础。优秀的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型的软件?这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础就是你在构建任何现代软件中做抉择时的必备品。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
总之,成为一名优秀的程序员,不仅需要具备耐心、毅力、细心和勇于挑战的品质,还需要保持谦逊、热情和自我反省的态度,同时避免轻易放弃、浮躁自满、消极被动和推卸责任等行为。通过这样的自我修养和努力,才能在IT...
最后,沟通和团队协作能力是优秀程序员不可或缺的品质。良好的沟通能确保团队目标一致,减少误解,提高协作效率。同时,愿意分享和学习他人的经验,有助于个人成长。 总之,成为一名优秀的程序员需要系统学习,持续...
本篇文章将基于提供的文件内容,深入探讨成为伟大程序员所需具备的关键要素。 #### 一、时间花在写精彩的代码上 伟大的程序员深知,编写高质量的代码比单纯追求速度更为重要。他们注重代码的质量而非数量,能够...
优秀的程序员通常都具备极强的责任感和使命感,他们愿意为解决复杂的问题付出额外的努力。这种积极的态度不仅能够激励自己不断前进,还能带动整个团队的积极性。 #### 四、具备预见性和准备未知因素的能力 在软件...
他们具备优秀的团队协作能力,能够有效地与同事、上级和客户进行交流,理解并满足各方需求。他们的稳定性格使得合作变得愉快,能为团队带来积极的影响。 一流程序员比拼的是学习态度和方法。他们具备强烈的自我驱动...
首先,优秀程序员应具备的第一种行为是善于自我反省。在遇到问题时,他们不会立即归咎于外部因素,而是先审视自身的假设和代码,寻找可能的错误源。这种批判性思维能力有助于更快地定位和解决问题。 其次,不断学习...
通过上述介绍可以看出,网页程序员不仅需要具备扎实的技术功底,还需要具备良好的职业素养和个人品质。在日常工作中,他们不仅要关注技术细节,还要注重团队协作和项目管理,从而确保项目的成功实施。
通过"程序员成长路线图1-2章"的学习,我们可以看到,成为一名优秀的程序员不仅需要扎实的技术基础,更需要不断学习和提升自我,善于解决问题,具备良好的团队协作能力。只有这样,才能在快速发展的IT行业中立足并...
2. **持续学习能力**:IT行业的快速发展要求程序员具备自我学习和更新知识的能力。不断学习新的编程框架、工具和技术,如云计算、大数据、人工智能等领域,以便适应企业的需求变化。 3. **解决问题的技巧**:面对...
该简历的个人能力及自我评价部分,表明该求职者具备乐观开朗、自信大方、正直不讹、原则性强、直率诚恳、坦然豁达等良好品质,同时也具备独立坚韧、团结互助、语言沟通等能力。 该简历为一份标准的个人简历模板,供...
【程序员简历模板—优秀毕业生11-1.docx】是一个专为程序员或即将毕业的计算机科学学生准备的简历模板,适用于展示个人教育背景、技能、实践经验及个人特质。以下是根据提供的部分内容提炼出的关键知识点: 1. **...
综上所述,成为一名优秀的程序员不仅要掌握扎实的专业技能,还需要不断提高自身的综合素质,包括团队协作能力、文档编写习惯、学习能力等方面。同时,高级程序员还需要具备更强的需求分析能力、项目设计和管理能力等...
- 拥有CET-6英语水平,意味着具备优秀的听说读写能力,这对于处理跨国或英文数据可能非常有帮助。 - 计算机二级证书证明了对计算机操作的熟练程度,这是现代数据分析工作的基本要求。 - 国家职业资格四级的高级...
耐心和毅力是成为成熟程序员不可或缺的品质。 #### 项目标志 项目经验对于程序员的成长至关重要。它不仅能够检验程序员的技术能力,还能够培养其团队协作和项目管理的能力: 1. **项目数量与规模**:参与项目的...
综上所述,成为一名优秀的程序员不仅仅意味着掌握技术技能,还需要具备良好的职业素养和个人品质。以上10条修炼秘籍涵盖了从技术细节到职场态度的多个方面,旨在帮助程序员全面提升自我,成为一个更为出色的开发者。
然而,成为一名优秀的程序员并非易事,它需要具备扎实的专业基础、不断学习的态度以及良好的个人品质等多个方面的能力。以下是从给定的文件标题、描述及部分内容中提炼出的关键知识点,帮助读者更全面地理解“做好...
一份精心制作的程序员简历应全面展示求职者的专业技能、项目经验和个人品质,以吸引潜在雇主的注意,增加获得面试机会的可能性。通过以上知识点,程序员可以构建一份有力的自我推销工具,展示他们的专业价值。
最后,编程之路是漫长而艰辛的,它需要程序员具备坚韧不拔的性格和毅力。只有通过不断的实践、学习和挑战,程序员才能在技术的道路上越走越远,不断突破自我,最终达到高手的境界。 总之,成为程序员高手的过程虽然...
3. **调试能力**:优秀的程序员应具备强大的除错技能。这不仅意味着能处理自己的代码,还需要有能力解决他人代码中的问题,这需要出色的分析和问题解决能力。 4. **测试与品质保证**:测试工作,尤其是自动化测试,...
同时,注重工作实效和结果,这对于任何希望成为高效专业人士的程序员来说,都是应当具备的品质。此外,培养大局观,把握工作中的每一个机会,能够显著提高工作效率和专业能力,这在技术领域尤为重要。 团队协作与...