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)

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.

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

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)

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.

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

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)

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.

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

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.

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

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


http://www.taodudu.cc/news/show-3142782.html

相关文章:

  • win10 Snipaste 截图软件
  • win11系统截图的几种方法
  • win10的截屏方法
  • 解决Win10系统截屏时出现黑屏
  • 笔记本电脑win10截图软件推荐
  • win 10 自动截图保存及收藏截图文件夹,快速打开查看
  • Win电脑截图黑屏解决办法
  • 解决Python调试OSError: [WinError 193] %1 不是有效的 Win32 应用程序
  • 推荐几个提升 win10 生产力的软件
  • win32汇编 屏幕截图保存BMP 学习笔记第三篇之odbg调试
  • Win11电脑怎么截图?Win11电脑截图的多种方法介绍
  • python多媒体应用:使用python和win32gui一步步教你按需截图和图片文字识别
  • STM32 USB的实现和软件实现
  • 【win32】高仿QQ截图
  • 华为2019勇敢星面试失败
  • 华为面试:勇敢星实习生
  • 抖音超火:勇敢牛牛,不怕困难表情包全集
  • 读书笔记-精准努力-勇敢地直面问题
  • 给勇敢的他们点赞
  • 勇敢者游戏(捡石子问题)
  • 什么是真正的生活
  • 所有的伟大,源于一个勇敢的开始
  • 记录华为勇敢星实习的一次面经
  • 勇敢做自己
  • 到底什么是非线性规划?
  • 勇敢
  • 20届华为勇敢星实习面试记录
  • 只能勇敢
  • 勇敢些
  • c语言sleep作用,c语言sleep用法是什么?

我如何成为高级软件工程师相关推荐

  1. 招聘|青岛旭升招聘高级软件工程师、3D视觉算法工程师

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 公司介绍: 青岛旭升视觉有限公司是一家专注于机器人3D视觉引导与工业3D测量领域的高新技术企业,独立发 ...

  2. Atitit. 高级软件工程师and 普通的区别 高级编程的门槛总结

    Atitit.  高级软件工程师and 普通的区别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握常用的概念(ORM,IOC,AOP,event driv ...

  3. 高级软件工程师的职责范围

    在上一篇随笔<软件架构师之职责范围>中评论,yongfa365希望能看到.NET高级软件工程师的职责范围.我思前想后,还是决定说一下自己在这方面的愚见,希望大家不吝赐教. 什么是" ...

  4. (急聘) 高级软件工程师(C#.Net/JS) http://job.cnblogs.com/offer/8966/

    (急聘) 高级软件工程师(C#.Net/JS) http://job.cnblogs.com/offer/8966/ 转载于:https://www.cnblogs.com/livexy/archiv ...

  5. 谷歌高级软件工程师的一天

    作者 | Dimitris Leventeas 译者 | 弯月   来源 | CSDN(id: CSDNnews) 工作过的朋友都知道,实际写代码的时间其实并不多,有很大一部分工作的时间都用在了处理邮 ...

  6. 高级软件工程师必备的五大技能

    具备什么样的素质的人才能成为一名高级软件工程师?作为高级软件工程师,你不仅要具备娴熟的技能,更重要的,还要具备与人合作的能力.只有能够领导和提升他人的软件工程师,才是真正的高级软件工程师.Israel ...

  7. 转:高级软件工程师成长秘诀(文末有笔者自己的小评论)

    作者:Neil Kakkar 译者 | 张健欣 身为软件工程师,你要如何进一步成长? 2018 年的时候,我开始在彭博社(Bloomberg)工作.从那之后,事情发生了很大变化.我不再是公司里最初级的 ...

  8. java高级软件工程师面试_高级软件工程师的新面试问题

    java高级软件工程师面试 I'm putting together some practice interview questions for a friend who lost his job. ...

  9. Twitter高级软件工程师岳峣:做好自己喜欢的事

    作者岳峣,自2010年11月起就职于Twitter,负责缓存技术服务器端的开发和数据分析,对Memcached和Redis有深入了解,是开源项目Twemcache的维护人和主要作者之一. 我很幸运,在 ...

  10. .NET高级软件工程师的面试题目

    公司:国企,主做民航相关信息化应用系统 职位:.NET高级软件工程师 1. 什么是虚函数?子类需要对虚函数做什么?虚函数有什么用? 2. B/S与C/S不同,优缺点 3. Web页面中传值的方式 4. ...

最新文章

  1. 用php获取header头信息
  2. 【C 语言】数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )
  3. Spring AOP 实战运用
  4. Linux系统中Oracle数据库使用SELECT语句检索数据(1)实例应用
  5. js调用android手写输入法,手机进入页面,js调取软键盘
  6. node.js中npm包管理工具
  7. ubuntu系统没有声音解决方法
  8. linux mysql 修改root密码_MySQL忘了root密码,如何修改?
  9. Coolite一个简单例子-GridPanel列表增删改预览
  10. Java学习笔记之设计模式(5)装饰者模式
  11. Java 认证考试 OCAJP 经验总结
  12. 【数学建模】人口增长Leslie模型
  13. 史上最全的画册制作流程—设计前的策划
  14. M1芯片MAC使用VMware Fusion安装Windows 11
  15. 音视频传输流程和编解码基本概念
  16. import * as用法
  17. golang生成随机数
  18. 厉害了!互联网公司各岗位真实工作内容大起底!
  19. 无线路由器DNS服务器解析,路由器DNS劫持简单实现和防范分析
  20. latex奇偶页使用不同的页眉

热门文章

  1. 利用虚拟机安装并配置Debian Linux系统的总结
  2. We found potential security vulnerabilities in your dependencies. Only the owner of this reposito...
  3. 七、RISC-V SoC内核——总线 代码讲解
  4. 过拟合解决方案 —— early stopping
  5. 【C语言刷LeetCode】2126. 摧毁小行星(M)
  6. Python学习笔记(一)1.Python中end=和sep=的用法与区别。
  7. python代码少儿编程转换_数据类型转换_清华尹成python入门教程_少儿编程视频-51CTO学院...
  8. 蓝桥杯题目练习(JAM计数法)
  9. 将视频旋转90度的解决方法
  10. 网页引入腾讯视频小记