Photo by Arnold Francisca on Unsplash
My Journey: How To Self-Improve As A Developer
Learnings From Over 20 Years
Table of contents
At recent coding contests, I consistently scored within the top 1%.
How do I do that?
There are a few things that helped me which I am going to share with you in this article.
The Beginnings
It was in the early 2000s. I was a kid who had just seen The Matrix for the first time on TV. It was also the time of the Dot-com bubble, even though I was totally unaware of such things. People were curious and enthusiastic about this new thing. This new thing that entered into the world more and more: Information Technology.
In that time, my father owned something special. Something that not everybody had back then.
A computer.
Each day, when I came home from school, I spent time learning how to use it. Internet access was expensive and limited, so I relied on books. My father had a book about programming with QBASIC. That became the first programming language I learned.
PRINT "Hello World!"
... the feeling of power. The wonder of creating something out of nothing. The amazement that the computer does what I ask him to.
I spent many hours reading the book. Typing the code examples into the machine, hoping I made no typo, and trying to understand what the code does.
Around the same time, there was another movie which I saw on TV: War Games.
It featured an artificial intelligence that talked to its creator and played Tic-tac-toe. (Spoiler: It also almost destroyed the world as well.)
Of course, little me had to try and recreate the artificial intelligence from the movie.
Well... I failed. I wasn't able to write an AI that could do much more than greet me. It was frustrating. I should be thankful - it could also have resulted in an AI like in the movie.
But here's what matters:
I enjoyed the process of learning. I was hooked. My goal was to create AIs and design games. One of the first programs I coded was a pong game. The reward of playing a game I coded myself was great.
So what's my advice to you?
For self-improvement as a developer, you have to put in hard work. Find something you enjoy doing and it will be less hard work.
Coding games can be pretty rewarding. Start with something simple and then work your way up. After you finish coding your game, reward yourself by playing it. (If you're like me, you might also get lost in the joy of playing while only half-finishing the project.)
It still took me many years until I was able to code a more complex game.
The Wanderings
When the Internet became more accessible to me, it was awesome.
It was also quite different from today. Loading images was slow. Forget videos. Content was sparse. Especially if you were looking for programming tutorials in German like me.
The next languages I learned were C and C++. I bought a programming book about each of them and started to understand more and more concepts about coding. They were more difficult compared to QBASIC.
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
It does the same as the previous Hello World! program but it looks more intimidating. C++ (like Java and many others) can seem complicated. Yet, I continued studying because I read you need C++ for building games. When the book ended without telling me anything about how to create a GUI, I was disappointed.
I spent many years trying out different programming languages. A lot of that was exciting but I never found the perfect language for me.
While I was in middle school, my focus shifted from AI and games towards hacking and malware.
@echo off
shutdown -s -f -t 0
That was fun for a while, until I swapped roles.
When my focus shifted towards building a gaming website, I was the one who got hacked regularly.
SELECT * from users where id = $id;
Nobody told me how to avoid SQL injections, XSS etc.
I was in an iterative process. Getting hacked and fixing security vulnerabilities. In the end, my website was somewhat safe. So, thanks, hackers!
I learned a lot from my projects. It was also a time of wanderings because I tried out many things without anybody guiding me. Asking and connecting to experts would have helped a lot.
This leads me to the following advice:
Try out many things and find someone to guide you in the process.
It's easier to learn if you have someone to talk to who is already an expert in what you would like to learn.
The Studies
When I enrolled at university, I already knew how to code decently.
Many developers didn't study computer science and they don't need to. You can learn many of the same things in bootcamps or online courses.
University was beneficial to me in several ways:
- getting me hooked on AI again
- building a better mathematical foundation
- learning how to apply the scientific method
- teaching me how to organize software engineering projects
- letting me meet and connect to incredibly smart people
So, what's the finding?
There are things you won't learn on your own. Following a course helps.
Enroll at a university, go on a coding bootcamp or join an online course to learn in a structured way.
The Workmates
Last but not least, let's talk about what I learned from my development jobs.
To be honest, I learned a lot.
I was coming fresh out of university. Typical work processes such as Scrum were still foreign to me. Plenty of new programming languages and technologies awaited me. Great programmers, much more experienced than me, showed me best practices and tricks. Just exchanging ideas every day taught me a lot.
Many of my colleagues are experts in their fields and are passionate about their work. Whenever I'm stuck with a problem, I know whom to ask. When I'm curious about new technologies, my colleagues often know something helpful.
Connect with your colleagues at work to learn from their expertise.
Conclusion
In this article, I collected the following piecies of advice:
- For self-improvement as a developer, you have to put in hard work. Find something you enjoy doing and it will be less hard work.
- Try out many things and find someone to guide you in the process.
- Enroll at a university, go on a coding bootcamp or join an online course to learn in a structured way.
- Connect with your colleagues at work to learn from their expertise.
What do you think about my journey? What would you suggest to self-improve as a developer?
This article was published as my #week2 article for the Hashnode #4articles4weeks Writeathon.