The start - Zero to 6 figures as a software engineer in Zurich

How I went from zero to 6 figures as a software engineer in Zurich

Starting in 2018 I found myself working in an unfulfilling non-tech job and decided to become a software developer.

I had some challenges to overcome:

1. No university degree in computer science or a related STEM field

2. Zero days working experience in software development

3. Non-existing network in tech

At the time I lived a 12min train ride away from Zurich city.

I already heard and read a lot of people that managed to get a paying job in software development.

As most of those stories were from the US I was unsure if the same would be possible in Zurich as well.

Switzerland is famous for its high competency in their workforce and subsequently almost everyone starts their first paying job with an EFZ (Swiss VET), bachelors or masters degree.

The plan

  1. Analyze job ads and see which software engineering (SWE) jobs require the least amount of experience to break into the industry asap.
  2. Filter those job ads by common skills.
  3. Learn those skills.
  4. Showcase your skills.
  5. Apply.
  6. Pass the interview process.
  7. Get the job.

In reality the process was a lot more chaotic and there were more steps in between, you'll see.

1. Analyze job ads and see which SWE jobs require the least amount of years of experience.


Answer: Frontend Developer Position

For positions on the frontend I found the most ads with a requirement of 0 - 2 years working experience.

Backend, mobile, dev-ops, cloud and gaming positions had almost always a required minimum of 3-5 years.

2. Filter those jobs by common skills.


Main result in order of importance:

  1. JavaScript
  2. Frontend Framework (Angular, React, Vue)
  3. HTML / CSS
  4. GIT (Version Control)

3. Learn those skills

TLDR; Courses on Udemy.com helped me a lot, especially the courses with Maximilian Schwarzmüller.

At the time Udemy had and still has a lot of high-quality courses with frequent discount weeks.

There are of course other good sites as well as Pluralsight or Codecademy.

How to find high-quality courses on Udemy

  1. Set the language to preferably English
  • Reason: Most courses, often best ratings, best teachers
  1. Type in your search term
     
  2. Check the number and quality of reviews
  • Thousands of ratings with 4.5 stars and above should indicate a good course
  1. Check if the course has learning projects
  • Reason: Those projects will come in handy when you want to present your portfolio to your prospective future employers.

Pro TIP: Check out the courses of Maximilian Schwarzmüller

  • You can find all of his courses not only on Udemy but also on his with his company https://academind.com/ . Check where you can get the better offer.

How to learn dev skills with Udemy courses and build a portfolio project

  1. Create 2 copies of the course files
  • Reason: 1 copy to follow the course and the other to build your portfolio.
  1. Follow one chapter

  2. Try to redo the chapter in your portfolio project

  3. Go back to rewatch the unclear bits

  4. Finish the chapter in your portfolio

  5. Try to bend your work slightly to make it your own project

  6. Go to the next course once you have a your basic portfolio project up and running

4. Showcase your work

I skipped this step the first time around.

My thought was: "I have the basic skills, I'll get a job."

How wrong I was.

In Zurich, people want more "proof" that you indeed created something.

So I started my first portfolio project with the same tech stack that was repeated the most at that time in the ads I was focused on:

  • React
  • HTML / CSS

It was still quite hard for me to write a project from the ground up.
So I took the course project and altered it just enough to "create" a new project out of it.

This was crucial.

At this skill stage you will always have a trade-off of

proficiency vs. time

Your goal should be to have just enough skills under your belt to break into the industry and NOT to learn and learn until you think you're ready.

The reasons are:

  1. You'll learn a lot faster if you get real feedback from your working environment in the workforce.
  2. You don't really know which levels of proficiency are considered to be sufficient at the company you'll end up.

My main project was a desktop memory game that stores the current state in localStorage, so the player could go back to the game even after closing the tab.

My two side projects were simple websites I made with WordPress.

And with "I made" I mean I bought some themes on ThemeForest and customized them for two friends that needed websites. I learned as I went along.

All projects were visible on my GitHub Profile and I wrote the links on my CV.

I didn't even have a portfolio website.

5. Apply

I tried to write each application as customized as possible to the ad and the company.

After the third letter I realized that a pattern emerged of
2 paragraphs:

  1. Paragraph about the company and why I want to work there.
  2. Paragraph about me and my story of acquiring dev skills, my huge motivation and promise to work hard.

I rewrote the first paragraph every letter and with each iteration I could write it more sophisticated.

In the second paragraph I rewrote single sentences, shifted and replaced words.

You'll see a huge difference in quality between your first and tenth letter.

After the eight letter I got a video call interview with a CTO and was super excited.

6. Pass the interview process

1. Technical Interview (remote Skype interview)

30min into some small talk about me, my motivation and his presentation of the company he let me open an online code editor.

There was only one minor problem:

I had close to none real understanding of JavaScript or even programming in general.

In hindsight my preparation was super flawed.

I thought by taking the courses I also acquired the skills but my JS course was already two months back and a lot of it was already gone again.

Back to the interview.

He gave this common mini-challenge:

What will be logged out?

for (const i = 0; i < 5; i++) {
  console.log(i);
}

Answer:

0

Uncaught TypeError: Assignment to constant variable.

Explanation:

The loop tries to reassign a constant in the second iteration and throws the error.

How could we fix this?

Answer:

// use let instead of const

for (let i = 0; i < 5; i++) {
  console.log(i);
}

Then he continued to tell me in kind words that I wasn't there yet but should just keep on learning and applying.

2. Technical Interview

When I was invited on my second interview one month later I learned from my ill-preparedness and practices with:

- 80% of a JS course on Udemy
- 2 sites with JS interview questions (this was one)

30 min phone Interview with CEO / Frontend Dev:

  1. Presentation of company by CEO and Dev.
  2. My motivation to work there.
  3. My plan to close my educational gap.

One week later I got invited to

2h onsite technical interview:

The schedule was quite the same:

  1. Presentation of the office and workflow by frontend dev.
  2. Technical challenge.

The challenge:

  • Download his challenge project from GitHub.
  • Get his prepared data about a football league from the provided endpoint.
  • Make a list with the football team names.
  • Sort the list from best to worst team.
  • Add a reverse order button.

I could eventually do all of them.

After four days I got the feedback by email.

The problem was:

I was too slow. On almost every sub-challenge I had to google and
read up an answer.

On the upside I had one more challenge and onsite practice under my belt.

3. Technical Interview

8 weeks, 6 rejections and a lot of practice later I got my third invitation to a phone interview.

It was the same process again.

This time around I really stressed my weaknesses: My lack of education and diplomas AND my plan on how I intended to close it quickly.

I listed the next books I was going to summarize and got lucky:

The frontend dev was a fan of one of them.

I got invited three days later.

The onsite was 2h from 10:00-12:00.

The challenges

  1. Solve a rather simple JS problem that was projected onto the wall.
  2. Comment on two sheets of paper with some functions on it:
    - Describe the output.
    - Spot the errors.
    - Provide solutions.
  3. Talk to another frontend dev about how to implement a provided layout.
    The layout was also on paper.
  4. Solve a simple React.js question in the project I would be working on.

I think I did well except for the React question.

There I had zero experience with React and couldn't event implement a simple counter button.

I share my fails and weaknesses to show you that interviewing itself will give you the best hints on what is needed on the jobs themselves.

In each city these requirements are different and the most efficient (and most painful) way is to start interviewing asap.

7. Get the job

In short, it took me 5 months, 18 applications, 15 rejections and 2 first round fails to get my 1 successful interview process.

One week later I got the phone call and the CTO offered me the position.

I accepted on the spot.

No negotiation, no further questions asked.

This would turn out to be rather foolish.

You'll go into that in the next post.