Implementers, Solvers, and Finders 实现者、求解器和查找器
I was talking to a former student when he brought up an article written by a well-seasoned programmer regretting his choice of career. This fellow had rejected the management path in order to stay in the coding trenches and as a result, ended up in some absolutely crummy situations. He writes about management antipattern after antipattern that left him sitting with the bill.
我正在和一位以前的学生聊天,他提到了一位经验丰富的程序员写的一篇文章,他对自己的职业选择感到遗憾 。这家伙为了留在编码战壕里而拒绝了管理道路,结果,最终陷入了一些绝对糟糕的境地。他写了一个又一个的管理反模式,让他坐在账单上。
Hearing about a dismal career like that is depressing. So much so, that my student who previously was one of my most enthusiastic programmers had turned morose. Who’d blame him? All he had to look forward to was a life filled with misery caused by other folks’ poor decision-making skills. Learning that sub-par managers will dictate your whole life is almost as traumatizing as dealing with said managers. To make matters worse, his team had recently mulled over their future career plans at lunch. None of them anticipated that they’d remain programmers. As soon as they could, they were going to take the leap into management, avoiding what our blogging friend refered to as his “biggest regret”.
听到这样惨淡的职业生涯令人沮丧。以至于我的学生,以前是我最热情的程序员之一,现在已经变得闷闷不乐了。谁会责怪他呢?他所期待的只是一个充满痛苦的生活,这些生活是由其他人糟糕的决策能力造成的。得知低于标准的经理将决定你的整个生活,这几乎与与上述经理打交道一样令人痛苦。更糟糕的是,他的团队最近在午餐时考虑了他们未来的职业规划。他们都没有预料到自己会继续做程序员。他们打算尽快进入管理层,避免我们的博客朋友所说的他“最大的遗憾”。
I’ve talked to a lot of people who live, eat and breathe programming. It’s hard to stand next to them without hearing about the latest library or tool they’re checking out and how what they’re building is awesome and going to revolutionize everything (or is useless but aren’t neural networks cool!?!). Almost all of them echoed the earlier sentiment - programming as a profession wasn’t for them.
我和很多生活、吃饭和呼吸编程的人聊过。站在他们旁边,很难不听到他们正在查看的最新库或工具,以及他们正在构建的东西如何很棒并将彻底改变一切(或者无用,但神经网络不是很酷吗?!_).他们几乎所有人都赞同早期的观点——编程作为一种职业并不适合他们。
How could this be? A group of people, granted the ability to do what they love for great pay & perks, all wanting to move on? It all comes down to:
这是怎么回事呢?一群人,被赋予了做他们喜欢的事情的能力,以获得高薪和津贴,都想继续前进吗?这一切都归结为:
People want to make decisions rather than execute them 人们想要做决定而不是执行它们
Turns out science agrees on this: People want power because they want autonomy. Most of the time, folks desire to move up the career ladder not for pay, better title, or keys to the executive washroom (are those still a thing?) but because they wish to be able to exercise greater autonomy over their lives. Psychologist Daniel Pink agrees - he’s found that the three qualities that contribute most to workplace satisfaction and overall productivity are autonomy, mastery & purpose.
事实证明,科学界同意这一点: 人们想要权力,因为他们想要自主权。大多数时候,人们希望在职业阶梯上攀升,不是为了薪水、更好的头衔或行政洗手间的钥匙(这些还存在吗?),而是因为他们希望能够在自己的生活中行使更大的自主权。 心理学家丹尼尔·平克对此表示赞同 - 他发现对工作场所满意度和整体生产力贡献最大的三种品质是自主性、掌握力和目标性。
I too, was bitten by the “Management = autonomy” bug. My original career goal was to rise up in the ranks of programmers, eventually crowning myself king of my own startup, the ultimate in autonomy (or so I thought). I carefully chose the work I did at each job to align with this goal - and succeeded, eventually earning the rank of a lead position (before the company ultimately collapsed, but that’s another story).
我也被“管理 = 自主”的错误所困扰。我最初的职业目标是在程序员的行列中崛起,最终使自己成为自己创业公司的王者,拥有终极的自主权(至少我是这么认为的)。我仔细选择了我在每项工作中所做的工作,以符合这个目标 - 并成功了,最终获得了领导职位的级别(在公司最终倒闭之前,但那是另一回事了)。
During my last job hunt, I had two fantastic options:
在我上次找工作期间,我有两个很棒的选择:
- Leader, with a few constraints
领导者,有一些限制 - Not Leader, with full autonomy
不是领导者,拥有完全的自主权
This was it! I could capitalize on my previous work and finally …not program. Something was wrong here - what did I ultimately want? When it came down to it, I wanted to write code. I love building things and I didn’t want to give that up. Sure, startups mean doing a little bit of everything but the success case everyone’s working towards means outsourcing all of your own work until you’ve forgotten all of the shortcuts to your favorite IDE. I chose the latter job, the one that would grant me the most autonomy.
就是这样!我可以利用我以前的工作, 最后 ......不是程序。这里出了点问题 - 我最终想要什么?归根结底,我想编写代码。我喜欢建造东西,我不想放弃它。当然,初创公司意味着什么都做一点点,但每个人都在努力追求的成功案例意味着外包你自己的所有工作,直到你忘记了你最喜欢的 IDE 的所有捷径。我选择了后一份工作,一份能给我最大自主权的工作。
Implementers, Solvers, and Finders 实现者、求解器和查找器
Could it be that we’ve utterly mischaracterized how career development as a programmer should work? The guiding trifecta of Junior, Regular, & Senior is incredibly easy to game (A misguided company offered me a senior level job just under a year into my career). A word ceases to be useful when we can’t agree on its purpose - title relativism means a given title can convey entirely separate messages to different companies. Which is more impressive, a “Senior UI Engineer” or a “Javascript Architect”?
难道我们完全误解了程序员的职业发展应该如何运作吗?初级、常规和高级的指导三重奏非常容易玩 (一家误导的公司为我提供了一份高级工作,我职业生涯刚开始不到一年就给我提供了一份高级工作)。当我们无法就其目的达成一致时,一个词就不再有用——标题相对主义意味着给定的标题可以向不同的公司传达完全不同的信息。“高级 UI 工程师”还是“Javascript 架构师”哪个更令人印象深刻?
If we’re to escape this situation where fantastic fanatic programmers can’t see themselves programming in three years, we need to couple our words to real world meaning. Instead of Jr/Sr nonsense (which already reeks of the years-of-experience antipattern), why don’t we talk about what the job will actually entail? Let’s define your job title by how much autonomy your day-to-day work gives you.
如果我们要摆脱这种出色的狂热程序员在三年内无法想象自己编程的情况,我们需要将我们的文字与现实世界的含义结合起来。与其 Jr/Sr 胡说八道(这已经散发着多年经验反模式的味道),我们为什么不谈谈这份工作实际上需要什么呢?让我们通过日常工作赋予您的自主权来定义您的职位。
Do you find that most of your time is simply closing tickets, and your team rarely considers your input? Your title is Solution Implementer.
您是否发现您的大部分时间都只是关闭工单,而您的团队很少考虑您的意见?您的职务是 Solution Implementer。
Are you given general problems and left to your own devices on how they’re fixed? When brainstorming, is your input considered by your teammates? You’re working as a Problem Solver.
您是否收到了一般问题,并让自己的设备来修复它们?在集思广益时,您的团队成员是否考虑了您的意见?您正在担任问题解决者。
Are you given near-total autonomy in choosing what you work on? Can you tell your boss “That’s an interesting idea but my time would be better spent elsewhere” (and not get fired on the spot)? You’re a Problem Finder.
你在选择工作内容方面是否被赋予了几乎完全的自主权?你能告诉你的老板“这是个有趣的主意,但我的时间最好花在其他地方”( 而不是当场被解雇)吗?您是问题发现者 。
Our regretful fellow author of the post above spent most of his time as an Implementer. People (often non-technical) assigned concrete tasks without room for feedback or innovation. Every one of his stories shares the same problem: He wasn’t given autonomy.
我们很遗憾上面帖子的作者将大部分时间都花在了 Implementer 上。人们(通常是非技术人员)分配了具体的任务,没有反馈或创新的空间。他的每一个故事都有一个相同的问题: 他没有被赋予自主权 。
I don’t mean to say that everyone who’s at the Solution Implementer level should immediately quit their jobs, or that life as an Implementer de facto means you’re a bad programmer. Beginning programmers who are still learning the base concepts will thrive as Implementers if handed solutions matching the challenge level they’re willing to accept. The mere task of implementing something provides plenty of opportunities to learn (in fact, I’d say it’s the only way to truly understand something). Beginners of all skill levels will get lost if thrown at a problem with too big of a scope for them to handle.
我并不是说每个处于解决方案实施者级别的人都应该立即辞职,或者说实施者的生活实际上意味着你是一个糟糕的程序员。仍在学习基本概念的初级程序员如果得到的解决方案与他们愿意接受的挑战级别相匹配,他们将作为实施者茁壮成长。仅仅实现某样东西的任务就提供了大量的学习机会(事实上,我想说这是真正理解某样东西的唯一方法)。如果遇到范围太大而无法处理的问题,所有技能水平的初学者都会迷失方向。
One can’t remain a beginner forever. There needs to be a way for these implementers to level up. We, as a community, don’t have an agreed-upon way to take a budding programmer and hand them continually-increasing challenge. The standard practice in leveling up seems to be to quit and start hunting for a new job at the next level. This is why my standing advice to beginning programmers is to find a new job after six months (hopefully in the same company).
一个人不能永远保持初学者的状态。这些实施者需要有一种方法来提升水平。作为一个社区,我们没有一个商定的方式来接受崭露头角的程序员并给他们不断增加的挑战。升级的标准做法似乎是辞职并开始在下一个级别寻找新工作。这就是为什么我对初级程序员的一贯建议是六个月后找一份新工作(希望在同一家公司)。
It can be difficult to tell if a company is actually looking for a Problem Solver or the work is just Implementation in disguise. One org smell to look out for is the ratio of programmers to project/product managers. I’ve fallen for this, thinking I’d get to take charge of a frontend when what they really wanted me to do was slog through 17,000 issues in JIRA. Determining the true culture of a company is troublesome, you can start by interviewing your interviewer.
很难判断一家公司是否真的在寻找问题解决者,或者这项工作只是伪装的实施。需要注意的一个组织味道是程序员与项目 / 产品经理的比例。我上当了,以为我可以负责前端,而他们真正希望我做的是匆匆忙忙地完成 JIRA 的 17,000 个问题。确定一家公司的真实文化很麻烦,你可以从面试你的面试官开始。
On the other hand, if our programmer does land that Solver job, they will start spreading their wings beyond the basics. At this point their opinion starts to mean something, and the challenges they face take on a new shape as their sphere of responsibility grows. There’s an entirely new set of skills to learn - suddenly effective communication means a whole lot more than “following the JIRA process correctly”. Solvers need to learn how to evangelize their favorite solutions and defend them against other Solvers who have different preferences.
另一方面,如果我们的程序员真的找到了 Solver 的工作,他们将开始在基础知识之外展开他们的翅膀。此时,他们的观点开始有意义,随着他们责任范围的扩大,他们面临的挑战也呈现出新的形式。有一套全新的技能需要学习 - 突然之间,有效的沟通意味着比 “正确遵循 JIRA 流程” 要重要得多。求解器需要学习如何宣传他们最喜欢的解决方案,并保护它们免受具有不同偏好的其他求解器的攻击。
Solver is a enormous growth area and the typical Solver may spend years making mistakes, learning, and causing new catastrophes until their knowledge grows to the point where they’re ready to make the final leap to Finder.
Solver 是一个巨大的增长领域,典型的 Solver 可能会花费数年时间犯错误、学习和造成新的灾难,直到他们的知识增长到准备好最后跳转到 Finder 的程度。
Mid-size Startups (> 50 people) are a great place for Solvers - there’s plenty of problems begging for solutions and often Solvers can branch out into areas that would be verboten to them at a larger, established company. As the startup grows, so does their responsibility - this is a common way for a Solver to grow into a Finder. Another case is for a company to create fertile ground for Finders and recruit them directly.
中型创业公司 (x3E 50 人 ) 是解决者的好地方——有很多问题亟待解决,而且解决者往往可以扩展到在更大的成熟公司里对他们来说很麻烦的领域。随着初创公司的成长,他们的责任也随之增加 - 这是 Solver 成长为 Finder 的常见方式。另一种情况是公司为 Finders 创造肥沃的土壤并直接招募他们。
The final stage of programmer evolution is the Finder. These folks are considered experts in their chosen domain (and are prudent about others). Writing Finder job descriptions is an exercise in futility. As my boss put it: “I can’t tell you the specifics of what you’ll be doing here because your first task will be to figure that out.” A Finder will be able to anticipate problems before they happen, usually because they’ve been in that situation before. Finders are the canonical “Done and get things smart” that Steve Yegge likes to talk about. Empathy is a critical key in a Finder’s toolbox. Finders need to work with a variety of other folks without swinging the “I’m smart & because I said so” hammer (otherwise they’re Brilliant Jerks).
程序员进化的最后阶段是 Finder。这些人被认为是他们所选领域的专家(并且对其他人持谨慎态度)。撰写 Finder 职位描述是一项徒劳的练习。正如我的老板所说:“我不能告诉你你将在这里做什么的具体细节,因为你的首要任务是弄清楚这一点。Finder 将能够在问题发生之前预测问题,通常是因为他们以前曾遇到过这种情况。Finders 是 Steve Yegge 喜欢谈论的经典 “Done and get things smart”。同理心是 Finder 工具箱中的关键钥匙。寻找者需要与各种各样的人合作,而不是挥动“我很聪明&因为我这么说”的锤子(否则他们就是聪明的混蛋 )。
Finders need autonomy, by definition. Any job that puts significant restraints on what a programmer can & can’t do is a poor fit for a Finder. Poorly-managed startups love to hire smart people and then tell them what to do in precise detail. No one wins.
根据定义,发现者需要自主性。任何对程序员能做什么和不能做什么有重大限制的工作都不适合找 Finder。管理不善的初创公司喜欢雇用聪明的人,然后精确地告诉他们该怎么做。没有人是赢家。
My hope is this post will create shared vocabulary. This triumvirate of concepts can help great folks find the job that’s best for them. A company may be honestly seeking an Implementor, and effectively communicating that to a Solver or Finder will save both parties a lot of time.
我希望这篇文章能创造出共享的词汇。这三个概念可以帮助优秀的人找到最适合他们的工作。一家公司可能诚实地寻找 Implementor,并将其有效地传达给 Solver 或 Finder 将为双方节省大量时间。
More importantly, I want programmers everywhere to realize that it’s possible to have autonomy while still writing code for a living. Some may find fulfillment in leadership (I know I do, the siren song has abated but is not gone) but plenty of hackers out there just want to make great things. There’s hope for us yet!
更重要的是,我希望世界各地的程序员都能意识到,在以编写代码为生的同时,可以拥有自主权。有些人可能会在领导力中找到成就感(我知道我确实如此,警笛之歌已经减弱但并没有消失),但很多黑客只是想做出伟大的事情。我们还有希望!
Postscript: If this article rang true to you and you feel like you’re ready to level up, I’d love to hear from you. What brought you to your current job? What changed? How are you looking for the job that fits you?
后记:如果这篇文章对你来说是真实的,并且你觉得你已经准备好升级了,我很乐意听取你的意见。是什么让你找到现在的工作?发生了什么变化?你是如何找到适合你的工作的?
Let me know at: isf at rkoutnik.com.
请告诉我:isf at rkoutnik.com。
Randall Koutnik was once crowned ruler of a moderately-sized duchy, later discovering it was a clerical error.
兰德尔·库特尼克 (Randall Koutnik) 曾经被加冕为一个中等规模的公国的统治者,后来发现这是一个笔误。
发表评论