`
兩ting
  • 浏览: 75771 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

程序员的四种类型

阅读更多

不是每一个写代码的都是程序员。这里,我把程序员定义为以编程为生的人。我认为世界上存在四类程序员:(计算机)科学家、码农、专家和工匠。下面我一一介绍自己的观点。


(计算机)科学家

与其说他们是程序员,不如说他们是数学家。他们发明了各种理论、算法和术语,教科书上那冗长的证明和计算也出自他们之手,其他的程序员都或多或少受益于他们的成果。有时,他们的一篇论文能改变整个业界的思维方式,但他们通常不会也不喜欢把那惊世骇俗的理论商业化。相比之下,他们更喜欢沉浸在科学的象牙塔里,自得其乐,好不快活。

 

他们是程序员中最不经常写程序的人,甚至有一些大师一辈子都没写过程序,你也许认为这违反了我们开头对程序员的定义,可谁说编程非要用键盘呢?


码农

 

这个词汇来自网络上程序员的自嘲。但在这里,我把他定义为软件的主体实现者。正如农民工兄弟一样,他们是软件大厦的实际缔造者,他们通常熟悉或精通一到两门语言,在现有的架构下进行开发。

 

他们是程序员中的蓝领,干着某种程度上的体力活,但这并不是什么坏事,事情总要有人做,并且编程的自由行赋予了码农很大的创造和学习空间。如果承认自己是个码农并乐于所从事的工作,那也是件极其美好的事,可问题在于很多人并不是自己愿意做码农,而是被迫成为了码农,他们本应是音乐家、运动员或者是商人,可因为种种原因成为了码农,干着他们认为枯燥且重复的体力活,所以他们不开心,这种状态下工作身心俱疲,也就是他们最容易发出程序员吃青春饭,三十岁以后还写程序没出息,应该转管理之类的蠢话。

 

可当他们真的成为了管理者,通常情况下,只有极少部分人找到了自己喜欢做的事,其他大部分码农仍将继续他们的抱怨。综上,码农是程序员中占比最大的群体,他们的可塑性最高,有刚学习编程的中学生,有刚参加工作的毕业生,也有工作多年仍乐于战斗在第一线的资深工程师;作为码农,首先要承认自己的身份,然后找到自己的兴趣与方向,或者乐于做一辈子码农,或者准备向其他三类程序员转换,再或者换个行业,追寻自己最初的梦想。


专家

 

他们在软件行业中摸爬滚打多年,见多识广且精于一个或多个领域。他们在公司里通常被称之为高级程序员,架构师或是CTO,他们通常设计软件大厦的结构,然后安排码农去实现,或者自己写一些核心代码。

 

他们经验丰富,具有技术前瞻性,能够未雨绸缪,提前做出反应以应对软件大厦腐朽的趋势和业界的技术变化。他们性格单纯,喜欢自己的工作,且薪水不菲,通过阅读科学家的论文来保持与时代共同进步。软件行业很特殊,对于制造业,杰出者与平庸者带来的结果差距通常只有一到两倍,可在软件行业恐怕用千万倍形容都不为过。

 

所以专家是公司的宝贝,任何一家公司都要不懈余力去争取或培养专家;同时,成为专家通常也是很多码农的终极梦想。因此,如果你是一位专家,请接受我致以的崇高敬意。


工匠

 

他们是很特殊的程序员,与其他程序员关心技术本身相比,他们更关注实现的结果,他们是把科学家论文商业化的实践者。对他们而言,重要的不是技术本身,而是利用技术创造卓越的产品。

 

因此,你很难用前端、后台、DBA、安全工程师定义他们,为了创造伟大的产品,他们愿意学习任何技术,有些浅尝而止,有些因为需要或兴趣而精通无比。他们通常具有叛逆精神,本能地抵制权威,喜欢挑战某个领域的领导者,具有传统意义的黑客精神。他们对自己和别人都极其严格,具有很强的控制欲,喜欢插手编程之外与产品有关的事物,如设计、UI、市场等等;因为他们不希望因为某个环节的失误而降低了产品的影响力,虽然他们并不总是对的。

 

他们喜欢编程,但编程通常并不占据生活的全部,他们一定会有一些与大众眼中程序员气质不符的爱好,如吹笛子,打剑道,玩音乐,绘画,种地,旅行等等。他们特立独行,性格倔强,工作疯狂,只愿和优秀的人合作。

 

因为如此种种,在一般的企业中,工匠很难共事,他们总会觉得自己的才华受到了限制,周围的人跟不上他的节奏;他们在某种意义上是公司的不稳定因素,要么是天使,要么是魔鬼;绝大部分的企业不需要工匠,但对伟大或立志伟大的企业而言,工匠比专家还重要,专家可以把现有的产品做到行业领先,但工匠可以创造新的产品从而改变游戏规则。因为适合工匠的企业如此至少,他们中的有些人选择自己创办一个。

 

写在最后

 

以上是我个人对程序员的分类,(计算机)科学家、码农、专家、工匠;每一个程序员依据技术能力,性格习惯一定会找到自己的类型,但通常或多或少都会具有其他类型的气质,有工匠气质的科学家,喜欢与码农并将作战的专家等等。

 

我以前以为自己想做科学家,后来发现不是,工作后成为一名码农,那会立志做专家,后来渐渐的发现自己和周围的同事不一样,那些专家的生活也不是我想要的,消沉了一段时间,偶然发现有一类工匠的程序员,那或许是我想成为的人,然后,生活、工作又恢复了激情,于是便根据自己的阅读、经验写了这篇文章。

 

对于每一位程序员,重要的不是你现在属于哪种类型的程序员,而是找到你希望成为的那种程序员,并为之努力。每一位程序员,都会有自己的精彩。

分享到:
评论

相关推荐

    程序员的SQL金典.rar

     1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL语句管理数据表  2.2.1 创建数据...

    Android 程序员面试题精编第四版

    9、 Activity 的四种启动模式..................................................................................................................................................... 13 10、 Android 中的 ...

    程序员的SQL金典4-8

     1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL语句管理数据表  2.2.1 创建数据...

    [程序员成长课堂:C.标准教程].陈国建等.扫描版.pdf

    C++是在C语言的基础上发展而来的,但C++又可视为是一门全新的语言,C++独有的面向对象...第四篇 C++编程实践 第11章 教学管理系统的C++实现 260 附录A Visual C++菜单中文注释 299 附录B Visual C++操作技巧小代码 302

    程序员二进制计算器 v1.36

    (5)输出前的类型转换 对于浮点型值,用以上4种格式时,会先取整,再输出,因此它们可起到对结果取整的作用。 %d 12345.6789 = 12345 %d -12345.6789 = -12345 3-浮点型的输出格式 (1)按精简方式输出 %g %...

    C++中的四种类型转换

    这篇笔记是根据StackOverflow上面的一个问题整理而成,主要内容是对C/C++当中四种类型转换操作进行举例说明。在之前其实对它们都是有所了解的,而随着自己在进行总结,并敲了一些测试示例代码进行验证之后,对它们的...

    程序员高级(三级)笔试试题

    自己整理的 存储系统的层次化结构 第一层:通用寄存器堆 第二层:指令与数据缓冲栈 第三层:高速缓冲存储器 ...I/O扩展槽 ,根据总线的类型不同,主板上的扩展槽可分为ISA、EISA、MAC、VESA和PCI几种。

    解析C++中四种强制类型转换的区别详解

    C++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要一个新...

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    C、C++语言是IT行业的主流编程语言,也是很多程序员必备的软件基本功,是软件开发行业招聘考查的重点。本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、...

    Delphi 6 程序员代码编写标准指南

    Delphi 6 程序员代码编写标准指南 一、序言 二、通用源代码格式规则 2.1 缩格 2.2 页边空格 2.3 Begin…End 配对 2.4 代码文件中通用符号含义 三、Object Pascal 3.1 括号 3.2 保留字和关键字 3.3 过程和函数(例程...

    程序员代码面试宝典(左神)

    __eol__本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化。书中将所有的面试题从难到易依次分为“将...

    程序员的SQL金典6-8

     1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL语句管理数据表  2.2.1 创建数据...

    程序员的SQL金典7-8

     1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL语句管理数据表  2.2.1 创建数据...

    程序员的SQL金典3-8

     1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL语句管理数据表  2.2.1 创建数据...

    C++语言中的四种类型转换

     这篇笔记是根据StackOverflow上面的一个问题整理而成,主要内容是对C/C++当中四种类型转换操作进行举例说明。在之前其实对它们都是有所了解的,而随着自己在进行总结,并敲了一些测试示例代码进行验证之后,对...

    C++STL程序员开发指南【可搜索+可编辑】

    1-1-7 指针声明类型与对象类型相一致.................................. 13 1-1-8 int 与char 不再等价............................................. 13 1-1-9 结构数据类型的变化.................................

    JBOSS ESB程序员指南

    6. 第四章 JBossESB 21 6.1. Rosetta 21 6.2. JBossESB的核心 22 6.3. JBossESB的组件 23 6.4. 配置 23 6.5. 消息存储 24 6.6. ESB-aware和ESB-unaware用户 25 6.7. 端点引用(EPRs) 26 6.8. EPR到服务的映射 27 ...

    MFC程序员的WTL指南

    第四章 对话框与控件 48 第五章 高级对话框用户界面类 67 第六章 包容ActiveX控件 82 第七章 分隔窗口 96 第八章 属性页与向导 112 第九章 GDI类,通用对话框,初始化类 127 9.1、GDI 封装类 127 9.1.1、封装类的...

    程序员面试宝典题目总结

    21. 写出判断ABCD四个表达式的是否正确,若正确, 写出经过表达式中 a的值。 int a = 4; (A)a += (a++); (B) a += (++a) ; (C) (a++) += a; (D) (++a) += (a++); 22. 下面程序的输出为: union{

Global site tag (gtag.js) - Google Analytics