开发高质量软件的区别因素

本文要点

  • 生产高质量的软件对持续软件交付和优化开发流程的支持来说必不可少。
  • 专门针对培训和基础设施(硬件和软件)提高年度资本投资对于促进高质量软件的开发是必需的。
  • 采用与组织业务模型一致的轻量级流程和促进开发人员的工作效率是一个关键的环境决策。
  • 高层管理的承诺、组织文化和有效的开发人员的贡献是高质量软件开发的区别因素。

摘要

软件质量可达到的水平反映了一个组织的经营决策。有许多因素影响这个决策,包括开发、构建和测试环境的有效性,资源和相关技能、诚信、积极性和经验水平、商业协议,以及采用的流程和产能工具。

开发、构建和测试环境的有效性,决定了测试可达到的效率和广度。让测试和生产环境非常接近,将更有可能发现潜在的和边缘的问题,否则就要在生产环境中直接面对了。

选择的流程应在保证可重复性的同时,能够暴露和规避风险。流程不应该笨重,也不应该表里不一。流程应进行定期审查,以确保他们是最优的并为组织提供了价值。

工作组织和计划的产能工具应该能够提高效率、支持透明度和汇总报告。选择的工具应该需要最小化团队管理费用。此外,这些工具感知到的价值不应该掩盖生产高质量软件所需的努力和举措。

经验、技术能力和自我意识往往是与软件开发效率的相关属性。有效的开发人员在生产高质量的软件中具有重要的作用。他们的领域知识,对细节的关注和积极的测试来自于可贵的实践经验。在令人兴奋和具有挑战性的软件开发阶段,诚信和自我激励是维持一致和高水平生产力必须的特质。这些因素,以及适当的基础设施和一套轻量级流程,是不断生产高质量软件的前提条件。

有效的开发人员不是不可能犯错的,而是他们的设计和实现都经过了深思熟虑,确保了“内在的”质量。从而减少了与质量相关的意外的可能性。有效的开发依赖于演绎推理技能和关键分析,而不是教条主义或对软件设计、实现和测试阶段的肤浅理解。

认识到有效的人员的作用和贡献(对于生产高质量的软件),同时也不要看轻对轻量级流程以及他人贡献的需要。有很多文章描述了软件开发流程的重要性和他人在软件价值链的贡献。

本文将重点阐述在软件开发环境中显露的这些方面,在此路线图的开发和/或定制/固定出价的实施都是规范的。

因此,本文介绍了:

  • 持续交付和最优的部署流程对软件价值链的意义
  • 高层管理承诺和资本投入对生产高质量软件是必需的。
  • 有效的开发人员表现出的可观察的行为特征和模式,其促进了“内在的”软件质量。

持续交付和部署流程

持续交付带来可持续增量开发高质量的为上线做好准备的软件。这个工作流程提升了特性实现期间的敏捷性,对于维持重要客户和干系人的经验反馈很有必要。然而,必须警惕的是,不要由于实现了方便快捷的交付捷径,反而令技术债有增无减。有效的代码审查、统一使用一个静态代码分析工具和有计划的代码重构会防止增加技术债务。

开发高质量软件的区别因素

有效的软件开发领域的影响

基于第一手的观察,有效的软件开发人员可按以下领域的熟练度和/或实际应用水平予以区分:

  • 领域和系统知识
  • 设计和大局思考
  • 业务知识
  • 价值工程
  • 个人工具箱
  • 不断的学习

领域和系统知识

综合的领域知识是来自于学习和实践应用的循环往复,这些学习和实践的结果可能成功了,也可能失败了。领域知识是软件开发的核心,它确保需求和实现细节一致。它也使软件开发人员,有能力洞察关于软件实施相关的风险。

没有认识到实施的风险会导致返工和客户的不满。实施风险的早期识别和社会化,使企业有机会参与到前期风险规避的检查之中。这对于进入固定投标商业合作的组织来说特别重要。

设计和实现健壮和可扩展的解决方案需要系统的知识。有效的开发人员都知道以下系统资源对其实现的功能和解决方案的影响:

  • CPU的消耗。
  • 内存的使用。
  • 磁盘活动。
  • 网络带宽的消耗。

在功能测试期间,有效的开发人员会监控系统以保证系统资源的使用与推荐的基准保持一致。领域和系统的知识,也有利于早期发现问题。

设计和大局思考

设计思维有助于从消费者的角度来看功能和解决方案的开发。一个有效的开发人员是不会在不参与某种形式的设计思维的情况下就开始编码的。设计思想包括以下:

在“识别潜在的解决方案”阶段进行的宏观思考。在这个阶段,主要专注于针对解决问题的潜在解决方案集思广益不同的想法。然而,在这个阶段中,有效的开发人员还会延伸他/她的思维过程以确保提出的解决方案是:

  • 可扩展的
  • 健壮的
  • 可维护的
  • 可扩展的

一个整体的思维过程,有利于周密全面的实现。因此,领域和系统知识的关键是有效的设计和大局思考。

业务知识

有效的开发人员对组织结构、战略和行业地位有一定的认识。他恪守以下组织行为:

  • 尊重组织角色。
  • 以有意义的方式合作。
  • 从事知识传递和透明化。
  • 预算意识。

有效的软件开发人员以商业导向的方式方式开发和理解软件价值链的组成,包括主要活动和支持性活动。他能认识到,两者都是组织成功的需要。在合作期间,他有效沟通并进行积极的倾听。他寻求对提供客户价值的最佳方式达成共识。

从事知识传递和透明化的实践能使组织和有效的开发人员双方都从中获益。有效的开发人员了解,组织担心知识和经验来源单一相关的风险。因此,为了减轻这些问题,有效的开发人员参与头脑风暴会议,社会化实现的关注点或突破,确保在代码评审中理解这些上下文。这些行为促使:

  • 工作与生活之间健康平衡。
  • 开发人员缺席时软件价值链流动不受限制。
  • 各种功能的实现团队都有机会和流动性。

当有多个设计和实现的选择时,有效的开发人员选择那些提供客户价值和对组织风险最小的。

有效的开发人员有意识地识别预算约束,知道没有无限的资金来源。有效的软件开发人员非常积极地参与交流,不管预算拨款的来源,无论来自于企业的研发资金还是固定投标商业协议。

价值工程

新的和增强的产品功能往往来自有远见的思维、市场指标、客户的反馈和整体公司战略。此外,产品的增加通常是战略计划的一部分,关系到预计的研发投资和预期的收益。

这种方法可以确保提出新的和增强功能实现时,提供增加吸引更广泛客户基础的产品价值主张。当计划新的功能和增强功能时,需要在前期进行相关的收益和风险评估。为确保实现成本和产品差异化的价值之间的平衡,这种评估是必要的。

有效的软件开发人员实践价值工程,尊重可能与棕地开发相关的复杂性。因此,设计和实现细节依赖于对需求清楚的理解。有效的开发人员不会出现“镀金”【译者注:即增加超出需求的特性】或自我增加范围。他懂得付出努力的重要意义,确保真正需要的功能的“内在”质量。相反,有效的开发人员会社会化他的思想,使适当的价值主张的审核、预算和预测的发布时间能影响到评估。

个人工具箱

有效的软件开发人员能熟练使用商业诊断工具(即调试器、内存泄漏检测、任务分析工具等)。然而,他明白,需要关注于更小的、更集中的诊断足迹,便于及时的原因分析和随后的解决。因此,有效的开发人员有一套个人的诊断工具,调查和分析特定类型的错误时予以使用(比如Heisenbugs)。

有效的软件开发人员的工具箱还包含可重用的代码片段,以及已被证明可靠的类库。在实现相似上下文的领域问题时,这些东西可用来降低相关实现的风险。有效的开发人员不断扩展和扩充自己的工具箱,确保为未来的开发机会和调试场景做好准备。

不断的学习

有效的软件开发人员了解将不断学习作为一种手段,通过改进技术和软技能提高专业价值的意义。他理解的自满情绪的影响,它会阻碍内部和外部生长机会。

此外,上线时间的考虑,往往限制了精通一门技术的时间。因此,抽身于不断地学习使新知识得以实际应用成为可能。针对多样化的工作场合设计和实现活动,提升准备能力,使自己能有更多机会大展拳脚。

软件组织,有促进持续学习的职责。然而,有效的开发人员不会单纯地依赖雇主。他/她会在一个或多个在线软件社区保持活跃。此外,有效的软件开发人员定期进行自学和/或为开源项目做贡献。

结论

高质量的软件提供商业价值,对持续软件交付和维持最优的部署流程是必要的。组织文化、对质量和采用流程的承诺水平会促进生产和交付高质量的软件。然而,有效的软件开发人员所作出的贡献,是生产高质量的软件的一个关键区别。有效的软件开发人员不是谚语中所谓的“水上飞”,但是,他们的合作精神,对软件价值链中其他角色的尊重,创新,恪守不断学习和生产高质量的软件,都是不可否认的。

有效的软件开发人员更愿意在这么一种组织中茁壮成长,这种组织有可行的产品策略,促进业务敏捷的组织结构,并公开承认、评价和奖励他们的贡献。这些组织也提供合适的工具,构建、开发和测试环境,采用轻量级流程,鼓励持续学习并提供成长的机会。

软件组织必须积极地采取措施去招募和留住有效开发人员,以便不断生产高质量的软件。虽然,持续交付高质量的软件需要团队的协作,但有效的开发人员发挥着核心的作用,应该承认他们的贡献。

来源:贾诩是也

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年7月1日
下一篇 2017年7月1日

相关推荐