实施者、解决者和发现者

一个优秀程序员,最开始是实施者(implementer),然后进化到解决者(solver),最后变成发现者(finder)。

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.
让我们根据你的日常工作赋予你多少自主权来定义你的职位。

Do you find that most of your time is simply closing tickets, and your team rarely considers your input? Your title is 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.
他的每一个故事都反映了同样的问题:他没有被赋予自主权。

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.
我曾经被这一点迷惑,以为我会负责前端,而他们真正想让我做的是在JIRA中处理17,000个问题。

Determining the true culture of a company is troublesome, you can start by interviewing your interviewer.
确定一家公司的真实文化是件麻烦事,你可以从面试你的面试官开始。

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”.
他们需要学习一套全新的技能——突然间,有效的沟通比“正确遵循JIRA流程”重要得多。

Solvers need to learn how to evangelize their favorite solutions and defend them against other Solvers who have different preferences.
解决者需要学会如何推广他们最喜欢的解决方案,并与其他有不同偏好的解决者进行辩护。

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.
解决者是一个巨大的成长领域,典型的解决者可能会花数年时间犯错、学习并引发新的灾难,直到他们的知识增长到足以迈出最后一步,成为发现者。

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.
中型初创公司(超过50人)是解决者的绝佳场所——这里有很多亟待解决的问题,而且解决者通常可以涉足在大型成熟公司中被禁止的领域。

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.
另一种情况是公司为发现者创造肥沃的土壤,并直接招募他们。

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).
发现者需要与各种各样的人合作,而不会挥舞“我很聪明,因为我说了算”的大棒(否则他们就是“聪明的混蛋”)。

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.
没有人会赢。

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.
一家公司可能诚实地在寻找执行者,有效地将这一点传达给解决者或发现者将为双方节省大量时间。

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!
我们还有希望!

转自:https://rkoutnik.com/2016/04/21/implementers-solvers-and-finders.html