与软件工程师的共事之道

原文地址:https://www.kennethnorton.com/essays/how-to-work-with-software-engineers.html

作者用了一个比较诙谐(或者这叫做反讽)的手法,实际上列出的是不要去做的10条原则。将原文中列出的10点全部反过来的话,才是正确的做法,最后作者还补充了第11条,随时准备好甜甜圈(零食)。

其实一直有各种调侃软件工程师,程序猿这类人的“奇怪”属性的故事。身为也是软件工程师的zack,对于有些奇怪的特质表示能够理解。产生这些奇异特质的可能原因是,软件行业,仍然还是一个年轻的行业,在过去二三十年里,能够掌握软件相关技术并以此为职业的人,大多是靠着自己的琢磨和自学。因为在学校里,很难学到足够的,跟的上变化以及实用的知识。所以,与那类习惯系统去接受课堂上老师提供标准答案的人,这类人从一开始就多少有些不同。

简单地说,大部分软件工程师,充满好奇心,迷恋逻辑性以及实践欲望重。在另外一个角度看来,这也通常成为软件工程师的一些”怪癖“,比如对新技术朝三暮四,脑筋死板(去买西瓜,如果有包子卖,就买两个),以及多少有些偏执狂。

不过本质上来说,这并不是什么障碍,和软件工程师共事,和其他的人并没有什么不同,很多问题其实只是由于PM的无知造成的。不信的话可以看看这篇文章中10个正确的方式,其实并不因为对象是软件工程师而量身定做。

1. Deflect Praise

将团队功劳独占的人在哪里都是行不通的吧?荣誉和赞美因为能够被分享才成为荣誉和赞美。喜欢将功劳独占的人,最终不过是许攸之才,无法和团队共事。

2. Absorb Blame

推卸责任的人是无法获得领导力和信任的。承担责任需要勇气和智慧,而这两者是能够获得信任的基础条件,推卸和逃避责任则会摧毁这一切。

3. Sweat the details

细节中永远存在悖论,对事情简单和困难的判断需要从实现的细节中去评估和发现。空想家总是很多的,他们总会觉得自己胸怀韬略,满腹经纶,却对实践和细节一无所知或视而不见。他们认同想象力是最重要的,却想象不到自身知识的匮乏。

4. Involve them early

软件工程师的工作就是编码,许多PM确实是这么认为的,因此也有了“IT民工”这样的调侃词汇吧。但如果不在前期的产品战略,设计,架构阶段让软件工程师多参与,最后的结果可能是在实施阶段发生大灾难,最终什么也做不出来,或者无限延期。在许多行业的产品部门和生产部门之间都普遍存在这样的矛盾吧。

5. Streamline process

引入流程,是建立权威的好方式。这是许多头衔里有Manager的人惯用的伎俩。但Joel也说过,他在微软工作时,Manager最重要的职责似乎就是把那些碍事拦路的东西收拾到一边,让软件工程师们好好做事。所以,能够简化流程,才是真正体现管理水平和建立权威的方式。

6. Always tell the reasons

没有什么比让人觉得被排挤在外更沮丧的事情。人不是机器,让团队能够顺畅运转和保持凝聚力的重要因素是让每个人都正确理解共同的目标。无条件服从,那是建立在军队和官僚体系上的行为准则,却不是给现代企业组织提供活力的机制。

7. Never commit without them

有一种比较荒谬的软件开发方式,戏称为DDD(Deadline Driven Development,截止日期驱动开发)。软件工程中最常被讨论的问题就是开发周期和延期的问题,比较成功的实践无一不强调了紧密的合作以及对细节评估的重视。这不是一个人就能决定的事情。

8. Respect their time

人可以同时管理很多事情,但每次只能做一件事情,想要做的好,专注是很重要的。有些人确实对此没感觉,因为他从来未做过这样的事情。其实不只对于软件工程师,对于设计师,美术人员,原画师等等这些职业,频繁地去打断他们是对工作效率和个人心情严重的影响。所以,在指派任务之前,要慎重地决定好优先级,同时学会把握沟通的时机。

9. Be specific

魔鬼永远在细节中,需求需要慎重,需求变化频繁是项目失败的常见原因之一。写好文档也是件技术活。

10. Trust them

要理解技术债和技术上丑陋的设计。有时候常见的借口是只要能实现就没问题,或者说这个特性别人也有,为什么我们不能有?抄也需要抄的有水平,别把人家的灾难也往自己家搬。(Zack还记得曾经点评里有过不太靠谱的案例,照抄当时客齐集的城市列表页面,结果上线那天客齐集也对那个页面做了重新改版,弄的当时负责的工程师十分郁闷。)技术的难点有时是确实不可行,有时是超出了团队承受的水平,这个时候最好是能找到另一个解决办法。毕竟达到目的的手段有时候并不只一个,关键是目的是否真的弄清楚了。

以上是zack对10条正确原则的一些个人见解,至于第11条,永远准备好零食,对现在的zack是没有多大影响了,但维持一个轻松良好的个人关系,也是共事中不可缺少的。