很少有人能靠自己的力量推进和发展自己的事业。一路上,他们有经验丰富的同事、导师和领导的帮助和指导。现在,你已经在职场上步步高升,你发现自己处于一个可以回报的位置。你有一个由软件工程师组成的团队,他们需要的不仅仅是一个监督者或任务主管。他们需要一个教练,一个能够提供指导和支持他们学习过程的人。虽然教练是大多数管理角色的一部分,但软件团队的运作方式却有些不同。你的团队在多个项目上工作,不断地生产代码,测试代码,并根据反馈进行调整。对细节的思考、对所有变化部分的跟踪以及与他人的良好合作,是引导团队取得巨大成就的关键。这些动力往往需要一种独特的培训方法。以下是培养优秀软件团队的四种方法。

meeting

1. 专注于提出问题
     当孩子遇到困难或遇到路障时,父母会落入试图拯救他们的陷阱。担任技术职务的员工的管理者也会有同样的习惯。虽然这很诱人,而且有时更容易接管,但这并不能帮助你的团队学习。相反,它让他们学会了依赖你,并没有让他们有能力去思考问题。与其说出解决方案,不如尝试将你的反馈重构为问题。这种方法被称为苏格拉底方法

什么是苏格拉底方法?
       苏格拉底方法是由希腊哲学家苏格拉底开发的,它是教师和学生之间的对话,由教师不断地提出探究性的问题,共同努力探索形成学生观点和意见的基本信念。虽然经常被误解,但从柏拉图开始,大多数西方教学传统都是基于这种辩证的提问方法。1973年的电影《纸上谈兵》中由约翰-豪斯曼扮演的臭名昭著的教授金斯菲尔德博士采用了这种技术的极端版本。为了了解道德困境的核心和道德品质的原则,金斯菲尔德博士恐吓和羞辱他的法律学生,痛苦地拷问他们法律案件的细节和影响。

,它旨在帮助发展批判性思维能力。通过询问软件开发人员,在他们向你寻求帮助之前,他们已经尝试过什么,你将设定一个不同的对话。虽然你仍然会引导工程师找到解决方案,但你不会表现得像一个传统的命令和控制的领导者。你的开发人员有时会了解到他们确实有知识和技能来帮助自己。其他时候,他们会看到自己有能力评估自己专业知识的差距,并确定如何获得帮助。也许那是通过团队中的老手,你,或一个团体知识库。员工也可能意识到他们想参加一个课程,或接受一个更有经验的同事的指导。 

2. 设计个人学习计划
     大多数组织和部门都有标准的入职和培训程序,但一刀切的做法错过了将软件开发人员的职业发展交给他们的机会。虽然你不应该完全抛弃通用的基础知识,但询问工程师他们想学什么是值得的。个人发展计划是每个团队成员可以在你的帮助和反馈下设计的。新的团队成员可能需要一些时间来适应,然后才能制定计划。然而,如果有些人在第一天就带着职业目标的清单来上班,也不要惊讶。鼓励你的新员工记录和交流他们希望完成或学习的内容。作为团队领导,考虑与个别团队成员进行入职面试。入职面谈的目的是让员工谈论他们喜欢的工作内容。这些会议帮助团队成员确定流程和工具方面的问题,并表达激励他们的因素。你也会了解到你如何能够最好地支持整个团队和其中的每个成员。入职面试传统上是为新员工设计的,但你可以为经验丰富的员工调整问题。 

3. 提供扩展任务和指导机会
     在开发人员在工作的第一年里完成了他们的工作后,试着提供延伸任务或项目。你可以根据你对这个人的优势和发展目标的评估来分配这些任务。到现在,你也应该对他们的兴趣和团队对他们工作的反馈有一个概念。然而,你不希望只是突然给某人分配一个新的伸展任务。先征求他们的意见,问问他们是否愿意处理这个问题。了解他们认为在完成任务时需要哪些资源和支持。准备好提供这些资源,包括部门或组织内的导师。如果他们想更谨慎地应对挑战,要愿意修改任务。团队中的退伍军人也需要延伸任务,以防止无聊和脱离。这可能包括在新员工入职或第一年期间成为他们的导师。指导的机会也可以包括教授专业知识和提供项目的指导。与团队中的新成员一样,向经验丰富的老员工介绍专业发展机会,既是自愿的,也是可以修改的。

辅导你的开发人员
      由大多数高级开发人员组成的开发团队是罕见的。相反,在技能和经验水平方面存在着差异。没有哪个初级开发者或新手是天生就有知识或经验的。他们可能没有足够的知识来避免陷阱,减少bug,或独立工作。研究人员还分析了四十三项研究,发现接受指导的员工i)对自己的职业更加投入,ii)更有可能相信自己会在事业上有所发展。

无论是否在工作描述中,高级工程师都需要建立一个技能的生态系统,而这只有通过导师计划才能实现。这里有几个提示可以让你开始:

在你的团队中发展导师-学员配对计划。更有经验的员工可以CodeReview审查代码,而初级开发人员则编写代码。(在这里获得更多关于结对编程的提示)。
指派练习编码项目。告诉被指导者在Java中建立程序,或根据真实世界的任务创建项目。
定期审查他们的代码并提供反馈。找出提示、命名方法、测试模式、结构等方面的问题。
始终让他们参与对他人工作的代码审查。
与你的团队中的导师举行会议--汇总导师的反馈,了解你如何发展被指导者的技能。
推荐书籍、参考资料或博客文章来扩展他们的知识。

4. 促进项目合作和目标设定
     作为领导者,你的工作就是要想办法让你的团队步调一致。为项目提供一个整体愿景或方向,使每个员工都有一个共同的目标。每个人都有单独的、重要的任务要完成,但仅仅完成这些任务,然后继续下一个任务是不够的。团队成员需要看到他们如何影响整个项目和他们同事的工作。   有了项目管理软件和协作工具,概述细节和大局是一件轻而易举的事。当然,你仍然需要在启动会议和签到会议上沟通目标和期望。然而,管理和协作解决方案让每个人都能了解项目的范围并衡量进展。工程师们可以实时地一起完成里程碑,或者在他们有空的时候交换反馈。你能够介入,为个人和小组的贡献提供建议,随着项目需求的转变,团队可以在一个集中的地方提出问题,分享想法,并做出调整。  

     作为一名技术领导,你有能力确定团队的方向。仅仅命令别人和完成项目是不够的。你需要设定一个愿景,并确定你能做出贡献的最佳方式,使其成为现实。例如,当迈克尔-德胡格(Michael de Hoog)成为Coinbase(一家数字货币兑换公司)的技术领导人时,他专注于组织的规模化工作。这是一个重大的变化,因为他已经习惯了产品工作,而不是管理规模化的挑战。然而,他保持镇定,在六个月内有条不紊地处理这种情况。他的努力得到了回报,随着加密货币价格的急剧上升,Coinbase的规模扩大了40倍。他说:""你可以说那些时间很辛苦,因为我们在做长时间的工作,与这些规模化的挑战作斗争。但它们也是如此有趣。我认为,没有人会放弃这个机会。我们看到的东西可能在我们的一生中都不会再看到,这种规模的挑战,每个人都想在那里,不管它有多难。我们从迈克尔身上学到了什么?设定一个能够对你的团队或组织产生实质性影响的愿景是第一步。然后你需要为你的主要目标而努力。即使你可能对自己的能力没有信心,但你最终会成长为这个角色,并发展出领导技能。

”你可以说这些时间很辛苦,因为我们在做长时间的战斗,这些规模的挑战。但它们也是如此有趣。我认为,没有人会放弃这些。我们看到的东西可能在我们的一生中都不会再看到,这种规模的挑战,每个人都想在那里,不管它有多难。“

5. 学习反馈的艺术
    拥有高级职位使你有权力在会议或讨论中向成员提供反馈。对初级团队成员的工作方式和表现的评论可以大幅提升他们的表现。一项研究发现,员工强烈支持反馈的价值,而当他们很少或没有得到反馈时,10个工人中有4个会主动脱离。开发人员对反馈并不陌生,因为之前有代码审查的经验。定期提交工作,让你的同行把它拆开,有时是一个艰难而关键的过程,但这就是工程师们向上晋升的方式。

技术带头人如何才能提供诚实和富有成效的反馈?这里有一些提示,可以为你的成功做准备:

考虑将你的反馈表述为问题。这可以鼓励接受者思考和反思解决方案。询问他们觉得自己做得如何,并倾听他们的回答,以建立对话的 "共同所有权"。
识别背景,学会同情员工。在批评之前,要努力理解他们的行为。
阐明问题或批评,但提出替代方案。提供建议的解决方案,帮助有关各方了解他们如何能够茁壮成长和出类拔萃。
没有人愿意听到完全负面的评论。突出胜利,关注员工做得对的地方,以增加动力和支持发展。

6. 掌握任务授权
     技术带头人应该把他们所知道的事情委托给别人,以保持对重要任务的关注。如果你知道如何解决可能出现的问题,那么将任务委托给初级团队成员会更容易。当他作为一个软件工程师工作时,科迪-恩格尔把他自己能迅速完成的任务交给了别人。例如,他的架构小组想用Volley来处理Android内部的网络。他多年来已经做了好几个AsyncTasks,所以他把它分配给一个初级工程师。他写道:"我能够非常容易地回答他们的问题,如果他们在调试中遇到问题,我就在那里把他们从悬崖上拉下来。我还通过代码审查看到了Volley的样子,而工程师则了解了所有关于网络请求的情况。这也有一个额外的好处,就是让我看起来像个万事通,因为在这种情况下,我的知识非常丰富。"

     这种策略让初级工程师犯错,承担风险,并经历失败--这些事情对学习过程都是至关重要的。当他们在正确的指导下自由地完成任务时,他们可以迅速建立自己的能力。

7. 保持相关性
     高级职员工作的另一个方面是要保持对行业趋势和发展的更新每天抽出1到2个小时阅读你所在领域的材料,并使之成为一种习惯。关注相关的技术出版物。在社交媒体上关注你的同龄人。订阅相关的subreddits。建立一个由经验丰富的技术领袖和分析师组成的网络,以获得对当前和不断发展的技术的洞察力。不要忘记监测你的竞争对手如何改变他们的产品,以及他们使用的技术。了解你的团队正在使用或反对什么,总是很重要的。这里有几个提示,以保持对你的竞争对手的关注。

在社交媒体上关注竞争对手。
订阅他们的博客和新闻简报。
定期阅读他们的最新发布说明。
看看竞争对手的评论,注意负面反馈。利用这些评论来制定产品功能和升级的想法。
使用像Marketing Grader这样的应用程序来检查社交媒体粉丝、索引页面和链接域等指标。

8. 发展自主领导
     官僚主义会使事情变慢,这已经不是什么秘密了--平均而言,公司会因为一种叫做组织阻力的东西而损失20%以上的生产能力。无论你是初创公司还是大公司的技术领导,当等级制度最少、流程较少时,效率会更高。建立一个员工有自由和自主权的环境是非常重要的,可以让他们自我指导。哈佛商学院高级管理项目主席Ranjay Gulati将自由定义为相信员工能够代表组织独立思考和行动。Gulati研究了Netflix的自由和责任文化。该公司的员工可以选择他们的产假、旅行费用和休假时间。作为交换,他们被期望为企业做出正确的决定。他指出。"这种自由并不仅仅是供人享用的。员工被期望行使它作为他们对组织的责任的一部分。例如,他们的工作是阅读、理解和辩论基础性文件中的观点"。

    在现实中,你的企业可能无法提供与Netflix一样的福利--但你应该以自主为目标。鼓励团队成员在会议上分享他们的想法。给他们自由,让他们做出改变,提高工作质量。伟大的技术领导不是一夜之间就能完成的。他们从对自己团队的愿景开始。他们的团队通过反馈、任务授权和导师制发展出一个技能的生态系统。他们磨练了自己的技能,并达到了顶峰,因为他们接受了挑战,保持了决心,并保持对解决方案的关注。


总结
      教练是你作为经理人所承担的比较困难的责任之一。关于领导力的传统观念有时会碍手碍脚,而且团队成员有各自的需求和抱负。尤其是软件开发人员的团队,需要独特的教练方法,因为他们的工作可能会变得过于分散。通过支持和鼓励协作和个人的进步,你将使你的团队走向团体的成功。        

今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

posted on 2022-03-13 12:19  PetterLiu  阅读(154)  评论(0编辑  收藏  举报