Linux系统开发程序员如何进阶

作者:爱快老高


  今年是我入行Linux开发整整十年了,一方面从事着部分管理工作,另一方面仍然坚持在一线编码。因为这不仅仅是我的工作,还是我个人的兴趣,可以说,我在享受我的工作。唯一的遗憾是,年少无知,无人指点,不然我可能在上学阶段就会发现自己对Linux开发的热爱了,更早的投入到Linux开发的大军中。同时,我认为一个技术领导者,如果本身的技术不够过硬,那么难免有外行领导内行的倾向,甚至无法抉择技术方案。

  作为一个从业了10年的Linux开发老鸟,我一直认为工作时间并不等于经验,更不等于能力。那么,对于刚刚进入这个领域的初学者来说,究竟应该如何提高自己的能力,让自己进阶呢?我认为无非是多阅读,多思考,多实践,多分享。这也是我在ChainaUnix博客的座右铭。截止到今天,该博客共有200多篇博文,绝大部分都是Linux网络部分的相关开发技术,更有一系列文章,是内核网络模块的源码分析,以及相关的应用编程,可以说,这些文章是我多年技术经验的沉淀。当我重读这些文章时,自己都可以感觉到自己在技术方向的成长。写博客,对于技术的提高和积累,绝对有好处。因为你将自己对该技术的理解,需要进行系统的思考,才能把思想转化为笔下的文字。这个过程中,有的东西,自己感觉已经理解了,但是落笔时,就是不知道如何将它阐述清楚,让别人容易明白。这说明你其实对该问题,理解得还不够透彻。当完成了一篇篇的技术博客,其实就是在不断提高自己,总结自己,获得分享快乐的同时,又能提高自己的技术水平,何乐而不为呢?所以,没有技术博客的同学,赶快开始动手吧。

  再说的具体些,对于Linux环境的开发人员。《UNIX环境高级编程》无疑是最为经典的入门书籍。其作者Stevens是我从业以来最为崇拜的大神。他的Advanced Programming in the Unix Environment、 UNIX Network Programming系列、以及TCP/IP Illustrated系列著作,都是字字珠玑,本本经典。在我从业的最初几年,这几本书我每本都阅读了好几遍,而这也为我做Linux用户空间的开发奠定了坚实的基础。在掌握了这些知识以后,如何继续提高自己的技能呢?经过一番思考,我选择了阅读Linux内核源码,尝试将内核与应用融会贯通。

  业界把Linux程序员分为两个大类,一类是内核层开发,另一类是应用层开发——后者又被细分为服务器端开发,应用程序开发等等。在我看来,对于一名优秀的Linux程序员,这些边界都应该是模糊的,无所谓内核层还是应用层,无所谓服务端开发,还是写个客户端,都应该信手拈来,不会有不可预期的困难。这一切就需要有比较牢固的基本功(数据结构和算法),对Linux环境及其运行机制有比较深刻的理解。前者不必多说,相关的书籍也很多。对于后者,如果只是光看书是不够的,必须要亲自体验,亲自阅读内核源码。

  我自己在阅读了一定内核源码之后,真正地理解了Linux大神这句话“Read the fucking codes”。因为只有阅读了内核源码,才能真正理解Linux内核的原理和运行机制,而此时,我也发现了Stevens大神著作的一个局限——APUE和UNP毕竟是针对Unix环境而写的,Linux虽然大部分与Unix兼容,但是在很多行为上与Unix还是完全不同的。这就导致了书中的一些内容与Linux环境中的实际效果是矛盾的。

  这时恰好有个机会,机械出版社的杨老师通过ChinaUnix的博客找到了我,让我有了写一本技术书的机会——这也是我人生的一个愿望。我就想向Stevens致敬,写一本类似于APUE风格的技术书,同时还要在Linux环境下,对APUE进行突破。大言不惭地说,我期待这本书可以作为APUE的补充,可以作为Linux开发人员的进阶读物。事实上,该书的写作正是以APUE的章节作为参考,针对Linux环境,不仅对用户空间的接口进行阐述,同时还引领读者分析该接口在内核的源码实现,读者不仅可以知道接口怎么用,同时还可以理解接口是怎么工作的。对于Linux的系统调用,做到知其然,知其所以然。

  现在本书在上周五开始上市了,并在China-pub首发。京东购买链接:http://item.jd.com/11962820.html

book

《Linux系统开发程序员如何进阶》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注