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