Johannes earns a six figure salary for working seven months of the year. He's a software engineer contractor who has plenty of family time. In this interview he goes through big mistakes to avoid as a contractor, what his daily routine looks like as a freelancer and his tips for how to learn to code
Hey, so can you introduce yourself?
Hi, I'm Johannes. I'm a self-taught full stack JS developer focused on React and GraphQL. I originally studied Physics and live in Berlin, Germany.
Usually, I work as a contractor. From my experience, it’s often not clear what that means. So let me quickly explain 😀
A contractor is basically a freelancer who works for a couple of months like an employee for one company. They work integrated in a team of employees or other contractors. I mostly work on-site in the company’s office. But others also work remotely.
I switch jobs very frequently. Mostly I stay in a company for 3 – 12 months. My last project was an IoT-platform by a large German enterprise which shut down in the meantime. That's of course sad since the teams put a lot of effort into the project. But it happens more often than you might expect.
Currently, I'm not working as a contractor since I’m on parental leave. I use my scarce free time to write on my blog at jkettmann.com about React and career advice.
Next to that, I work on a course at profy.dev that I'll re-launch soon. I know from my own experience that many self-taught developers don’t know when they’re ready to apply for jobs or how to build an impressive portfolio.
Once they start applying, most job listings require skills that you typically gain working on a professional team. If you don’t have job experience yet you find yourself in a catch-22 situation. The goal of the course is to teach how to work in professional teams while implementing a real-world project.
How did you make six figures as a freelance web developer last year?
It took a couple of years to get there. But now I’m in the very lucky position to be able to make that money while only working 6 or 7 months a year.
I still find that crazy. Plus I have several months of vacation. As a contractor you can make high rates once you have your skills in place and gained some experience. The rates may not be as high as a consultant.
Some freelancers can also make more if they are good at negotiating and work efficiently. The big difference is that a contractor is booked full-time for a couple of months. Most of your working days are billable hours. There’s not much time wasted on unbillable hours.
What is a freelance web developer salary?
We can do a simple calculation: Take an hourly rate of 80 Euros (there are contractors in Germany who earn less but also many who earn a lot more). A day has 8 working hours and a month on average 22 working days. If you work 7 months a year you can earn 80 × 8 × 22 × 7 = 98,560 Euro.
There's of course some overhead and additional costs because of bookkeeping and tax consultants. But that's comparably low since you typically only have one invoice per month. In between jobs you also need to spend some time with client acquisition. But since I work with recruiters they take care of most of that. The biggest effort is to attend job interviews.
Since you’re working inside a team of other software developers it’s also a relatively relaxed job. You don’t carry the complete responsibility for estimations to be correct or the app to be working. I had that before and it was causing me sleepless nights.
The most stressful part is the onboarding and the first few weeks. You need to be good at your skills since you don’t get a lot of time to onboard as a contractor. You need to be able to be productive in an unknown codebase in a matter of days. But apart from that it feels like a normal 9-5 in most cases.
If you’re interested in more details you can find an article about the differences between freelancers and contractors on my blog.
Before I forget: My experience doesn’t seem to be valid in the USA. I guess that’s related to the employment laws. For example in most European countries or Canada it’s hard to let go of employees compared to the US. Since companies there don’t have to pay for social security. They can terminate contracts with freelancers/contractors easily. So they are willing to pay a lot more compared to employees.
What does a typical day as a software developer contractor look like for you?
Since I switch jobs very often the typical day for me only lasts a few months. But office life is surprisingly similar in many companies. Most teams work agile and use either Scrum or Kanban.
When you’re in a Scrum team you typically have a lot more meetings. You estimate tasks as a team, you refine them. You have planning sessions and retrospectives.
Kanban is a bit more lightweight and often used in smaller companies or young startups from my experience.
My office days mostly start between 9am and 10am. Around 11am we have a standup meeting where everyone in the team reports what they have been doing and are planning to work on that day. In between meetings I work on my tasks and write code.
Before I head to the office I try to stick to a morning routine. After I get up I work out. Otherwise my back would be killing me after some time. I also try to meditate every day. Programming can be very exhausting so doing a little mental workout helps a lot.
How were you able to balance earning money, travelling and raising your child?
Since my daughter was born I actually haven't had a job yet. My plan was to save some money from the contracting and have time with the family afterward. That worked out nicely. But let’s see how life changes once I have to go back to work.
The big challenge for me until now was balancing my own projects, the contract work, and my social life. I attempted to build startups myself a couple of times. All of them failed in different stages but the last one was especially difficult.
After a couple of failed startups I was very eager to build a quick MVP for this idea. The problem was that I had a contracting job at the same time.
Of course, I couldn't wait to implement the idea. So I worked crazy hours basically having two jobs.
One day I had lunch with the team at the contracting job. I suddenly felt very weird. I couldn’t pick up my food anymore. I couldn't really talk and had difficulties breathing. I had to leave early and somehow made it home.
Later I realized that I had a couple of panic attacks. I wasn't able to work for several weeks. In the beginning I couldn’t even read the code on the computer screen. Everything was just blurry. Very scary situation when you depend on the income!
Unfortunately, this is more common than you might think. I heard all kinds of crazy stories. I was very lucky that I got away without having a real burnout.
Since that time I have tried to be much more careful. I have my routines to keep me fit. I learned to read my body for signs of stress. I try to listen to my wife when she warns me about working too much. Although I have to admit that I still tend to overwork 😀
How did you learn coding online ?
I never really liked computers until I was in my mid-twenties. I lived a year abroad in Istanbul, Turkey and took a sound engineering lesson at the university just for fun. They taught us a graphical programming language called Max/MSP. That started it all. It was just so much fun to build small programs with it. Later I moved on to C for microcontrollers, Python, and finally JS and React. The driving force was always a project idea I wanted to build.
Mostly I learned from random tutorials and Stack Overflow. That was definitely not the most efficient way of learning. Lot’s of trial and error. I also bought a few Udemy courses (that I never finished) and used Pluralsight for a couple of months.
I remember a great series on Pluralsight with John Papa (an Angular guru). It showed him and another developer live implementing a small feature. They talked through a problem and explained step by step their approach and what they were doing. Like a live pair-programming session. That was really inspiring and gave me the first glance at how professional developers work. A lot of my blog posts and the course are actually inspired by this format.
Later when I was a bit better already I enjoyed egghead.io a lot. I like their focused video lessons since you don't waste any time. In particular I remember the introduction to Redux by Dan Abramov. But that’s probably a bit dated by now.
How did you get your freelance contract as a web developer?
My first freelance work was for a friend of a friend. He had this “great” startup idea and was looking for an Android developer. He offered €10k for a project that took multiple months.
This ended up being one of the worst work experiences in my life. I didn't have a contract (rookie mistake) and worked for more than 6 months until I realised he would never pay. We had big fights, threatening each other with lawyers. In the end, I didn't get anything except from experience and a project to show on my resume.
But luckily this job connected me to an agency where I built an Android app for a shopping center. That was my first real freelance job. Not glorious but at least I was paid 😀
What advice do you have for someone learning to code?
Don’t overdo it. Learning to code takes time. There’s lots of new lingo involved. For most people it’s a completely new way of thinking.
Many developers feel incompetent at the beginning of their career. Especially, when they’re self-taught.
You might feel that you have to get to the same level as a CS student. So you code, read blogs, and watch videos whenever you have time. To a certain extent this is necessary. But it can become dangerous when you overdo it. Especially, if you have a full-time job and a family.
Even if you don’t realize it coding can be very exhausting. At the beginning the mental load can be huge. That gets better with time but early on you need to ensure not to burn out.
Have you ever had imposter syndrome?
At the beginning of my career all the time. I was one of these people who studied like crazy. I had the feeling that I needed to get on the same level as CS grads even though I didn’t know what that level was. Every free minute was spent on something related to code. I didn’t have anyone to compare myself to except for the experts writing the blog posts and courses I followed.
The first job interviews were hell because I had no clue how a professional developer works. I didn’t feel like I was on a par with the interviewers. It took a long time until I got over this. Interestingly, the feeling of inferiority turned into a feeling of superiority for some time. I realized on the job that some software developers even in larger companies aren't that good in fact.
I suppose that’s quite common especially in areas where most people think you need to be smart. I had the same experience when studying Physics.
You study very hard for a long time and suffer from this feeling of inferiority. You think you’re stupid and everyone else is smart. Then at some point you realize that you made it and finally have a good understanding. Now that you belong to the smart people it’s natural to feel a certain superiority.
Luckily I got passed that quickly thanks to a couple of impressive team mates. In the end everyone has weaknesses and strengths. Even with years of experience I still have the feeling of being an imposter from time to time. Especially, when another developer finds a solution to a problem in minutes while I’ve been working on it for a full day 😀. But that’s very normal and I wouldn’t call it a “syndrome” anymore.
What are your career goals for the future?
Currently, I’m very interested in building a business. I mentioned that I tried a couple of times already but all of my projects failed. That left me with this nagging feeling. I’m pretty stubborn so I’ll probably try until it works out 😀 . Hopefully I’ll be able to generate my income on my own in the near future. Maybe I’ll have more luck with my course.
I’m pretty sure I’ll continue programming to some extent. It’s a lot of fun to build stuff after all. I’d also like to try a lead position at some point since I find it a fascinating skill to manage people.
If you are job hunting, head over to the job board for entry level software engineers