李喆:程序员到底怎么了

openkk 12年前
   我们是这样的一群人:每天都在“努力”的工作着,每天都和计算机打交道,泡在网上,打游戏,查资料,发微博。可是有一天,突然意识到,我们的未来 在哪里,每个月那点可怜的工资,一年加起来也买不了几平米,找个女朋友也那么难,即使找到了,她还总是跟你说,为什么别人挣的都比你多,你每天不停的写着 代码,每天不停的掉头发,每天都在发呆的想那“不远”的未来。他们管我们叫“码农”,我们管自己叫“程序员”,出差的时候被叫做“工程师”,我们到底是什 么? 对于我自己,我只想告诉每个人,我不是一个程序员,I’m not coder。    <p>        程序员到底怎么了,我们当然不否认有很多出色的程序员,他们生活的好,赚的也多,可是毕竟大多数都还是一般水平,很多还是挣扎在基本满足吃住的 水平。特别深的问题,比如国家社会问题(总有人会说我们的社会把我们搞成了这个样子),我这里不想谈,我来结合自己的体会来讲讲我所认识的一些程序员都在 怎样工作和生活。</p>    <img title="hair loss after coding several years" alt="李喆:程序员到底怎么了" src="https://simg.open-open.com/show/d024b5e106746c3558279579a96ff187.jpg" width="480" height="343" />     <dl></dl>    <p>        我周围的程序员大都不喜欢程序员这个行业,总希望如果未来可能,一定要跳出这个圈,去做别的行业,有的说去做销售,有的说回老家开个小超市,有 的说的更是离谱。我不知道为什么他们都在这么说,原因在于我从未见过他们努力过,如果没有努力过如何知道这个职业就是没有前途的呢?工作的时候,他们大都 在谈论社会问题,昨天看了什么电影,谁也买了个 iPhone,她的爸爸给她在北京买了套房子等等无聊的问题,后来他们谈论什么我就不知道了,我带上了耳机,畅游在代码的世界里,享受着原来 100 行完成的功能,经过我重写,只要 50 行就能运行的比以前好,而且效率更高。<strong><br /> </strong></p>    <p><strong>        第一个问题,程序员和其他行业一样,最起码需要一个态度</strong>。如果你连基本的态度都没有,不要谈程序员没有前途,以为每个行业对这样的人来说都没有前途。</p>    <p>        我做完一个功能,演示给我的同事看,然后告诉他我是怎么实现的,以及这样做的好处是什么。他的一句话像一盆凉水一样泼在我的脸上,“你费这么大 劲干嘛啊,你不要想这么多,领导又看不见你是怎么设计的。”,“哦”。我很无语,也更不知道怎么答复他。听完那句话我彻底明白程序员没前途的原因了,和其 他很多行业相比,软件不容易发现问题,也许你做个特效,让一个东西蹦来蹦去反而得到领导的赏识,而你自己花费了很多自己私有的时间来设计的结构没有人会采 用,因为你的领导要向他的领导交差,他也希望能拿的出一点能看得见的东西。很多程序员被这样的领导强奸了,只做哪些表面工作来取悦领导,2,3年过后,发 现自己什么都不会了。也就看不见前途了,做那点破东西,可以让你得到一会儿的“赏识”,计算机是个技术活,需要技术和经验的积累。</p>    <p><strong>        第二个问题,程序员的前途是程序员自己造就的,如果你觉得你现在没有前途,那只能说明你做的不够好。</strong></p>    <p>        计算机业界有很多好书,非常著名的书,比如《<a title="黑客与画家" href="http://www.amazon.cn/gp/product/B004WHZGZQ/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B004WHZGZQ" rel="nofollow" target="_blank">黑客与画家</a>》、《<a title="Unix 编程艺术" href="http://www.amazon.cn/gp/product/B0050CRP0Q/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B0050CRP0Q" rel="nofollow" target="_blank">Unix 编程艺术</a>》,我不想说《<a title="算法导论" href="http://www.amazon.cn/gp/product/B0011BVTRK/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B0011BVTRK" rel="nofollow" target="_blank">算法导论</a>》这种书,因为它确实枯燥无比,我自己也从未完整的看过一遍。但是像《<a title="黑客与画家" href="http://www.amazon.cn/gp/product/B004WHZGZQ/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B004WHZGZQ" rel="nofollow" target="_blank">黑客与画家</a>》 此类的书是不同的,它能打通你的思路,告诉你问题出在哪里,未来的方向在哪里。如果你想看看一个程序员的视野是否还算开阔,问问他是否听说过某本书,听说 过,那就还可以,说明自己懂点门道,如果读过,那就太好了,可以问问关于书中的一些观点,这里没有对或错,完全是自己的观点。我问过我身边的同事,读过这 些著作的人屈指可数,而读过的确实不一样,眼界比较开阔,不回局限在非常狭小的范围内,更不会跟你扯闲天。</p>    <p><strong>        第三个问题,要多读书,读好书,而且不要只读一遍。</strong>读书应该像高中老师说的那样,从厚读到薄,从薄读到厚。</p>    <p style="text-align:center;"><a title="real programmers code in binary" rel="lightbox[21379]"><img title="real programmers code in binary" alt="李喆:程序员到底怎么了" src="https://simg.open-open.com/show/c1aba5bf42ea17c554961eb885c561a0.jpg" width="450" height="465" /></a></p>    <p>        我去年认识了一个朋友,这个人三句话离不开写程序,我们吃午饭谈程序,我们在电梯里谈程序,只要我们在一起我们就讨论如何实现某个系统,如何然 让这个系统运行的更快,某个新技术的机制是怎样的,在什么情况下采用是比较好的选择。和他在一起待了 3 个月,我感觉自己的眼界比以前开阔了一倍。这三个月我感觉每天都非常充实,完全没有了以前浪费生命的感觉,因为感觉每天都在补充知识,懂的更多了,更有信 心了。</p>    <p><strong>        第四个问题,如果你是个程序员,你必须认识一些在这个领域里比你强的人,并和他们交谈,去开阔眼界,去了解未来是什么样子的,哪怕只是听他们说,都能有很多收获。</strong></p>    <p>        公司来了个新同事,他还没有毕业,但是当我跟他讨论一些问题时,发现他知道的事情非常多,尽管技术不是非常好,但是他的方向很明确,而且基础知 识掌握的非常好,比如位操作(读到这里的朋友,你能用你最熟悉的编程语言进行位操作吗?)。有一次他遇到一个问题,我过去帮助他,偶然间发现他的一个文件 夹,这个文件夹的名称是 Daily Reading,里面都是一个个按照日期分好的文件夹,从他来公司的那天起,一直都记得很好,我简单的看了看,里面都是每天看了哪些网上的文章,以及他对 这些文章的一个总结。这种方式也许不是最好的方式,用一些软件可能更好,比如 evernote,但是不是不得不说的是,他把自己曾经阅读过的资源都整理起来了。<strong><br /> </strong></p>    <p><strong>        第五个问题,你每天都会遇到问题,每天都会在网上查资料,或者查书,但是否总结过这些问题呢。总结,真的能让人进步。</strong>方式多种多样,比如写博客。</p>    <p>        老板总说我没有计划,我也不懂的如何计划,老板说很简单,不需要太复杂,只需要一个 excel 文件,早晨来了以后,想想昨天的工作完成的什么样,今天要做哪些工作,然后添进 excel,把所有任务的背景色设置成红色的,代表未完成;下班的时候,完成的,背景色换成绿色的。第二天接着这样做。我跟一个朋友说了这个方法,这个朋 友立马要我把这个 excel 的模板给他,我顿时无语了,然后告诉他,没有模板。<strong><br /> </strong></p>    <p><strong>        第六个问题,学会计划和安排。</strong>不需要太复杂,先从简单的开始,但是不要把自己局限死,再强大人都需要安排和计划,你应该听说过 bug 管理系统,它本身就是一种计划与安排工具,但是它更高级,你可以随时知道软件的 bug。当你每时每刻知道自己需要做什么的时候,你的效率会是最高的。</p>    <p>        做到这几点,我相信你就是一个比较合格的程序员了,记住,也只是合格而已。程序员不是没有前途,而是很多程序员葬送了自己的前途。</p>    <p>        作者:李喆</p>