`
sogotobj
  • 浏览: 648857 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

向你的软件开发员传授什么内容?

阅读更多
向你的软件开发员传授什么内容?
来自:zdnet.com.cn

大多数机构都没有正式的软件开发员学徒计划。软件开发没有熟手之说。但是,今天,许多软件开发者通过与其他开发员交流所学到的知识,与他们通过正规教育获得的知识一样多。

  如果你的开发者通过在你们机构所取得的经验学会如何做一名软件开发员,你将向他们传授什么内容呢?是时候评估一下软件开发员在你们机构所学习的内容了。

  教育的需要

  我们这个行业还在遭受项目失败,它的成本过高、顾客满意度低,总体上是萎靡不振。大家公布的软件开发项目失败率相差很大,最低只有5%,而最高则达到70%以上。尽管这两个数字都不是十分可信,但说明了一个事实:就是说问题依然存在。如果软件开发总是制作出高质量的软件,所有这些数字都会处于同一范围内。

  然而,失败的事实并不能指明失败的原因所在。的确,造成项目失败的原因很多。而且,那些处在软件开发前沿的开发员对那些造成的原因都十分了解。

  缺乏需求收集、项目管理不善、变更控制差、工具选择不正确等情况都是典型的软件开发问题。我们也知道这些问题会导致项目失败;然而,虽然我们意识到这一点,大家还是不断地犯同样的错误。

  人们认为“技术熟练水平”与“行业发展水平”之间的差距是造成这一情况的原因。“技术熟练水平”是一种理想状况,这时每个人都了解与软件开发有关的一切知识。对于各种方法论、工具及技术来说,这无疑是一种理想的理解状态。另一方面,“行业发展水平”指的是软件开发从业人员拥有的平均知识。尽管没有一个平均的人,但你可以制造这样一个角色来识别传统的软件开发人员。

  如今,典型的(一般的)开发者都有机会应用整合开发环境(IDE)与源版本控制。这两点很重要,因为它们是高效代码管理的基础。但是,传统的软件开发者最多只了解两种软件开发方法。因此他们无法确定某种软件开发方法的优点所在。

  同样,传统的软件开发者也没有应用式样的经历。式样是描述普通问题常用解决方法的基本解决方案。尽管许多开发人员听说过式样(通常是工厂式样),但他们并不了解式样及其作用。

  使用的测试方法也很随意。一些开发人员进行单元测试,其他开发人员则采取“踢足球”的方法,依靠别的开发人员、质检员及终端用户来找出漏洞。

  出于用户的请求,或是自己的兴趣驱使,典型的软件开发员不断变更代码,却没有进行变更控制。变更控制的缺乏,结合其它一些改变,引起连锁反应,造成项目失败。这并不是他们有意造成的,主要是因为他们并不完全理解这些微小改变的影响。

  如何学习

  在动身去购买软件开发最新书籍与经典作品之前,请暂停一下。通过阅读使软件开发人员达到相对的“技术熟练水平”是不大现实的。在阅读之后不立即进行实践,很多人是无法完全掌握他们所学的内容的。

  回想一下你所阅读的每一篇文章。你能够贯彻每篇文章中提出的建议或指导方针吗?当然不能!你无法消化你阅读的所有内容。我们没有那样的能力。我们每个人理解、结合阅读材料的能力都不一样,在这方面没有人是全能的。

  实践学习是最佳的学习方式。也就是说,只有实践所学习的内容,才能达到最佳学习效果。阅读当然不错,但我们越专注,记忆的效果就越好。

  我在上面提到“技术熟练水平”时称其为一种理想状态。由于人类是通过实践来学习的,所以这是一种没有人能够达到的状态。期望一个人拥有能够理解软件开发各方面最佳方法的经验,是不切实际的想法。例如,网络开发注重多重叠代与视觉外观;然而由于更新内嵌软件比较困难,内嵌软件开发看重质量与可靠性;这两者的最佳方法完全不同。

  但是,我们并未失去一切。我们可以鼓励专注阅读、进行特定领域开发,并在团队的其它成员之间分享所获得的知识,从而使大家接近“技术熟练水平”。

  允许队员个体在整个团队中集中并补充学习内容,这是体验教学积极的一面。正是这种方法帮助团队接近“技术熟练水平”。但是,许多机构却养成并强化了一些坏习惯,无意间让开发人员远离“技术熟练水平”。

  双重恶果

  在许多机构都有一些基本的进程。有一些需求收集进程。有一些代表性的设计阶段。一些人,特别是那些应用过通用进程(UP)、Rational统一进程(RUP)或其它灵巧的方法的人可能知道这些进程的别名,如启发与调查。尽管它们的持续时间较短,它们有助于了解问题,建立解决方案构架,达到了同样的根本目的。

  许多机构都有某种形式的文本材料。可能是一个“项目章程”----例如执行赞助人的电子邮件、请求数据库或是一些其它形式的信息资料库。不管它有多大,它一定会存在。

  问题在于,许多机构省略了进程中的这些步骤,跳过了文本材料,直接进入开发过程。凭直觉,这可不是个好主意。大量证据表明,“编码并修复”方法(如果可以这样叫的话)效果不大。但是,时间紧迫时,我们就省略了为启发与调查所保留的时间。

  这对项目开发人员有什么启示呢?他们会认为这些做法对软件开发不重要(用Fred Brook的话说,无关紧要)。再也没有比这更为荒谬的了。但是,事实就是这样。很明显,即使时间紧迫,这些步骤与相关的文本材料也不能忽略。

  忽略这些行为可能产生的后果,还会产生另一种恶果。开发人员开始认为:他们所做的一些工作(启发与调查)实际上只是组织为使他们忙碌而增加的工作负担,而不会把它看作是成功软件开发项目的一种技巧。

  家里有一个四岁大的孩子,我痛苦地意识到为某件要重复的事,我必须做(或说)多少遍。这坚定了我的决心,即启发、调查或文本材料工作绝不能省略或缩减。我知道,这些行为即使忽略几次,就意味着以后必须进行长期的再培训。(如果你有孩子,想想他们在爷爷奶奶家呆上几天会是什么样子。)

  这并不是说启发工作一定要进行三个月的繁重文本处理。但是,尽可能全面地理解当前叠代或阶段的所有需求还是实际可能的,也是必须要达成的目标。即使解决方案的主要部分已经完成,你也不应放松,对于运作与当前叠代,这都是必需的条件。在启发工作完成以后,前面的路并不明朗。

  落伍

  部分由于缺乏培训时间,需要更多的经验;更让人痛苦的是由于我们让开发人员误以为进程的一些阶段(不管你同意用什么方法)无关紧要,因而不会影响项目的成功,致使许多软件开发人员落后于“技术熟练水平”。保护进程执行的最低要求,对继续支持软件开发者的职业发展尤为重要。

分享到:
评论

相关推荐

    教你组织软件开发过程中的评审会议.doc

    通过以上知识点,我们可以看到组织软件开发过程中的评审会议不仅涉及到技术知识的传授,还包括团队协作、流程管理、需求理解和持续学习等多个层面。这些活动旨在提升整个团队的效率和软件质量,确保软件开发项目的...

    数据库软件开发简历

    此份简历是一位拥有四年工作经验的数据库软件开发专业人士,主要涵盖了以下几个核心技能和经验: 1. **数据库管理**:简历中提到熟练使用Oracle数据库,具备数据库管理能力,包括诊断和解决数据库问题,这在数据库...

    技术员转正申请书.docx

    在信息技术领域,技术员的角色至关重要,他们负责技术支持、设备维护、软件应用以及解决各种技术问题。技术员转正申请书是这类专业人员在试用期结束后,为了正式成为公司全职员工而提交的文档。这份申请书体现了技术...

    软件技术专业培养计划.pdf

    软件技术专业旨在培养具备扎实计算机软件理论知识,具有较强软件开发实践能力和创新精神的高技能型人才。该专业学制三年,毕业生主要面向程序员和计算机管理员的职业岗位,能够从事软件的设计、编码、测试、维护以及...

    程序设计实训的个人心得体会范文.doc

    此外,这次实训也让作者更好地了解了软件开发的整个流程,并且整个工程的流程是按照现实中工程的通常情况来安排的,让作者更好地掌握了软件开发的整个流程。 这次实训让作者成长了很多,相信在以后的工程开发中这些...

    教学管理软件工程实训文档编写

    在教学管理软件工程实训文档编写中,我们关注的是软件工程的实践教学,旨在让学生掌握软件工程的基本概念、技术和工具,以便于未来参与软件开发工作。实训主要包括以下几个关键环节: 1. **实训开题**:这一阶段是...

    软件培训计划.docx

    在软件项目中,培训不仅是技术知识的传授,也是用户体验和系统采纳的关键。通过有效的培训,可以减少用户对新系统的抵触感,增强用户满意度,同时降低后期的技术支持需求。因此,制定详尽的培训计划并确保执行是项目...

    信息安全专业人才培养方案.pdf

    移动开发技术方向则侧重于3G手机软件开发、WEB软件开发和数据库应用。 为了适应多样化的职业需求,专业设计了宽口径的专业定位,允许学生根据自身兴趣和能力选择适合的职业岗位。主要岗位包括网络设备安装、调试、...

    《移动应用开发》课程标准.doc

    《移动应用开发》课程是信息工程系...总的来说,《移动应用开发》课程致力于培养具备扎实Android开发技能、良好编程习惯和创新意识的物联网专业人才,为他们在未来的职业生涯中从事专业化软件开发工作做好充分准备。

    移动应用开发课程标准.doc

    课程设计思路强调理论与实践相结合,注重软件开发的基本理论、方法和技能,以激发学生的学习兴趣和创新能力。教学方法采用工程+案例教学,通过实际项目让学生在实践中学习和掌握Android开发技术,同时引入自评、互评...

    谢美玲-研究员2

    2. **应聘岗位**:作为研究员,谢美玲可能涉及软件开发、数据分析、人工智能、网络安全或任何其他IT相关的研究项目。在这个角色中,她需要不断跟进最新的技术动态,进行创新性研究,并有可能撰写科研论文,推动行业...

    2022年关于计算机开发求职信4篇.docx

    8. **技术讲解和培训能力**:在电子工业部的活动中担任讲解员,显示了求职者不仅技术过硬,还具备清晰表达和传授知识的能力,这对于技术团队的内部培训和客户沟通非常有价值。 9. **适应性**:求职者提到愿意学习和...

    21天学通csharp项目案例开发

    通过这样的方式,读者不仅能学会如何编写代码,还能了解软件开发的整体流程,包括需求分析、设计、编码和测试。 在学习C#的过程中,读者会接触到Visual Studio IDE,这是一个强大的开发环境,提供了代码编辑、调试...

    计算机专业就业方向介绍.pdf

    计算机专业的毕业生通常会面临多样化的就业选择,涉及到IT行业的各个方面,从软件开发到网络安全,从数据分析到人工智能等领域。在准备就业过程中,了解不同的就业方向是非常重要的,这有助于学生根据自己的兴趣和...

    程序员 杂志\03-08.pdf

    - **职业生涯初期**:温伯格的职业生涯始于1956年,最初是一名软件开发员,后来成为系统设计师、软件项目经理、大学教授,并最终成为IBM公司的软件课程设计者。 - **咨询事业**:1969年后,温伯格与其身为人类学家的...

    个人职业生涯规划书1500字.pdf

    在SWOT分析中,你的优势在于对软件的热爱和学习能力强,这有助于你在该领域取得成功。然而,你也需要注意改善自己的不足,比如拓宽视野,提高预见性和应对压力的能力。 四、规划实施 为了成为优秀的软件测试工程师...

    以职业素养为导向的Android课程改革探索.pdf

    3. **实践环节强化**:增加实验室时间,提供真实的开发环境,让学生有机会实践完整的软件开发生命周期,包括需求分析、设计、编码、测试和维护。 4. **改进考核方式**:实施过程性评价,除了常规的笔试和报告,还应...

    程序员-3期(PX014) PX14010300001_培训课程标准.doc

    同时,课程强调实践操作,要求学生能根据软件开发项目管理和软件工程的需求,编写、调试程序,并撰写相应的文档。此外,课程还注重培养学生的英语阅读能力,以便理解计算机领域的英文资料。 课程目标分为知识目标、...

Global site tag (gtag.js) - Google Analytics