You probably came here to learn something about me. Well lets start it!
A shorter list of my milestones can be found at my milestone page. (Probably not shorter but more bullet point like)
You want the long version? Here it is!
My first attempt with programming was with 16. However, I didn't really get into it and slowly crawled through the first 20 pages or so of a book for java 6, which I got from a friend. After this I stopped and never touched it again.
After finishing high school I wasn't really sure what to do in the future. I had the dream of doing “something” with computers, because I was really into gaming and stuff, but I decided to take a year off and to something useful for humankind, just to be sure. After spending a year with explaining to old people how to send an email or removing some adware or other bad stuff from their pcs, I decided to spend a fortune amount of money on a private university to learn what I dreamed of: Gamedesign.
When I started studying in 2016 I was already 20 years old. I was a bit worried since some of my fellow student already had plenty of experience with programming. But it turns out that the guys which were the loudest actually weren't that great. Also, it turns out that game-design was way less programming and way more actual game-design. Our studies on this were very high level and just scratched the surface. Most of the stuff I learned regarding programming was mostly self-taught. During my studies I worked with c# and the unity engine, which kinda taught me object orientated programming, but unity also encourages you to a lot of bad stuff like singletons and stuff which “just works”. I also did some stuff with Unreal 4 but only used the visual node editor. No c++ here.
Beside the programming at university I also started with java programming in 2019. A bit more than two years after I started studying. My first project was a discord bot, which I would rewrite several times in the future and which actually taught me a lot about abstraction, what interfaces and abstract classes are, but that was way in the future. I shut down this bot in 2022 since maintaining it became such a pain, and the overall quality was nothing I could defend.
After 5 semesters it was time for the internship semester.
So it was time for applications to strange people \o/ But first it's time for a recap what I had learned until now, because this would be what really matters (I thought).
- C# with unity style – Not really the stuff to be proud of
- Java – Just started that. I would call it solid basics
- C++ - I know that it exists...
- Python – completely unknown
- SQL – Uhmmm that looks like witchcraft.
Style: Object orientated programming was only topic in a very short course and not really taught actively. Also, our projects were mostly focused on “please just work” and the code was never revised by any tutor, so I did what I thought would be good (It wasn't). So general constructs like abstraction with interfaces or abstract classes were pretty unknown and only used by accident.
Databases: I have no idea how these work. Seems complicated so I skipped it.
Time to work
When it comes to applications I didn't have much self-confidence, but one of my professors reached out to me because he thought I would have the potential to do something different. He pointed me on a data science company which we visited when we learned stuff about AI (Pretty much the best module we had). I didn't have any contact with data science till this moment, so I thought it really could be interesting. And boy it was…
The internship lasted one full semester with around 30 hours per week. In the meantime I also jobbed 20 hours per week at the golden M to pay my rent and stuff, since it was an unpaid internship. My first task was to use some python framework and do some data transformation. Just one problem: I never used python and only heard of it. So I just grabbed one of my random ebooks the weekend before my internship started and read it. 200 pages of starter stuff. It kinda worked, and I wasn't this clueless on my first day. But since I was a game designer we thought it would be better to stay in my domain for the start, so I worked on a 3d dynamical generated data representation in unity. Beside my python script I wrote at the start to transform the data for the representation I didn't had much contact with the company topics.
But since the prototype was done after some time we needed some new work for me. And now you guess what it was: A Database. The only topic I really tried to avoid the whole time. Now I needed to adapt to this new world and started with learning SQL. It was a long way and I started to love and hate it, but in the end only the love stayed. I also dived more into python. My constant companion was the database and python documentation. It was a tough journey, but in the end it paid of and I got and job offer from the same company to join them as a working student. I joined them and was finally able to ditch my old part-time job and do some programming.
During my work I also improved my java skills by reading some books and a bunch of documentation. And also a lot of practice. Most of my projects were rewritten after some time. I also started to work more with databases in my free time, which really helped me also with improving at my work. Beside my discord bot I was working on I started with programming minecraft plugins, which made my love for games stay awake and I still had the chance to do some kind of game-design and game programming. All this just to decide that I want to stay at the data science company and don’t want to develop games at all. So I finished my bachelor and started working full time in the company where I still work today.
So how did I get here?
- A lot of private programming in my free time. Not related to my studies at all. In some weeks I spend 20 hours or more on programming of private projects. This practice allowed me to make a lot of mistakes and just try stuff.
- Listen to people who know what they do. I was lucky and had some friends which were way more experienced than me. These friends told me when I was doing bad stuff and also send me helpful links to documentations which taught me a lot of best practices.
- Ask when you have problems
Programmers tend to just try until it works and often take the first working solution. Sadly this solution is often not the best working solution.
- Don’t trust YouTube
Most YouTube videos are bad when it comes to programming for several reasons. Most motivated people are the newest and don’t know what the best practise is. You can’t correct mistakes in videos and wrong videos are online for ages.
- Use official sources
If you have a problem with java read the java documentation. Same for python or your database and basically everything else. All these languages and applications have very good documentation, which will help you to improve your skills. There are also a lot of good books out there, which will help you to learn new languages or using databases.
- Find a buddy for code review
Find a friend. Ideally this friend is more experienced than you, but it can also be one with the same experience. Review each other code and look for pitfalls or silly mistakes and discuss general design choices. Good software is 30% writing of new code and 70% rewriting and thinking about the implementation.
The most important skill of a programmer is googling. We don’t know everything, but we know where to find it.