<!-- BEGIN TEMPLATE: header -->
原文: http://www.jobbole.com/entry.php/380
谁是完美程序员?著名博客作家Alex Iskold在《明星软件工程师的10种特质》一文中给出这个问题的答案:
1. 热爱编程
2. 完成事情
3. 持续重构代码
4. 使用设计模式
5. 编写测试
6. 善用现有代码
7. 专注可用性
8. 编写可维护的代码
9. 能用任何语言编程
10. 知晓基本的计算机科学
这是一份合理的清单,但是这份清单侧重于次要特征,这些特征只是更深层次品质所产生的结果,并且这是一份理想化的清单。你认为儿童网站的Flash程序员跟B2B财务交易服务公司的软件工程师品质会相同吗?那么,我们该如何从众多开发者中甄别出一名完美的程序员呢?
寻找完美程序员的最终标准:完美程序员能开发出满足客户期望的优秀软件。
因此,令人震惊的事实是完美程序员可能只精通一种编程语言,不知道什么是设计模式,并且不会在地下室里夜夜编程去创造下一个Google。我们不能客观地衡量程序员的完美程度,就像测量自己胳膊的粗细那样。完美程序员的完美之处只在于他们按时开发了一个高质量、可用的并且可维护性高的软件系统(一个优秀的系统),并且这个系统达到了用户的要求。
综上所述,我们可以得到如下几个推论:
-
1.一个完美的程序员应该能够及时解决用户的问题,或者能在一段合理的时间内解决。所有程序员的品质都与用户的问题以及背景有关:
- 有些问题需要创造力,而有些则需要具体的方向
- 有些问题通常需要专业技术,而有些则需要高深的业务知识
- 有些问题需要仔细分析,而有些则需要一些社会技能和直觉
- 2.一个完美的程序员应该明白什么是“完成”,并且关注产品质量。对于一个软件系统,“完成”的意思远非编码的结束。一个完美的程序员会完成所有必要的步骤来开发这个系统:测试,优化代码以使代码量保持最小、高效以及可读,使系统可用并且保证顾客和用户能够喜欢这个系统。
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡 - 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强 (范围:用简单方式解决复杂问题)
2. 魅力超群 - 优秀个性的结合体 ( 注重细节 VS 富有创造力、灵活多变 VS 恪守典章、善于交际 VS 特立独行)
3. 术业专攻 - 具有一定的知识和经验,能在特定条件下利用专业技能解决用户问题(范围:从一个领域内的专家,到在不同领域都有丰富经验的程序员)。
4. 积极主动 - 关心工作,对编程表现出了很高的热情、兴致以及热爱(范围:从工作只为钱的人,到在业余时间不计报酬实现有趣的想法的人)。
5. 成熟稳重 - 精通并且运用合理的软件开发原则、敏捷方法和实践、设计和体系结构模式、领域驱动设计、单元测试、重构(范围:从一个充满激情的业余爱好者,到一名能够不停地发明新方法的黑带大师)。
6. 实用主义 - 明白什么事是可能的,喜欢简单实用并且避免过度设计;明白业务目标,贴近现实并且专注于该做的事情(范围:从自学成才的艺术家,到自我激励的务实的成功人士)。
7. 通力协作 - 能够倾听并且接受有好点子的人,毫无保留地支持团队的目标,跟别人分享自己的想法和知识,并且愿意指导别人(范围:从异见者到一个团队的领导)。
8.善于沟通 - 能够高效地与别人交流和交换想法,支持那些对系统具有清楚的解释、判断和解答的知识和决定(范围:从一个安静内向的人,到一个系统解说员)。
9. 潜力无限 - 拥有职业目标、出色的技能、好奇心、较强的适应性,并且能够不断自省(范围:从一个达到极限的人,到未来的编程之星)。
10.远见卓识 - 拥有更高的视野,了解相关的背景、趋势和人员,为达到团队和公司的潜在目标采取行动,致力于为软件系统建立共同愿景(范围:从对编程仅仅是感兴趣的人,到有远见的企业家)。
如何为特定问题找到完美的程序员呢?
能够找到具有最优品质的程序员当然更好,但是,这些另类都身价不菲,通常可遇而不可求或者会对你的问题感到厌烦。因此,可以采取以下措施:
- 1.在雇佣他们之前先理解问题,评估每种品质要达到的水平,并且准备好问题甚至测试。
- 2.组建一个完美的团队,但不一定用完美的程序员。只要保证团队成员的部分品质达到了应有的水平。对每位团队成员来说,大概只有协作才是最重要的品质。
- 3.创造必要的环境,促使这些优秀品质能够有效发挥作用。使用正确的领导风格,并且使程序员感到愉快。
拥有优秀核心品质的人会提出最优的方法,包括编写单元测试和重构;学习设计模式,并且最重要的是:开发出众并实用的软件。
后话
完美程序员不是天生的,他们只是在解决问题时做了正确的事。如果你对完美程序员还有其他看法和补充,欢迎你在评论和微博中分享。
分享到:
相关推荐
根据对职业的理解和技能水平,我们可以将程序员分为不同境界,这些境界不仅体现在技术能力上,还包括了项目管理、创新思维、沟通技巧以及个人品质等多个方面。 五流程序员,他们主要关注技术和工具的更新。这一层次...
例如,有些程序员发现自己在编码时过于追求完美,反而影响了工作进度。通过自我反思,他们学会了在保证代码质量的前提下提高开发速度,从而在激烈的竞争中保持领先。 其次,感恩与团队精神是程序员在职场上不可或缺...
好奇心是成为一名优秀程序员不可或缺的品质之一。在快速变化的技术环境中,好奇心驱动着程序员探索新技术、新工具和新方法。这种好奇心不仅帮助程序员保持与时俱进,还促进了创新思维的发展。好奇心能够激发程序员的...
#### 10. 用三个词概括自己 **知识点解析:** 简明扼要地表达自己的核心特点。 **详细解答:** - 选择能够体现个人优势和特点的词汇,如“适应能力强”、“责任心强”、“始终如一”。 #### 11. 业余爱好 **知识...
3. 心理素质:通过曹操、项羽、司马迁等历史人物的例子,说明了即使存在缺陷,个人的才华和品质仍然可以被人们尊重和赞赏。在IT行业中,面对项目中的问题和挑战,良好的心理素质至关重要,能帮助开发者保持冷静,找...
这首小诗虽然以轻松幽默的方式描绘了程序员的生活,但从中我们...总的来说,这首小诗以诗意的形式揭示了程序员的日常工作、挑战、成长和心态,同时也提醒我们在享受编程带来的乐趣的同时,也要关注个人健康和生活品质。
比如,如果应聘的是C++程序员岗位,可以提到自己的优点是编程能力强,而缺点可能是有时过于追求完美导致工作效率不高,但已经在通过合理安排时间等方式来改进这一点。 ### 4. 你认为你在学校属于好学生吗? 这个...
你可以向面试官说明:“这部分我不太确定,但基于我目前的理解,我认为可能是这样的...”通过这种方式,你可以让面试官看到你处理问题的逻辑和思考过程,即使你的答案不完美,也会给面试官留下一个良好的印象。...
- **大师的品质**:通过描述老一辈程序员的特质,比如他们清醒、警惕、友善和简洁等,传达了一种对于编程工作的深刻理解和对待工作的态度。 - **编程的意义**:强调编程不仅是技术活动,更是一种生活方式。对于...
这些素材无疑成为了一个宝贵的资源库,既适合那些追求音质完美的学生进行毕业设计,也适合程序员和小公司在进行项目开发时选用。它们将为各类创意作品和商业应用增添独特的声效,从而在声与形的融合中,使项目或产品...
- 技术层面:网络技术和计算机技术的进步,确保了网络承载能力、安全性和服务品质,足以支撑这样的平台。 - 用户需求:大多数用户对在线交友和婚恋的依赖度增加,且情感交流的重要性被高度重视。 - 商业价值:...
无论你是新手还是经验丰富的程序员,都能从中受益。 #### 二、作者观点 - **作者关注点**:作者Steven C. McConnell在撰写本书时的核心关注点在于连接行业专家和教授的知识与普通商业实践之间的鸿沟。许多强大的...
设计质量的好坏直接决定了软件产品的品质,但值得注意的是,即便有优秀的设计,也需要其他环节如需求分析、实现、测试和维护的配合才能确保软件的成功。 软件系统设计的整个过程可以被划分为高层设计和详细设计两个...
正如金浩先生的故事所示,他用21年的时光将一家普通的书店打造成上海最大的书店,这背后是对完美的不懈追求。这种精神意味着工匠们愿意投入大量时间和精力,以确保工作的质量和细节,他们不满足于平庸,而是力求卓越...
程序员们经常需要长时间工作,解决bug,优化代码,这种不屈不挠的精神能帮助他们完成艰难的任务。 2. **综合能力与毅力**:姚世朋的寄语来自苏轼,“古之成大事者,不惟有超世之才,亦有坚忍不拔之志”。在IT领域,...
这使得他们能够在短时间内从一种编程语言高手变为另一种语言的高手,因为他们已经熟悉了许多经过时间检验的基础技术。 4. **高效的工具使用**:高手倾向于使用轻量级工具,例如 vi 或 notepad,这类工具虽然简单,...
SHARC(Super Harvard Architecture with Reduced Instruction Set Computer)架构提供了一种高效的数据处理能力,特别是对于浮点运算,这在模拟声音合成中至关重要。例如,SHARC 2126x和SHARC 2136x处理器,凭借其...
在软件开发领域,语言不仅是沟通思想和概念的...对于那些希望在技术与艺术之间找到完美平衡的开发者来说,这些修辞手法不仅是技术表达的工具,更是一种创新的思考方式,能够引领他们在技术和人文的交融中找到新的灵感。