关于知乎话题“程序员有哪些借口可以让自己写出低质量的代码?”的一点想法

以下是知乎上一个有趣话题:“程序员有哪些借口可以让自己写出低质量的代码?”得票最多的回答(原帖请参考这里:http://www.zhihu.com/question/24665029):


关于这件事,网上有很多讨论,感兴趣的同学可以搜一下。我感兴趣的一点是:“离职之前老板大夸我厚道,最后一个月还给公司做了这么多的事情,别人走都是删代码,我居然还毫无保留的为公司做出贡献。”。我理解这个公司离职的员工删代码应该不是一个正常的代码维护,而是为了报复公司去删除有用的代码,否则老板也不会这样说。我好奇这个公司的员工为什么离职都会有报复公司的举动,我也经历了几家公司,但从来没有听说过这种行为。我没在这家公司工作过,所以不知道具体原因是什么。是不是所有经历过这家公司的人都应该反思一下,为什么会出现这种情况呢?也许答案并不简单。

Chinaunix论坛“Linux/UNIX系统编程,系统程序员成长的基石?”话题讨论的回复

以下是我参与Chinaunix论坛关于“Linux/UNIX系统编程,系统程序员成长的基石?”(http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4118545&fromuid=28864581)话题讨论的回复,整理出来发到这里,给需要的人做个参考:

(1) 您在Linux/UNIX系统编程行业的经历及经验
我是2006年研究生一年级时开始接触Linux系统编程的,当时是因为我实习的公司用到Linux。后来自己在业余时间看了一些系统编程方面的书,还实现了一个简单的网络协议。通过研究生这两年的经历,算是对Linux系统编程有了一个入门。2008年研究生毕业后,并没有从事Linux/UNIX系统编程的相关工作,而是做手机MMI程序的开发。2010年来到现在这家公司,才又重新开始Linux/UNIX系统编程的工作,目前我主要在Solaris/Linux系统上从事通信网关和服务器程序的开发。通过这些年的经历,我觉得从事Linux/UNIX系统编程最大的益处就是可以获得很多计算机底层系统的知识。举几个例子来说:通常我们都使用gcc编译器编译程序,我们需要了解一些常用编译选项的含义,因为有可能一个编译选项就会导致程序不按你的想法运行;程序不可能没有bug,也许我们需要gdb帮助我们详细了解程序的内存布局,去找到原因;有时程序在一个处理器上运行的好好的,而在另一个上面就不行,此时我们可能又要去了解处理器结构和汇编语言。总之,作为一个底层软件工程师,需要不断地学习计算机最底层最核心的技术,这是件很快乐的事情。

(2) Linux/UNIX系统编程职业生涯的发展探讨
最近几年,随着移动互联网的兴起,前端技术越来越受到大家的重视,而底层技术似乎现在的关注度并不高。我个人觉得Linux/UNIX系统编程知识是程序员的重要基础,无论你从事什么方面的开发,了解系统编程知识和原理,对你是有百益而无一害的,Linux/UNIX系统编程也永远不会被淘汰。所以,我们这些Linux/UNIX系统编程工程师需要做的就是不断学习,提高自己的技术能力。

(3)对于新入门的Linux/UNIX系统编程人员来说,您有什么话对他们说?
我并不是一个资深的工程师,以下是我个人的一点经验和体会,希望给大家一点启示吧:
首先要调整好心态,现在是个浮躁的社会,所以要尽量着让自己静下心来,踏踏实实地去学习技术。
第二就是多实践,经典的技术书籍很多,可是光是阅读,效果并不好。要试着自己写一些代码,这样会加深印象。
第三就是多读好的开源代码。现在github上有很多的优秀代码值得我们学习。拿著名的NoSQL数据库Redis来说,看完Redis的main函数,我们就可以了解到如何创建一个deamon进程了,此外我们也会从中学到如何写个好的高并发服务器程序,如何访问文件系统等等。

以上是我的一孔之见,希望能给大家一点帮助吧。