我的一位同事,他带他读小学的孩子去学钢琴,通过关系找了一位有点名气的退休的老教师,学费不菲。他说其实他并不知道为什么要学,但是看到那么多孩子都在学钢琴,他想,他的孩子不能落后。一个月之后,他去问钢琴老师,对孩子的学习有什么建议没有。钢琴老师用尽了委婉的表达,最后说:
“ 对于你的孩子在学音乐方面,我最大的建议,就是你的孩子最好别学音乐”。
什么?!
这位同事听了当然恼怒,但是转念一想,老师未尝不是负责任的。通常这样的老师,赚钱之心,都会忽悠家长,或者好话歹说,很少有说“ 不” 的。但是真话就是这么犀利。
他说:“ 我们平时并不容易听到真话,真话来临的时候,心里还真是‘ 咯噔’ 一下”。
世界就是这么残酷,老天给了不同的人不同的能力和智慧,世界上许许多多不同的事都需要不同的才学和特质,试着去寻找适合自己的方向,这无关乎你有多努力。这是一个简单的道理,语言可以说得冠冕堂皇,可是事实就是这一个:
“ 如果你没有这方面的天赋,你最好别干这事”。
放到程序员身上,亦然。
哪些人不适合做程序员?
- “ 我不懂网络、不会操作系统、没听说过 Java……”,没关系,这些具体的技术都可以学。
- “ 我记忆力差,数据库认证考试不及格……”,没关系,记忆力差的人只能记住深刻的、精华的东西,而且自己的想法会更多;至于认证考试…… 其实我们都知道那种考试有多么浪费生命。
- “ 我 30 岁才开始写代码,同事说的我都没听说过……”,还是没关系,你知道的太少而已,少工作,多上网,了解更多的行业信息;积累你的经历,总结你的故事,你就能知道得更多。
- “ 我没听过什么是软件……”,好吧,我承认,这是唯一一个例外的,你是从别的世纪穿越过来的人吗?
不是这些,那么,到底哪些人不适合做程序员?
下面这些话,是我眼中程序员必备的衡量标准,遗憾的是,这些都很难通过勤奋来弥补。现在,聪明的你,不妨参考一下自己,也许现在想明白什么才是适合自己的事情,比到三十年以后再后悔起来,要有意义得多。尤其当你发现其中某一条,触及你心中的痛处了,那么,你真的要好好想想了。
如果你的思维缺乏条理性、逻辑性,那么,你绝对不要尝试去做程序员。
我不知道还有什么比这条特质更能体现对程序员的要求了。有的人理性思维不强大,但是感情细胞异常丰富,也许你能成为艺术家、诗人,但是程序员,一个缺乏逻辑的程序员,你能期望他干什么?
这一条是我唯一不想做任何解释的。 :)
如果你对事物没有思考的习惯和耐心,那么,你别去做程序员。
首先,不妨阅读一下这篇文章(链接),里面提出了 N 个身边的现象,每个现象都伴随着几个问题,小小地思考一下。
其次,如果你没有耐心阅读它的话,思考一个我从中随便摘出来的一个问题:
许多年前,当我看到珊瑚虫 QQ 把 IP 转成地实际地址的时候,我就在思考,如果我有一个 IP 网段的数据(全球 IP 地址数据),我怎么来完成这个功能呢?比如:某地点的 IP 网段是:10.10.1.* – 10.10.5.*。我要有一个 IP 地址是:10.10.3.20,我怎么匹配这个网段?用 Hash 表吗?好像有问题。把 IP 字串转成整型?排序+二分法,好像更容易解决一些,但是如果有一些修改的话好像有点不方便。用树型结构(森林)会不会更好一些呢?如果我要通过地点反查 IP 段呢?
我本来想给出另一个例子的,但是上面这个例子在这里更合适,我就保留了下来。
好,现在从你的思考回到本文中来。
如果你阅读了上面文章的链接,并且考虑了其中的某几个问题,至少说明你是有阅读和思考耐心的。
如果你没有阅读链接里的文章,但是思考了上面引用的问题,那么,这方面,你也还好。
如果你直接跳过它,阅读到此了,是你太忙了吧?太不经意了吧?还是…… 尽管你不愿意承认,其实是没有思考的耐心和习惯呢?
还有一个活生生的例子,以前有位同事和我抱怨,每天都要做一件事情,就是把报表数据录入 excel 中去,然后每周会给领导提供一次数据报告。但是每天录入数据的工作很枯燥,就是从网页上把一项项数据拷贝出来,粘贴到 excel 中,每天都要花十分钟的时间,每次虽然时间不长,但是日日如此,很枯燥。就这样,他在抱怨中做这个工作做了有半年之久。
看到这里,你想到了什么?
是的,为什么不做一个“ 懒惰” 的程序员,为什么不写一个脚本之类的小程序去做这件事呢?
本质上,这依然是那个不愿意思考的问题,我没法评论其他行业对于思考的要求,但是程序员所解决的问题,都是不一样的,有的可以借鉴,有的可以模仿,但是你不能完完整整地抄袭整个问题解决的办法,总有很多问题需要用你的脑子去解决。
最后,看看这篇文章和其中的视频,关于码农和程序员,我想,之后你会有一点想法的。
如果你对新技术不感兴趣,那么,你还是不要去做程序员。
有的人会对新技术有一种排斥感,觉得“ 我学好 C 语言、操作系统和网络这些基础科目,把基础打扎实就够了,不需要接触那么多新技术”,并且往往认定新事物未必有什么新花样,万变不离其宗,没有什么的学习价值。
我认识的人中,抱着这样看法的人其实有很多,有些人甚至已经写了十几年代码。但是软件行业是更新换代速度极其频繁的行业,“ 万变不离其宗” 是有其中道理的,但是“ 没有学习价值” 只是逃避新事物的托辞罢了。
这样的情形有这么一种典型现象,觉得没有必要学习多种编程语言,因为“ 深入地掌握一两种语言就够了,语言都是相通的”。
很明显,这样说的人没有看到那些“ 不通” 的地方,那些足以改变你视角和思维方式的地方。
再了解了解你心目中成功的程序员,我想这些人中,尚在做技术的程序员,无论到了哪一个层次,几乎都关注着互联网和开源社区。
如果你耐不住寂寞,那么,你可能不应该去做程序员。
你不需要非得在半夜里编码,你不需要非得穿奇异的衣服、做 Geek 的事情,你甚至不需要很辛苦地工作,但是,如果你“ 只想和大家一起讨论、一起研究”,而不愿意自己学习、自己写代码的话,你还是别做程序员了。
程序员不是一个孤独的工作,沟通能力是几乎每一个行业必备的技能,但是,你会有很多很多的时间自己学习、思考问题,上网搜索,写代码、测试、部署…… 甚至包括等待程序响应,分析程序崩溃的原因。
程序员需要独立解决问题,程序员解决问题不是民主选举。世界上绝大部分优秀的系统的绝大部分,总是由很少的人设计出来的。
总想把困难的问题留给和大家一起解决的人,往往存在一种依赖感,以及一定程度的不自信,你说是不是?
如果你只想把问题解决,特别不愿意寻根究底、精益求精,你大概不适合做程序员。
没有比这篇文章更可以说明“ 寻根究底” 这四个字了,但是这四个字其实和本文中提到的第一点本质是相同的,故不赘述。
有的人不愿意做测试,问他为什么,他说,“ 我喜欢创造一个东西,但是我讨厌去验证一个东西的正确性”。这样的人写不优秀的代码,因为他不会不断去追求高质量和更理想、更美的代码,更优秀的产品,他只适合做一个短期的项目,这样的项目很可能在不久后就变成一个烂摊子,当然,他可不愿意收拾烂摊子。
测试,无论是测试设计还是测试执行,很大程度上都是程序员工作的一部分。优秀的程序员总是能把程序写的容易测试,总是可以设计出好的测试方案。如果你讨厌测试,我希望你只是因为讨厌那些重复劳动—— 同时,停止抱怨,不如想个办法解决它吧。
许多 Geek 的心理有那么一点异于常人,如果你对于界面上几个像素的偏差都感到难以接受,如果你对维护自己的代码细致到格式、命名等方方面面的细节,说不定你就是那个能成为“ 极致” 的程序员。
如果你接受了我的观点,发现自己就是个程序员的料,那么恭喜你,祝你成为令人尊敬的同行;如果你发现自己实在不适合做程序员,那么还是恭喜你,尽管抱怨和咒骂程序员的工作吧,事实上,那的确真不是什么好差事,而且,真相越早看到,就越不那么残酷,不是吗? :)
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
满分作文级别的文章,唯有仰慕,厉害厉害。
写的很好,中枪了感觉,可能现在刚进入工作吧,遇到 bug 之类的总想依赖别人,“ 但是,你会有很多很多的时间自己学习、思考问题,上网搜索,写代码、测试、部署…… 甚至包括等待程序响应,分析程序崩溃的原因 。”
很对唉
你好,这篇文章的最后一个链接” 这篇文章” 挂了,还能找到吗?
不好意思,我只记得是一篇讲问题定位来龙去脉的文章,标题不记得了。
没有比这篇文章更可以说明“ 寻根究底” 这四个字了 这篇文章链接失效了, 可否提供下文章名字我好去搜,谢谢四火
http://hi.baidu.com/imedal/item/33641d33cb9ec8179cc65e89 这个可以访问啊
那篇文章题目叫做《
一个诡异的时间问题追查
》
我没有上面所说的特点, 但是能否后天培养那?
博主,我是个大一学生,专业不是计算机,但是对这些非常感兴趣,想学习,但是不知道按照什么顺序来学,能指导下嘛
做了多年的程序员,发现我不适合做程序员…… 看来要改变了!
如果你只想把问题解决,特别不愿意寻根究底、精益求精,你大概不适合做程序员。
被电了,很多时候我不得不去解决问题,而没有时间去寻根究底。
有点偏颇了吧,我觉得除第一点外,其他的不一定,程序员也不是固定一种类型,有的喜欢钻研细节,有点喜欢追求效率,有的喜欢玩新花样,有的喜欢架构组织,有的喜欢单打独斗,有的喜欢拉帮结盟,不同性格、不同智商、情商的人都有他所擅长的一面,不能一概而论吧,只要做到认真投入,坚持一段时间,都会有所成的。
每个人都有自己的标准。在我看来,文中的这几点机会都是必要的。
就像我说“ 架构师” 必须首先是个高级程序员一样,很多人反驳我说:“XXX 架构师就不懂技术,但是人家业务熟啊”、“XXX 架构师自己不写代码,但是他能找到最合适的人来写代码”…… 一样,我对程序员认识有几个必要条件的标准,就是文中所述。达不到的人,当然也能成为程序员,但是不会成为一个特别优秀的程序员。:)
优秀的程序员能干几年呢,接触过多个项目的人都是知道,为什么到了一定年龄的程序员,
大多数都要转做架构师、项目经理、甚至是其他的转型呢,
难道说坚守 code 阵地到最后的 coder 不为好的程序员吗。
我觉得,态度决定一切,因为当前的 code 不能实现全面自动化,全是手工劳作,人月神话主要也是
如何管理人能创造更大价值,在这个技术日新月异,既追求开发效率,有追求最少投入成本,而又基本上纯手工劳动的行业,
任何对于从业者的要求都要审时度势来判断。
一个干了 6 年的人一点体会,耐不住寂寞的人肯定不是一个好程序员
赞成,除第一点外,每个人应该结合自己的特点去发挥特长
不错的文章,看来我还是挺适合做程序员的
很收益. 我也是做程序员的料. 正在做自己喜欢的事情.