系统集成类软件开发程序员快捷培训计划思考

 

软件的质量取决于程序员的素质,而程序员的素质由于中国大学教育的质量不一而良莠不齐,所以,为了保证软件开发的质量,有效的控制风险,必须对刚进入单位的程序员进行入门培训,以提高其软件开发水平,降低项目开发风险。
    当然,国内的很多软件开发单位,特别是做短平快项目的系统集成商类,都在为了基本的生存问题苦苦挣扎,没有办法做到象华为、中兴等超大规模公司那样进行长达一年的全脱产培训,都希望招来的程序员在最短的时间内进入项目组开发。那么,如何制定一个行之有效的培训计划呢?

一、 培训的方法:

1.1  培训对象的特点分析;

   接受培训的对象主要是刚刚毕业的本科毕业生,具有一定的专业基础,但还缺乏实际开发经验,有着如下特点:

1) 有一定的专业基础,但还缺乏实际开发经验,求知欲强,急于在工作中表现自己的能力,得到知识和技能的提升;

2) 由于大学教育的不一致性,存在着各人编程风格和水平的不一致性,但可塑性较强,容易接受别人的意见;

3) 在软件开发及各人职业发展前景方面存在一定的盲目性,需要进行正确的引导;

当然,其实,对于老的程序员,并不是编程序风格都很好,开发已经很成熟,但由于他们已经成功的完成了一些项目的开发,还在开发方面存在着一定的惯性,所以,强烈建议老的程序员也需要通过这样的培训进行规范和提高自己(至于代码,可以点到为止,没有必要都写完规定的题目,根据自己的缺失来把握)。否则,如果没有一个好的编程和经常学习的习惯,老的程序员将提早进入知识技能提高缓慢的知识衰老阶段。

1.2 培训的常见方法列举;

开发培训通常有两种方法,一种是传统的教师授课的方式,一种是开发过程中实战式的培训方法。

传统的教师授课就是请经验丰富的程序员或高校老师来进行开发培训;

在开发过程中实战式的培训就是直接让程序员去开发目标既定的项目,通过项目案例来促使程序员思考和了解自己的学习方向,通过案例的审查打分和结果分析来改进程序开发水平;

1.3 培训的方法优选;

    显然,第一种授课式的方式在大学里已经做过了,而对于系统集成商来说,最急需的就是需要程序员在最短的时间内,通过培训能够进入项目组进行商用软件开发,所以,第二种方式更合适。

    第二种案例式培训方法目标更明确,对程序员来说更有挑战性。MBA的教学通常都采用这种案例式教学,目前对于专业技能培训来说,是一种公认的好方法。

 

二、 培训的内容:

2.1  软件开发工具的选择建议;

   常用的软件开发工具有很多种,有MS系的VC、VB、VS.Net,还有Java、Delphi、Delphi.Net、PowerBuilder等,扣除.Net是基于框架上的变化不算,基本可以划分为微软系、Borland系、Sybase系、Java系的四类主流开发工具。对于基于互联网编程来说,Java具有一定的优势;Sybase的PowerBuilder在数据库开发方面有一定优势;MS的当然不用说,他是最大的垄断企业,永远不倒;Borland是在开发工具方面专业性极强的开发商。这四种工具可以根据自己的项目特点来具体应用,但不管是什么开发工具,开发思想、基本功都是相互融通的。

   在本文里,我们推荐采用MS的VC做为硬件控制开发语言,MS的VB或Delphi做为可视化用户界面开发,这种组合对于系统集成商来说,灵活度高,可靠性也很高。MS的VB和Delphi由于存在大量第三方控件和编程资源,所以非常利于进行各种要求的开发,包括数据库等方面的应用开发。

2.2  程序开发基本功的测试和规范;

   2.2.1  推荐阅读的书籍和教材;

对于程序员参考阅读书籍,并不是越多越好,关键是要找到合适自己的书籍。很难界定一本对每个程序员都合适的参考书。对此,我的建议是,首先需要阅读一到两本你所使用开发语言的“全面型”的教材,比如Delphi程序员可以阅读《Delphi 从入门到精通》,如果能力允许的,最好参照英文原本的教材;然后,再阅读一到两本理论知识方面的,例如《Thinking in C++》,另外,就可以在实际开发中,遇到什么问题,看什么书,特别针对性的阅读,比如关于网络方面编程的专著等。

   2.2.2  每个程序员编程初始能力的测试;

程序员在进行培训之前,需要对其一些基本编程能力有一个了解,在下文中的实际培训案例中,我们特地首先安排了一个简单的程序案例,只要让每个程序员先写一个程序,检查一下代码,那么对不同程序员的初始能力就有一个了解,便于对症下药,针对性的进行补充培训。

通过程序员写的程序,基本上可以初步了解以下几点能力:

1、 语言的熟悉程序;

2、 程序结构化、对象化的规范程度;

3、 编程代码风格;

4、 注释的风格及重视程度;

5、 关于界面风格的审美;

6、 算法思维的严密程度;

7、 其他编程的不良习惯。

   2.2.3  编程代码风格的规范;

   编程风格的规范在很多的教材里都有描述,具体可以根据各个公司的实际情况,优选一种编程的代码风格的规范,这其中包括源代码的风格规范、注释的风格规范及其他说明文档的风格规范。这样做的意义在于,让不同程序员的程序在最大程度上做到风格一致,这样,一方面便于相互阅读代码,降低程序的错误,另一方面也可以减少因项目人员变动而造成的“死程序”的发生可能。

   2.2.4  编程中严禁杜绝的不良习惯或可能存在的质量风险;

     1,软件项目一定要有设计规划,绝对摒弃未经周到思考就盲目进行coding的现象。不管是有经验的程序员,还是刚刚入门的程序员,事先多思考一些,多考虑程序可能会呈现的样子和可能遇到的风险,对提高程序的成功性都是至关重要的。对于实在没有经验的程序员建议多把自己的设计思路和老的程序员交流;

     2,程序在开发过程中的一些数据库改动、软件数据结构设计、逻辑结构也没有人审核,都是自己随便定定就算了,结果,程序往往结构不好,造成写到后来,牵一发而动全身,没有办法改,改了其中一个错误,会引发其他错误;

     3,程序员写程序的风格诧异很大,而且,相互学习较少;一个人写的程序别人很难看懂;

     4,代码的注释太少,太少,甚至达到过了一段时间自己都很难看懂的地步;

     5,复制、粘贴非常随意的使用,其实编程中很多低级错误都是不当的复制、粘贴造成的;

     6,对同一种类型的变量,用的标准不一样,比如有的数组用的是下标0开始的,有的数组用的是下标1开始的;这样就造成,出现了错误,查错误非常难;

     7,偷懒、偷懒,很多地方偷懒,图省事,能省就省,结果很多错误都是偷懒造成的;最后往往补洞的精力远远大于先前偷懒省下的精力,代码量也不见得能省多少;

     8,每段代码写完之后都想当然正确,没有把每个逻辑分叉(if then else,等结构)都走一遍,不愿意单步调试,都急于通过run来看结果,run常常是会忘记走到所有的逻辑分叉的;结果,即使是非常有经验的程序员都常常犯低级错误;

     9,开发和测试脱节,测试人员不知道开发人员的程序逻辑分叉及流程,所以,也没有办法把所有的分叉都走一遍,做不到白盒测试,非常盲目,好的软件是测出来,但好的软件首先是开发人员写出来的,开发人员这一关是第一关,非常重要;

     10,软件的层次不好,有些函数体过于庞大,难于掌控和调试;

11,Except处理考虑的过少(异常处理),很多地方都是程序员按照程序最理想的运行结果来考虑的。

2.3  程序开发的具体训练内容;

   2.3.1  写一个绘图板程序;

   要求:写一个类似于windows的绘图板的程序,只要实现基本的绘图功能就可以了;

   目的:绘图程序是最能勾起程序员兴趣的一种程序了,这个程序主要看程序员的基本功和建立程序员对编程的兴趣;可以根据这个程序的代码基本了解程序员的基础,以便对症下药;

   2.3.2  写一个类似于MS的PowerPoint的程序;

   要求:能编辑、存贮、打开、类似于PPT的文件,能全屏显示类似于PPT的演示效果;

   目的:提高和训练复杂文件的存取、数据结构定义和OOP设计的技巧、Delphi或VB的框架和控件应用技巧;

   2.3.3  写一个通讯录软件;

   要求:能建一个基于数据库的通讯录管理程序,能实现添加、删除、修改记录、分类查询和全文检索,建议安装第三方的数据库处理控件;

   目的:熟练基于ADO或ODBC连接方式的数据库编程,学习使用一些优秀的第三方控件;

   2.3.4  写一个局域网即时通讯程序;

   要求:局域网内网络通讯,基于socket编程,考虑通讯的延迟、误码处理等,考虑异常处理;

   目的:学习socket网络通讯编程,TCP/IP和UDP通讯的特点;

   2.3.5  写一个VC的串口通讯程序(带时序控制的);

   要求:用VC写串口通讯程序,要定义串口通讯协议,处理好数据校验,处理好串口数据延迟,需要带时序控制(例如控制录像机按照时序倒带、预卷、录制、停止这样一个精确时序控制);

   目的:学习串口通讯编程,学习如何去定义和解释一种串口的通讯协议;

   2.3.6  用VC封装串口通讯程序,用Delphi或VB来写调用界面;

   要求:对一个串口设备用VC封装成串口通讯程序,用Delphi或VB来编写调用的功能操作界面,封装的方法可以用DLL和COM组件的两种形式;

   目的:学习DLL或COM组件封装的技巧和特点,了解不同的编程工具之间的配合;

   2.3.7  把类似于MS的PowerPoint程序重写一遍;

   要求:由于培训了一段时间,对类似于MS的PowerPoint程序你会发现你的上一个版本有很多不满意的地方,可以重新编写一遍,收获更大;

   目的:进一步提高,完善数据结构、OOP编程的思路和技巧,关键是培养程序员精益求精的精神,很多程序只有第二版以上才是完善的;

   2.3.8  把通讯录软件重写一遍;

   要求:通讯录增加导入、导出MS的通讯簿的Wab格式的功能,增加局域网之间建立相互信任关系,即局域网内同时打开的通讯录软件之间数据同步功能;

   目的:学习如何编写与其他软件之间的数据交换,考虑网络分布式数据同步和数据冲突控制的技巧;

三、 后培训计划:

完成了以上的培训,程序员就可以正式进入开发团队进行程序开发了,但并不等于到此为止就不用继续学习了,形成一个良好的学习风气对于一个软件开发团队来说非常重要。在实际的开发和公司运营过程中,始终要做好以下几点:

1、  对于已经步入正常项目开发的程序员需要有监督程序质量的机制,不等于培训了一下就可以随意编写程序了,否则,程序员会只重量而不关心质量;

2、  鼓励程序员勤于思考,不断总结编程经验,改进编程方法,编制内部程序员交流论文集,并予一定的物质鼓励;

3、  鼓励程序员的相互培训,建立经常性的内部培训机制;

4、  对程序的编程质量意识的长期的思想教育,要让每个程序员认识到,商业程序和学校里的作业程序是完全不同的,要把质量意识、风险意思放在第一位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值