软件开发哲学。如何开发和实施它们

106 阅读12分钟

软件开发往往充满了系统化的过程。开发人员学习编程语言、技术、方法和程序,以达到普遍接受的工作流程。

在软件开发过程中,似乎没有什么创新和创造的空间,但事实并非总是如此。拥有一种独特的软件开发方法或采用一种软件开发哲学可能是你的团队所需要的缺失环节,以使你的团队变得更加一致并建立更好的产品。

虽然软件开发方法、技术和流程可以作为和谐工作的基准,以建立伟大的产品,但总是有空间来开发和实施哲学,以指导你的团队的软件开发尝试,甚至对软件开发的一般知识体系作出贡献。

如果你想知道如何开发和利用独特的软件开发理念来提高你的团队的生产力,你很幸运。我们最近与PHMG的工程总监Chris Thacker在我们的技术领袖中心系列的最近一集中聊到了在工程团队中发展和实施软件开发哲学。

克里斯广泛地谈到了软件开发理念对建立和谐和高绩效工程团队的重要性。请继续阅读,了解克里斯与我们分享的建议,并将其应用到你自己的团队中去!

介绍Chris Thacker和PHMG

Chris Thacker拥有超过12年的技术专业经验。他的职业旅程是从Java开发人员开始的,很快就转到了测试岗位。他在自动化测试领域工作了几年,在不同的公司担任领导职务。2019年,他过渡到工程管理职位,因为他成为金融产品价格比较网站MoneySupermarket的工程主管。

2021年初,克里斯短暂加入一家初创公司Mojo Mortgages,担任首席技术官,在该公司工作了几个月,直到该公司被成功收购,他在2021年最后一个季度加入PHMG担任工程总监。

PHMG是一家领先的多媒体音频品牌机构,为小企业和大公司提供音频品牌解决方案。PHMG致力于让企业家听起来很专业,让大品牌听起来很震撼。该公司在成立20多年的时间里与32000多个品牌合作,目前正在引领音频品牌建设市场。

这篇文章广泛地涵盖了我们与克里斯的讨论。然而,如果你想观看现场会议本身,这里有完整的录音链接。

为什么你需要软件开发理念?

软件开发过程在很大程度上依赖于原则、流程、编程语言、方法以及其他决定开发者工作流程和产出的概念。从表面上看,在这个组合中加入一个软件开发哲学似乎没有必要。然而,Chris强烈建议建立一个我们自己的软件开发哲学,以帮助指导你的团队,原因有以下两个。

1.软件开发理念在招聘人才时很有用处

寻找优秀的人才是任何组织的首要任务,因为人对于实现任何组织的目标都是举足轻重的。拥有数年经验和所有技术技能的候选人并不总是适合这个职位的人。在现实中,真正合适的候选人往往拥有技术能力和软技能的组合,同时也是文化上的合适人选。

从众多符合条件的候选人中寻找这种人才,似乎就像大海捞针一样。但是,如果你有一个指导你的团队的软件开发理念,你可以找出与你的公司有类似价值观的候选人。这使得招聘变得更加容易,因为用克里斯的话说,"了解你想如何建设,就更容易找到想成为其中一员的人"。

2.软件开发理念促进你的团队项目的统一性

虽然你可能有改善团队工作流程和生产力的绝妙想法,但当你离开团队或你不密切监督团队活动时,这些想法可能很容易被忽视。这可能会导致客户的不满和低质量的项目或与你团队过去的成就不一致的项目。

建立一个软件开发理念是一个很好的方法,可以向团队成员清楚地传达期望,并编纂你的团队成员在你不在的时候可以轻松地参考的想法。这样一来,你的团队就可以不断打造符合既定标准的优质产品。

如何招聘与你的软件开发理念相适应的候选人

通过进行技术评估和面试,可能很难确定与你的软件开发理念相一致的候选人。你必须在招聘过程中采用独特和创新的策略。克里斯推荐了其中几个值得考虑的策略。

1.进行主观的技术评估

根据Chris的说法,"如果你根据主观标准评估候选人的技术能力,你就更有可能发现与你的软件开发理念相适应的候选人"。 克里斯将这些主观标准总结为四个P,即:。

  • 产品--根据你正在建造的产品来了解候选人的技术能力。
  • 人--了解候选人在他们将加入的团队中的工作能力。
  • 流程--考察候选人对你的团队所采用的流程的了解。
  • 平台--获取候选人对你的团队所采用的平台的知识。
2.关注对个人发展充满热情的候选人

软件开发人员需要优先学习前沿技术、新方法和新技术,以保持行业的竞争力。自我激励的开发人员可能比那些对个人发展不那么重视的开发人员更愿意接受新的软件开发理念。

3.根据你的软件开发理念来设置问题

你也可以通过根据你希望在团队中引入或实施的理念来定制面试问题,来确定与你的软件开发理念相适应的候选人。

这样,你就可以评估人们的首选方法是否与你的软件开发理念兼容。正如克里斯所说, "你需要的是那些能够接受一个想法并为之奋斗的人,而不是那些想在你试图打长球的时候玩Tiki-Taka的人。"

如何在你的团队中实施软件开发理念

软件开发理念可以大大增加你的团队的自主性和生产力。然而,建立这些理念并确保你的团队遵守这些理念并不总是一个完美的过程,特别是如果你的理念与你的团队所采用的标准有很大的不同。

如果你处于这种境地,Chris推荐了两种广泛的方法,你可以采用这些方法来实施并确保在你的团队中遵守软件开发理念。

1.软方法

克里斯建议在你的团队中设定和执行软件开发理念时,从软方法开始。

例如,你可以通过在站立会议和与团队的一对一会议上不断谈论软件开发理念来鼓励你的团队成员采用软件开发理念。你也可以叫出那些偏离理念的人,并赞扬那些坚持理念的人。

2.硬方法

对于硬性方法,克里斯建议采取诸如适配功能的战术--一种架构测试,可以让你嵌入软件开发的理念。例如,你可以使用单元测试来确定软件开发理念在编码过程中被采纳的程度。

你可以同时使用软方法和硬方法,抓住一切机会在你的团队中重申软件开发方法。你还可以分享行业领袖撰写的资源,如博客、推特和书籍,以加强你的软件开发理念。克里斯说:"有时候,一个权威人物说同样的话,可能会让你的观点更快地深入人心"。

如何发展软件开发理念

创建你自己的软件开发理念不一定是一项艰巨的任务。你可能有偏好的流程、方法和平台,可以根植于你的软件开发哲学中。然而,你也需要考虑纳入外部因素。如果你想建立自己的软件开发理念,这里有一些提示,会对你有所帮助。

1.以目的为出发点

在构建软件开发理念时,你的软件开发工作的最终目标是一个很好的出发点。克里斯建议从定义你打算用你的软件开发哲学实现什么样的商业结果开始,你将能够解读出源于你的预期结果的其他重要因素。

2.确定最适合你的目标的平台和流程

你的首选平台和流程可能不是实现你的预期结果的最佳选择。因此,你对平台和流程的选择应该受到你的预期结果而不是你的偏好的影响。克里斯建议选择能提供你所需要的好处并能接受的平台和流程。

3.思考你的团队

雇用人才是昂贵的,但失去人才可能更昂贵。因此,在开发软件理念时,你应该始终考虑你的团队,并确保你的理念有助于保持你的团队的专注和参与。

你还应该让你的团队为变化做好准备。克里斯建议建立有弹性并能独立做出决定的自主团队,以促进在你的团队中实施软件开发理念。

4.考虑你的组织的风险状况

你的软件开发理念最好与你公司的业务目标一致。此外,你还应该考虑你公司的风险状况。某些软件开发政策可能会对你的业务构成威胁。因此,最好是创建不会使你的公司进一步暴露在不必要的风险中的软件开发政策。

5.对失败持开放态度

你在制定软件开发理念方面的第一次尝试可能不会成功。可能需要多次尝试,才能得出一个能指导你的团队实现你所期望的商业结果的软件开发理念。Chris建议把每次尝试都看作是一次实验,并根据实验的结果决定什么是有效的。

如何在你的团队中设定和执行高标准

任何值得做的事都值得做对,这句话非常适用于软件开发。

作为一个技术领导者,除了在你的团队中制定和实施软件开发理念,你还需要制定和执行高标准,以确保你的团队提供高质量的工作。然而,当你与一个由天才开发者组成的团队合作时,这可能会很困难,因为你需要与不同的意识形态和偏好作斗争。

另一方面,如果你不设定标准并让你的团队成员对其负责,工作质量可能会下降,不良行为可能会在团队中蔓延。如果你想知道如何在你的团队中设置和执行高标准,这里有一些提示可以帮助你。

1.引入温和的惩罚措施来阻止违约者

克里斯建议引入温和的惩罚措施,以鼓励你的团队成员更加意识到所采用的标准并致力于执行这些标准。请放心,这不一定是高额的罚款。事实上,克里斯建议采取一些小的措施,比如在有人违约时向慈善机构捐赠几英镑,他已经在他的团队中实施了这一措施,并因此看到了巨大的进步。

2.利用反馈来改善不良标准

反馈对于提高绩效和将不可接受的行为扼杀在萌芽状态至关重要。你可以随时利用反馈来提醒你的团队成员注意你的标准。克里斯建议采用BIFF(行为、影响、感觉、未来)反馈模式,解释你的团队成员偏离标准会如何影响团队或项目,这让你感觉如何,并告诉他们未来需要改进的地方。

如何帮助你的团队变得自主并专注于关键目标和结果

作为一个团队领导,你有责任确保你的团队活动与整体战略业务目标相一致。然而,将这些业务目标转化为一个自主的团队可能有点挑战性,因为你可能不想干涉团队的活动。如果你想知道如何驾驭这种棘手的情况,你可能会发现克里斯的以下策略很有帮助。

1.公开向你的团队传达商业目标

如果你想让你的团队保持对业务目标的关注,你必须告知他们这些,而且要足够早。克里斯建议在每年年底和下一年之前与你的团队进行这些对话。如果你的团队了解业务目标,他们将能够为实现这些目标而调整他们的活动。

2.设定明确的目标和关键绩效指标(KPI)

克里斯还建议设定目标和关键绩效指标,以帮助你的团队跟踪和衡量他们的表现。但重要的是,这些目标和关键绩效指标应该与你的团队合作制定,不能没有他们的意见。

一旦你与你的团队就目标和关键绩效指标达成一致,你就可以退后一步,让他们开始工作,如果他们需要任何支持,就让他们来找你。根据克里斯的说法,"自主权本质上是你的团队朝着预期的最佳结果前进,他们如何对待这个问题应该由他们自己决定。"