我如何成为高级软件工程师

Ever since I started learning to code, I have dreamed of becoming a senior engineer. Some may think this a bit odd. Shouldn’t my main goal be to get a job first and worry about a promotion later?

自从我开始学习编码以来,我一直梦想成为一名高级工程师。 有些人可能认为这有点奇怪。 我的主要目标不是应该先找工作然后再担心升职吗?

Generally, yes. But, as someone who has changed careers four times in as many years, I didn’t want to simply change my career. I wanted to thrive in it. And there was no better example of thriving in the tech field than being a senior engineer.

通常,是的。 但是,作为一个已经多年更换职业四次的人,我不想简单地改变自己的职业。 我想在其中蓬勃发展 。 作为高级工程师,没有比在技术领域蓬勃发展更好的例子了。

Senior engineers are the masters of their craft. They are rockstar developers who churn their code at breakneck speeds. They are the pinnacle. Right?

高级工程师是他们的技术大师。 他们是摇滚明星开发人员,他们以惊人的速度搅动他们的代码。 他们是顶峰。 对?

Well, after years of working and learning, I happy to proclaim that I’ve made it. I am now among those with the coveted senior title. But you know what the craziest thing is? I’m none of the things I described above.

好了,经过多年的工作和学习,我很高兴地宣布我已经做到了。 我现在是拥有令人垂涎的高级头衔的人之一。 但是你知道最疯狂的事情是什么吗? 我不是我上面描述的东西。

Rockstar code-smith producing code at 10X speed? Not quite. I’m your average 1x engineer who has Stack Overflow bookmarked. How does someone like me end up a senior?

Rockstar Code-Smith以10倍的速度生成代码? 不完全的。 我是将Stack Overflow加入书签的平均1x工程师。 像我这样的人如何成为大四学生?

That’s what this article is going to focus on.

这就是本文要重点讨论的内容。

Over the years, I’ve come to realize how propped-up my image of a senior was. Many articles define the characteristics of a senior developer. Fewer discuss how to become one. I want to address that gap.

多年来,我逐渐意识到自己对大四学生形象的支持。 许多文章定义了高级开发人员的特征。 更少讨论如何成为一体。 我想弥补这一差距。

This post will show the steps I took to arrive at this point in my career and dispel some myths that I’ve seen newer engineers, including myself, fall prey to. Keep in mind, this was just my path and is in no way prescriptive, although I do hope it provides some insight.

这篇文章将展示我为达到这一职业而采取的步骤,并消除一些我已经看到包括我在内的新工程师成为猎物的神话。 请记住,这只是我的道路,绝不是规定性的,尽管我确实希望它能提供一些见识。

So, how did I become a senior software engineer?

那么,我如何成为高级软件工程师呢?

我问 (I Asked)

我如何成为高级软件工程师_第1张图片
Photo by Scott Graham on Unsplash Scott Graham在 Unsplash上 拍摄的照片

Seriously, I just asked.

说真的,我只是问。

After my one-year anniversary at the company, I approached my manager. I recapped my accomplishments and expressed my interest in getting to the next level in my career.

在公司成立一周年后,我找了我的经理。 我回顾了自己的成就,并表达了对进入职业生涯新境界的兴趣。

I followed up with a simple question: “How can we make that happen?”

我提出了一个简单的问题:“我们如何做到这一点?”

After that meeting, my manager and I came up with a development plan and within that year, I earned my promotion.

在那次会议之后,我的经理和我提出了一项发展计划,并在那年内获得了晋升。

A trap I see many new developers fall into is believing that our industry is a meritocracy. They believe that they will get what they deserve if they work hard enough. Once they’ve proven their worth, their employer will reward them with a raise or promotion.

我看到许多新开发人员陷入陷阱,他们认为我们的行业是精英管理。 他们相信,只要努力工作,他们就会得到应得的。 一旦证明了自己的价值,他们的雇主将通过加薪或晋升奖励他们。

While the tech industry may be more of a meritocracy than other industries, there are countless undervalued developers. I know several myself.

尽管技术行业可能比其他行业更具有精英才能,但仍有无数被低估的开发商。 我认识几个我。

There are many reasons why engineers may be underpaid and under-leveled. I don’t pretend to understand anyone else’s situation. However, the reason I became a senior is that I pushed for it.

工程师薪水不足和水平不足的原因很多。 我不假装了解别人的情况。 但是,我成为大四的原因是我努力争取。

我如何成为高级软件工程师_第2张图片
Photo by Tim Mossholder on Unsplash Tim Mossholder在 Unsplash上 拍摄的照片

但是你怎么知道什么时候问? (But how do you know when to ask?)

This is a great question and is also highly subjective. The problem I have with defining “senior engineer” is that each company has its own definition. Taking a blog post to your manager and saying, “according to this, I should be a senior engineer” isn’t going to work.

这是一个很大的问题,也是很主观的。 我在定义“高级工程师”时遇到的问题是每个公司都有自己的定义。 将博客帖子带给您的经理说:“因此,我应该是一名高级工程师”是行不通的。

The criteria for becoming a senior engineer at a ten-person startup will be different from a FAANG company.

在十人的创业公司中成为高级工程师的标准与FAANG公司不同。

Luckily, many companies provide detailed criteria for the senior role. This was the case for me. Whenever I made an achievement of note — shipping a new feature, refactoring old code, or handling an incident — I kept a record of it. After a while, my accomplishments began to look like those of a senior engineer. That’s when I knew to ask.

幸运的是,许多公司为高级职位提供了详细的标准。 对我来说就是这种情况。 每当我取得成就时(发布新功能,重构旧代码或处理事件),我都会记录下来。 一段时间后,我的成就开始看起来像一位高级工程师。 那是我知道要问的时候。

If your company doesn’t have a clear benchmark, I would suggest talking to your coworkers. Ask other senior engineers what they’re working on, review their code contributions, and/or ask them, “how did you become a senior engineer?” I’m sure you’ll find at least one person willing to talk your ear off about their accomplishments. I’m doing it right now.

如果您的公司没有明确的基准,我建议您与同事交谈。 询问其他高级工程师他们正在从事什么工作,查看其代码贡献,和/或问他们:“您如何成为高级工程师?” 我相信您会发现至少有一个人愿意谈论他们的成就。 我现在正在做。

Speaking up for myself and pushing for my own goals was crucial. But, it would’ve been for naught if I didn’t have the proof to back up my value. Which brings me to my second point.

为自己说话并为自己的目标奋斗至关重要。 但是,如果我没有证据支持我的价值,那将是徒劳的。 这使我想起第二点。

我利用了我的(非编码)优势 (I Utilized My (Non-Coding) Strengths)

我如何成为高级软件工程师_第3张图片
Photo by Clark Tibbs on Unsplash Clark Tibbs在 Unsplash上的 照片

Another misconception I see about senior engineers is that they are all masterful programmers. I’ll be the first to admit that I’m a pretty average coder. I know a thing or two about a thing or two, but I won’t be winning any awards any time soon.

我对高级工程师看到的另一个误解是,他们都是熟练的程序员。 我将第一个承认我是一个普通的程序员。 我对一两件事了解一两件事,但我不会很快获得任何奖项。

But being a senior isn’t about being a code-smith. As Patrick McKenzine wrote in Don't Call Yourself A Programmer, And Other Career Advice:

但是,成为一名高管并不意味着要成为一名代码伪造者。 正如Patrick McKenzine在《 不要称自己是程序员》和其他职业建议中所写的那样:

“Engineers are hired to create business value, not to program things.”

“ E 雇用工程师来创造业务价值,而不是为事物编程。”

It’s all about providing value to the business. As an engineer, a lot of the value you bring will be a direct result of the code you write, but there are other ways, too. Each of us has different strengths other than coding. Utilizing those other skills can help you stand out.

这都是为业务提供价值。 作为工程师,您带来的很多价值将直接源于您编写的代码,但是还有其他方法。 除了编码,我们每个人都有不同的优势。 利用其他技能可以帮助您脱颖而出。

For me, it came in the form of writing, speaking, and teaching.

对我而言,它以写作,口语和教学的形式出现。

During my first year at the company, I had difficulty understanding how the system worked. Hundreds of moving parts, combined with halfway-refactored services, made for an opaque structure. While our code base wasn’t old by any means, it had its fair share of tech debt with which we were still grappling.

在公司的第一年,我很难理解系统的工作原理。 成百上千个活动部件,加上中途重构服务,构成了不透明的结构。 虽然我们的代码库无论如何都没有过时,但它仍然承担着相当一部分技术债务,我们仍在努力解决。

Many of my coworkers felt this same struggle, though not all. There was a mental fissure in the engineering organization. Several engineers dated back to the company’s founding and knew it’s historical baggage. However, there were even more engineers that didn’t. The knowledge gap was a divide that was widening with every new hire.

我的许多同事都感到了同样的挣扎,尽管不是全部。 工程组织出现精神裂痕。 几位工程师可以追溯到该公司的成立,并且知道这是历史包g。 但是,还有更多的工程师没有这样做。 知识鸿沟是一个鸿沟,随着每位新员工的加入而扩大。

So, unable to piece things together myself, I began talking with my tenured coworkers. I asked them how the technology worked and how it had evolved. What trade-offs were made, and what role did each team play in the system? Some of these conversations lasted for hours.

因此,由于无法自己整理东西,我开始与任职的同事交谈。 我问他们这项技术如何运作以及如何发展。 进行了哪些权衡,每个团队在系统中扮演什么角色? 其中一些对话持续了几个小时。

Through these discussions, my mental model formed and solidified. I had obtained the coveted knowledge that so many of my coworkers sought. The trouble was that it was all trapped in my head, which didn’t benefit anyone except me.

通过这些讨论,我的心理模型得以形成和巩固。 我获得了许多同事寻求的令人垂涎的知识。 麻烦在于,这一切都被困在了我的头上,除了我以外,这对其他任何人都没有好处。

That’s when I realized what value I could provide! I was in a unique position to fill the knowledge gap. By putting pen to paper, I recorded the company’s technical history. From it’s founding to the present day, covering the technical decisions, trade-offs made, and tech debt accumulated.

那时我意识到自己可以提供什么价值! 我处于填补知识空白的独特位置。 我用笔在纸上记录了公司的技术历史。 从成立到今天,内容涵盖技术决策,做出的取舍和累积的技术债务。

While I’ve never won an award for my coding, my writing is a different story.

尽管我从来没有因为自己的编码而获奖,但是我的写作却截然不同。

我如何成为高级软件工程师_第4张图片
Photo by Pereanu Sebastian on Unsplash Pereanu Sebastian在 Unsplash上 拍摄的照片

I interviewed senior and staff engineers past and present, and one of the founders. What started as an internal document blossomed into a public article and a tech talk. It has aided in onboarding newer engineers, as well as giving back to the developer community.

我采访了过去和现在的高级工程师和人员工程师以及其中一位创始人。 从内部文件开始,就发展成了公开文章和技术讲座。 它帮助新员工入职, 并回馈开发人员社区 。

I received accolades from many of those who viewed it, including the VP of Engineering, the Head of Product, and CTO. For a mid-level engineer, that level of attention was foreign but exhilarating. It also played a key factor in my future promotion.

我收到了许多查看它的人的赞誉,包括工程副总裁,产品负责人和CTO。 对于中级工程师来说,这种关注是外国的,但令人振奋。 这也是我未来晋升的关键因素。

This is not to say that everyone has to write a blog post, that’s just what I did. There are always ways to stand out and add value. If you’re a coding savant, then let your code speak. But if you’re a mortal like the rest of us, then play to your other strengths.

这并不是说每个人都必须写博客,这就是我所做的。 总有一些方法可以脱颖而出并增加价值。 如果您是编码专家,那么请让您的代码说话。 但是,如果您像我们其他人一样是凡人,请发挥您的其他优势。

我成为我的团队必不可少的 (I Became Essential to My Team)

我如何成为高级软件工程师_第5张图片
Photo by Marvin Meyer on Unsplash Marvin Meyer在 Unsplash上 拍摄的照片

I had always thought of senior engineers as code machines. They were the ones finishing the most tickets, shipping the most features, and writing the most code. Imagine my disappointment when I realized that, along with being an average coder, I’m also a remarkably average producer.

我一直认为高级工程师是代码机器。 他们是票数最多,功能最多,代码编写最多的人。 当我意识到自己不仅是一名普通编码员,而且还是一名出色的普通制作人时,请想象一下我的失望。

However, I’ve come to learn an important lesson. While speed is nice, consistency is just as important. And what I lack in speed, I make up for in consistency. The tickets to which I commit myself, I finish. I don’t shy away from giving estimates. And if I get blocked, I update my manager and stakeholders and let them know how long I’ll be delayed.

但是,我来学习一个重要的课程。 虽然速度不错,但一致性同样重要。 而我缺乏的速度,我会保持一致性。 我承诺的门票,我完成了。 我不会回避提供估计。 如果我被阻止,我会更新我的经理和利益相关者,并让他们知道我将被拖延多长时间。

In other words, I’m a reliable team member. I’m honest about what I can accomplish, and even more important, with what I can’t. I do my best to support my team and make their lives easier. This extends to emergencies as well.

换句话说,我是一个可靠的团队成员。 我对我能完成的事情,甚至更重要的是我无法做到的事情感到诚实。 我尽我所能支持我的团队并使他们的生活更轻松。 这同样适用于紧急情况。

Last year, my tech lead messaged me out of the blue to let me know that our metering service wasn’t working properly. A bug was merged into production that was preventing usage from being recorded. When I asked when the bug had been introduced, my heart sank when my lead responded with “over a week ago.”

去年,我的技术负责人突然告诉了我,让我知道我们的计量服务运行不正常。 一个错误已合并到生产中,导致无法记录使用情况。 当我问到该漏洞何时被引入时,当我的领导回答“一个多星期前”时,我的心就沉没了。

This was a major problem. The system that we relied on for accurate billing had been down for over a week. No one knew why and how we hadn’t detected it earlier. To make things worse, the engineer who had built the service, and knew all its ins and outs, had left the company.

这是一个主要问题。 我们用于准确计费的系统已关闭了一个多星期。 没有人知道为什么以及我们早些时候没有发现它。 更糟糕的是,建立了服务并知道其所有来龙去脉的工程师已经离开了公司。

We needed to get the service back up and running as soon as possible. Not only that, but we also needed to backfill multiple weeks worth of usage data. With my tech lead in emergency meetings and the only senior engineer on my team unavailable, the task fell to me.

我们需要尽快恢复并运行该服务。 不仅如此,我们还需要回填数周的使用数据。 由于我在紧急会议上担任技术负责人,并且团队中唯一的高级工程师不可用,因此任务落在了我身上。

我如何成为高级软件工程师_第6张图片
Photo by Tonik on Unsplash Tonik在 Unsplash上 拍摄的照片

Even though I didn’t cause the bug nor did I write the impacted service, I took ownership of the situation. I identified the bug, made the patch, and, crafted a solution for fetching the missing data. I also kept in constant communication with stakeholders, letting them know of updates, and assisting in the postmortem. When my team was in trouble, I stepped up.

即使我没有造成错误,也没有编写受影响的服务,但我还是拥有了这种情况的所有权。 我确定了错误,进行了修补,然后制定了一种解决方案来提取丢失的数据。 我还与利益相关者保持不断的沟通,让他们了解最新情况,并协助进行事后调查。 当我的团队遇到麻烦时,我加紧了脚步。

But, I didn’t stop there. The experience had been so stressful that I vowed it wouldn’t happen again. I improved the tests, health checks, and added more substantial alerting. If something were to go wrong again, we would know about it immediately.

但是,我并没有就此止步。 经历太过压力了,我发誓再也不会发生这种情况。 我改进了测试,运行状况检查并添加了更多实质性的警报。 如果再次出现问题,我们会立即知道。

These added measures are what caught the attention of my director. He told me that mistakes happen — even mistakes that result in lost revenue. Ensuring those mistakes never happen again improves the team as a whole. And sure enough, my team has not had an issue with that service since.

这些增加的措施引起了我导演的注意。 他告诉我,错误会发生,甚至会导致收入损失的错误。 确保不再犯错,将改善整个团队。 可以肯定的是,自那时以来,我的团队就对该服务没有任何问题。

Becoming a senior engineer, for me, was realizing that reliability is essential. The more dependable I am, the more my manager and the team will trust me. The added authority and responsibility that comes with a senior title can only be earned through trust. And trust can only be built over time through consistency.

对我来说,成为一名高级工程师已经意识到可靠性至关重要。 我越可靠,经理和团队对我的信任就越高。 高级头衔附带的附加权限和责任只能通过信任来获得。 而信任只能随着时间的流逝而通过一致性来建立。

我如何成为高级软件工程师_第7张图片
Micaela Parente on Micaela Parente在未 Unsplash 飞溅

A parting thought: Titles are meaningless.

分手的想法:标题毫无意义。

However, they do signify growth and progress, which is what many of us seek in our careers. The money doesn’t hurt either.

但是,它们确实象征着成长和进步,这是我们许多人在职业生涯中追求的目标。 钱也不伤人。

Don’t seek the senior role just for the sake of a new title. Trust me, it won’t change anything. You might have some extra responsibilities and a slight uptick in recruiter emails, but you’ll be the same engineer you were before.

不要仅仅为了获得新头衔而寻求高级职位。 相信我,它不会改变任何东西。 您可能还有一些额外的职责,并且招聘者的电子邮件略有增加,但是您将是以前的工程师。

Growth and self-improvement should be your real goal. If you focus on mastery, the titles and accolades will come along the way. But don’t forget to trust your worth and advocate for yourself — don’t wait for someone else to do it for you.

成长和自我完善应该是您的真正目标。 如果您专注于精通,那么头衔和荣誉将一路走来。 但是不要忘了相信自己的价值并为自己辩护-不要等待别人为您做得到。

翻译自: https://medium.com/better-programming/how-i-became-a-senior-software-engineer-and-how-you-can-too-813aba3a536c

你可能感兴趣的:(python,linux,人工智能)