计算机科学家
他们写代码(是的,我知道这有点让人吃惊)。他们所写的代码,也许不是最漂亮或者构造最好的代码,但是能完成任务。这跟代码设计或者“良好”习惯没有关系,只是用来证明他们要去证明的东西。计算机科学家不仅是技术专家,而且还是数学家(他们有31337种数学技巧),他们不仅要知道代码是有效的,还必须对其作出证明。沟通和人际交往能力是理想的品质,但不是必须的。这些人掌握了他们整个研究领域足够的基础知识,但他们会专攻其中一点或者几个狭小的领域。在这些领域中,他们是世界级的专家。他们在私人时间里做着和他们研究相关的工作。
程序员
程序员编写非常棒的代码。代码简化,构造优良并且要没有错误(error free),这些非常重要,但是他(她)们不能以无法完成任务为代价。在他们的领域中,全是关于了解“优秀代码”的含义。他们需要掌握一些数学技巧,但这不是最重要的。他们需要清楚好(最好)的问题解决方案,但不必加以证明该方案是最佳的。对他们而言,必须掌握足够广泛的算法,并且在专业知识方面掌握有熟练的技巧,在相关领域也具备相当优秀的知识。沟通和人际交往能力是理想的品质,但不是必须的。软件开发过程和团队活力是理想的品质,也不是必须的。他们在不上班的时候,做个人软件项目,以寻找乐趣。
开发人员
他们写代码。优化和简化代码固然重要,但通常会优先考虑其它因素。数学技能不是必须具备的,但有助于了解与他们所在领域相关的常见问题及解决方案。沟通和人际交往能力是最重要的。软件开发过程和团队活力是赖以生存的技能。他们是不依赖任何真正专业技术的全才。他们擅长绕过问题,集成组件,从而满足一系列要求。在个人时间里,他们不是在尽力构建下一个Facebook,就是参加与编程、开发或者计算机科学无关的活动。