I’ve had a few friends recently ask me about breaking into the software industry. Most have been looking for advice on getting a developer job at a consumer-facing web/internet company — though places like Tesla and WeWork are also very popular.
我最近有几个朋友问我有关进入软件行业的信息。 大多数人一直在寻求有关面向面向消费者的Web /互联网公司的开发人员工作的建议,尽管Tesla和WeWork之类的地方也很受欢迎。
These friends have probably heard about the amazing slew of benefits; like interesting work, smart and passionate colleagues, and free food/snacks/alcohol galore. It doesn’t hurt that compensation is usually above market at these companies, and career prospects are second-to-none for talented technologists.
这些朋友可能听说过许多惊人的好处。 例如有趣的工作,聪明又充满激情的同事,以及免费的食物/小吃/酒精饮料。 这些公司的报酬通常都高于市场,这也没有什么坏处,而对于有才华的技术人员而言,职业前景是首屈一指的。
There’s already an abundance of information out there on obtaining software engineering jobs, but much of the advice is geared towards people who have experience already. Technical interview prep is important only if you can even get the interview.
关于获得软件工程工作的信息已经很多,但是很多建议都是针对已经有经验的人的。 技术面试准备只有在您甚至可以进行面试时才重要。
If you’ve never worked in software, breaking in can be challenging unless approached the right way. Here’s a few tips that are less common that have helped me and others in the past.
如果您从未使用过软件,那么除非采取正确的方法,否则侵入可能会很困难。 这里有一些不太常见的提示,这些提示过去对我和其他人都有帮助。
This lesson was originally published at https://algodaily.com, where I maintain a technical interview course and write think-pieces for ambitious developers.
本课程最初在 https://algodaily.com上 发布 ,我 在 那里维护技术面试课程,并为雄心勃勃的开发人员撰写思想著作。
第一:您不需要编码 (First: You Don’t Need to Code)
Just getting this out of the way: many people forget that you don’t need to code to break into the software industry. It’s pretty amazing that there’s still the notion that software businesses are just engineers cranking away in text editors. The most successful tech companies usually have talented engineers, but also wonderful managers, sales reps, customer success advocates, product managers, marketing wizards, designers, and writers.
只是避免了这一点:许多人忘记了,您无需编写代码即可进入软件行业。 令人惊奇的是,仍然有这样一种观念,即软件企业只是工程师在文本编辑器中不断发展。 最成功的科技公司通常都有才华横溢的工程师,但也有出色的经理,销售代表,客户成功倡导者,产品经理,营销向导,设计师和作家。
You may need to cater your craft and experience a bit towards software : for example, focusing a bit more on SEO and digital advertising if you are a person who loves to write. However, know there’s always a place for existing talents.
您可能需要兼顾技巧并对软件有所了解:例如,如果您是一个喜欢写作的人,请多关注SEO和数字广告。 但是,要知道,总有一个现有人才的地方。
But if you’re sure you want to pursue software engineering…
但是,如果您确定要继续从事软件工程……
那第一个演出是最难的 (That First Gig is the Hardest)
The most frustrating part for new entrants into tech is the dichotomy in the job search for newcomers versus experienced candidates.
对于新进入技术领域的人来说,最令人沮丧的部分是新来者与有经验的候选人在求职中的二分法。
I said earlier that most articles and blog posts about getting a software engineering job is geared towards those with experience. With the tech job market being so hot, senior candidates usually have several options (or even offers in hand) for where they want to go and what they want to do.
我之前说过,大多数有关获得软件工程工作的文章和博客文章都是针对那些有经验的人的。 在技术工作市场如此炙手可热的情况下,高级应聘者通常会针对他们想去的地方和想要做的事情有几种选择(甚至是提供的机会)。
This obviously isn’t true for one’s first tech job search. There will certainly be some initial pain, and it could take a while. It might be beneficial to note that an amazing aspect of the industry is how fast one can “level up”. It’s defeating to initially be rejected from dozens of entry-level positions, for sure. But once you’re in, a bit of hustle and hard work to cultivate experience will lead to a much easier path down the road.
对于一个人的首次技术求职显然不是这样。 初期肯定会有些痛苦,可能需要一段时间。 可能需要指出的是,该行业的一个令人惊奇的方面是它可以“快速升级”的速度。 可以肯定的是,最初被数十个入门级职位拒绝是失败的。 但是一旦您进入,需要一些忙碌而艰苦的工作来积累经验,这将使您走上一条更轻松的道路。
Now how to get this experience if you don’t have any? Here are some ways.
现在,如果您没有任何经验,如何获得这种经验? 这里有一些方法。
获得实习 (Get An Internship)
If you’re in university, the traditional route is to get an internship via your school’s recruiting office. The process is almost identical to getting a full time position — an application, and a few rounds of behavioral and technical interviews. These internships often convert to full-time positions through a return offer.
如果您在大学里,传统的途径是通过学校的招募办公室获得实习机会。 该过程几乎与获得全职职位相同–申请并进行几轮行为和技术面试。 这些实习通常通过回酬来转换为全职职位。
However, you probably wouldn’t be reading this article if you’re in this boat, so how else might you build your resume?
但是,如果您在这条船上,您可能不会读这篇文章,那么您还可以如何构建简历?
通过自己的项目获得经验 (Get Experience Via Your Own Projects)
One thing a lot of people miss out on is how impressive it is to build a full-fledged application by yourself. If you’re able to make a frontend talk to a backend, back it up with a database, and maybe even optimize performance a bit — you’re doing the software engineering work of an entire team!
很多人会错过的一件事就是,自己构建一个成熟的应用程序是多么令人印象深刻。 如果您能够与后端进行前端对话,则可以通过数据库进行备份,甚至可以稍微优化性能-您正在完成整个团队的软件工程工作!
The other benefit people don’t realize about personal or side projects is this: despite not having your code reviewed by others, you do end up learning a lot of maintainable patterns and good habits.
人们对个人或附带项目没有意识到的另一个好处是:尽管您的代码没有被其他人审阅,但是您最终还是学会了许多可维护的模式和良好的习惯。
This is because it’s ultimately you that will need to do the maintenance of the code — so you quickly learn not to write spaghetti code or do a quick and dirty job. In a sense, you learn the why behind good naming, shorter methods, clean separation of classes, etc. — because you end up feeling the pain when you don’t stick to good coding standards.
这是因为最终您将需要维护代码-因此您很快就会学会不编写意大利面条式代码或进行快速而肮脏的工作。 从某种意义上讲,您将了解为什么要使用良好的命名,较短的方法,清晰地分离类等原因,因为当您不遵守良好的编码标准时最终会感到痛苦。
These projects are great things you can add under your resume as experience — especially if you are able to generate revenue from it. And if you can grow it to something like IndieHackers.com — jobs might just come to you.
这些项目是很棒的事情,您可以在简历下添加为经验,尤其是如果您能够从中获得收入的话。 而且,如果您可以将其发展成IndieHackers.com之类的产品, 那么工作可能就来了 。
做一些合同工作 (Do Some Contract Work)
Another way is to start consulting and do some contract work. Visit temp agencies and freelance websites. Many of the clientele care less about your resume and more about your portfolio.
另一种方法是开始咨询并做一些合同工作。 访问临时机构和自由职业者网站。 许多客户不太关心您的简历,而更关心您的投资组合。
Additionally, it’s a great source of income until you land a full-time job — though you may have to charge less at first. It’s also not rare to hear of the client hiring the consultant or contractor via a temp-to-perm role, especially if you demonstrate that you’re providing a return on their investment.
此外,在您找到一份全职工作之前,这是一个很好的收入来源-尽管您起初可能会减少费用。 听到客户通过临时职位雇用顾问或承包商的情况也不少见,尤其是当您证明自己在提供他们的投资回报时。
If you’ve been building stuff for yourself, it may be enough to snag a contracting gig that you can then put on your resume. Many people are drawn to the variety that full-time consulting or contracting offers, and make an entire career out of this.
如果您一直在为自己打造东西,那么就可以签下一份合同合约,然后可以将其放在简历上。 许多人被全职咨询或签约提供的种类所吸引,并因此而从事整个职业。
贡献开源软件 (Contribute to Open Source Software)
Another underrated way of getting experience is through contributions to open source software. Not only does it integrate you into a software engineering team (allowing you to build collaboration skills) and get generally valuable experience to trade up, but you also get to work on something that you or others use!
获得经验的另一种被低估的方式是通过对开源软件的贡献。 它不仅可以将您整合到软件工程团队中(使您能够培养协作技能)并获得一般宝贵的交易经验,而且还可以从事您或他人使用的某些事情!
Again, it’s also not unheard of — but certainly not common — for strong OSS contributors to get hired by a firm after they’ve worked on the company’s software for free. The author of Redux, Dan Abramov, is a good example.
同样,强大的OSS贡献者在免费使用公司的软件后被公司聘用,这也是闻所未闻的,但当然也不是普遍的。 Redux的作者Dan Abramov是一个很好的例子 。
投入自己并结识人们 (Put Yourself Out There and Meet People)
I used to be of the opinion that heads-down good work would always speak for itself. However, much like a good SaaS product needs to focus just as much on marketing/sales as on the product itself, a new technologist needs to make sure that their work is getting recognized and heard about.
我曾经认为,低调的好工作总是会说明一切。 但是,就像一个好的SaaS产品需要在营销/销售上与产品本身一样,新技术人员也需要确保他们的工作得到认可和听说。
On the job-front side, this means asking people for informational coffees and referrals (most people will say yes!), building a portfolio and asking for feedback, and tracking down every lead and opportunity to show off your talents.
在工作方面,这意味着要求人们提供信息性的咖啡和推荐信(大多数人会说“是”!),建立投资组合并征求反馈,并追踪每条线索和机会来展示自己的才能。
Conferences and meetups are great for meeting others who are interested in the same thing you are. They often also lead to opportunities if you are a presenter, or even if you simply strike up the right conversation.
会议和聚会非常适合与对您感兴趣的其他人会面。 如果您是演示者,或者只是简单地进行正确的对话,它们通常也会带来机会。
领域很重要 (The Domain Matters)
Something to note — an AdTech (advertising-technology) firm will have different values, cultures, goals, and people than a FinTech (financial-technology). The engineering groups will be especially different in terms of pace of work, culture, and dress code.
需要注意的一点是-AdTech(广告技术)公司的价值观,文化,目标和人员将与FinTech(金融技术)不同。 工程团队在工作节奏,文化和着装要求方面尤其不同。
Working at Jane Street is a completely different experience than working at Etsy. Be careful when generalizing the software industry, and look for opportunities aligned to your personality and interests. You can also use this to your advantage. If you are coming to software from a different industry, your past relevant experience is extremely valuable.
在简街工作与在Etsy工作完全不同。 在推广软件行业时要小心,并寻找与您的个性和兴趣相符的机会。 您也可以利用此优势。 如果您来自不同行业的软件,那么您过去的相关经验非常宝贵 。
Think about it — a large part of the job of a developer is to translate business requirements into logic. If you already know the requirements; whether it be finance, the law, compliance, medicine, biology, mathematics, or even music; your vantage point will be strongly appreciated as a software engineer.
考虑一下-开发人员的大部分工作是将业务需求转换为逻辑。 如果您已经知道要求; 无论是金融,法律,法规,医学,生物学,数学,甚至是音乐; 您的优势将被软件工程师深深感激。
If you’re coming from finance, look at fintech startups or software engineering roles at banks. Or if you used to make music, Spotify or Pandora might be more willing to give you a interview when you talk about how you built a music collection app in your spare time. At the very least, you’ll be able to connect to the product more.
如果您来自金融业,请查看金融科技初创公司或银行的软件工程职位。 或者,如果您曾经制作音乐,则在谈论业余时间如何构建音乐收藏应用程序时,Spotify或Pandora可能会更愿意接受采访。 至少,您将能够更多地连接到该产品。
这可能需要一段时间 (It Could Take a While)
Friends who are eager to get into a tech company for the first time as developers often overlook how long it takes to succeed. I’ve worked with brilliant engineers who took a while to get their first job — unfortunately, with all things, there is an element of luck involved.
渴望首次进入一家科技公司的朋友,因为开发人员常常忽略了成功需要多长时间。 我曾与出色的工程师合作,这些工程师花了一段时间才找到他们的第一份工作-不幸的是,在所有方面,都涉及到运气。
In today’s job climate, provided you keep improving your resume, it could take anywhere from one to six months to land something after graduating from school or a bootcamp. If you’ve been building up your resume with personal projects, contract/consulting work, and OSS projects — and it takes longer than six months — you should try to identify what the biggest blocker might be.
在当今的工作环境中,只要您能不断提高自己的简历,从学校或训练营毕业后就可能需要一到六个月的时间才能找到一些东西。 如果您一直在使用个人项目,合同/咨询工作和OSS项目来构建简历,而这花费了六个月以上的时间,则应该尝试确定最大的障碍是什么。
Past that, it takes about a year to get really comfortable with basic syntax and getting things up and running, and three to five years to deeply understand how software systems/architectures work and make important technical decisions. Though these numbers drastically vary, this is what I’ve seen anecdotally.
除此之外,大约需要一年的时间才能真正熟悉基本语法并开始运行,而要花三到五年的时间深入了解软件系统/体系结构是如何工作的,并做出重要的技术决策。 尽管这些数字大不相同,但这是我所见到的。
始终在学习(基础知识) (Always Be Learning (The Fundamentals))
One last thing once you get the first software job — the change of pace in the industry takes a while to adapt to .
一旦获得第一份软件工作,最后一件事-行业的步伐变化需要一段时间才能适应。
For an example that afflicts web developers in particular, google “Javascript Fatigue”. However, what you’ll find is that trends tend to come up hard and fast, but most don’t stick.
对于一个特别困扰Web开发人员的示例,谷歌“ Javascript Fatigue”。 但是,您会发现趋势趋于快速发展,但大多数趋势不会持久。
If you’re a developer, the core data structures (lists, stacks, graphs, etc.), the most common algorithms/patterns, and good OOP design patterns have been around forever, and most new ideas are just re-implementations with slight tweaks.
如果您是开发人员,那么核心数据结构(列表,堆栈,图形等),最常见的算法/模式以及良好的OOP设计模式将永远存在,并且大多数新想法只是重新实现而已,调整。
Similarly, if you’re in engineering management — building relationships, understanding the competitive landscape, and talking to your reports are things that will always be useful and never really go away.
同样,如果您从事的是工程管理,建立关系,了解竞争格局以及与您的报告进行交流将始终是有用的,而且永远不会消失。
I make this point because landing your second software job will be less about “does this person have experience” and more about “what does this person bring to the table with their experience”.
我之所以这样说是因为,获得第二份软件工作将不再是“这个人有经验”,而是“这个人会把他们的经验带到餐桌上”。
With all that said, though software technology is getting a lot of buzz at the moment, there are numerous industries and professions that are just as enjoyable and meaningful to be in.
综上所述,尽管当前软件技术引起了广泛关注,但有许多行业和职业同样令人愉快且有意义。
Hope this helps someone break in this year. Being a developer is an awesome blessing, and I encourage everyone to try it out and see if they like it.
希望这可以帮助某人在今年休息。 成为开发人员真是太幸运了,我鼓励所有人尝试一下,看看他们是否喜欢它。
This lesson was originally published at https://algodaily.com, where I maintain a technical interview course and write think-pieces for ambitious developers.
本课程最初在 https://algodaily.com上 发布 ,我 在 那里维护技术面试课程,并为雄心勃勃的开发人员撰写思想著作。
翻译自: https://medium.com/swlh/getting-your-first-software-job-without-professional-experience-191d7532cad3