在本次播客中,QCon旧金山大会、 伦敦大会和纽约大会的主席Wes Reisz访谈了GitHub的工程主管Phil Haack,Haack在Github的工作聚焦于实现将软件推送到开发人员的桌面,当前正致力于发布GitHub Desktop这样的软件。GitHub Desktop是用于Visual Studio开发工具和Atom文本编辑器的Github扩展。Haack于2011年加入Github,他也是.Net社区中的重量级人物。在Microsoft工作时,Phil在NewGit、ASP.NET和MVC.NET的发布中起到了核心作用。
关键要点:
我们常过度关注软件开发实践的具体细节。但是当扩展到大型的项目和团队时,挑战就不再是技术上的,而是社会问题。
研究显示了多样化程度更高的团队会更加的高效。
正在向管理层转化的工程师应将这种转化看成是与任何技术领域一样的一门学问;这并非是一件“仅靠即兴发挥”就能去处理的事情。
建立高效团队需要信任,信任的存在可使团队成员在不破坏相互关系情况下,进行坦率的探讨和健康的辩论。一对一交流是一种实现信任的有效方法。
要成为工程师团队中有影响力的教练,管理者需要体现出强大的技术领导力。在技术上不可靠的人通常不会被技术团队很好地接纳。
点击播客链接收听
播客记录
1分59秒:“我们常过度关注软件开发实践的具体细节。但是当扩展到大型的项目和团队时,挑战就不再是技术上的,而是社会问题。”(引用自Peopleware)。在从按个人喜好开发项目转到参与几十上百人共事的大型开发项目的过程中,开发人员所面对的最艰难挑战在于如何与他人共事、如何很好地相互协调以及如何从他人那里学到最多的东西。
3分09秒:一种应具备的重要能力,是采取证据法识别那些对推动协作产出有效的实践和方法,但是该领域的研究并不多。我们只能依赖于现有的研究方法,逐个试验它们的应用效果。这样才能确定一种方法是否真正有效,或者仅是一种不能实际应用于开发空间中的“传统观念”。
3分40秒:合理的开发实践就是配置能运行的开发环境的技术。这样开发人员下载项目之后就可按下F5键去编译项目,而无需在完成繁杂的设置后才能使用该项目去做甚至是最简单的操作。如果项目是从代码库克隆而来的,那么仅需寥寥数步操作就可让该项目在开发人员本地的机器上运行起来。
4分26秒:自动编译、持续集成等工具有助于使开发人员保持理智。
4分52秒:在QCon旧金山大会的“软件技能”专题报道中,安排了报告“用于高效团队和产品的社交编程”。但是在实际中,社交编程的相关技能是非常难以学习并应用于日常生活中的。
5分09秒:我们所存在的最大问题是社会学上的,这些问题通常并未得到企业和工程师的足够重视。企业和工程师的努力方向侧重于去解决技术实践问题,但是问题的根源却在于人们间是如何交流以及如何共事的。
5分36秒:该报告内容包括了许多的个人经验教训,以及对这些经验教训的研究。一些经验证的研究显示,部分经验教训对实现更高效的团队有用。
5分56秒:研究显示多样化程度更高的团队会更加高效。具有更加多样化构成的工程团队是更有生产力的。社会公正是一个由试验性证据支持的重要方面,这些证据显示了团队中多样性的价值所在。
7分11秒:Haack曾在Microsoft从事开源软件工具和产品工作,他的工作可以说是在防火墙之外,并正在向Github迁移。那时Scott Guthrie是该项目的领导,他支持推动ASP.NET MVC开源,并认为Microsoft的未来取决于其对开源的支持程度。
8分25秒:NewGit软件包管理器在一开始就是开源的,虽然经历了很长的时间才使团队可以公开接受项目贡献。
8分51秒:在从Microsoft迁移到Github中的差别主要在于,从一个十万人的企业转变到一个只有30到50人的团队,并看着它成长到约600人规模。
9分23秒:ASP.NET MVC的开源最初是以MSPO许可发布,开源需要企业文化的转变。最初在发布代码前要做IP审查,但是这个开销已经被精简了。
10分20秒:Haak想从一开始就将NewGit迁移到Github上而非Codeplex上,这样可以支持更大型的开发社区。这样做的目标在于使NewGit对更广泛的开发社区有吸引力,而非仅是Microsoft爱好者。
11分00秒:对于想要发布产品到开源环境中的开发人员,我们有如下的提示和建议:
从小规模开始;
挑拣其中独立的部分进行试水;
从他人的例子中学习;
响应反馈;
响应社区反馈需要做额外的工作,但是这些努力是值得的。
12分52秒:Haak很乐于看到ASP.NET发布在Github上,同时也惊讶于该事情的实现是如此之快速。
13分34秒:作为一种跨平台脚本工具,Powershell已被发布在Github上。
13分58秒:跨平台.NET易于使更多的Microsoft产品开源。
14分26秒:Atom项目的目标是成为“最可控的文本编辑器”。Atom基于JavaScript、CSS和HTML,这些工具很可能为大部分开发人员所熟悉。开发人员可用已掌握的技能去扩展并定制自己的文本编辑器。
15分36秒:Haak写过一个关于鼓励使用Atom的博客帖子,谈及用户在每次使用Atom保存文件时所给予的点滴鼓励。构建Atom扩展是一件多么有趣的事情呀。
16分43秒:Electron项目是从Atom项目中抽取出来的,并已成为一个独立的项目。依靠自身的影响力,Electron已构成了一个重要的社区。Slack客户是基于Electron构建的,Nuclide Facebook IDE是基于Electron和Atom构建的,Visual Studio Code也是基于Electron构建的。许多企业正使用Electron作为跨平台应用的基础。
18分00秒:类似于Node应用,Electron应用使用Node和NPM运行于Chromium客户Shell中,这意味着NPM包的引入有助于桌面应用的构建。
18分35秒:Slack客户使用Electron构建。Slack的首席工程师之一Pual Bets原先是在Github,他深入地参与了Electron社区。
19分06秒:借用Web开发技能去构建桌面应用的理念已经存在很长时间了,当前由于工具的存在和性能上的改进,构建一个好的跨平台应用是可行的。
19分44秒:Haak应急需而成为Github的经理。
20分22秒:对正进入管理层的开发人员的建议:
将这种转化看成与一种其它技术领域一样的学问;这并非是一件“仅靠即兴发挥”就能去处理的事情。
学习并实践做管理所需的技能。
学习如何去做好与你所管员工的每周一对一会谈。
构建并发展你与每位同事间的信任。
好的一对一会谈不是去做状态更新,而是去倾听你的团队成员的时间。
21分39秒:提供一个好资源:管理者工具(Manager Tools)播客。
21分45秒:如果按30分钟时间来安排一对一谈话,其中的15分钟可用于团队成员的畅所欲言,另外15分钟由经理讲话;或者是对大家畅所欲言、经理讲话和展望未来各安排10分钟的时间。在谈话中重要的是应始终以团队成员的关注点为开始,因为谈话是关于团队成员的。一对一谈话可使得经理和员工彼此了解,进而构建相互信任的关系。
22分22秒:建立高效团队需要信任,信任的存在可使团队成员在不破坏相互关系情况下,进行坦率的探讨和健康的辩论。
23分14秒:怎样构建开发现代软件所需的伟大团队,对此建议如下:
一对一谈话并建立信任;
构建可很好交付反馈的企业文化(通常是很难的);
良好的反馈是持续性的、规律的、有建设意义的和积极的。
24分10秒:当一个团队中成员彼此间可以舒畅安全地给予坦诚反馈时,这样的团队就具备了不断改进的能力。
24分40秒:如何聘请或培养一位好的经理?
在Github,经理是技术领导,是那些还具有一些个人职责的高级工程师;
经理领导4到6人的技术团队;
责任分割,80%是技术上的,20%是人事上的;
经理的职责受到主管的支持,主管的责任分割比例与经理相反,即80%是人事上的,20%是技术上的。
26分11秒:成为具有强大的技能、存在高度共鸣、具备指导并保证团队成员成长的能力的领导者。
26分30秒:要成为工程师团队中有影响力的教练,管理者需要体现出强大的技术领导力。在技术上不可靠的人通常不会被技术团队很好地接纳。
在2016年11月7日至9日间召开的QCon旧金山大会 上,Phil Haack将在称为“软件工程的软技能”的新专题上做报告。该专题关注如何去成为一名神奇的软件开发人员,聚焦于在开发人员角色上所需的有效人际交往能力。Haack的报告题目是“用于高效团队和产品的社交编程”。
所提到的产品和工具
ASP.NET MVC
Atom
Chromium
Node
Nuclide
Slack
Nuclide
Visual Studio Code
所提到的企业
Github
Microsoft
资源
Peopleware:Tom DeMarco和Tim Lister所实现的高产能项目和团队
管理者工具(Manager Tools)播客
原文链接: http://www.infoq.com/cn/articles/engineering-culture-phil-haak
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注