程序员的成长之路
从一个编程初学者,到一个程序开发菜鸟,再到技术高手、技术大牛、大师级人物, 必有一个成长路线。 根据自己的学习开发经历,我觉得一个程序员的成长之路可以按照如下循序渐进:
技术技能:
1. 初学编程: 找一两本优秀的编程语言书籍,按照例子敲代码。 推荐 K&R 《TCPL》 和 BE 《Thinking in java》 ,每一种主流开发语言都有一些非常优秀的入门书籍。如果国外书看得不大懂,可以先找国内编程书籍看看,一般国内书籍更注重技术和技巧,而国外书籍更注重思想和思路; 一般需要半年左右完成。
2. 内功修炼: 用所学语言,实现常用数据结构和算法, 可以习得编程的基本功底; 初步涉猎一些优秀的编程书籍,比如 BWK& BP 《程序设计实践》 ; 《Linux 程序设计》 , 《数据库开发》 等; 一般要涉及数据结构、算法、操作系统、数据库、网络等专业基础课程的学习和训练(详见《计算机专业推荐书籍》),这是成为专业程序员、编写更强大应用的必经之路; 一般需要一年左右完成。
3. 小试锋芒: 待编程功底修炼到一定阶段,就会参与项目开发。一般会从增删查改等基本功能开始练起,逐步实现更复杂的功能。 开始做时可能会有点吃力,但一定要勇于尝试。跨越每一道槛,你都会看到更广阔的世界,功力会更上一层; 一般需要三个月到半年左右能够适应项目开发,独立承担项目功能模块开发和维护任务。
4. 熟练开发: 这一阶段, 你将大量接触开发工作; 阅读已有项目的源代码,学习使用开发框架, 广泛涉猎各种编程书籍, 语言类、框架类、技术类以及思想类(详见《计算机专业推荐书籍》); 你将能基本胜任开发任务,实现功能, 对程序的质量需求有初步的了解和掌握; 一般需要一年左右来完成“原始技术积累”。
5. 突破瓶颈: 成为一名较熟练的开发人员后, 将遇到第一次真正意义上的瓶颈: 必须确定今后的技术方向。 在能够胜任日常开发工作的基础上,你希望能够提升自己的开发质量, 希望自己能够写出更加稳固可用的代码, 希望自己能够深入框架内部实现,而不是停留在使用的层面。因为使用框架会遇到比较棘手的调试问题,这也迫使你必须大量阅读优秀源代码,而不再着迷于编写那些初级的代码,更注重从系统整体角度来思考和解决问题,以实现真正的飞跃性进步。 我目前即处于这一层次。
突破瓶颈后, 才会从一名编程菜鸟真正晋级为一位技术高手。 从技术高手到大师级人物的成长路线,请参考那些大牛大师级人物的生平传记。
突破瓶颈之法(供参考, 因我也是即将的实践者):
1. 大量阅读和重用源代码, 建立一套行之有效的源代码阅读、利用和管理方法;
2. 更注重程序和应用的质量属性,从系统设计的角度去理解和实践开发活动;
3. 探索框架的内部实现、交互及使用,跨越框架;
职业技能:
1. 初学编程: 沉浸于编程的乐趣中,主要是习得编程技能,与同学进行编程心得的交流; 一般不涉及很强的沟通; 此阶段主要注重编程技能的修炼;
2. 内功修炼: 主要也是习得基本的编程技能, 交流编程心得,需要参与程序文档的阅读和编写; 在此阶段, 最好能够同步提升英语阅读能力、技术交流、基础的文档编写能力; 有兴趣的话,可以邀请同伴一起来做一些小项目; 此阶段注重编程技能的提高、技术交流能力、英文阅读能力和文档编写能力;
3. 小试锋芒: 习得更高级的编程技能(使用开发框架),与项目组成员进行讨论和沟通,表达自己的意见,编写程序文档, 浏览知名的IT网站和官方文档, 学会用搜索来解决编程问题;此阶段注重编程技术的学习、项目组交流能力、表达能力以及网络资源利用能力;
4. 熟练开发: 学习特定领域的编程技术, 阅读和探索源代码,项目讨论与决策,开发与维护, 学习软件开发工具的使用; 编写程序文档, 可能的话,会涉及到与客户的谈话、沟通与系统演示工作; 此阶段注重软件开发活动的广泛学习和掌握;
5. 独立担当: 能够独立承担项目模块开发与维护, 与项目组成员顺利沟通, 形成自己的独特见解; 具备一定的开发管理能力; 此阶段注重独立承担能力、较强的问题解决能力、沟通能力、表达能力以及一定的领导能力。
我目前处于从熟练开发到独立担当之间的层级。 更高级别的成长路线,请参考那些大牛大师级人物的生平传记。
每个人的成长路线都不同,但一个优秀程序员的成长必定离不开良师益友。 有一些好伙伴可以一起编程、交流和成长, 有一到若干位好的导师、在人生路上给予很好的指引,遇到好的老板的指点和提携, 都是非常幸运的事情, 当然,也是可以去努力争取的事情。保持平静谦和,忌心高气傲, 上帝会给予你最好的礼物。