软件工程师职业规划
by Amanda Bullington
通过阿曼达·布林顿(Amanda Bullington)
Before I decided to move into software engineering, I was a marketer in the tech world. I tried quite a few types of marketing - events, public relations, search engine optimization, content creation, digital advertising, email marketing - but never found a perfect fit.
在我决定进入软件工程之前,我是技术界的营销人员。 我尝试了很多类型的营销-事件,公共关系,搜索引擎优化,内容创建,数字广告,电子邮件营销-但从未找到合适的方法。
My last company was a personal finance startup with solid brand recognition. Their motto was content is king. Unlike most tech companies, there were a ton of editors and journalists and only a handful of software engineers.
我的上一家公司是一家拥有良好品牌知名度的个人金融创业公司。 他们的座右铭是满意为王 。 与大多数科技公司不同,那里有大量的编辑和新闻工作者,只有少数软件工程师。
A year after I started, the company decided to shake up its strategy. Content was no longer enough. A plethora of new personal finance startups launched mobile apps that year, promising to help consumers track their finances, learn to budget, eliminate student loan debt, and consolidate credit card payments. Not wanting to be left behind, my company began thinning the editorial side of the business while rapidly hiring product folks, engineers, and designers.
在我开始工作的一年后,该公司决定改变其战略。 内容不再足够。 当年,大量新的个人理财初创公司推出了移动应用程序,承诺帮助消费者追踪其财务状况,学习预算,消除学生贷款债务并巩固信用卡付款。 不想被甩在后面,我的公司开始精简业务的编辑方面,同时Swift雇用产品人员,工程师和设计师。
An inner feeling made me realize then that it was time to switch gears. ⚙️
内心的感觉让我意识到那时该换档了。 ⚙️
In this article, I’ll go through how I switched careers to become a software engineer from start to finish. So let’s get started.
在本文中,我将介绍从头到尾如何转变职业,成为一名软件工程师。 因此,让我们开始吧。
I began to research immersive classes in software engineering. I liked that App Academy and Hack Reactor both offered free in-person intro classes to help prospective students prepare for their entrance exams. I also heard positive things about Hackbright and have since met a number of talented women who attended their program.
我开始研究软件工程中的沉浸式课程。 我喜欢App Academy和Hack Reactor都提供免费的面对面入门课程,以帮助准学生为入学考试做准备。 我也听到了有关Hackbright的正面消息 ,此后结识了许多参加计划的有才华的妇女。
Ultimately, Hack Reactor won me over because it offered a rigorous one-month Structured Study Program (SSP) course. The program was designed to transform participants from beginners to Hack Reactor Immersive ready.
最终,Hack Reactor之所以赢得了我,是因为它提供了严格的为期一个月的结构化学习计划(SSP)课程 。 该程序旨在将参与者从初学者转变为准备就绪的Hack Reactor Immersive。
The curriculum seemed practical. It helped that I knew three acquaintances who had successfully landed software engineering roles after completing the program.
该课程似乎很实用。 帮助我认识了三个熟人,他们在完成该程序后成功担任了软件工程职位。
Once I narrowed my focus to Hack Reactor, I needed to prepare for SSP and the entrance exam. To do so, I completed the Udacity Intro to JavaScript course along with a few other online courses in JavaScript.
一旦将重点放到Hack Reactor上,就需要为SSP和入学考试做准备。 为此,我完成了Udacity JavaScript入门课程以及其他一些JavaScript在线课程。
Between SSP and Hack Reactor’s immersive program, I spent four months coding up to 6 days a week, 12+ hours a day. I sharpened my problem solving skills, improved my understanding of JavaScript, learned front-end and back-end frameworks, and practiced working alongside other engineers.
在SSP和Hack Reactor的沉浸式程序之间,我花了四个月的时间进行编码, 每周编码多达6天 , 每天12个小时以上 。 我提高了解决问题的能力,提高了对JavaScript的理解,学习了前端和后端框架,并与其他工程师一起工作。
As intense as my experience was at Hack Reactor, it was only the beginning. I had a growing list of concepts that I struggled with during the program. At the top of that list was algorithms and data structures.
就像我在Hack Reactor上的经历一样强烈,这仅仅是开始。 我在计划期间遇到了越来越多的概念。 该列表的顶部是算法和数据结构。
Software immersive programs are great for teaching you the skills you’ll need on the job as an engineer. Training for job interviews is a bit of a different beast, and mastery of algorithms and data structures is often the key to being offered an on-site. I tried applying to companies that forgo traditional white-boarding, but they’re few and far between.
沉浸式软件程序非常适合教给您工程师工作所需的技能。 求职面试的培训有点不同,而精通算法和数据结构通常是在现场提供培训的关键。 我曾尝试向那些放弃传统白板的公司提出申请,但它们之间相差无几。
Cracking the Coding Interview is seen as the penultimate resource for learning algorithms. However, it wasn’t the resource I found most useful, personally. Instead, these are the resources I used to prepare for technical interviews and onsites:
破解编码面试被视为学习算法的倒数第二个资源。 但是,就我个人而言,这并不是我发现最有用的资源。 相反,这些是我用来准备技术采访和现场准备的资源:
CodePath - an 8-week course covering all the most frequently asked interview questions from data structures to system design
CodePath-为期 8周的课程,涵盖从数据结构到系统设计的所有最常见的访谈问题
InterviewCake - a guide that explains the most common patterns found in algorithmic thinking
InterviewCake-解释算法思维中最常见模式的指南
LeetCode - endless practice problems
LeetCode-无休止的练习题
Grokking the System Design Interview - explanations of the tradeoffs involved in common system design questions, such as how to design Instagram
摸索系统设计面试 -解释常见系统设计问题(例如如何设计Instagram)中的权衡取舍
I asked a ton of senior engineers within my network for advice on the job search. Everyone was gracious with their time and excited to see new types of talent entering the industry. Here were some of the most helpful pieces of advice:
我向我网络中的大量高级工程师求职提出了建议。 每个人都对自己的时间很亲切,并且很高兴看到新型人才进入该行业。 以下是一些最有用的建议:
Get a foot in the door: Every engineer has to start somewhere. Many engineers landed at brand name companies after working at tiny no-names. Don’t worry if you don’t find a perfect fit right away.
踏入大门:每个工程师都必须从某个地方开始。 许多工程师在从事微小的无名字工作后进入了名牌公司。 如果您没有立即找到完美的选择,请不要担心。
Rewrite your Résumé: If you’re a new engineer, your résumé is likely written in a way that makes you look really junior. Focus on the tradeoffs and technical decisions you made, not what you implemented.
重写您的简历:如果您是新工程师,则简历的编写方式可能会使您看起来很初级。 专注于权衡和您做出的技术决策,而不是您所执行的。
Look for mentorship opportunities: Aim for a team with 30+ engineers, because this will teach you best coding practices and provide mentorship opportunities. Otherwise, know who your manager will be and make sure they’re able to help you make technical decisions (young engineering managers are often thrown into the role with limited people or leadership experience).
寻找指导机会:针对拥有30多名工程师的团队,因为这将教给您最佳编码实践并提供指导机会。 否则,请知道您的经理将是谁,并确保他们能够帮助您做出技术决策(年轻的工程经理经常被任命为人手或领导经验有限的职位)。
Work on personal projects: This will demonstrate your enthusiasm for engineering during the job search and give you something unique to talk about in interviews.
处理个人项目:这将显示您在求职过程中对工程学的热情,并给您一些独特的面试话题。
My job search took place in summer 2018. I learned to tune out a lot of well-intentioned but unhelpful suggestions. These came from recruiters, fellow engineers, and concerned friends. Here are some of them:
我的求职于2018年夏季进行。我学会了提出许多本意不错但无用的建议。 这些人来自招聘人员,工程师同伴和有关朋友。 以下是其中一些 :
The job market has slowed down for entry-level engineers over the past few years. Mid-sized companies are only hiring for senior positions and have put a hiring freeze on junior candidates.
在过去几年中,入门级工程师的就业市场已经放缓 。 中型公司仅招聘高级职位,并冻结了初级应聘者。
Not only is the market oversaturated, but the quality of bootcamp graduates has gone down in past years. It will be tough to find a job.
不仅市场饱和,而且训练营毕业生的素质在过去几年中下降了。 很难找到工作。
I’m certain many aspiring engineers hear similar types of feedback. The key is learning to tune it out and stay focused, otherwise it’s easy to burn out.
我敢肯定,许多有抱负的工程师都会听到类似的反馈。 关键是要学会调整并保持专注,否则很容易疲倦。
After Hack Reactor, I spent a lot of time reviewing technical concepts in preparation for tech screens and interviews. Here’s my rough study plan:
在加入Hack Reactor之后,我花了很多时间来回顾技术概念,为技术屏幕和采访做准备。 这是我的粗略学习计划:
Practice with others. Algorithms are more fun when you’re working on them in a small group. (Pramp and CodePath were two ways I found practice partners).
与他人一起练习。 在小组中使用算法时,算法会更有趣。 ( Pramp和CodePath是我找到实践伙伴的两种方法)。
Make it easy for recruiters to find you. Build robust profiles with screenshots of projects and links to GitHub on the following sites. Feel free to click the links to check out my examples (or connect with me):
使招聘人员轻松找到您。 在以下站点上使用项目的屏幕快照和指向GitHub的链接构建健壮的配置文件。 随意单击链接以查看我的示例(或与我联系):
领英
Hired
雇用
AngelList
天使清单
Personal portfolio
个人投资组合
GitHub
的GitHub
It’s important to show prospective employers the quality of your work. Photos, videos, links to live projects, well documented READMEs, and clean coding practices make it easier for recruiters to take a chance on you.
向准雇主展示您的工作质量很重要。 照片,视频,到实时项目的链接, 文档齐全的自述文件以及清晰的编码做法,使招聘人员可以更轻松地抓住您。
I heard the refrain, “It’s just a numbers game,” frequently from engineers, career coaches, and mentors. Ultimately, here were my numbers:
我经常听到工程师,职业教练和导师的话语“这只是一个数字游戏”。 最终,这是我的电话号码:
My applications were mostly front-door, with some referrals, some recruiters who contacted me, and some outreach from Hired or AngelList.
我的申请大部分是前门的,有一些转介,一些招聘人员与我联系,还有一些来自Hired或AngelList的推广。
Knowing the numbers helps you take an analytical approach. For example:
了解数字有助于您采取分析方法。 例如:
From this, I learned that I was fairly consistent at getting my résumé to pique a recruiter’s interest, successful (with room for improvement) at initial phone conversations, and somewhat weak in demonstrating my technical skills.
由此,我了解到,我的履历表一直很能激发候选人的兴趣,在最初的电话交谈中取得了成功(有改进的余地),并且在展示我的技术技能方面有些虚弱。
Analyzing the numbers allowed me to step back from churning out more applications. Instead, I spent extra time brushing up on technical weaknesses, with a goal of improving my conversion rate from tech screen to onsite.
分析这些数字后,我可以退出更多的应用程序。 取而代之的是,我花了更多时间来弥补技术上的不足,目的是提高我从技术屏幕到现场的转换率。
Once you’re lucky enough to land an onsite or two, there’s still a lot to master. Personally, I found most onsites extremely draining. They lasted anywhere from 2 - 6 hours and ranged widely in topics covered. Some companies forgot to give me any breaks.
一旦您有幸登陆一两个站点,您仍然需要掌握很多东西。 就个人而言,我发现大多数站点都非常耗油。 他们持续了2到6个小时不等,涉及的主题范围很广。 一些公司忘记给我任何休息时间。
Because I was being tested on technical knowledge, there was very little small-talk and I was often grilled with questions for hours at a time.
因为我已经接受过技术知识的测试,所以很少有闲聊,而且我经常一次被问到几个小时的问题。
One company told me they weren’t moving forward with me because I had struggled on the very last question after hours of successful algorithms. I’m still not sure what they learned from that very last question that they couldn’t have gleaned from the tech screen or the previous few hours, but that feedback stung.
一家公司告诉我,他们不跟我前进,因为经过数小时成功的算法处理后,我一直在为最后一个问题苦苦挣扎。 我仍然不确定他们从最后一个问题中学到了什么,他们无法从技术屏幕或之前的几个小时中收集到信息,但是反馈如此强烈。
Topics covered during my onsites included:
我的现场报道的主题包括:
Give us a 1-hour presentation on any topic of your choice (consider this a red flag, unless your job specifically requires interfacing with customers or pitching your ideas)
给我们一个1小时的演讲,内容涉及您选择的任何主题(除非您的工作特别需要与客户互动或提出您的想法,否则请对它进行标记 )
The variety made it tricky to know what to study.
种类繁多,很难知道要学习什么。
After each tech screen and onsite, I jotted down a robust list of all the questions I was asked in each interview. This became my study guide for future onsites.
在每个技术屏幕和现场之后,我记下了每次采访中被问到的所有问题的完整列表。 这成为我将来的现场学习指南。
When I missed questions, I tried to view it as a learning opportunity.
当我错过问题时,我试图将其视为学习的机会。
Maybe it’s just me, but answering technical questions amidst a revolving circle of new people makes me famished.
也许只有我一个人,但是在新人们不断旋转的圈子中回答技术问题使我感到头昏眼花。
In my first onsites, I got progressively worse at answering questions as my blood sugar dropped. No surprise - these didn’t result in an offer.
在我的第一个现场中,由于血糖下降,我在回答问题上变得越来越差。 毫不奇怪-这些都没有产生要约。
In my third, they scheduled me from 10 - 2pm with no lunch break, so I specifically asked for one. This worked - sort of - until the hiring manager followed me to a lunch spot while grilling me rapid-fire on 50+ JavaScript questions. He ignored my (repeated) requests for a quick mental break. Another no-go.
在我的第三次会议中,他们安排我从晚上10点至下午2点安排我,没有午休时间,所以我特意要求一个。 在某种程度上,这一直有效,直到招聘经理跟随我到一个午餐地点,同时为我Swift解决了50多个JavaScript问题。 他无视我(重复)的要求快速休息的请求。 另一个不行。
Finally, I found a viable solution - bringing a large green smoothie to each interview. This was a lot better than trying to sneak peanut M&Ms into my mouth in the restroom (besides, I was usually escorted to-and-from the bathroom so that wasn’t really an option).
最终,我找到了一个可行的解决方案-在每次采访中都带一个大的绿色奶昔。 这比尝试将花生M&M偷偷溜进洗手间的口中要好得多(此外,我通常在洗手间陪同我走,所以那不是真正的选择)。
Where do you see yourself in 5 years?
您五年后会在哪里看到自己?
One of the questions that stumped me in interviews was, “Where do you see yourself in 5 years?” To be honest, I still don’t know.
在面试中困扰我的问题之一是:“五年后您在哪里看到自己?” 老实说,我还是不知道。
There’s a manager track and an individual contributor track.
有一个经理轨道和一个个人贡献者轨道。
There are plenty of engineering career paths that I still don’t fully understand - web, mobile, site reliability, and DevOps, to name a few.
我仍然不完全了解许多工程职业道路-网络,移动,站点可靠性和DevOps,仅举几例。
Then there’s back-end, front-end, and full-stack. Sometimes the lines between these roles are clear, sometimes they’re blurred. What I learned during the course of my search is that while I don’t know which path I’ll take, there are certain tasks I like more and less than others.
然后是后端,前端和全栈。 有时,这些角色之间的界线很清晰,有时则很模糊。 我在搜索过程中了解到的是,虽然我不知道该走哪条路,但有些任务我比其他人更喜欢或更少。
I don’t love playing with pixels on a website, but it’s fun to design for mobile. Designing architecture and setting up a database is a bit tedious, but I enjoy taking large amounts of data and manipulating it or spinning it into an interesting visualization.
我不喜欢在网站上玩像素游戏,但是为移动设备设计很有趣。 设计体系结构和建立数据库有点繁琐,但是我喜欢获取大量数据并对其进行处理或将其旋转成有趣的可视化效果。
So who knows where I’ll end up. For now, I’m going to try to do what’s fun and exciting.
那么谁知道我会去哪里呢。 现在,我将尝试做一些有趣而令人兴奋的事情。
There were plenty of coding challenges that I attempted and was ultimately too embarrassed to turn in. Then, there were some that I didn’t finish but turned in anyway, along with an explanation of what debugging steps I had taken along the way.
我曾尝试过许多编码挑战,最终都感到尴尬而无法上交。然后,有一些我没有完成但无论如何都上交了,并解释了我在调试过程中采取了哪些步骤。
At first I saw incomplete coding challenges as a sign of my own inability - some days I wondered if I wasn’t cut out to be an engineer. But they became fun when I shifted my mindset and started to think about what I learned from each one.
刚开始,我看到不完整的编码挑战是我自己无能为力的标志-几天来,我想知道自己是否会成为一名工程师。 但是当我改变观念并开始思考从每个人中学到的东西时,它们变得很有趣。
For example, one of them gave me a deeper understanding of asynchronous API calls, while another helped me realize the importance of addressing edge cases and error messages. One taught me how to debug Ruby on Rails.
例如,其中一个使我对异步API调用有了更深入的了解,而另一个则帮助我意识到了解决边缘情况和错误消息的重要性。 一位教我如何调试Ruby on Rails。
The same was true of each tech screen and onsite. At first, the rejections stung and fueled my insecurities. Then, rejections became normal. I learned a lot more when I was able to brush aside my self-doubt and be curious about what I could learn from each engineer taking time to speak with me.
每个技术屏幕和现场情况都是如此。 起初,拒绝引起了我的不满,加剧了我的不安全感。 然后,拒绝成为常态。 当我能够抛开自我怀疑并对我可以从每个工程师那里学到什么而感到好奇时,我学到了很多东西。
Everyone has a different way of approaching problems, and I was fortunate to learn from a few dozen engineers in the industry through the interview process.
每个人都有不同的处理问题的方式,我很幸运能通过面试过程向行业中的几十名工程师学习。
I was lucky enough to have an all-star mentor throughout the interview process. For three months, my mentor called and emailed every week to ask how the job search was progressing and what blockers I was facing.
我很幸运在整个面试过程中都有一位全明星导师。 三个月以来,我的导师每周打电话给他发电子邮件,询问求职进展如何以及我面临的障碍。
I’ve heard a lot of fellow engineers say a mentor sounds nice, but they weren’t sure what questions to ask. Sometimes we spoke about tactics, such as how many applications to send, how to write an effective Git commit, or how to go above and beyond in a coding challenge. Other times, she simply reminded me that despite the (many) rejections, I was becoming a stronger engineer and therefore closer to finding my dream company every day.
我听说很多工程师说导师听起来不错,但他们不确定要问什么问题。 有时我们谈论一些策略,例如发送多少个应用程序,如何编写有效的Git commit或如何超越编码挑战。 有时候,她只是提醒我,尽管遭到(很多)拒绝,但我正在成为一名更强大的工程师,因此每天都在寻找自己的理想公司。
A mentor can keep you accountable to your goals, help you through feelings of burn out, and connect you to the right resources for deeper learning. I’m grateful to have had an advocate throughout the job search process, and I’m looking forward to being able to pay it forward as a new engineer!
导师可以使您对自己的目标负责,通过倦怠的感觉帮助您,并将您连接到正确的资源以进行更深入的学习。 我很高兴在整个求职过程中都有一位拥护者,并且我希望能够以新工程师的身份向其支付!
Some days, switching careers felt much harder than I expected. My mentor can certainly attest that there plenty of days when I wasn’t sure I could do it.
有几天,转行感到比我想象的要难得多。 我的导师当然可以证明我不确定自己是否能做到这一点。
Becoming an engineer took a lot of hustling. It meant reaching out and expanding my professional network, becoming comfortable with the fact that there’s a huge learning curve ahead of me, and ignoring all the naysayers. It meant finding the right online resources that worked with my learning style. It meant quieting the part of my brain that told me I wasn’t capable and instead focusing on gleaning new knowledge. Every day I worked on a new project, studied a new algorithm, or answered questions in an interview, I became a better engineer.
成为一名工程师要花很多时间。 这意味着要接触并扩大我的专业网络,对我面前存在巨大的学习曲线这一事实感到满意,并且无视所有反对者。 这意味着找到适合我的学习风格的合适的在线资源。 这意味着让我告诉我我没有能力的大脑安静下来,而专注于收集新知识。 每天我从事新项目,研究新算法或在面试中回答问题时,我都成为了一名更好的工程师。
Was the struggle worth it? Absolutely.
斗争值得吗? 绝对。
I’m thrilled to say that I found a role that’s perfect for me, where I can continue learning and growing. My professional network is stronger than ever, and most of all, I gained confidence in knowing that I can put in the work to make my dreams a reality.
我很高兴地说自己找到了最适合自己的角色,可以继续学习和成长。 我的专业网络比以往任何时候都更强大,最重要的是,我获得了信心,因为我知道自己可以投入工作以实现梦想。
翻译自: https://www.freecodecamp.org/news/how-i-switched-careers-to-become-a-software-engineer-in-11-months-and-how-you-can-too-9849afabc126/
软件工程师职业规划