We're out of beta, we're releasing on time.
So, this is it. I am officially a Specialized Computer Scientist for Software Development. Today is the last day of my “job training”, a three year period with too much school, but too little things I learned. At least in school.
For those of you not living in Germany: A job training is basically “the same” as a study of computer science, with less theory and more practical experience. Most of the time, you will find yourself working in a company like everyone else does, with more stuff to do, like writing weekly reports of what you have done and what you have learned. Sadly you will not learn too much if you are living like I am… I started the job training three years ago, and although I was young (well, I am still young, but you get the point), I already did a lot of coding in my spare time. I used to write C, a bit of Pascal/Delphi and PHP and I was pretty good at writing code. If you look at the list with things you will learn during that job training, that is pretty much all: writing basic code. Of course we had some lessons of business educations, but the main part really was writing basic code.
With simple code, I am talking about code you would never really use in production. The fact you can start a job training without even knowing how to turn on a computer is really a problem here. We started learning C at a very, very basic level. The very first thing was writing a hello world. We used four days of school for that.
Instead of looking at the source of
stdio.h and reading the comments (or reading through the documentation) the teacher gave us a sheet of paper with “important functions” we can use. This might be okay while doing the first C work, but not all the time. But in fact, we got sheets all the time and never “got the chance” to really read some kind of documentations. I asked him why, he said it is because some people might not understand enough English to read through the documentations.
Software developers without proper English knowledge? Will they write German comments? Yes, we did write German comments. Everyone did, except me, and it was fairly hard to prevent myself from getting angry whenever I got some points deducted because of my English comments. Yes, a teacher gave me less points because my function names and comments were all written in English.
But do not get me wrong here. I am not saying that all the stuff was pointless and stupid. In fact, it was not. We had a lot of people in our class who were not able to compile anything before they started the school, so it was absolutely okay. But for a lifeform like me it was… very boring. Surprisingly all teachers (except one, who was an exception I will not talk about here) did not mind if I was… busy doing other stuff in the lessons. In fact, they were really happy about that because doing stuff is better than doing nothing or even distracting classmates.
Oldie !== Goldie
We started learning coding with C. Not C++, good old C. So of course, we did not learn anything about object-orientated programming in the first year, which was fine for me because learning everything in a single year could be a little bit hard for the newbies all around the classroom.
In the second year, we started with C++. Yay, classes! We got some basic introduction to C++ and object-orientated programming and that was absolutely fine. Although most of the people in the class will not know what “static” actually means, I think it was a pretty good start in learning something huge.
Now guess what we did in the third year. Learning more OOP skills? Nope. Graphical user interfaces? Nope. A bit of framework hacking with .NET or something? Nope.
We did some PHP. You could argue web development is important nowadays, and in fact I am working as a web developer. It is important, yes. But there is one “small” problem: The teacher teaching us PHP is a bit older than you might think. He is 57 years old and he learned PHP in late 1990s. So we learned… PHP 3. Do you remember PHP 3? No? Good for you. Imagine the worst pain you can imagine and add 10 pain-points to it. So we learned OOP a year before to now do PHP 3? Win!
Of course, nobody talked about web security and the teacher did a lot of funny things like unprotected file uploads, mysql injections and other fancy stuff. Is this our future? A class full of “software developers” knowing PHP 3? Writing insecure web applications because they learned to write insecure stuff in school? Honestly?
A teacher with old knowledge is one thing, a teacher with old knowledge and a heavy resistance to advice is another. I tried - and I tried to be friendly, honestly - to tell him “heh, that is a little bit insecure. You should do XYZ or your web application will get hacked this evening.”. Guess what? He hated me, called me a dickhead and gave me a bad mark. Oh well. All in all my exam marks were good enough to get the best mark in most of the classes so I really do not care. But now we have 20 people who finished the class with PHP 3. Good thing they know the teachers knowledge is a bit… deprecated and they will look for some documentations if they want to do something.
But this class is one of many finishing every year. Terrifying. And given the fact the lessons are not for free, teaching old stuff is inacceptable.
Enough ranting for this post, I guess. :) School was only on a single, sometimes on two, days in the week, so the other days were fine as I was in the office to actually learn some stuff and do awesome projects. I could write a lot about that work here, but lets summarize: Web development with all its downsides. The communication with customers is sometimes a bit hard, the frameworks you have to deal with are sometimes a little bit bulky and the languages you are working with are sometimes creepy enough to make you scream around. But it is awesome.
As a developer, who is fighting against some really hard opponents (the Internet Explorer for example (please do not rant around - sometimes I am just kidding)), you might get into some days just thinking “wtf am I doing here?” but at large it is one of the best parts of the computer world you can work at. The internet is a place for everything and you are really a huge part of it if you develop stuff running on the internet.
My boss warned me already in the job interview with words like “You will not learn anything software development-related, but you will learn some meta skills”. And he was right. Well, I learned a lot new about software development, but that is just because I am doing so much stuff in my freetime I just have to “know” the new stuff. But I learned a lot of soft skills like not pissing customers off and some economy related stuff.
There is another thing I learned! Before I started the job training, I basically lived in my own world developing in my basement and not communicating with others. Except for some IRC dudes, of course. During my job training, I talked with a lot of people. Coworkers, classmates, people doing the same job training all over the country. And I realized there is more than a job training you have to do to be successful in this job. It is all about the freetime. Yes, your holy freetime you usually would not spend for something related to your job. But being a good developer is not a job, it is your life. You will not survive in a world like our digital empire without spending a huge amount of time in it. You have to read news articles and documentations at home and you have to write software at home. 8 hours per day software development in the office is not enough if you want to be(come) a good software developer. I am a person who is doing tons of stuff. My whole day is basically coding - with interruptions by meals, driving around and on some days even a bit of sleep. And just playing around with a lot of technologies taught me a lot - working on other projects kept me busy and drilled. And I am pretty sure I would not be in a good mood anymore if I were not doing all that stuff. I just love it.
Update from 2018: Please read this newer blog post about spending your free time.
The last three years were awesome. Thanks, world. Let’s start a new chapter in my life!