在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 源和推特,结果就是大脑像上面图中变成碎片的灾难一样。
你可能还没有完全从这张图恢复过来。不在特定的某天,任何时候都有可能发生。即使你把精神世界所有无用的东西最小化到任务栏,它仍会留在那里,不停地引诱你,消耗你的精神资源。朋友,时间就这样走了,你会困惑它是怎么不见的。
顺便说一下,如果你是一个心绪不定的人,你还是可以看看我们网站的网页漫画!不必立刻回来把这篇文章读完。别忘了订阅那个漫画源!看完所有的漫画后可以分享给你的朋友并聊聊!做这些事不会过于分心的,真的!
心如止水的程序员与心绪不定的程序员之间的区别
心如止水的程序员更倾向于长期的幸福感和生产率。他有能力高度集中注意力,关注目标。
心绪不定的程序员更倾向于短暂的满足感,长期这样不能到达全部的潜力并且会对他自己的身体和精神带来双方面的伤害。他不能定下心来集中注意力。
其实无论是专家还是码农,程序员都是为老板服务,为公司服务。有人说程序员的收入都很高,这句话虽然没错,但是又有多少人看到程序员的辛苦。在很多大型企业,加班到最迟的永远是程序员。
相关推荐
一个金融类程序员所需掌握的技能 一个金融类程序员所需掌握的技能
综上所述,“一个程序员走过的路”是一个关于程序员如何从入门到精通的全面指南。它不仅涵盖了C语言和C++这两种关键的编程语言,还深入讲解了文件操作与算法设计,旨在帮助程序员在技术领域取得深入发展,并在职业...
8. **编程实践**:实际编程题目的出现,可能是让你编写一段满足特定需求的代码,考察你的代码编写和调试能力。 通过对以上知识点的学习和掌握,初级程序员可以逐步提升自己的技能,为后续的进阶学习和职业发展打下...
程序员记事本应运而生,它不仅仅是一个简单的文本存储工具,更是一个代码知识的宝库,一个团队协作的平台,甚至是一个程序员个人成长的见证者。 程序员记事本的设计初衷是为了帮助程序员解决工作中遇到的问题,记录...
1. 菜鸟级:所有代码都只放在窗体文件中,这类程序员主要通过拖拽控件、设置属性和编写事件代码进行开发。 2. 中间级:工程中有bas模块,表明程序员已经意识到代码复用的重要性,开始将共通的代码模块化。 3. 高手级...
刚刚走出就业的程序员,技术是刚刚起步的基点。那下面我们就聊一聊有关技术的东西。...你又是哪一类的程序员?“菜鸟”程序员和“大神”程序员差在哪里?真是差在技术上了吗?那不是差在技术上那差在了哪里?
描述中提到的“精灵输入法”是其中的一款,它作为程序员专用的输入法,可能具备以上所述的所有特性。例如,它可能有强大的代码提示功能,能识别各种编程语言,并且有丰富的预设代码片段,使得程序员在编写代码时可以...
标题“程序员助手解密版”揭示了这是一款专为程序员设计的工具,它可能包含了帮助程序员进行日常工作的各种实用功能和资源。描述中提到的“文档特殊操作,常用程序及各类资源的存储,文档分析等”进一步明确了这个...
《程序员教程》是一本针对初学者和有一定经验的程序员精心编写的教材,旨在全面介绍编程基础...通过阅读和完成书中的任务,你将逐步成长为一名合格的程序员,具备解决复杂问题的能力,为未来的编程生涯奠定坚实基础。
《你能够使用C++编程:一名程序员的介绍》是一本专为初学者设计的C++编程教程,由John Wiley and Sons出版社在2006年7月出版。这本书旨在帮助读者掌握C++语言的基础和核心概念,从而成为一名熟练的程序员。PDF格式的...
综合以上信息,我们可以推断“程序员浏览器”可能是指一类集成了开发者工具、具有高效浏览和调试功能的定制化浏览器。这些浏览器在满足普通浏览需求的同时,更加关注程序员在工作中对网页元素检查、代码调试等特殊...
本文将深入探讨成为一名程序员所需要掌握的基础知识,以及如何通过PDG格式的学习资料来提升你的技能。 首先,编程语言是程序员的基石。你需要至少熟悉一到两种编程语言,例如Java、Python、C++或JavaScript。Java是...
程序员考试是中国计算机技术职业资格认证体系中的一个重要组成部分,旨在评估和认证个人在计算机编程和软件开发方面的技能与知识。这份压缩包文件包含了历年来的程序员考试试题及对应的答案,对于备考者来说是极其...
【程序员技巧收集助手】是一款专为程序员设计的实用工具,旨在帮助他们更有效地积累和管理在编程工作中遇到的各种技巧和经验。这款软件的核心价值在于它提供了便捷的方式,让程序员能够整理、分类、检索他们在开发...
在编写代码时,每一个函数、每一个类都应当是精雕细琢的结果,以便于其他开发者阅读和维护。这不仅要求程序员具备良好的编程基础,还要求他们对设计模式有深刻的理解,能够在适当的地方应用合适的模式来简化和优化...
【程序员专属壁纸】这个主题,实际上是一个集合了与编程、技术相关的视觉设计作品,主要服务于程序员这一特定群体。这些壁纸通常包含与编程语言、科技元素、代码文化等相关的图案和标语,旨在展示程序员的独特个性,...
"黑马程序员Javase笔记"是一个自学者在学习黑马程序员提供的Java全套课程过程中整理的笔记,主要涵盖了Java Standard Edition (Javase) 的核心内容。下面将详细讨论其中的关键知识点。 首先,DOS命令是操作系统中的...
标题中的“程序员测试”指的是对潜在程序员的一种评估方式,通过特定的题目来判断个人是否具备从事编程工作的能力和潜力。描述中的“看看里面的题目”暗示这是一道编程挑战,旨在检验解决问题的逻辑思维和算法能力。...
根据提供的文件信息,这里将对“黑马程序员最新一期高清教学视频”进行详细的解析与扩展,以便更好地理解其中可能涵盖的知识点和技术内容。 ### 黑马程序员教学视频概述 #### 标题解读:“黑马程序员最新一期高清...
【知识点一】:软件开发基础知识 在这个题目中,提到了程序员考试的相关内容,这涉及到软件开发的基本知识。软件开发不仅仅是编程,还包含了需求分析、设计、测试等多个环节。试题中的错误分类,例如段落标题编号...