我是个程序员,同时我也是个喜欢揭露表象下面一些细节的家伙。于是我来劲了,想看看其它的职业到底是个怎么个场景。
去宜家买了家具。那种家具是需要组装的,我想自己来组装,一个程序员来组装家具,随后我便发现我是多么的愚蠢,我自以为装好了,实际上都是在最后的环节出了问题。总的看来,都没有什么大问题,然而就是那些不起眼的边边角角使我彻底失去了信心,以至于不得不推倒重来...
自以为空调买了,预约了安装就没有什么问题了,然而事情总是会偏离我最初预想的路线,由于空调要装在我们的飘窗上面,由此引出了一个和楼上业主沟通的问题,本以为都是邻居,并且楼上业主也会麻烦楼上的楼上,人之常情,举手之劳,大不了买点水果买包烟就能搞定,谁知我们楼上的业主把房子租了出去,现住户是个租客,而且出差在外,这可怎么办?不得不让人家装空调的择日再来一趟,麻了大烦啊!
我们买的是精装修的房屋,自以为一切都很方便,然而大家都知道,这种装修不会和自己找人来装修处于一个档次的,果然这里出问题,那里不好使,有块地板下面是空的,有块地板踩上去有声音,空调管道口还渗水,唉,这些问题看似都不大,却很麻烦,有时候不得不牵一发而动全身,完全不在我们的掌控范围之内...
看看这些问题和程序员遇到的问题是不是有相似的地方?大大的有啊!几乎是一样的问题。那么除了这些我们不可掌控的问题之外,看看我们的职业和他们的职业最后共同剩下了什么:
1.经验
不管是装空调的,装家具的,还是装修工人,还是燃气管道工人,他们都能一下子看出问题所在,虽然大家都在踢皮球,毕竟问题摆在那里,总是需要人来解决的。为什么他们就能看出问题,而我却只能理论上估计,就是因为他们就是干这个的,在我家遇到的问题,在别人家也遇到过,这就是经验,他们解决过或者协调解决过类似的问题,因此他们把建议告诉了我们。试想一个刚入行的工人,能解决这些问题吗?估计他们也只能和我这个外行人一样凭空或者凭理论猜测吧。
只有做过的事,才能脱离纸面的水平,这就是经验的重要性,程序员不是研究员,R和D是有实质区别的,程序员和那些工人一样,实际经验比理论知识要重要些。你可以什么都不懂但是快速调用既有的库写出一个漂亮的算法,但是不能精通数学理论而连hello world都编译不过。
2.工具箱
我仔细观察了装空调的,装家具的,安装窗帘的,修燃气的等等工人,他们都携带了一个工具箱,里面的东西甚至都一模一样,虽然他们谁也不认识谁,这也许就是所谓的专业吧,我想我请一个搞室内装潢以及空间设计的大学教授来我家,他肯定搞不定随便一件事,但是正是这些可能没什么文化的工人,很娴熟的操作手里的工具,把工作完成,对于实际干活的人,理论不重要,重要的是怎么使用电钻把螺钉钻进去,他们需要一个环境,要有电,要有电钻。
对于程序员而言,是不是也要构建一个自己的工具箱呢,里面放满了自己的脚本,grep,awk,....这不需要你有多么高深的数学知识,也不需要精通OS理论,你只要能用最快的时间用自己工具箱里面的东西完成任务就可以了,而完全不需要知道为什么会这样。
3.不要忽视边边角角
所有这些工人在快要完成工作的时候,我都会很兴奋,眼看就大功告成了,可是他们却都很紧张,不停的念叨着什么,后来我发现,最后的收尾工作是最难的,这也符合80/20原则,你把一个衣柜的框架装起来很容易,大概需要半小时时间,这样基本就有个衣柜的样子了,可是安装那个推拉门却需要两个小时的时间...后面是就不说了。
搭建一个框架可以说是为自己而搭建的,然而完成最后的那20%的工作却是为你的用户来完成的,框架部分你可以满足你自己的成就感,看,我把一堆木板折腾成了一个柜子,然而如果没有最后的那20%的工作,用户是不会付钱给你的,然而完成这20%的工作却需要你付出80%的精力...
愁死了,新家的工作还是没有完成,吊灯还没有换,书架还没有固定,搬家也没有完成,所有这些事,鬼才知道实际操作的时候会遇到什么棘手的事情呢,好在搬家这种事我还是可以自己搞定的,虽然累一点,但是起码不会麻烦到别人,也是最近学到的一个做人的原则吧。