There are many stories online from self-taught developers that share their journey.
Most of these stories are from developers in the USA.
I have never stumbled upon a story from a German self-taught developer or from someone that got a job in Germany as a self-taught developer.
Since that's exactly what I did, I decided to share my journey here.
Hopefully, this blog post will help someone to avoid the mistakes that I made and also learn from the good decisions that I made.
Basically, I want to write the blog post that I would have needed back when I started programming.
At the end of the blog post, I will give you a short TLDR of all the mistakes to avoid and tips to follow.
First I have to mention one disclaimer:
Technically I am not fully self-taught since I did finish an apprenticeship as an "IT Specialist" (Fachinformatiker für Systemintegration). I still consider myself self-taught because I did not learn any real programming during that time.
The beginning
My story is not special, I guess many of you reading are in the same situation that I was in back in the day:
I was unhappy with my career and I wanted to change that.
I was living in a smaller city at the time and as far as I knew there were not a lot of opportunities for developers there.
So I decided to quit my job and get a new job closer to the nearest bigger city in hopes of getting a developer job there once I taught myself programming.
Looking back this was a great decision, not only was I closer to the action, but it also took away some distractions. Since I was new to the city I had no friends there, and I made sure not to make any.
My plan was simple:
- Get a new job in near a big city
- Teach myself programming in one year
- Get a job as a professional programmer
First mistake: Getting a stressful job
So here I am, new job, new city. Everything is cool, right? Well actually no.
I didn't do my research when searching for a job. I just took the first job that wanted to hire me because I didn't want to stay there long anyway.
Big mistake.
The job was extremely stressful and also mentally taxing - the last thing you need when you want to learn to program on the side. Often I would get home completely sapped so much so that I needed a nap just so I could focus on anything again.
The schedule
Since I had my goal to become a full-time developer in one year, I needed to break this big goal down into actionable steps. So I decided that I would do three hours of programming every day besides my 8 hours at my full-time job.
When you are trying to become a full-time developer while also working a full-time job, you'll quickly realize that you don't have much time left after your job, commute, cooking, house chores, and all that kinda fun stuff are done. That's why I really started to pay attention to every minute I was spending during the day.
I also wrote down how many hours I managed to program each day so that I would not cheat myself.
During this time my ideal schedule looked like this:
Monday - Friday
06:50 - Wake up and Shower
07:15 - Commute to work
08:00 - Start work (actually I was always 5 minutes late, but let's not talk about that)
17:00 - Finish work
17:50 - Get Home and eat something
19:00 - Take a nap
20:00 - Start programming
23:00 - Wind down at the end of the day and go to sleep
On Saturday and Sunday, I would not have a set schedule, but I would do at least 3 hours of programming.
That schedule was rough. I would not recommend that schedule to anyone, and it will lead to burnout in the long run. Also, turns out sitting in front of a computer 12 hours a day not doing any sports is unhealthy, who knew?
Second mistake: No direction
When I started I tried to learn python, because I've read that it's a great language.
I got bored (because I had no project in mind) and switched to C++, then I was going back and forth between C++ and Python.
Also, I was reading all kinds of programming books that were way too advanced for me at that time.
That's when it dawned on me that I had just wasted a huge amount of time reading books, when in reality all I needed to do was to get my hands dirty and do some actual programming.
You don't learn programming by reading books, you learn programming by programming.
Now don't get me wrong, I am not saying that you shouldn't read books about programming.
In fact, I think it's really important to start reading programming books once you mastered the basics, it's the fastest way to learn about software architecture, clean code, and design patterns. But I believe in the first few months you should spend most of your time programming.
I was devastated - my approach was not working. Like a truck
that was stuck in the mud, spinning its wheels, I was going nowhere.
I knew I needed to start from square one.
Getting on the right path
I realized that I needed to create some kind of project, that I could show
to potential employers.
That's when I did some research and decided that web development was my best bet.
There are lots of jobs in web development, you can easily share your project, and there is no shortage of great learning resources.
So I started learning HTML, CSS, JavaScript, and React.
After learning the basics, my goal was to create a simple time tracking web app and use that project to get me a programming job.
I bought some Udemy courses and choose one where the end product was similar to the app that I wanted to create. I still think Udemy courses are a great learning tool if you want to learn a new stack. In the beginning you often don't know what you don't know.
That's why having someone more experienced being your mentor can be so powerful.
In total this project took me around 2 months to complete.
You can see the repo here. Now obviously I had no idea what I was doing - the code looks horrible - but I managed to get a working application that I could share with potential employers.
The application process
Nobody likes rejection. Maybe that's why I waited 8 months after I started programming to send out applications.
Looking back, I probably could've sent out applications earlier. I've seen people with similar stories like mine get jobs with pretty weak portfolios. So you might want to consider sending out an application after 3 months or so.
I tried to put myself in the shoes of HR. Let's say you get 50 applications for one job. 49 of those applications have some kind of experience or some kind of degree.
Then there is my application:
- Zero experience
- No degree that's useful for programming
- My CV did not show any proof that I could program
What do you think HR will do? They would probably - and rightly so - send me a nice rejection email and move on to the next candidate to fill the position.
That why I made sure to emphasize my personal projects, I knew that an ordinary application would not be the right thing to do in my situation.
My situation was different, so I figured that my application should also be different.
I knew that I had to get past HR and get some developer to look at my project, that was my only chance. So the gist of my application was this:
I have no experience, but please look at my personal projects.
This worked surprisingly well.
I probably send out around 15 applications and 4 interviews before I got my job. In the end, it took me eleven months to reach my goal of becoming a professional programmer.
TLDR
- Start programming ASAP, you learn programming by programming
- Give yourself a deadline of when you want to be a professional programmer
- Focus on one programming language
- Choose a programming language that is widely used
- Create a project on GitHub that you can show to potential employers
- Try to do one step every day, learning to program is a marathon, not a sprint
- Get a mentor or buy an Udemy course in the technology you are interested in
Top comments (49)
I'm also studying programming on my own while working a full-time job and the schedule thing is really stressful 🥲
Thank you for sharing your experience, I always read stories about self taught developers but I hadn't found one that mentioned working a full-time job, it makes me feel like it's truly possible for me as well!
it is indeed, I am sure you'll get there
Hey there i dropped message in your Twitter please check it out 😅😅
What an inspiring article. Yet I am not working but I am from the non-technical field . I am mathematics student. I started to learn coding from 3 to 4 months . I decided to establish myself in the programming field. Sometimes I feel frustrated while learning code. After reading the article I got the motivation to move forward. Thank you for sharing.
Great article. I am currently in the middle of self-teaching myself JavaScript, its definietly challenging at times, but its great when you have achieved or built something. I am also using a Udemy course to learn and its really great and useful.
Hope your new programming job is going well.
Thanks a lot. Seems like you are on the right track.
Yes it has been great. I was lucky that my first programming job was at a company that does things the right way.
Maybe I should have mentioned that too:
Try to get a job in a bigger company because chances are higher that they do things the right way. (Like using Sprints, Code-Reviews, Version Control and so on)
I went all over the place trying to learn full stack all at once. Eventually just focused on HTML and CSS. Just starting to build static sites and challenges on Frontend Mentor. Once I feel really comfortable with HTML and CSS I'll add in JavaScript, get comfortable with that and then maybe React. Realised it's better to take it slowly. As you said it's a marathon not a sprint.
Thanks for a great story! I would like to add my 5 cents: open source (~=hosted on GitHub) projects are crucially important for beginners as they can perfectly show your knowledge of both: the language and frameworks and as well best practices and rules of good code. And it’s even more valuable if you contributed to an OS project: that shows that the code written by you is actually accepted by the community.
Confession: I wasted 1 - 2 years in uni with a professor who was focused on "theory first". 90 % of students did not understand what was taught. Only the 10 % that did already programming in their life could follow. So YES, start programming FIRST. And use the amazing content on Youtube. – And use Stackoverflow, first asking, later answering. This makes you a great programmer IMHO.
Hey, There, congratulations on the success, You finally landed your dream job and I am sure you are doing great,
I am in early stages as you were learnt python and then After applying to 100 of jobs, was depressed that, no one hires a junior Django dev in India at least, the place where I am currently doesn't have enough jobs for a web or software, but the problem for me is that, I do not have any money to move to a new city where jobs are available my parents do not support, it's fine cause they are unknown to this world, for them it something waste of time,
but I am hope full that there will be a time, I will get the job and I hope to move to Germany or anywhere in Europe and work...
just we shouldn't stop chasing our dreams...
Hey thanks,
I think Python is a great language and Django is great too from what I've heard. But when it comes to jobs, I think your best bet would be JavaScript or Java. I'm actually working on a project with people from India right now (JavaScript and Java), and from what I've heard a lot of other companies in Europe and USA also hire (or work with) Indian people too.
I think it should be very possible for you to get a job there, if you have enough dedication and perseverance.
I understand,
I'll do try my best to get there soon
Hi Carsten, great story, I especially liked the part where you realised you needed some direction in learning. I'm curious though, how were you able to express this part to recruiters, was it in your cover letter? - >
"I have no experience, but please look at my personal projects."
Hi Nessa,
yes, it was part of my cover letter.
Basically like this:
I have experience with [insert your technologies] you can see a few of my personal projects that use these technologies on my website [your website].
Hi Carsten,
Ich bin auch aus Deutschland und finde deinen Artikel sehr interessant. Ich bin auch in einer ähnlichen Situation wie du damals. Ich arbeite als Ingenieur in einer Firma und lerne seit knapp einem Jahr Web Development.
Mein Job gefällt mir und es macht mir Spaß. Ich lerne programmieren aus Spaß und es ist immer hilfreich irgendetwas in der Hinterhand zu haben :D.
Ich möchte in dem Bereich (vorerst) nebenberuflich als Freelancer arbeiten. Hast du darin auch irgendwelche Erfahrungen? Vor allem die Situation in Deutschland.
mit freundlichen Grüßen
Seit 2017 bin ich auf einem ähnlichen Pfad. Mache zurzeit meinen fachfremden Bachelor, habe aber schon bei ein paar Projekten ausgeholfen.
Einfach als Kleinunternehmer beim Finanzamt anmelden, kostet nix und geht relativ easy, dazu noch ein Gewerbeschein und du kannst loslegen.
Mundpropaganda funktioniert immer noch am besten, imho.
Erzähl den Menschen davon, was du tust, was du gebaut hast.
Irgendwer kann immer Hilfe gebrauchen! Nach ein paar Projekten hast du dann auch die Balls dich richtig zu verkaufen.
Falls Du nicht lange warten willst. Kaltakquise!
Schau dir ein paar Webseiten von kleinen, regionalen Firmen an.
Suche nach Fehlern auf der Seite, überlege dir was man besser machen könnte.
Schreib ne Mail oder ruf gleich an und erzähl davon, mach einen guten Preis und du hast deinen Job.
Keine Firma will eine schlechte Webseite haben, aber wenn man googelt, findet man nur Agenturen, die ordentlich Kohle verlangen.
Es gibt unzählige Plattformen, die meisten kannst du in die Tonne kloppen.
Viel Erfolg weiterhin! :)
Hey,
nein da kann ich dir leider nicht wirklich weiterhelfen.
Ich hab nur mal irgendwo gehört das sowas viel über Gulp und Hays läuft, vielleicht wirst du ja da fündig.
Hi, cool zu sehen dass es hier ein paar Freelancer aus D gibt 🙂 Kleine Anmerkung zu den genannten Strategien: Vermittler fragen öfters nach mehr Jahren Erfahrung als es eine Technologie gibt, nicht wundern. Die suchen idR nach dem Tech stack den der Kunde nennt, mit genügend Erfahrung um dessen Problem lösen zu können. Teilzeit-Projekte sind da die Ausnahme. Was im Projekt am meisten hilft ist Verständnis für UX, wird aber selten explizit nachgefragt. Wenn du dir die lokalen Websites anschaust wirst du wahrscheinlich WordPress oder ein anderes CMS finden, wenn du React/Vue etc anbieten willst, such lieber über die Stellenangebote. Demo-Projekte sind gut um Techniker beim Kunden zu überzeugen, im Gespräch mit HR, Marketing oder Vermittler hab ich versucht das Kundenproblem mit meinen Worten (nicht technisch) zu beschreiben. Das hat bisher ganz gut funktioniert. Bei Fragen gerne hier oder per PN 🙂
Hi, fellow self-taught dev! I loved that you mention your mistake of having no direction, it can be dangerous for those who learn by themselves. It's crucial to have a clear focus.
I like to think of it as going on a trip: you'll never get to the destination... if you don't have a destination!