zoukankan      html  css  js  c++  java
  • 《系统程序员成长计划》成长过程

    转载时请注明出处和作者联系方式

    文章出处:http://www.limodev.cn/blog
    作者联系方式:李先静 <xianjimli@gmail.com>

    《系统程序员成长计划》的起源应该追溯到六年前了。04年我进入恒基伟业深圳研发部,参与商务通隐形手机开发。在此之前我是做服务 器软件开发的,对嵌入式软件开发非常好奇,所以想方设法进入这个行业。恒基伟业在嵌入式方面的实力也是相当高的,很多在消费类设备方面的开发高手都有在恒 基伟业工作过的经验。原以为做嵌入式开发的程序员都是非常牛的人,动不动都是能写上上万行汇编语言。真正进入这个行业之后,才知道牛人毕竟是少数,大部分 人都和我一样是普通的程序员。

    过了几个月,我当了小组长,手下带了几位同事。有刚毕业的,有工作两年的,也有工作经验和我差不多的。有次我让一位同事写一个小程序,过了好几天他 还没有写完。和他讨论了一会儿后,才知道他写的程序动不动就死掉,查了几天没有查出原因来。由于我以前做过两年全职的调试工作,看了一下他的代码,马上发 现问题所在:指针声明之后,没有指向任何有效的内存,就直接使用了!

    后来和他们交流多了,才发现有的同事工作几年之后,连一些编程的基本技能都没有掌握,代码写得乱七糟八的。这些代码集成到项目中后,产品越来越不稳 定,整个项目慢慢失去控制。那个项目后来BUG总数超过了10000个,当时大家都知道在做一件不可能完成的任务,士气变得非常低落。经历那一段非常郁闷 的时期之后,我更深刻的体会到高素质的程序员才是软件开发成功的关键。于是我开始对手下的同事进行培训,把一些我认为重要的知识和方法教给他们。虽然没有 收到预期的效果,不过积累了一些素材。

    05年我跟着现在的上司进入鼎智通信,我还是小组长,带了几个新手。我根据前面的经验制定了一个培训计划,我的上司看了之后觉得不错,就在软件部推 广。下面是当时我发在博客上的培训计划:

    学习的方式:

    对于基础性知识,指定几本教材,大家轮流学习,学习完成后给其他讲解。对于较难的知识,由我或者请其他有经验的人讲解。集中学习时间定在周三晚上。

    第一阶段:

    目标:熟悉常见的算法和调试方法,培养良好的编程风格,从而提高编程 能力。
    时间:8周
    内容:

    1. 编程规范
    2. 双向链表
    3. 调试方法与调式工具的使用
    4. 动态数组
    5. 快速排序/归并排 序/堆排序/二分查找
    6. 状态机
    7. 下推自动机
    8. 嵌入式软件开发
    9. Unicode基本知识

    第二阶段:

    目标: 学习如何阅读和改进别人的代 码。
    时间: 4周
    内容:
    1. 代码阅读方法
    2. 代码重构

    第三阶段:

    目标:自动测试
    时间:2周
    内容:
    1. 测试理论
    2. 常用的自动测试框架

    第四阶段:

    目标:软件设计和文档编写
    时间:12周
    内容:

    1. 面向对象的设计与分析
    2. 契约式编程
    3. 设计模式
    4. 软件架构编档
    5. 了解常见的软件过程: XP/RUP等

    第五阶段:

    目标:学习一种脚本语言,能自动化的工作尽量让计算机去做,从而提高 工作效率。

    时间:4周
    内容:cygwin + bash 或者 python 或者 perl 或者vbscript。

    第六阶段:

    目标:综合应用所学的知识,完成一个模块的设计、编程、测试。
    时间:4周
    内容:待定

    这个培训坚持了半年,收到一些效果,但是不够理想。主要原因是这个培训计划追求大而全,加上大家工作很忙,还没有消化就进入了下一个阶段。现在来 看,这个计划完全可以作为一个程序员的三年学习计划了。

    05年下半年,Broncho团队成立。我改为手把手的培训方式,通过代码评审等方式,发现新手犯的错误,然后纠正他,并把一些典型的错误统一讲 解。慢慢的积累了典型错误和问题的素材,后来我开始思考:能不能搞一系列的题目,让新手把他们该犯的错误犯一遍,让这些典型的错误在他们正式工作之前就被 纠正了呢?

    这些题目要有足够的挑战,又不能让人望而生畏。要解决这个难题不容易,记得当时《C++沉思录》给了我一些启示:用一个好的程序的演化过程,逐步深 入的学习各种基本的技术和方法。于是有了第一章双向链表演化的雏形,第二章写得又快又好的秘诀,则是我多年来一直在思考的。

    07年下半年正式在Broncho团队起用这套培训课程,记得Broncho团队的吴松是第一位参加这个培训的同事。经过一年多时间,前前后后有十 多位同事的参与,这套培训课程逐渐完善起来,到现在Broncho团队仍然在使用。

    08年十月份开始把这些培训资料整理成文字,并在我的博客上发布。这是一项艰苦的工作,虽然这些内容在脑子里都过了几十遍了,但写出来的时候,要讲 清楚还是不容易的。一年多时间,经过读者的建议,又做了些完善。

    09年七月底完稿,并确定由人民邮电出版社旗下的图灵出版社出版。我一直强调图书的质量,并多次跟出版社要求,我不要稿费甚至自己拿钱出来补贴工作 人员都可以,但是一定要保证图书的质量。出版的过程中出现了一些波折,到今年三月本书才终于与读者见面。

    另外我解释一下,书上为什么没有推荐序之类的东西。在出版之前,一些热心的朋友主动说帮我写或者请名人写推荐序,我都一一婉拒了。我的理由很简单, 那些“名人”都没有仔细读过我的书,帮忙写推荐只是纯粹的吹捧,都是虚假的,对读者不负责的。我希望更多的读者读本书,但是决不能用这种手段来欺骗读者。 只有真正的读者才有资格对书做出评论,如果有机会出第二版,我会请读者写推荐序的。

  • 相关阅读:
    http返回码
    JAVA获取当前系统时间System.currentTimeMillis()以及获取运行时间
    【Jsoup】Jsoup解析Html标签(Java后台解析)
    字节、字、位、比特,这四者之间的关系
    Java中字符编码和字符串所占字节数 .
    判断一个字符串是否为全英文的工具
    汉语转拼音(全转与只转首个字母)工具类
    Page的生命周期及相关事件苛
    PHP设计模式——策略模式
    java生产者消费者问题代码分析
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167393.html
Copyright © 2011-2022 走看看