有效的软件开发领域的影响
  基于第一手的观察,有效的软件开发人员可按以下领域的熟练度和/或实际应用水平予以区分:
  · 领域和系统知识
  · 设计和大局思考
  · 业务知识
  · 价值工程
  · 个人工具箱
  · 不断的学习
  · 领域和系统知识
  综合的领域知识是来自于学习和实践应用的循环往复,这些学习和实践的结果可能成功了,也可能失败了。领域知识是软件开发的核心,它确保需求和实现细节一致。它也使软件开发人员,有能力洞察关于软件实施相关的风险。
  没有认识到实施的风险会导致返工和客户的不满。实施风险的早期识别和社会化,使企业有机会参与到前期风险规避的检查之中。这对于进入固定投标商业合作的组织来说特别重要。
  设计和实现健壮和可扩展的解决方案需要系统的知识。有效的开发人员都知道以下系统资源对其实现的功能和解决方案的影响:
  · CPU的消耗。
  · 内存的使用。
  · 磁盘活动。
  · 网络带宽的消耗。
  在功能测试期间,有效的开发人员会监控系统以保证系统资源的使用与推荐的基准保持一致。领域和系统的知识,也有利于早期发现问题。
  设计和大局思考
  设计思维有助于从消费者的角度来看功能和解决方案的开发。一个有效的开发人员是不会在不参与某种形式的设计思维的情况下开始编码的。设计思想包括以下:
  在“识别潜在的解决方案”阶段进行的宏观思考。在这个阶段,主要专注于针对解决问题的潜在解决方案集思广益不同的想法。然而,在这个阶段中,有效的开发人员还会延伸他/她的思维过程以确保提出的解决方案是:
  · 可扩展的
  · 健壮的
  · 可维护的
  · 可扩展的
  一个整体的思维过程,有利于周密全面的实现。因此,领域和系统知识的关键是有效的设计和大局思考。
  业务知识
  有效的开发人员对组织结构、战略和行业地位有一定的认识。他恪守以下组织行为:
  · 尊重组织角色。
  · 以有意义的方式合作。
  · 从事知识传递和透明化。
  · 预算意识。
  有效的软件开发人员以商业导向的方式方式开发和理解软件价值链的组成,包括主要活动和支持性活动。他能认识到,两者都是组织成功的需要。在合作期间,他有效沟通并进行积极的倾听。他寻求对提供客户价值的佳方式达成共识。
  从事知识传递和透明化的实践能使组织和有效的开发人员双方都从中获益。有效的开发人员了解,组织担心知识和经验来源单一相关的风险。因此,为了减轻这些问题,有效的开发人员参与头脑风暴会议,社会化实现的关注点或突破,确保在代码评审中理解这些上下文。这些行为促使:
  · 工作与生活之间健康平衡。
  · 开发人员缺席时软件价值链流动不受限制。
  · 各种功能的实现团队都有机会和流动性。
  · 当有多个设计和实现的选择时,有效的开发人员选择那些提供客户价值和对组织风险小的。
  有效的开发人员有意识地识别预算约束,知道没有无限的资金来源。有效的软件开发人员非常积极地参与交流,不管预算拨款的来源,无论来自于企业的研发资金还是固定投标商业协议。
  价值工程
  新的和增强的产品功能往往来自有远见的思维、市场指标、客户的反馈和整体公司战略。此外,产品的增加通常是战略计划的一部分,关系到预计的研发投资和预期的收益。
  这种方法可以确保提出新的和增强功能实现时,提供增加吸引更广泛客户基础的产品价值主张。当计划新的功能和增强功能时,需要在前期进行相关的收益和风险评估。为确保实现成本和产品差异化的价值之间的平衡,这种评估是必要的。
  有效的软件开发人员实践价值工程,尊重可能与棕地开发相关的复杂性。因此,设计和实现细节依赖于对需求清楚的理解。有效的开发人员不会出现“镀金”【译者注:即增加超出需求的特性】或自我增加范围。他懂得付出努力的重要意义,确保真正需要的功能的“内在”质量。相反,有效的开发人员会社会化他的思想,使适当的价值主张的审核、预算和预测的发布时间能影响到评估。
  个人工具箱
  有效的软件开发人员能熟练使用商业诊断工具(即调试器、内存泄漏检测、任务分析工具等)。然而,他明白,需要关注于更小的、更集中的诊断足迹,便于及时的原因分析和随后的解决。因此,有效的开发人员有一套个人的诊断工具,调查和分析特定类型的错误时予以使用(比如 Heisenbugs )。
  有效的软件开发人员的工具箱还包含可重用的代码片段,以及已被证明可靠的类库。在实现相似上下文的领域问题时,这些东西可用来降低相关实现的风险。有效的开发人员不断扩展和扩充自己的工具箱,确保为未来的开发机会和调试场景做好准备。
  不断的学习
  有效的软件开发人员了解将不断学习作为一种手段,通过改进技术和软技能提高专业价值的意义。他理解的自满情绪的影响,它会阻碍内部和外部生长机会。
  此外,上线时间的考虑,往往限制了精通一门技术的时间。因此,抽身于不断地学习使新知识得以实际应用成为可能。针对多样化的工作场合设计和实现活动,提升准备能力,使自己能有更多机会大展拳脚。
  软件组织,有促进持续学习的职责。然而,有效的开发人员不会单纯地依赖雇主。他/她会在一个或多个在线软件社区保持活跃。此外,有效的软件开发人员定期进行自学和/或为开源项目做贡献。
  结论
  高质量的软件提供商业价值,对持续软件交付和维持优的部署流程是必要的。组织文化、对质量和采用流程的承诺水平会促进生产和交付高质量的软件。然而,有效的软件开发人员所作出的贡献,是生产高质量的软件的一个关键区别。有效的软件开发人员不是谚语中所谓的“水上飞”,但是,他们的合作精神,对软件价值链中其他角色的尊重,创新,恪守不断学习和生产高质量的软件,都是不可否认的。
  有效的软件开发人员更愿意在这么一种组织中茁壮成长,这种组织有可行的产品策略,促进业务敏捷的组织结构,并公开承认、评价和奖励他们的贡献。这些组织也提供合适的工具,构建、开发和测试环境,采用轻量级流程,鼓励持续学习并提供成长的机会。
  软件组织必须积极地采取措施去招募和留住有效开发人员,以便不断生产高质量的软件。虽然,持续交付高质量的软件需要团队的协作,但有效的开发人员发挥着核心的作用,应该承认他们的贡献。