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