你是哪种层次的程序员?程序员的四种类型

http://www.nowamagic.net/librarys/news/detail/1370不是每一个写代码的都是程序员。这里,我把程序员定义为以编程为生的人。我认为世界上存在四类程序员:科学家、码农、专家和工匠。下面我一一介绍自己的观点。

科学家,与其说他们是程序员,不如说他们是数学家。他们发明了各种理论、算法和术语,教科书上那冗长的证明和计算也出自他们之手,其他的程序员都或多或少受益于他们的成果。有时,他们的一篇论文能改变整个业界的思维方式,但他们通常不会也不喜欢把那惊世骇俗的理论商业化。相比之下,他们更喜欢沉浸在科学的象牙塔里,自得其乐,好不快活。他们是程序员中最不经常写程序的人,甚至有一些大师一辈子都没写过程序,你也许认为这违反了我们开头对程序员的定义,可谁说编程非要用键盘呢?

码农,这个词汇来自网络上程序员的自嘲。但在这里,我把他定义为软件的主体实现者。正如农民工兄弟一样,他们是软件大厦的实际缔造者,他们通常熟悉或精通一到两门语言,在现有的架构下进行开发。他们是程序员中的蓝领,干着某种程度上的体力活,但这并不是什么坏事,事情总要有人做,并且编程的自由行赋予了码农很大的创造和学习空间。如果承认自己是个码农并乐于所从事的工作,那也是件极其美好的事,可问题在于很多人并不是自己愿意做码农,而是被迫成为了码农,他们本应是音乐家、运动员或者是商人,可因为种种原因成为了码农,干着他们认为枯燥且重复的体力活,所以他们不开心,这种状态下工作身心俱疲,也就是他们最容易发出程序员吃青春饭,三十岁以后还写程序没出息,应该转管理之类的蠢话。可当他们真的成为了管理者,通常情况下,只有极少部分人找到了自己喜欢做的事,其他大部分码农仍将继续他们的抱怨。综上,码农是程序员中占比最大的群体,他们的可塑性最高,有刚学习编程的中学生,有刚参加工作的毕业生,也有工作多年仍乐于战斗在第一线的资深工程师;作为码农,首先要承认自己的身份,然后找到自己的兴趣与方向,或者乐于做一辈子码农,或者准备向其他三类程序员转换,再或者换个行业,追寻自己最初的梦想。

专家,他们在软件行业中摸爬滚打多年,见多识广且精于一个或多个领域。他们在公司里通常被称之为高级程序员,架构师或是 CTO,他们通常设计软件大厦的结构,然后安排码农去实现,或者自己写一些核心代码。他们经验丰富,具有技术前瞻性,能够未雨绸缪,提前做出反应以应对软件大厦腐朽的趋势和业界的技术变化。他们性格单纯,喜欢自己的工作,且薪水不菲,通过阅读科学家的论文来保持与时代共同进步。软件行业很特殊,对于制造业,杰出者与平庸者带来的结果差距通常只有一到两倍,可在软件行业恐怕用千万倍形容都不为过。所以专家是公司的宝贝,任何一家公司都要不懈余力去争取或培养专家;同时,成为专家通常也是很多码农的终极梦想。因此,如果你是一位专家,请接受我致以的崇高敬意。

工匠,他们是很特殊的程序员,与其他程序员关心技术本身相比,他们更关注实现的结果,他们是把科学家论文商业化的实践者。对他们而言,重要的不是技术本身,而是利用技术创造伟大的产品。因此,你很难用前端、后台、DBA、安全工程师定义他们,为了创造伟大的产品,他们愿意学习任何技术,有些浅尝而止,有些因为需要或兴趣而精通无比。他们通常具有叛逆精神,本能地抵制权威,喜欢挑战某个领域的领导者,具有传统意义的黑客精神。他们对自己和别人都极其严格,具有很强的控制欲,喜欢插手编程之外与产品有关的事物,如设计、UI、市场等等;因为他们不希望因为某个环节的失误而降低了产品的影响力,虽然他们并不总是对的。他们喜欢编程,但编程通常并不占据生活的全部,他们一定会有一些与大众眼中程序员气质不符的爱好,如吹笛子,打剑道,玩音乐,绘画,种地,旅行等等。他们特立独行,性格倔强,工作疯狂,只愿和优秀的人合作。因为如此种种,在一般的企业中,工匠很难共事,他们总会觉得自己的才华受到了限制,周围的人跟不上他的节奏;他们在某种意义上是公司的不稳定因素,要么是天使,要么是魔鬼;绝大部分的企业不需要工匠,但对伟大或立志伟大的企业而言,工匠比专家还重要,专家可以把现有的产品做到行业领先,但工匠可以创造新的产品从而改变游戏规则。因为适合工匠的企业如此至少,他们中的有些人选择自己创办一个。

以上是我个人对程序员的分类,科学家、码农、专家、工匠;每一个程序员依据技术能力,性格习惯一定会找到自己的类型,但通常或多或少都会具有其他类型的气质,有工匠气质的科学家,喜欢与码农并将作战的专家等等。对于每一位程序员,重要的不是你现在属于哪种类型的程序员,而是找到你希望成为的那种程序员,并为之努力。每一位程序员,都会有自己的精彩。

时间: 2024-08-07 09:08:12

你是哪种层次的程序员?程序员的四种类型的相关文章

程序员初学机器学习的四种方式

http://blog.jobbole.com/67621/ 本文由 伯乐在线 - XiaoxiaoLi 翻译.未经许可,禁止转载!英文出处:Jason Brownlee.欢迎加入翻译组. 学习机器学习有很多方法,大多数人选择从理论开始. 如果你是个程序员,那么你已经掌握了把问题拆分成相应组成部分及设计小项目原型的能力,这些能力能帮助你学习新的技术.类库和方法.这些对任何一个职业程序员来说都是重要的能力,现在它们也能用在初学机器学习上. 要想有效地学习机器学习你必须学习相关理论,但是你可以利用你

Java程序猿必会的四种线程池

前言,对于Java程序猿来说,线程池是面试高频题,是我们必须掌握的一个技能,本篇文章主要给大家讲解四种线程池的使用. 线程池简介 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池.使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务. 线程池的工作机制: 在线程池的编程模式下,任务是提交给整个线程池,而不是直接提交给

jQuery绑定事件的四种方式:bind、live、delegate、on

1.jQuery操作DOM元素的绑定事件的四种方式 jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off. 2.必备的基础知识: DOM树 示例,这是在browser环境下的一棵模拟DOM树: 我们的页面可以理解为一棵DOM树,当我们在叶子结点上做什么事情的时候(如click一个a元素),如果我们没有人为的设置stopPropagation(Moder Browser), cancel

hive 导入数据的四种方式

Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3).从别的表中查询出相应的数据并导入到Hive表中:(4).在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中. 一.从本地文件系统中导入数据到Hive表 先在Hive里面创建好表,如下: hive> create table wyp > (id int, name string, > age int, tel string) >

重要更新-Word 2003查找替换最后一个实例的第四种方法

各位学员请注意! 在前面免费课程中讲到查找替换最后一个实例时当初只介绍了三种方法,在此补加第四种方法. 同时,视频内容已经更新!!! 原实例描述的是:要求针对WORD中某一个指定段落中关键字进行查找替换(把正文第一段中的所有"Microsoft"替换为"微软").第4种方法也比较简单,介绍如下: STEP 1:选择这一段(及此段中所有文字): STEP 2:Ctrl+H显示查找与替换对话框,分别在查找与替换处输入相应内容: STEP 3:把查找范围设置为"

QTableView中嵌入复选框CheckBox 的四种方法总结

搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四种比较适合扩展,它除了可以嵌入复选框,还可以通过paint()绘制其它控件,图片等自定义风格. 第一种方法是:编辑委托法 这种方法直接利用委托中重载createEditor(),激活QCheckBox,这个缺点是必须双击/选中,才能显示CheckBox控件.一般不满足我们实际中的直接显示的需要.可以

013-HQL中级3-Hive四种数据导入方式介绍

Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3).从别的表中查询出相应的数据并导入到Hive表中:(4).在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中. 一.从本地文件系统中导入数据到Hive表先在Hive里面创建好表,如下: hive> create table wyp > (id int, name string, > age int, tel string) > R

Hive学习(七)Hive四种数据导入方式

Hive的几种常见的数据导入方式 这里介绍四种: (1).从本地文件系统中导入数据到Hive表: (2).从HDFS上导入数据到Hive表: (3).从别的表中查询出相应的数据并导入到Hive表中: (4).在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中. 一.从本地文件系统中导入数据到Hive表 先在Hive里面创建好表,如下: hive> create table wyp > (id int, name string, > age int, tel string)

JavaScript中定义对象的四种方式 2012-5-10 15:19 阅读(0)

最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂方法来定义对象,但考虑到其简单性及非正规性,这里就不做介绍.和 Java 这样的面向对象语言相比, JavaScript 更像是函数式语言,其并没有类的概念,盖之以对象定义的概念,而具体创建的对象叫做对象的实例. 1)构造函数方式定义对象. 这种方式是在构造函数内定义属性和方法.这里举个简单的例子: func

JavaScript中定义对象的四种方式

最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂方法来定义对象,但考虑到其简单性及非正规性,这里就不做介绍.和 Java 这样的面向对象语言相比, JavaScript 更像是函数式语言,其并没有类的概念,盖之以对象定义的概念,而具体创建的对象叫做对象的实例.     1)构造函数方式定义对象. 这种方式是在构造函数内定义属性和方法.这里举个简单的例子: