论理想的程序员

理想的程序员心眼儿不坏(他们从来都不是办公室政治的宠儿,是一群单纯明亮快乐的手艺人),有天真烂漫的好奇心(他们的眼睛里经常闪着「哇,这个是怎么做到的!」),永远精益求精(他们的口头禅是「我再研究一下」),还乐于分享(他们活跃于GitHub、各大问答社区和你的身边,舍得将宝贵时间用于帮助新手)。是的,他们不需要被管理,只需要给一个大的方向,总能回报以意想不到的结果。

理想的程序员与平庸的程序员只有一墙之隔。两者的差距只有6个一点点,而人与人的差距,正是在这日积月累的一点点中,被永远拉开了。有意思的是,我发现这6个一点点都和意识有关,也就是程序员和其他一切新兴产业的工种一样,只需要意识加上时间的锤炼,人人皆可达到理想的阶段。理想的程序员必然也是一个优秀的problem solver。

第 1 个一点点:专注眼下

见过太多心猿意马的程序员,我不得不把「专注眼下」作为天字第一条。他们往往有各式各样的小梦想,比如做个小茶农、做个小鹅贩、做产品、做销售、做投资,却被程序员的高薪或是没有转行的魄力「耽误」了,而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术。不可否认,这世界上存在着伟大的产品(像乔老爷)、伟大的销售(像埃里森)、伟大的投资客(像彼得菲),而他们毫无例外都是程序员出身。可你听说过巴菲特评价盖茨的话么,比尔盖茨如果转行去卖狗,那他一定是全世界最大的狗贩。我坚信除了少数的天才外,冥冥众生均可以在多个领域取得成功,只要保持足够的专注。而哪怕你下一年就想卖狗去,程序员的经验仍然能训练你强大的逻辑、谨慎和耐心,放在哪个行业都是相当可观的竞争力。

第 2 个一点点:思考力与推动力

我认为处理bug、崩溃、调优、入侵等突发事件比编程本身更能体现平庸程序员与理想程序员的差距。当面对一个未知的问题时,如何定位复杂条件下的核心问题、如何抽丝剥茧地分析问题的潜在原因、如何排除干扰还原一个最小的可验证场景、如何抓住关键数据验证自己的猜测与实验,都是体现程序员思考力的最好场景。是的,在衡量理想程序员的标准上,思考力比经验更加重要。

有时候小伙伴跑过来,问我「提交了一个任务被卡住了,怎么办」的时候,我总觉得他可以做得更好。比如,可以检查试验别的任务,以排除代码自身的原因;可以通过Web UI检查异常(如果没有账号,可以让我提供);可以排查主机日志或删除缓存,再不济,总应该提供任务ID和控制台日志给我。理想的程序员永远不会等事情前进,他们会用尽一切方法让事情前进。

第 3 个一点点:Never Say No

记得从前厂离职之前,找老板谈话,他说我最大的优点就是从来不和他说这个做不到。后来我发现在很多团队里,都存在一种技术和产品的对立,程序员往往以「技术上无法实现」来挡产品的需求,而产品也往往以「Facebook可以为什么我们做不到」来奚落程序员。这两句话应该属于禁语,从根本上都不利于程序猿和产品狗的相亲相爱。

一句「技术上无法实现」是容易出口,可有多少人在说出这句话的时候,心里是100%肯定的?如果不肯定,为什么不能回去谷歌一下再回答?原本我以为程序员是充满想象力,因为有想象力,才能诞生那么多改变我们生活的软件和互联网产品。见识多了,才了解大部分程序员已经在与bug的对抗中变得保守而不愿担当风险,与此同时许多团队也不愿意宽容失败。于是「Say No」变成一种习惯性的抵触,还记得曾国藩为什么解散湘军么?他说那支军队已「暮气渐深」,不能打仗了。要做理想的程序员,就不能给自己滋生暮气的机会,如果面对不合理的需求,可以把时间成本摆出来,把曲线救国方案亮出来,简单粗暴「Say No」是不可取的。

第 4 个一点点:投资未来

程序员是一个非常残忍的职业。你所学所用的语言、框架、模式,很可能在数年内就成昨日黄花了;你现在嘲笑的另一群程序员,可能马上就能转身来嘲笑你了。所以理想的程序员除了做好自己的本分,还要花费时间来投资未来。什么是「投资」?投资就是你现在投入的时间,在未来会以更多的时间或者金钱(看看早几年学习iOS的程序员现在的薪酬!)回报你。举我自己的领域——数据挖掘为例,08年左右Hadoop开始兴起,一时「大数据」概念火热,Hadoop工程师万金难求,各互联网公司纷纷把数据统计、数据分析和数据挖掘的业务切换到分布式平台上。这几年眼看Hadoop还在不断迭代,Spark又异军突起,一举刷新了Hadoop保持的排序记录,以内存存储中间数据带来的性能优势和丰富的数据结构让人爱个不停,各种奇异的小bug和陡峭的学习曲线又让人打退堂鼓。那么,明眼人都知道Spark是未来的趋势(内存会越来越便宜),在主业务放在Hadoop的条件下,就可以适当把一些小模块切换到Spark上,同时留意Spark社区的发展,很快从Spark获得的性能收益就能把之前投入的学习时间挣回来。

第5个一点点:善用工具

善用工具可以分为 4 个层面:搜索引擎、不相信重复、代码片段、自动化。

我刚入行那会,一个计算机专业却当了公务员的朋友问我,你一点都没学过编程,平时怎么写代码?我说,谷歌,于是遭到无情的耻笑,以至于我在哪里的账号都叫 2shou,告诫自己是一个无耻的二手程序员。这是一个笑话,但如果现在问我,我还是要回答谷歌。程序员的成长就像膨胀的圆饼,外面是无边无际的大海,圆饼越大,与大海接触的面也越大,懂的越多,不懂的越多,而计算机科学又是一门更新换代异常迅速的学科,同时也是知识互联网化最好的学科,很难利用传统的科班式有教有学的方法,相反通过搜索引擎则很容易获取到最新的知识。

不相信重复,大师的话叫DRY原则(Don‘t repeat yourself),代码写多了,会有人为的直觉判断好的和烂的代码,我的标准是简洁和规范,简洁并不是美感上的标准,重复越少,给自己出错的机会也越少,后期维护的成本也越少。

如果你不幸丢了三周前的代码,也许你能凭着过人的记忆力把脑子里残余的片段复写出来,但如果丢的是三个月前的代码,恐怕就没有那么好的运气了。理想的程序员会着力找寻有效的资料保存方式,把工作里灵光闪现写下的代码、脚本、配置、经验等短的片段保存起来,以便任何时候都能复查。

  理想的程序员必须懒惰。对他们来说,重复的步骤和重复的代码一样丑陋,如果意识到一项工作有可能长期要重复,那么自动化的时间总是越早越好。

第6个一点点:管理时间

之所以管理时间会对程序员这个行当特别重要,是因为在完成任务时你必须像荒野里的狼一样,「独行」。没有外界约束的情况下还能稳定控制自己,保证能高效率地工作和学习,那么日积月累你肯定会变得比一般人厉害。

程序员干的是高强度的脑力活,一般每天集中4-5个小时应对本职工作就足够了,但工作之外,一定要安排时间用于学习。除了学习,留点时间放空自己也是必要的,利用泡茶或者喝咖啡的间隙,把弥足珍贵的时间留给自己,往前想往后想,事半功倍。

说了这么多,想必有人会问,费劲心思成为一个理想的程序员,又有什么用处?会有高薪吗?不。能升职吗?也不见得。迎娶白富美呢?不如去卖狗。

稻盛和夫曾经说过一个故事,明治时期的手艺人被天皇召见,虽然都是不读书的乡下人,但一辈子兢兢业业地做一件事情,自然有一股高贵的气质。理想的程序员,应该就是循着这种高贵的气质而去的吧!

时间: 2024-08-27 10:33:43

论理想的程序员的相关文章

第1次作业:这是一个不想当程序员的未来程序员

前言:这是一个不想当程序员的未来程序员对于计算机专业的某某看法.... 1.结缘计算机 问题1.1:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 对于这个问题,其实计算机专业并不是我的第一志愿,而是第三志愿,我第一二志愿分别是会计和金融,不过现在看来其实我的兴趣也不在这几个方面,有句话说得好,三分靠高考,七分靠志愿.志愿填的好,将来烦恼会少很多.经过两年的学习,我发现当初我就不应该考虑就业前景而填报专业,而是应该结合自己的兴趣爱好来,即使这份兴趣爱好所对应的专业将来并不好找到工作

想讨好程序员?在他面前开产品经理的玩笑就对了

很多人都觉得软件工程师们是一群聪明绝顶但装模作样的家伙,通常身边有这种朋友,大家心里都是又敬又惧又恨啊! 但其实要让他们把你当自己人倒也不难,先赢得他们的尊重即可.以下提供「内行人」的七大绝招,让软件工程师们对你另眼相待! 第一招:发送纯文字电子邮件 工程师们不欣赏内容繁琐又花俏的电子邮件,有人喜欢加上一堆修饰用语.花俏字体格式来丰富邮件内容,这种图文并茂的风格不会得到工程师青睐的!他们要看的是简洁有力的内容,最好是类似程序用语的写法,如果你想要加粗什么关键字,就在**关键字**两边加上星号表示

想成为程序员,这些技能不能少

欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ 对于刚开始学习软件开发的新人来说,“必备技能”往往意味着一个长长的.标有重要度的学习列表,但是过长的列表通常会导致新人不知如何开始学习,压力倍增. 本文尝试列举出最重要的几个技能,也期望通过此列表能给新人一个比较明确的学习重点和路径. 深入学习一门编程语言 没有掌握任何一门编程语言,就不可能成为一名编程人员. 许多程序员试图在学习之初一次学习几种编程语言,以便应对他们第一份软件开发工作的需要.虽然我认为开发人员最终会学习多种

如果你也想成为程序员

!最近几年我在做什么! 高一时,很难接触到电脑,只是听说黑客怎么牛怎么牛的,在同学家玩电脑游戏,想我将来要造高端的游戏,就这么入了坑.从此我的梦想成了做游戏.通过老师买了谭浩强的c语言书,然后就抱着死啃.写的c程序也运行不了(没电脑嘛),好像当时也不知道小黑框框什么的,就死啃书,碰到指针啊,链表什么的,不懂就跳着读,把这本书读完了.那时正在学诱导公式,寻思着c语言终于有了用武之地,上语文课的时候写了一个判断三角函数符号的程序,就写在纸上,没用电脑运行过,但我保证程序不会出错,我自己都觉得很牛.之

想不想当程序员。程序员好不好。

原文发布时间为:2009-08-26 -- 来源于本人的百度文章 [由搬家工具导入] 全文请见:http://tech.163.com/05/1025/11/20THD0T000091589.html 1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你) 2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥) 3、你有对新技术追

程序员工资高,却有很多人想转行,理由很简单!

这些年各大互联网公司曝光的一些员工收入水平来看,程序员的工资还是相对比较高的,可是我们在互联网上还听到了另外一种声音,很多程序员想转行,特别是大龄程序员,这可能会令很多人纳闷.为什么工资这么高还想转行呢?其实也很无奈,从下面几点可以看得出来. #1.程序员加班多,经常熬夜 IT行业是一个工作节奏非常快的行业,项目越快上市,就能更快一步抢占商机,为了加快项目的进度,项目的计划时间安排也是相当紧张,所以程序员加班是经常的事,导致加班多还有一些其他的原因,我们设计好项目的需求以后,为了适应用户或者客户

28了,终于成为一名程序员

这是我6年前的梦想 11年做网管的时候,幻想着挣钱买电脑,然后自学开发的知识,因为大学时旷课上网,所以在学校没掌握到应有的开发知识.11年9月到了北京做保安,工作是非常的痛苦,更是激起的强烈的渴望做程序员,每天晚上值班的时候,痛苦地熬过每一分钟,靠幻想未来做程序员来抚慰自己.那个时候最大的渴望还是有一台电脑,以便自学编程.其实直到现在我才明白,我如果是真有决心做程序员,决不会等到有一台自己的电脑才学习,而是在其他很多地方都可以学习,比如网吧.值班室.而且不一定非得等到下载完所有资料再去学,而是尽

做什么职业,也别做程序员,尤其是Java程序员

千万别做程序员,尤其别做Java这种门槛低,入门快的程序员(别跟我说Java搞精通了也很牛之类的,原因不解释,做5年以上就知道了),程序员本来就是我见过最坑爹的职业了...Java程序员更是,现在满地都是Java培训机构,不出3年,你就不值钱了,就像3年前的C++一样!而且Java贬值更快,因为他比c++简单多了,培训个3个月,直接上岗,你说你怎么保证自己是不可替换的?而且现在Java程序员的整体工资,已经有不断下降的趋势! 我就用我的亲身经历告诉你,你这个想转程序员的人:别做这行,因为你不知道

程序员须知<转>

重要的不是你用什么开发,而是你在开发什么. 程序=算法+数据结构 过程=对象+属性+方法+事件 程序员的秘诀是:编程.编程.再编程. 编程的秘诀是:思索.思索.再思索. 自由固不是钱所能买到的,但能够为编程而卖掉. 编程为了生活,生活为了编程. 不要认为编程是一项任务,其实是一次让人羡慕的机会! 编程之乐何处寻,数点梅花天地心. 假如编程易懂得,那么程序员就不会热情地写出注释,也不会有得到编程的快乐. 编程中最没用的东西是源代码,最有用的东西是算法和数据结构. 编程之久除了算法和数据结构,什么也