程序猿的工作难在哪?

因为不管学习什么专业,毕业后都有相当大概率改行软件行业当程序员,我这里再给不了解程序员行业的业外人士详细掰掰程序员的工作。

程序员自嘲码农,编程序写代码的。写程序很难吗?其实不算很难,如果程序员的工作就仅是写代码,那这工作任何人都能做。写代码这个工作本质上和写文章是一回事,就是把一件要做的事情,分成一定的结构来进行有条理性地描述,一般那些爱写文章的人,写代码的条理性都会不错。你别说,还真有作家是个程序员高手的,比如王小波。

但写代码和写文章还是有区别的,因为读者不一样。写文章的读者是人,你写文章写个把错别字不会影响人的理解。但程序代码是写给机器读的,机器很傻的,有任何一点问题它都会罢工。

我爱人有一次做excel数据处理遇到一个问题搞不定跑来问我,她说表格里做数据统计的公式失效了,我其实对excel也不算很熟练,开始我怀疑是不是公式有哪些肉眼不容易看出来的错误,于是我重新输入一遍公式,还是不行;没辙我求助百度搜索,看别人有没解决过类似的问题,但也没找到合适的答案;于是我又回过头来在excel表格上折腾,最后发现是原来表格里的数字,从人肉眼看来是个数字,实际在EXCEL里是文本格式,把它们改成数字格式问题就解决了。然后我对我爱人说,你现在知道了我们程序员是做什么工作的吗?像类似这样的问题,你们偶尔才会遇上一个,但对程序员来说,每天都可能要遇上几十个。没错,程序员其实是个不停地搞定各种问题的工作。

程序员遇到的错误和问题有些来自自己,这部分还相对好办些。虽然你不可能让自己做到永不犯错,但可以通过一些工程性的手段比如测试来减少错误,一般你会自己测试一遍,后面还有专职的测试人员来给你把关。发现问题后可以调试跟踪来定位问题点并修正之,这是个程序员日常的常规操作。

真正难的问题是来自别人做的部分的问题。因为你写代码不可能一切从头开始自己写起,一般你总要使用别人搭建的框架或者一些组件,这时看懂别人写的代码就变得重要起来。这时你通常需要先阅读一些官方的介绍文档,这可能是一本几百页的大部头。然后你要试着把别人的源代码组件编译运行起来,好尝试跟踪观察其运行机制。但相信我,你不会这么顺利的,这中间你会遇到各种意想不到的问题。遇到问题时一般会有提示,有时提示挺管用,有时你会觉得不知所云,于是你尝试通过搜索解决问题。这世界有人智商高,有人情商高,程序员们发明了一个新商,叫做搜商。搜索英文叫search,研究叫research,意思是反复搜索,在这点上程序员们做到了。

不停地搜索解决问题,这就是程序员们的主要工作。有些程序员只喜欢纯粹地写代码,另外有些程序员则挺享受解决问题的过程,这对他们而言就像玩游戏打怪一样。但还有一个问题是,

100个问题,你解决了99个问题,只要有一个问题你搞不定卡壳了,那从结果而言,你得99分和0分的最终效果都是一样,99分和0分一样都是0分。想想看,这是一件多么令人沮丧的事情,如果你去参加高考,100分制5门课程每门99分的话,你都可以上北大清华了。但在程序员的世界里,没有99分的概念,这里只有0分和100分。

如果你搞定了所有问题,把程序运行起来了,这仍然只是个开始。你还需要阅读理解源代码,这个工作有点像是阅读一本天书,而且还是一本拆成一页页的散书,很多时候你上来都不知道从哪开始看起,对于那些规模庞大的软件尤其如此。而软件正是一门为处理复杂性而生的技术,软件组件几万几十万行的规模算是家常便饭。

看到这可能很多人要被吓到了,那倒也不必要。如果你不是要求太高只是想进入一个开发组能帮忙干点活的话,那其实也简单,因为上面提到的问题,项目组内都会有熟悉情况的人帮你搞定了。软件行业其实大部分程序员都是如此,只不过这种程序员不具备自己独立作战的能力。


分享到:


相關文章: