你是哪一类程序员
在IT世界里,程序猿是苦逼的,是熬夜写代码的,是围绕一个Bug就要费尽半天的。更悲剧的是,美国五角大楼的疯狂科学部门——美国莱斯大学日前发布称,美国国防部计划投千万美元开发能帮电脑自动写代码工具。若研发成功,一大拨程序员的饭碗就要不保了,即使这只是一碗“青春饭”。
尽管如此,似乎也无法阻止大家报考计算机专业或者投身IT界的激情。在工作中或生活中被一个想法牵动从而开始学习编程、“半路出家”的程序员也越来越多,科班出身的程序员不再是主流,各职业之间的界定也不再那么明确。
在我的代码旅程和编程经历中,已经遭遇很多奇特的对手,还有更为奇特的盟友。我至少发现有5种代码勇士,有些是出色的战友,其他则似乎都在搅黄我的每个计划。
不过他们都在软件开发的万神殿上都有一席之地。如果没有不同编程风格的良好组合,你可能会发现你的项目要不就是耗时过长,要不就是太不稳定或太过完美而无人去做。
程序员style
请对号入座!
在北京,乃至全中国,就我们的IT产业而言,程序员们可谓是形形色色,只能感慨:林子大了……以下5种不同类型的程序员,看看你是哪种?
1. The duct tape programmer 补漏灵型
The code may not be pretty, but damnit, it works! 代码或许不漂亮,但能用!
这种家伙是公司的基石。代码有问题的时候,他能快速补漏,下不再犯。当然他并不关注代码看起来怎么样,是否容易使用,以及其他琐碎的问题,但是他能搞定,没有一堆废话,也不会唧唧歪歪。用这种程序员的最佳方式是,你指出问题后,走开就可以了。
2. The OCD perfectionist programmer 完美主义强迫症型
You want to do what to my code? 你想对我的代码做什么?
这类家伙并不关心你的截止日期或预算,和编程艺术相比,那些都微不足道。当你最终收到最终成品时,你没有选择余地,只能对那漂亮格式的代码,不,是白玉无瑕的代码,衷心地赞叹。那代码是如此有效率,你无须再对它做什么,否则就是画蛇添足,亵渎大师手笔。他就是那位唯一有资格改动代码的人。
3. The anti-programming programmer 反编程型
I’m a programmer, damnit. I don’t write code. 我是一个程序员,擦!我不写代码。
他的世界只有一个简单的真理:写代码不好。如果你不得不写些东西,那你就错了。因为早已有人做过了,只需拿来就是了。即便他写代码所用时间和其他程序员差不多,或更长,他会告诉你,这种开发实践是多么多么地快。当你拿到他提交的项目时,可能实际代码只有20行,也易于阅读。代码或许并不快、高效或向前兼容,但所耗费之力是最小的。
4. The half-assed programmer 得过且过型
What do you want? It works doesn’t it? 你想要什么呢?代码不是能用么?
这种家伙很少关注代码质量,那是其他人的工作。他只快速完成安排的任务。你可能不喜欢他的代码,其他程序员也讨厌,但管理层和客户喜欢。虽然将来他会给你带来很多的痛苦,但他可以单枪匹马地在期限之前干完活,所以你不能嘲笑他(不管你心里有多想)。
5. The theoretical programmer 高谈阔论型
Well, that’s a possibility, but in practice this might be a better alternative. 嗯,有那种可能,但实践中这种应该更好。
这家伙对应该要做事之外的份外事更感兴趣。他80%的时间在呆呆地盯着电脑,15%的时间在抱怨不合理的期限,4%的时间在琢磨份外事,1%的时间在写代码。当你拿到他的最终成品时,总会看到这样的话,“要是时间多的话,这个地方我可以做得更好。”
你是哪一种?
个人而言,我自认为是完美主义者。所以,你是哪种类型呢?或者是哪几种的混合型呢?还是你觉得还有上面没有讲到的类型?请在评论留言
每个程序员的性格不一样,能力也不一样。正因为如此,也就衍生出了不一样的程序员。有些程序员自比码农,还有些认为自己是专家。那么你究竟是哪一类型的程序员,快来一起看看吧^_^!
程序员常见的四种类型
1.工匠
这是一群非常不一样的程序员,其他程序员对技术本身比较关注,但是这类程序员对实现的结果比较关注。对这些程序员来说,利用技术所创造出来的产品才是重点,技术本身不是重点.
因此,你很难用前端、后台、DBA、安全工程师定义他们,为了创造伟大的产品,他们愿意学习任何技术,有些浅尝而止,有些因为需要或兴趣而精通无比。他们通常具有叛逆精神,本能地抵制权威,喜欢挑战某个领域的领导者,具有传统意义的黑客精神。他们对自己和别人都极其严格,具有很强的控制欲,喜欢插手编程之外与产品有关的事物,如设计、UI、市场等等;因为他们不希望因为某个环节的失误而降低了产品的影响力,虽然他们并不总是对的。
这类程序员爱编程,但是编程只是他们生活的一部分。他们生活的其他部分,会是旅行、种地、绘画、玩音乐、打剑道、吹笛子,这些爱好,跟大家眼中的程序员气质完全不符。这些程序员还是工作狂、性格倔强、特立独行。
因 为如此种种,在一般的企业中,工匠很难共事,他们总会觉得自己的才华受到了限制,周围的人跟不上他的节奏;他们在某种意义上是公司的不稳定因素,要么是天 使,要么是魔鬼;绝大部分的企业不需要工匠,但对伟大或立志伟大的企业而言,工匠比专家还重要,专家可以把现有的产品做到行业领先,但工匠可以创造新的产 品从而改变游戏规则。因为适合工匠的企业如此至少,他们中的有些人选择自己创办一个。
2.码农
起初网络上没有这个词,这个词的由来,是因为一个程序员的自嘲。实际上,码农也就是软件的主体实现者。同千千万万农民工一样,他们只是软件大厦的缔造者。也许他们熟悉或者精通几门语言,开发现有框架。
他们是程序员中的蓝领,干着某种程度上的体力活,但这并不是什么坏事,事情总要有人做,并且编程的自由行赋予了码农很大的创造和学习空间。如果承认自己是个 码农并乐于所从事的工作,那也是件极其美好的事,可问题在于很多人并不是自己愿意做码农,而是被迫成为了码农,他们本应是音乐家、运动员或者是商人,可因为种种原因成为了码农,干着他们认为枯燥且重复的体力活,所以他们不开心,这种状态下工作身心俱疲,也就是他们最容易发出程序员吃青春饭,三十岁以后还写程序没出息,应该转管理之类的蠢话。
可当他们真的成为了管理者,通常情况下,只有极少部分人找到了自己喜欢做的事,其他大部分码农仍将继续他们的抱怨。综上,码农是程序员中占比最大的群体,他们的可塑性最高,有刚学习编程的中学生,有刚参加工作的毕业生,也有工作多年仍乐于战斗在第一线的资深工程师;作为码农,首先要承认自己的身份,然后找到自己的兴趣与方向,或者乐于做一辈子码农,或者准备向其他三类程序员转换,再或者换个行业,追寻自己最初的梦想。
3.专家
在软件行业中,这些专家摸爬滚打了很多年。他们对一个领域或者多个领域精通,而且见多识广。在公司里,这些专家通常被称为高级程序员、CTO或者架构师。他们通常设计好软件大厦结构后,安排码农去做,再自己写核心代码。
他们经验丰富,具有技术前瞻性,能够未雨绸缪,提前做出反应以应对软件大厦腐朽的趋势和业界的技术变化。他们性格单纯,喜欢自己的工作,且薪水不菲,通过阅 读科学家的论文来保持与时代共同进步。软件行业很特殊,对于制造业,杰出者与平庸者带来的结果差距通常只有一到两倍,可在软件行业恐怕用千万倍形容都不为 过。
所以专家是公司的宝贝,任何一家公司都要不懈余力去争取或培养专家;同时,成为专家通常也是很多码农的终极梦想。因此,如果你是一位专家,请接受我致以的崇高敬意。
4.(计算机)科学家
与其说他们是程序员,不如说他们是数学家。他们发明了各种理论、算法和术语,教科书上那冗长的证明和计算也出自他们之手,其他的程序员都或多或少受益于他们的成果。有时,他们的一篇论文能改变整个业界的思维方式,但他们通常不会也不喜欢把那惊世骇俗的理论商业化。相比之下,他们更喜欢沉浸在科学的象牙塔里,自得其乐,好不快活。
他们是程序员中最不经常写程序的人,甚至有一些大师一辈子都没写过程序,你也许认为这违反了我们开头对程序员的定义,可谁说编程非要用键盘呢?
两种不同性格的程序员
有两种极端原型的程序员——“禅宗的程序员”,我们称为心如止水的程序员,还有“不能克制分心的程序员”,我们称为心绪不定的程序员。两者都是非常极端的,所以他们应该处于贝尔钟形曲线的两端,对吗?
错。实际上,心绪不定的程序员是难以置信地普遍存在着。
图片的效果要比文字有用,所以我现在用图片来说明两种程序员的精神世界的状态。
心如止水的程序员
心如止水的程序员会怎么做?
他写代码。这是他做的唯一的事情,这也说明了一切。也许更重要的问题是什么事情他没有做:他没有受分心的影响。专注的注意力,专注的修改,专注的编码。一到两个小时的纯代码时间,然后才是 20-30分钟的休息,通常是离开电脑。之后他会继续开始写代码。(以上所说的时间只是一个例子。他可以用其它方式安排时间——不过他总是能平衡并搞定长时间的生产率。)
他的思维像平静的水缓慢地流动。当然它不像那种恒久不变的凝固的冰。
这就是心如止水的程序员精神世界看起来的样子:
心绪不定的程序员
即使你的精神世界现在看起来像一个心如止水的程序员,只要你在编译的时候打开了 Facebook 或者检查了你的邮件还是做了其它什么事情。
几分钟之后它就会像这样:
女士们先生们,这就是你检查你的邮件和打开 Facebook 后的状况。如果你还拥有一堆实时通知,即时通讯,还要去检查你的 RSS 源和推特,结果就是大脑像上面图中变成碎片的灾难一样。
你可能还没有完全从这张图恢复过来。不在特定的某天,任何时候都有可能发生。即使你把精神世界所有无用的东西最小化到任务栏,它仍会留在那里,不停地引诱你,消耗你的精神资源。朋友,时间就这样走了,你会困惑它是怎么不见的。
顺便说一下,如果你是一个心绪不定的人,你还是可以看看我们网站的网页漫画!不必立刻回来把这篇文章读完。别忘了订阅那个漫画源!看完所有的漫画后可以分享给你的朋友并聊聊!做这些事不会过于分心的,真的!
心如止水的程序员与心绪不定的程序员之间的区别
心如止水的程序员更倾向于长期的幸福感和生产率。他有能力高度集中注意力,关注目标。
心绪不定的程序员更倾向于短暂的满足感,长期这样不能到达全部的潜力并且会对他自己的身体和精神带来双方面的伤害。他不能定下心来集中注意力。
其实无论是专家还是码农,程序员都是为老板服务,为公司服务。有人说程序员的收入都很高,这句话虽然没错,但是又有多少人看到程序员的辛苦。在很多大型企业,加班到最迟的永远是程序员。