编程高手是怎样炼成的(转我老大 刘总的文章)

首先声明:
1.我不是程序高手,甚至连一个合格的程序员都不算。
2.喜欢大谈架构和软件工程的看官,请您绕过,此处只会让您不愉快。
3.这里的编程包括编码和程序设计,也可能涉及其它技术领域,请勿吹毛求疵。
 
我们这些写程序的,张口闭口也喜欢赞别人高手,虽然心中只有一位高手,那就是自己,如果自己不是高手,那世上也没有高手。当然世界上自然是有高手的,每个程序员也都希望成为真正的高手。怎样才算编程高手呢?我没资格定标准,也不配评断他人,但是我心目中的高手是那些计算基础理论扎实,数据结构和算法精熟(完整读过《计算机程序设计艺术》),至少明了两种操作系统的内核机制(体系结构,进程调度,内存管理等),灵活运用并能够清楚了解C/C++的各种语法和技术,同时还熟悉至少一种动态语言,并在某个领域具有丰富的实践经验,有设计均衡的概念,不断学习新技术的人。我想他如果能够让我更佩服的话,我希望他能够懂一些数据库,信息系统和面向对象。
这个高手是不是太高了?开个玩笑,只要能够互相学习,有所助益,每个人对我来说都是高手。高手的定义见仁见智,这里只想给软件编程人员的个人技术成长提个建议。


进入正题之前,我想讨论一下另外一个很多金庸迷讨论过的话题,金庸小说中出场人物谁武功最高?
金庸小说中武功最高的大概要在三个人中选,就是独孤求败,王重阳和黄裳。但是这三位武功虽高,但却是未出场人物。我们的问题是出场人物谁最高呢?
令狐冲?杨过?张三丰?张无忌?NO,此等主人公武功虽高,但绝非最高。
事实上,经过网友多年论证,通常认为最高的是少林神僧(或者称作扫地老僧)或者东方不败。
 
练成东方不败需要自宫,相信大多数男性(程序员又多为男性)都舍不得。还是看看能不能练成少林神僧吧,虽说和尚也不咋地,总也比太监好,和尚还可以偷腥。怎样练成神僧呢?少林神僧是天龙八部里面的藏经阁打扫卫生的低级和尚。虽然只是个干杂役的低级和尚,但是因为在藏经阁里每天看书,书看多了,不自觉的就成了绝世高手,成了金庸武侠世界的第一(至少第二)高手了。


所以,我想给我们刚刚从事软件行业的技术人员一个衷心的建议,要想成为高手,最必要,很可能是最有效的途径就是:读书。
看什么书?书太多了,全读完是不可能的,尽量要读精品。本人在十多年从事软件开发的过程中,读了不少书,回头看去,有一些是很有帮助的书,甚至某种程度上其作用可以用醍醐灌顶来形容。按照记忆罗列下来大致的书名,列在这里,仅供参考(时间久远,很多信息记不清楚,作者、书名诸多错漏,敬请谅解)。


书目如下:
--计算机基础理论部分
《计算机程序设计艺术》   Donald Knuth
《计算理论基础》 作者忘记
《编译原理与实践》 作者忘记
《算法》   Segewick
《编程珠玑》   Jon Bentley
--编程实践部分
《Code Complete》McConnell
《Beautiful Code》
《程序设计实践》Brian W. Kernighan,Rob Pike
《程序员修炼之道》Andy Hunt,Dave Tomas
《Test Driven Development》Kent Beck
--软件工程及一般技术部分
《人月神话》   Fredrick Brooks
《人件》Tom Demarco
《软件工程-实践者之路》  Pressman
《软件过程管理》  Watts Humferry
《Extreme Programming Explained -Embrace Change》  Kent Beck,etc.
《Software Craftsmanship: The New Imperative》  Pete McBreen
《AntiPatterns》
《Death March》
《Deadline》
《JOEL on Software》 Joel
--面向对象部分
《Object-Oriented Design with Applications》  Grady Booch 
《UML distilled》   Martin Fowler
《重构》   Martin Fowler
《分析模式》   Martin Fowler
《设计模式》    Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides
《敏捷软件开发》 Robert Martin
--企业应用部分
《Patterns of Enterprise Application Architecture》   Martin Fowler
--UNIX编程部分 
《UNIX系统编程》
《Unix高级编程》   【Richard Stenvens】
--网络编程部分
《TCP/I详解I-III》【Richard Stenvens】
--特定语言部分
《C程序设计语言》 Brian W. Kernighan
《Thinking in C++》 Bruce Eckel
《C++ Primer》   Stanley B.Lippman,Josee Lajoie
《C Expert Programming》 Peter Van der Linden
《Thinking in Jave》
《Effective Jave》
 
后记:
      《Refactoring to Patterns》的译者把bad smell翻译为坏味,还说是借用了围棋的术语,想来译者是不大会下围棋的,围棋的术语大致应该是薄味,坏味这种说法,在有关围棋的文章中,很少见。
      生也有涯,而知也无涯。

你可能感兴趣的:(编程,refactoring,application,unix,数据结构,设计模式)