如何成为软件高手系列之一

    从事软件业也有几年了,经历几多个不同的公司、不同企业文化、不同的开发流程,不变的身边总是有零星高手和多数的普通程序员。我总是苦苦思索,一个刚入行的程序员如何才能成为一个软件高手呢?在这里我们不讨论那些奇才怪才,比如几岁或十几岁就接触电脑、初中高中就会编程,或者大学期间就积累了一些经验和人脉,或者辍学开公司去了的牛人们。我们只讨论一个普通的或相对优秀的程序员,在公司里工作的过程中如何成长为一个高手。

    近几年国内的大学,计算机专业毕业的学生,上学期间只有几名学生有过软件业相关的实践,大多数可能连编程还不懂,即使学过c、c++、java课程。我一直反对大学毕业考研或者保研、直博或者考博然后留校任教。因为上学期间即使做过实习,与真正的商业上的开发也是有区别的,一般公司不会把重要的任务交给一个实习生去做。何况大部分人没有实习经历,你可以想象这样的老师能教出什么样水平的学生。

    在几年的工作过程中,我发现很少公司有很好的培训体系,能够为自己员工的职业生涯发展做出系统规划和扎实培训的公司。一方面有些公司并不想去做这些,因为投入很大,并且效果不见得好,更可能为竞争对手做嫁衣裳;另一方面即使想去做,也很难找到合适的人去做。这里面很大一部分原因是国内搞软件的整体风气比较沉闷、缺乏交流,跟管理咨询行业的培训根本没法比。

    写这个系列的目的是与大家探讨从小工到专家的成长路线,这是一个地图,是一个导航,条条大路通罗马,我愿意选择相对省力又高效的途径。至少不要南辕北辙。并不是说我就是高手,也不认为不是高手就没有资格说这个话题。太多人沉默不会有好的结果的。各方面都是这样,大家只要看看我们生活的人文社会环境就知道了。

     这篇作为这一系列的序言,总体介绍一下我认为初学者成为软件高手需要掌握的必备技能,这些不是充分条件而是必要条件。

    1. 一门语言的语法,SDK的常用API,算法与数据结构

        有了上面的知识,再加上一点实践,再从网上找一些笔试题做几套,基本可以过笔试这一关。

    2. 编码规范、高性能编码经验技巧。

        要成为一个职业化的、专业化的程序员,首先要养成良好的习惯,良好的习惯从规范化的点滴日常工作开始。

    3. 熟练掌握IDE、常用工具的使用

        工具可以提高生产力,用一把小刀去砍树很困难,用电锯立刻变得很简单。

    4. 面向对象的原则

        这里重点掌握面向对象的原则,比如:单一职责原则 SRP、开放-封闭原则、替换原则LSP、依赖倒置原则DIP等,明白了这些原则,对后面内容理解的深入会有很大的帮助。其实这才是根本,不了解这些原则去学设计模式有种空中楼阁、头重脚轻的感觉。根基不牢上层建筑就好像浮云一样。

    5. 重构

        重构就是在不改变软件功能的前提下改善代码的设计以提高可维护性。修改别人的代码或者优化自己的代码都需要用到重构技术

    6. 设计模式

        基于一些常用的模式来学习如何使用设计模式。设计模式对于做框架开发的程序员比较有帮助。我们会选择一些常用的来讲解。

    7. 最重要、最难,看上去却最简单的功夫:修改代码的艺术

        我看到很多新员工进入大公司都是从这步做起,但我认为代价是很大的,无论对公司还是员工本身。对公司来讲,一个没经验的人修改了一个bug,可能会引出几个问题,然后再去修改,如此恶性循环。对于员工来讲,赶鸭子上架,不了解代码的逻辑、针对表象简单粗暴的修改,有时我看了真的很是心痛。对程序员本身的能力提高也是缓慢的。其实修改别人的代码开始是功夫,之后就是艺术。就好像你要给一个人治病,你要成为医生,先要掌握人体基本结构、各个脏器的特点、各种药物的功能、常用的诊治方法等等,医院不会让一个医学院毕业的学生去给病人看病,总要有段实习,由经验丰富的医生带一段时间。然后从难度较低的做起。

    8. 架构设计

        这一点我是不太自信的,一是感觉资历不够,二是在这一点上能忽悠的人太多,而这又不是我的强项,我诚实的说出自己的看法可能被误解,不过这是成为高手必不可少的部分,这里就与大家共同探讨。

    9. 软件工程

        开发软件的过程,我经历过公司从CMM到敏捷的转变,我个人是比较推崇敏捷开发的,这里想与大家站在工程的角度聊一聊软件开发。

    10. 质量管理

        越往后其实越偏向管理了,开始是个人修炼,后面是站在组织、站在公司的角度来看软件。质量是说得多、做得少,尤其在软件领域,我一直觉得很邪门的事情是不懂软件开发的人甚至被淘汰出去的人去从事软件行业的质量管理,真是令人担忧。质量管理中有很多很好的理论和工具,是值得我们学习的,不只可以应用到软件开发上,生活中也很有用的。

       国内很多IT培训机构基本上也是停留在应试教育,就是以通过笔试面试为目的,再往后整个行业的职业培训几乎没有。这里原因很多,我不想多谈,这是中国软件从业人员的悲哀。

       希望通过这个系列的文章,能够帮助一部分程序员成长,同时也希望更多老鸟高手给我一些指导,因为你们不站出来才有我的看似有点张狂,实际上我是很谦虚的。

posted @ 2011-05-27 12:22  雨辰2001  阅读(812)  评论(0编辑  收藏  举报