软件工程是我们今天可以从事的最具挑战性的工作之一。成功的软件项目必须解决当今应用的巨大范围,同时一丝不苟地关注一些小细节,这些小细节可以使一个快速、高效的系统和一个缓慢、繁琐的负担之间产生差异。令人惊讶的是,人们最常抱怨的事情--短暂的最后期限、移动的目标等等。- 很少是决定一个项目有多大可能完成的事情。根据我们的经验,几乎所有的项目团队都希望有更多的时间,有更明确的项目目标。多年来,我们发现,成功的因素不在于项目,而在于团队和支持项目的工具。
在这篇文章中,我们想介绍四个因素,它们是决定一个团队是否能实现其项目的成本、性能和时间要求的关键因素。这些要素是:
- 承担仆人式领导角色的项目经理
- 聪明、透明和有团队精神的工程师
- 得到公司支持的主题专家库,可以协助团队的工作
- 支持高效软件开发的工具
1.承担仆人式领导角色的项目经理
成功的项目往往看起来没有受到干扰,也没有出现困扰失败项目的优先级变化。然而,回顾过去,往往会发现完全不同的情况。如上所述,成功的项目和其他项目一样,都有可能存在时间不足和清晰度不够的问题。区别似乎在于项目管理团队如何应对这些挑战。
当项目管理团队采取仆人式领导的姿态时,项目最有可能实现其目标。仆人式领导将他们的职责视为高于他们个人目标和愿望的东西。仆人式领导认为,他们的最终成功在于确保他们周围的人获得成功和良好的支持。
在一个项目团队中,项目经理勤奋工作,在项目中出现障碍时,在影响到团队其他成员之前,清除障碍,澄清模糊的地方。然而,他们明白,他们的努力并没有直接为项目增加价值(即,他们并没有编写或测试代码)。因此,他们认为他们能做的最有价值的事情是确保那些直接增值的团队成员不会分心或从事不增值的活动。
2.聪明、透明、有团队精神的工程师
许多开发人员都曾在一些团队中工作过,这些团队一直在努力跟上他们的任务,按时交付干净、高效的代码。然而,少数幸运的人曾在没有太大挑战的项目中工作过。我们发现,更成功的项目往往是由那些在能力、沟通和接受自己在团队中的角色的能力之间取得平衡的工程师实施的。
软件开发是困难的。要成功地将业务需求提炼成结构良好、可维护的代码,需要高度的能力和对细节的关注。拥有这些特质的工程师几乎总是能够迅速为个别任务提供有效的解决方案。然而,当项目发展到超出几个工程师的能力范围时,仅有能力是不够的。在这一点上,透明度和团队合作的软技能也变得至关重要。
在一个团队环境中,沟通是必不可少的。让其他人了解每个工程师在做什么,以及他们的进展情况,使整个团队能够更有效地工作。透明度使每个团队成员在执行任务时,能够顺利地与同事的工作结合起来。此外,当出现意外的挑战时,项目管理团队可以启动纠正措施,以确保项目的目标不被置于危险之中。
一个成功的项目团队中的工程师的最后一个特征是他们能够接受自己在团队中的位置。有效的软件开发需要的不仅仅是简单的编程。架构、测试、安全、质量保证、系统集成等方面的技能在开发过程中至关重要。当每个工程师认识到他们所扮演的角色,并理解每个职位所提供的价值时,他们就会成为一个有凝聚力的单位,将大问题分解为可管理的部分。
3.一个得到公司支持的主题专家库,可以协助团队的工作
当谈到他在光学方面的工作时,艾萨克-牛顿说。"如果我看得更远,那是站在巨人的肩膀上"。这句话同样适用于实现目标的项目团队。这些团队经常因其成功而获得荣誉,但他们很少独立完成这一成功。相反,最成功的项目团队会利用组织的(通常不被认可的)专家库来帮助他们有效地实现项目的目标。当与这些主题专家一起审查重大项目决策时,可以避免代价高昂的错误。
许多成功的公司认识到这种非正式的好处,并通过提供培训机会和鼓励副业项目来促进其发展,使个人能够在没有达到特定目标的压力下探索自己的兴趣。一个公司用来促进主题专家成长的系统往往是非正式的。员工往往会在组织还没有认识到他们的需求之前,就利用个人发展时间来获得宝贵的新技能。
4.支持高效软件开发的工具
软件工程的一个迷人之处在于,只用一个文本编辑器就能建立复杂的系统。然而,实际上,当一个项目团队充分配备了能够帮助他们有效地组织项目和执行任务的工具时,他们的效率会高得多。对于许多公司来说,为他们的团队选择合适的工具集是一项艰巨的任务,导致团队和工具之间的协调性差。
解决这个问题的一个办法是允许团队在项目早期自我选择其工具。这种自我选择的过程使每个团队成员都能主张他们的理想设置,同时确保整个工具包能够顺利地一起工作。此外,自我选择的过程可以鼓励团队成员之间的知识共享,促进团队的认同感。
总结
现代软件系统几乎都是一个或多个团队合作的产物。为了获得成功,团队必须在得到更大的组织的良好支持的同时,进行协作并团结一致地工作。我们知道,平衡所有这些需求和优先事项可能是困难的,尤其是在有多个项目同时竞争有限资源的大型组织。我们曾与各种规模的公司合作,多次遇到并克服了这些挑战。请随时与我们联系。我们很愿意帮助你提高你的开发工作的有效性和效率。