1

请停止招聘程序员或软件工程师 - Carlo

 1 year ago
source link: https://www.jdon.com/62702
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

请停止招聘程序员或软件工程师 - Carlo


请停止招聘软件工程师,取而代之招聘“产品工程师PE”:有业务产品意识的工程师。

  • 程序员:只懂算法和编程语言的码农
  • 软件工程师:掌握从需求到测试、发布等敏捷软件工程的程序员;
  • 产品工程师:有DDD战略产品设计的软件工程师

以下是原文:

我遇到过了不起的工程师,他们中的一些人在技术上很了不起,比任何一个产品工程师PE都要有能力,但他们中没有一个人能够像产品工程师PE那样接近于提供价值。

我认为PE才是10倍的工程师。在我从业的15年中,在多个行业工作,我遇到的可以说是产品工程师PE的人不到30个。

产品工程师
软件工程师有一个子集:这些是(软件)产品工程师,最有可能的是你真正应该寻找的人。

产品工程师(从现在开始是PE)在面试过程中很容易被识别出来,我们稍后将讨论一些共同的特征。

作为软件工程师,我们很少在技术领域工作;我们大多数人最终会进入其他领域,改进技术以支持业务,其中包括金融科技、汽车、保险、航空航天、医疗、旅游、电子商务等。当一个软件工程师进入一个新的领域时,他会带来一套能力工具:编程语言、算法、框架、工具、模式等。

很可能在面试时,你评估了某人是否精通Scala(如果那是你公司的编程语言),或者他们是否知道Kafka、Redis和Cassandra(如果你正在使用它们);事实证明,很多时候你最终雇用的人都拥有技术团队所需的技能。恭喜你,你很可能为你的团队雇佣了一个伟大的软件工程师,但也许值得检查一下是否有PE的特征。

那么,什么是PE?这与资历或年资无关,也与技术无关:这都是关于产品开发和所有权。一个真正的PE明白,他的主要精力必须放在产品的改进上,所以会专注于该领域,试图了解其动态、流程和核心概念。

交付价值!
PE对交付价值非常着迷;他们已经(或将获得)对技术产品和相关流程的完全所有权。

除非这背后有业务价值,否则PE不会真正关心从一种技术迁移到另一种技术。

私营企业不会在孤岛上思考,他们希望有一个完整的画面来了解哪里需要改进。他们会去和公司的其他职能部门交谈:从市场部到客户服务部,以便收集完整的产品知识(是的,即使他们在有边界的DDD工作,他们也会这样做)。

PE会照顾生产环境,就像没有比这更重要的事情一样:在发生事故的情况下停止任何其他活动。

提出大量的问题
想象一下,在积压的工作中,有这样一个条目,被标记为技术债务。

"通过对K进行索引,将函数X的执行时间减少三分之一"

这很重要吗?这是 "真正的 "技术债务吗?任何工程师都很可能会告诉你,修复它很重要,因为作为工程师,我们对改进、重构等很着迷。

一个产品工程师很可能会试图了解它是否能带来价值
"这个时间的减少是否对任何利益相关者产生了积极的影响?"
"这是否会让我们的客户生活得更好,减少他们的等待时间?""这是否会大幅降低平台成本?"

如果优化是纯技术性的,那么它的优先级是最低的

不要误会我的意思。PE非常关心代码的可维护性、设计原则和重构等概念--但他们总是会平衡每一项改进,以实现上述的 "价值传递"。

"这个变化是一个促成因素吗?"
"如果我们转向这种模式,我们是否能更快地适应其他业务需求?"

两行代码
我一直在几个行业工作,写了几千行代码,并开发了几个我引以为豪的产品和功能,反正下面这两行代码是我最大的共鸣之一。

if (text.trim().length() <= 2)
text = ""

最初级的开发人员,甚至是第一次接触编程的学生,都能写出这样的代码。有一点背景。

我当时在一家在线旅行社(OTA)工作,作为一个团队,我们负责航班的结账阶段。有一天,我组织了一次与客户服务团队的电话会议,试图了解他们的痛点,客户服务主管准备了一张幻灯片,上面有他们面临的所有问题:其中一个条目是 "手动预订"。

作为一个OTA,你的目标是,只要客户购买东西,向航空公司或任何其他第三方完成的过程不需要任何人工干预。无论如何,一些预订最终会以手动模式结束(例如,没有更多的可用性,价格增加,等等),所以你需要一个运营商来处理这些。其中15%的手动预订,被标记为 "特殊要求:来自终端客户的错误输入" - 在网页上,有一个文本框的标题。

"在这里写下关于您的航班的任何特殊要求"。

当你预订航班时,你可能有一些特殊要求,比如运送动物或贵重物品,所以你希望有人在购票前确认你被允许这样做。
长话短说:一些用户感到困惑,他们在文本框中写下 "NO",或者加上". "或一系列的空白。
把订票放入手动模式的逻辑是。"如果文本框里有内容,就把它分配给一个操作员"。

会议结束后,我立即来到我的笔记本电脑前,添加了这两行代码,引入了几个测试来验证,并在生产中发布。一个月后,我被邀请参加一个行政会议,在会上我被授予了一个奖项,因为我高效地解决了一个巨大的公司问题,还节省了很多钱,提供了更好的客户体验。
是的,这两条线就是在做下面的事情。

  • 减少了人工预订的数量
  • 改善客户体验,在结账完成后立即确认。
  • 减少人工处理时间所带来的涨价或无法使用的风险

这不是我的问题,是别人的问题
在会议结束前,我试图向客户服务主管了解,她是否在过去联系过任何人来解决这样的问题,我对这个答案感到非常惊讶"这不是一个工程问题。这是一个用户体验问题,用户体验团队应该处理这个问题",她回答说,但是当她试图联系用户体验团队时,他们正在重新设计整个结账过程,所以没有空间对当前的设计进行任何改进。

一个公司的问题已经存在了几个月,却没有人去解决它。

那两行代码在网上停留了几个月,当新的设计发布后,这个问题就用一个复选框解决了。

"如果你对你的航班有任何特殊要求,请点击这里"

点击该复选框会使文本框出现。

范围和边界之间的区别
前面提到的例子为区分范围和边界设置了空间。

解决问题的方法是否在纯工程范围之外?是的,这一点毋庸置疑。

从公司的角度来看,这个 "正确 "的解决方案可以接受吗?
我个人认为不是。再等几个月让用户体验部来解决这个问题,从每个角度来说都会付出很大的代价,但对工程部来说,1个人花了30分钟就解决了这个问题。一个人的边界远远大于他们所参与的角色的范围,不管他们是在软件开发、数据或测试,还是平台工程。这是一种心态,你总是关注你的产品和你的客户,而不是关注技术和范围。这个概念对公司的每一个职能部门都有效,而不仅仅是对技术。

10x工程师
在我从业的15年中,在多个行业工作,我遇到的可以说是产品工程师的人不到30个。

我遇到过了不起的工程师,他们中的一些人在技术上很了不起,比任何一个PE都要有能力,但他们中没有一个人能够像PE那样接近于提供价值。

我认为PE是10倍的工程师。

我们真的应该停止招聘软件工程师吗?
这取决于:一切都要根据情况而定。

如果你的公司正在开发一个产品,你也许应该寻找PE的特征,无论如何,许多开发人员选择这个职业是因为他们喜欢技术,他们对其他领域没有真正的兴趣。他们想建立管道,建立基础设施,做自动化,并与尖端技术栈一起工作。

在许多现实中,这些软件工程师要么在平台领域工作,要么在 "开发体验 "领域工作,做着纯粹的技术工作,试图改善开发者的生活。

我们是如何改变我们的面试过程
寻找PE是非常困难的,所以你不应该减少你的初始漏斗。

在iptiQ,我现在的雇主,我们改变了我们的面试流程,以便有最好的机会找到顶尖的选手。

  • 我们不要求任何特定的技术知识(没有Spring Boot、DynamoDB、Redis等,尽管我们在使用这些堆栈)。
  • 我们接受来自任何编程语言的开发人员,即使我们的代码库是用Kotlin编写的(我们做了一个编码测试,要求对方用他们最喜欢的编程语言解决这个问题)。
  • 我们评估一般的问题解决能力
  • 我们寻找一个关心产品的人的特征,询问技术领域以外的问题。

我们这样做是因为我们认为每个人都可以学习一种新的编程语言或框架,但很难教人如何成为一名PE。


 


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK