苏州峻德信息

如何打造一支高效的软件开发团队?

作者: 张纪伟

时间:2022-05-31

2020年,我们和国内某检测研究院又签订了一份30多万的合同,他们算是我们的老客户,之前合作过更大的项目。这次的合同是峻德信息的孔东方作为AO(Account Owner)签订的,这些并没什么特别的。几天后,我听苏州的同事说,孔东方打算自己一个人完成这个项目,自己沟通业务和需求,自己设计和开发。一个多月以后,项目如期交付了,客户反馈很好,付款也很痛快。

我后来在很多会议上都提起过这个项目,让大家对固定项目的做法能有些新的思路。如果当时东方组建了一个小团队去交付项目,会比自己一个人做更好吗?

我想当时东方愿意一个人承担整个项目,一个方面是对自己能力有信心;另一方面,对团队协作,可能也有些畏惧。团队里如何处理分工,组织结构,上下级关系都是问题,弄不好一支团队的效率还真不如一个人。

东方对敏捷开发,和创造客户价值已经有很好的理解,是不是让他做项目经理,带两个人一起做就好了?这种师傅带徒弟的模式效率并不高,师傅牺牲自己的效率去提升徒弟的效率,最终团队的效率比师傅自己的效率高不了多少。有没有办法能发挥团队所有成员的效率呢?

如果每一位程序员都独立开展工作,无论能力高低,经验多少,从组织结构上不再设置师傅或项目经理这样的角色,再通过项目管理工具让每个人的工作(效率)透明化。我们会发现,大家在项目里的效率有可能相差很大,但至少可以相加了。


软件开发团队需要每个程序员都参与的底层创新模式

底层创新能力是一个团队里,每个团队成员参与创新的程度,程度越高,底层创新能力也就越强。常见的软件团队里,团队90%以上的创新成果来自顶层(项目经理、架构师等)。为什么会这样呢?底层创新会为管理者带来难度,无论质量或交付期都将难以控制。

比如要盖一栋自己住的房子,土建部分有顶层创新基本上够了,顶层的设计师出图纸,建筑工人日常添砖加瓦的工作是标准化的。到内部装修的阶段,即使室内设计师出了图纸,装修工人每天还是可能会面对大量特殊的要求,因为每个家庭都不少特殊的情况或喜好,是设计师无法在前期了解到的。现实中,很少会有装修工人去思考和解决这些问题,他们会问设计师,但除非设计师不干别的,否则往往业主自己成了那个底层创新的主力,天天盯在工地上,累个半死。

软件开发过程比内部装修面对的问题更加复杂,每个企业或软件产品内部的特殊情况比装修多得多,软件设计师(架构师)也不可能事先把所有问题都考虑到,没有程序员参与发现和解决这些问题,积累起来,一个看起来完工的软件可能根本无法使用。


主动思考的程序员是底层创新的前提

程序员要找出问题并解决它,传统的管理模式下就很难实现。需要程序员主动思考,才有可能发现问题。自我管理更容易激发程序员主动思考并发现问题,而传统的管理模式,往往让人仅满足于完成上级交办的任务。自我管理意味着团队成员之间必须通过相互协作来达成目标,因为管理者的指挥和协调功能被大大削弱了。

一支理想的软件开发团队,程序员应该具备自我管理能力和协作意识,团队负责人是教练,而不是总司令。整个团队像一支优秀的球队,每个人都为球队最终的胜利,不断寻找自己的最佳位置或分工,这个位置并不固定,要根据形势随时调整。所以程序员最好是多面手,能够承担各种角色,每个人以自己所长为出发点,根据具体要求和形势,兼顾不同分工。

通过宽松的外部环境让程序员养成主动思考的习惯

发现问题和解决问题,是一个创造的过程,不是生产过程;需要的是创造力而不是体力,所以程序员的工作更需要一个宽松的环境,而不是一个被管控的环境。最好能够远程办公,可以灵活安排自己工作和生活的时间,当然也要顾及协作的需要,安排一定的重合工作时间。

稳定的收入和有希望的未来也是必要的外部环境,如果程序员都担心35岁以后会被裁员,谁会关心手里的工作有没有创造价值?事实上,程序员一旦开始关注问题,关注创造价值,就可以实现自身能力和价值的积累,不会再担心年龄的问题。

上一篇:远程开发团队为什么需要虚拟饮水机? 下一篇:软件公司不接受远程工作的真正原因

如何打造一支高效的软件开发团队?

如何打造一支高效的软件开发团队?

2020年,我们和国内某检测研究院又签订了一份30多万的合同,他们算是我们的老客户,之前合作过更大的项目。这次的合同是峻德信息的孔东方作为AO(Account Owner)签订的,这些并没什么特别的。几天后,我听苏州的同事说,孔东方打算自己一个人完成这个项目,自己沟通业务和需求,自己设计和开发。一个多月以后,项目如期交付了,客户反馈很好,付款也很痛快。

我后来在很多会议上都提起过这个项目,让大家对固定项目的做法能有些新的思路。如果当时东方组建了一个小团队去交付项目,会比自己一个人做更好吗?

我想当时东方愿意一个人承担整个项目,一个方面是对自己能力有信心;另一方面,对团队协作,可能也有些畏惧。团队里如何处理分工,组织结构,上下级关系都是问题,弄不好一支团队的效率还真不如一个人。

东方对敏捷开发,和创造客户价值已经有很好的理解,是不是让他做项目经理,带两个人一起做就好了?这种师傅带徒弟的模式效率并不高,师傅牺牲自己的效率去提升徒弟的效率,最终团队的效率比师傅自己的效率高不了多少。有没有办法能发挥团队所有成员的效率呢?

如果每一位程序员都独立开展工作,无论能力高低,经验多少,从组织结构上不再设置师傅或项目经理这样的角色,再通过项目管理工具让每个人的工作(效率)透明化。我们会发现,大家在项目里的效率有可能相差很大,但至少可以相加了。


软件开发团队需要每个程序员都参与的底层创新模式

底层创新能力是一个团队里,每个团队成员参与创新的程度,程度越高,底层创新能力也就越强。常见的软件团队里,团队90%以上的创新成果来自顶层(项目经理、架构师等)。为什么会这样呢?底层创新会为管理者带来难度,无论质量或交付期都将难以控制。

比如要盖一栋自己住的房子,土建部分有顶层创新基本上够了,顶层的设计师出图纸,建筑工人日常添砖加瓦的工作是标准化的。到内部装修的阶段,即使室内设计师出了图纸,装修工人每天还是可能会面对大量特殊的要求,因为每个家庭都不少特殊的情况或喜好,是设计师无法在前期了解到的。现实中,很少会有装修工人去思考和解决这些问题,他们会问设计师,但除非设计师不干别的,否则往往业主自己成了那个底层创新的主力,天天盯在工地上,累个半死。

软件开发过程比内部装修面对的问题更加复杂,每个企业或软件产品内部的特殊情况比装修多得多,软件设计师(架构师)也不可能事先把所有问题都考虑到,没有程序员参与发现和解决这些问题,积累起来,一个看起来完工的软件可能根本无法使用。


主动思考的程序员是底层创新的前提

程序员要找出问题并解决它,传统的管理模式下就很难实现。需要程序员主动思考,才有可能发现问题。自我管理更容易激发程序员主动思考并发现问题,而传统的管理模式,往往让人仅满足于完成上级交办的任务。自我管理意味着团队成员之间必须通过相互协作来达成目标,因为管理者的指挥和协调功能被大大削弱了。

一支理想的软件开发团队,程序员应该具备自我管理能力和协作意识,团队负责人是教练,而不是总司令。整个团队像一支优秀的球队,每个人都为球队最终的胜利,不断寻找自己的最佳位置或分工,这个位置并不固定,要根据形势随时调整。所以程序员最好是多面手,能够承担各种角色,每个人以自己所长为出发点,根据具体要求和形势,兼顾不同分工。

通过宽松的外部环境让程序员养成主动思考的习惯

发现问题和解决问题,是一个创造的过程,不是生产过程;需要的是创造力而不是体力,所以程序员的工作更需要一个宽松的环境,而不是一个被管控的环境。最好能够远程办公,可以灵活安排自己工作和生活的时间,当然也要顾及协作的需要,安排一定的重合工作时间。

稳定的收入和有希望的未来也是必要的外部环境,如果程序员都担心35岁以后会被裁员,谁会关心手里的工作有没有创造价值?事实上,程序员一旦开始关注问题,关注创造价值,就可以实现自身能力和价值的积累,不会再担心年龄的问题。

如何打造一支高效的软件开发团队?

作者: 张纪伟

时间:2022-05-31

2020年,我们和国内某检测研究院又签订了一份30多万的合同,他们算是我们的老客户,之前合作过更大的项目。这次的合同是峻德信息的孔东方作为AO(Account Owner)签订的,这些并没什么特别的。几天后,我听苏州的同事说,孔东方打算自己一个人完成这个项目,自己沟通业务和需求,自己设计和开发。一个多月以后,项目如期交付了,客户反馈很好,付款也很痛快。

我后来在很多会议上都提起过这个项目,让大家对固定项目的做法能有些新的思路。如果当时东方组建了一个小团队去交付项目,会比自己一个人做更好吗?

我想当时东方愿意一个人承担整个项目,一个方面是对自己能力有信心;另一方面,对团队协作,可能也有些畏惧。团队里如何处理分工,组织结构,上下级关系都是问题,弄不好一支团队的效率还真不如一个人。

东方对敏捷开发,和创造客户价值已经有很好的理解,是不是让他做项目经理,带两个人一起做就好了?这种师傅带徒弟的模式效率并不高,师傅牺牲自己的效率去提升徒弟的效率,最终团队的效率比师傅自己的效率高不了多少。有没有办法能发挥团队所有成员的效率呢?

如果每一位程序员都独立开展工作,无论能力高低,经验多少,从组织结构上不再设置师傅或项目经理这样的角色,再通过项目管理工具让每个人的工作(效率)透明化。我们会发现,大家在项目里的效率有可能相差很大,但至少可以相加了。


软件开发团队需要每个程序员都参与的底层创新模式

底层创新能力是一个团队里,每个团队成员参与创新的程度,程度越高,底层创新能力也就越强。常见的软件团队里,团队90%以上的创新成果来自顶层(项目经理、架构师等)。为什么会这样呢?底层创新会为管理者带来难度,无论质量或交付期都将难以控制。

比如要盖一栋自己住的房子,土建部分有顶层创新基本上够了,顶层的设计师出图纸,建筑工人日常添砖加瓦的工作是标准化的。到内部装修的阶段,即使室内设计师出了图纸,装修工人每天还是可能会面对大量特殊的要求,因为每个家庭都不少特殊的情况或喜好,是设计师无法在前期了解到的。现实中,很少会有装修工人去思考和解决这些问题,他们会问设计师,但除非设计师不干别的,否则往往业主自己成了那个底层创新的主力,天天盯在工地上,累个半死。

软件开发过程比内部装修面对的问题更加复杂,每个企业或软件产品内部的特殊情况比装修多得多,软件设计师(架构师)也不可能事先把所有问题都考虑到,没有程序员参与发现和解决这些问题,积累起来,一个看起来完工的软件可能根本无法使用。


主动思考的程序员是底层创新的前提

程序员要找出问题并解决它,传统的管理模式下就很难实现。需要程序员主动思考,才有可能发现问题。自我管理更容易激发程序员主动思考并发现问题,而传统的管理模式,往往让人仅满足于完成上级交办的任务。自我管理意味着团队成员之间必须通过相互协作来达成目标,因为管理者的指挥和协调功能被大大削弱了。

一支理想的软件开发团队,程序员应该具备自我管理能力和协作意识,团队负责人是教练,而不是总司令。整个团队像一支优秀的球队,每个人都为球队最终的胜利,不断寻找自己的最佳位置或分工,这个位置并不固定,要根据形势随时调整。所以程序员最好是多面手,能够承担各种角色,每个人以自己所长为出发点,根据具体要求和形势,兼顾不同分工。

通过宽松的外部环境让程序员养成主动思考的习惯

发现问题和解决问题,是一个创造的过程,不是生产过程;需要的是创造力而不是体力,所以程序员的工作更需要一个宽松的环境,而不是一个被管控的环境。最好能够远程办公,可以灵活安排自己工作和生活的时间,当然也要顾及协作的需要,安排一定的重合工作时间。

稳定的收入和有希望的未来也是必要的外部环境,如果程序员都担心35岁以后会被裁员,谁会关心手里的工作有没有创造价值?事实上,程序员一旦开始关注问题,关注创造价值,就可以实现自身能力和价值的积累,不会再担心年龄的问题。

上一篇:远程开发团队为什么需要虚拟饮水机? 下一篇:软件公司不接受远程工作的真正原因