从工程转向管理,访谈Github公司的Phil Haack

在本次播客中,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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样往阿里云windows服务器传文件

怎样往阿里云windows服务器传文件 2017年12月05日 21:28:56 阿杜_ardo 阅读数 9169 1、在本地电脑上,快捷键“WINR"在“运行”中输入“MSTSC”,点击确定。 2、在“远程桌面连接”框框点击“选项”展开。(计算机中输入阿里云服务器的IP地…

Hibernate基本概念

--用户解锁alter user scott account unlock;一个项目对应一个表空间oracle:--创建表空间--创建用户create user 用户名idendified by 密码default tablespace 表空间名-- 授权grant 权限(角色) to 用户--建表--增删改查--存储过程对象 ->jdbc->数据库(表…

手机app 服务器 网页同步,手机app接入云服务器

手机app接入云服务器 内容精选换一换通过内网连接云手机实例时,需要在租户VPC中创建一台弹性云服务器,作为连接云手机的跳板机器。若创建云手机服务器时未使用自定义网络,还需在云手机租户的VPC和服务器所在VPC之间建立对等连接,如…

Java中的OutOfMemoryError

转载自 Java中的OutOfMemoryError引子&#xff1a;今天在<Sharding-JDBC官方群>里有个哥们称“不连sjdbc不会把内存吃光&#xff0c;连sjdbc跑一会就把内存吃光”&#xff0c;倍感诧异&#xff0c;我们已经用sj很久了&#xff0c;一直未发现sj吃内存的情况&#xff0c;遂…

沉沦17年,这位昔日科技霸主、最值钱企业,终于回来了……

1999年12月30日&#xff0c;这是微软最高光的时刻。当天其股价创出历史最高位59.97美元/股&#xff0c;市值达到了6130亿美元&#xff0c;是有史以来最值钱的公司——直至13年后&#xff0c;苹果公司的市值才超越这一纪录。 ▲微软股价 处在新千年之交&#xff0c;意气风发的微…

mysql5.5安装配置 在阿里云服务器上 本地navicat连接

MySQL 5.5安装配置教程. 2018年03月20日 19:18:49 沸点数据 阅读数 18046 1、官网下载MySQL 5.5。 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.5.html#downloads 2、安装MySQL5.5 注意&#xff1a;安装之前&#xff0c;请关闭杀毒软件。 &#xff08;1…

Hibernate基本概念 (2)

框架&#xff1a;1.一个应用程序的半成品2.提供了一系列可以重用的API3.能开发效率更高&#xff0c;性能更好的项目Hibernate:持久化&#xff08;jdbc&#xff09; ORM( 对象 关系 映射)hibernate环境搭建1.导包&#xff1a;核心包&#xff0c;必须包&#xff0c;数据驱动包2…

通过网页查看服务器算法,java分析html算法(java网页蜘蛛算法示例)

遇到复杂而繁琐的html页面大家都望而却步。因为很难获取到相应的数据。最古老的办法的是尝试用正则表达式&#xff0c;估计那么繁琐的东西得不偿失&#xff0c;浪费我们宝贵的时间。第二个办法用开源组织htmlparser的包&#xff0c;这个是一个比较老的项目&#xff0c;但是效果…

JVM 调优系列之监控工具

转载自 JVM 调优系列之监控工具 摘要: 项目部署线上之后&#xff0c;我们该如何基于监控工具来快速定位问题.... 通过上一篇的jvm垃圾回收知识&#xff0c;我们了解了jvm对内存分配以及垃圾回收是怎么来处理的。理论是指导实践的工具&#xff0c;有了理论指导&#xff0c;定位…

写给开发者:记录日志的10个建议

尽管在写这篇博文的时候&#xff0c;我是在负责运维工作&#xff0c;不过本文主要是写给开发者的。 对我来说&#xff0c;明白如何记录日志和记录什么&#xff0c;是软件工程师必须明了的最艰巨的任务之一。之所以这么说&#xff0c;是因为这项任务与预测&#xff08;divinatio…

解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误

解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误 2018年07月23日 16:55:42 犹抱琵琶半遮面 阅读数 29677 &#xff01;&#xff01;&#xff01;此类问题出现的原因是——不细心 一般的原因 Mapper interface和xml文件的定义对应…

Java 9 中的 GC 调优基础

转载自 Java 9 中的 GC 调优基础在经过了几次跳票之后&#xff0c;Java 9终于在原计划日期的整整一年之后发布了正式版。Java 9引入了很多新的特性&#xff0c;除了闪瞎眼的Module System和REPL&#xff0c;最重要的变化我认为是默认GC&#xff08;Garbage Collector&#xf…

mysql删除索引 增加索引

使用ALTER TABLE语句创建索引alter table table_name add index index_name (column_list) ; alter table table_name add unique (column_list) ; alter table table_name add primary key (column_list) ;删除索引drop index index_name on table_name ; alter table table_n…

Hibernate基本概念 (3)

一、hibernate配置&#xff1a;1.导jar包2.配置主文件a。数据库连接 url 驱动 用户名&#xff0c;密码&#xff0c;方言b。相关 显示sql&#xff0c;sql格式化c。映射文件3.映射文件表到实体 字段到属性查询&#xff1a;select dname from Dept d;参数&#xff1a;1.按位置&…

全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)

在开发涉及到数据库的程序时&#xff0c;常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况&#xff0c;这时就需要进行数据库迁移。实现数据库迁移有很多种办法&#xff0c;从手动管理各个版本的ddl脚本&#xff0c;到实现自己的migrator&#xff0c;或是使用…

ThreadLocal 内存泄露的实例分析

转载自 ThreadLocal 内存泄露的实例分析前言 昨天分享了一篇深入分析 ThreadLocal 内存泄漏问题是从理论上分析ThreadLocal的内存泄漏问题&#xff0c;这一篇文章我们来分析一下实际的内存泄漏案例。分析问题的过程比结果更重要&#xff0c;理论结合实际才能彻底分析出内存泄…

ZKWeb网站框架的动态编译的实现原理

ZKWeb网站框架是一个自主开发的网页框架&#xff0c;实现了动态插件和自动编译功能。ZKWeb把一个文件夹当成是一个插件&#xff0c;无需使用csproj或xproj等形式的项目文件管理&#xff0c;并且支持修改插件代码后自动重新编译加载。 下面将说明ZKWeb如何实现这个功能&#xff…

Hibernate基本概念 (4)

一、缓存&#xff1a;提高性能1.一级缓存&#xff1a;session级别 一个session共享2.二级缓存&#xff1a;进程或群集级别 不同session可以共享步骤&#xff1a;1.导jar包 2.添加xml放到src3.配置hibernate.cfg.xmla.开启二级缓存b。缓存管理类4.配置持久化类使用二级缓存 3…

Java中的内存泄露的几种可能

转载自 Java中的内存泄露的几种可能Java内存泄漏引起的原因&#xff1a;内存泄漏是指无用对象&#xff08;不再使用的对象&#xff09;持续占有内存或无用对象的内存得不到及时释放&#xff0c;从而造成内存空间的浪费称为内存泄漏。长生命周期的对象持有短生命周期对象的引用…

Visual Studio“15”启动速度提升

在Visual Studio“15”开发工作的技术预览阶段&#xff0c;微软称自己的主要目标之一是改善性能。他们已经对这些改进进行过一定程度的介绍&#xff0c;最近又通过更全面的信息进一步介绍了这些变化。本文将介绍这些让VS“15”启动速度更快的改进。 更快速地启动VS“15” 微软项…