The German Programming Apprenticeship – A Review

After nearly two and a half years of going through a programming apprenticeship here in Germany I believe I’m somewhat qualified to talk about it. But before I can talk about my experiences, I have to explain what it actually is what I’m doing.

The System

In Germany, below the usual academic education stuff, there’s a system in place for producing skilled craftsmen. They call it a “dual system” because the task of educating you is divided between a specialized school and a company. There are exceptions, but usually you’d spent about two weeks at the school followed by four to six weeks at the company – and it goes on like this for two to three and a half years, depending on the kind of profession you’re after (It’s three years for programmers, for example).

It’s important to understand that, while this an official system and regulated by the state and all that, the company is the key element. You’ll have a pretty normal employment contract with them, and you’ll get paid by them (in theory at least, I’ll come back to that later on).

The Profession

As I said, the system I just described was put in place for educating “skilled craftsmen”. It basically goes back to the guilds of the middle ages – it’s much older than the nation state called “Germany” itself.

Of course, back then, the demand for programmers and CNC machine operators wasn’t that high – mainly because computers and CNC machines haven’t been invented yet. So, these and some other modern professions were later shoehorned into the existing system. Programming-related professions in particular joined the club only very recently, in 1997.

Now, let’s get to the name of the profession I’m currently being educated for: “Fachinformatiker für Anwendungsentwicklung”. That’s hard to translate, because it makes no sense whatsoever. I’ll try and start at the easy parts:

“für Anwendungsentwicklung” means “for application development” – fair enough. “Fachinformatiker” is harder to translate – “Informatiker” is German for “computer scientist”. Of course, it doesn’t make any sense to call non-academics “scientists” – so they pre-fixed it with “Fach”, which means “trade” (as in “by trade”). So, I’m going to be a “scientist by trade”. Yeah. Makes sense. NOT.

That might seem like nitpicking, and it is, in a way. However, I think the completely made-up and useless name hints at the deeper truth that nobody knows what the hell they are doing here. We are obviously not computer scientists or software engineers, but we’re not exactly simple programming monkeys, either. So, we’re either bad scientists or expensive code-monkeys, your choice. Great.

The School

Now, that we have established that the concept makes no sense, let’s look at the implementation, maybe that’s better. I’ll start with the school.

The schools used for the “dual system” are specialized – my school for example only handles the programming-related professions and electricians and everything else electrical and electronical. There are other schools only for cooks and related professions, schools for guitar makers, et cetera.

A school only for programming and electronics might seem like a lot of fun, but – spoiler alert – it isn’t. The problem is self-inflicted.

You see, the “skilled craftsman” kind of education is, of course, lower than the academic spectrum. To be frank, it’s for people that are too stupid to go to a university. Germany has a three-tier school system, and the courses target those coming form the middle and lower tier. That’s fine, of course. As a society, it makes no sense to deny a highly talented guitar maker the chance to make guitars, just because they have problems understanding complex numbers or something like that.

But it doesn’t work that way for programmers, neither in theory nor in practice. For once, of course, you don’t have to be “too stupid for a university” to do an apprenticeship. Academia might just not be your cup of tea. Second, there is a myriad of ways to get expelled from a university – maybe you were doing fine but cocked-up that one test and now you’re out. (Well, you’d have to do that at least twice in most cases, but whatever.)

The result is that pretty much everybody doing a programming apprenticeship has some form of academic experience. That also means they come from the top tier of the German school system. And that’s a vicious circle – if, as a company, you can get university drop-outs for an apprenticeship, you’re going to take them – and not the guys straight from school for whose the apprenticeship system was designed.

The result of that is extreme boredom at the school. The courses target people who left school after nine or ten years – but most of us were in there for thirteen years, and did some semesters of computer science afterwards.

You could say it’s our fault – which is part of my point. If you’re a German university drop-out, don’t be as stupid as I was and do not go for an apprenticeship!

But it’s not exclusively our fault. All of this must have been clear in 1997. It’s a stupid system.

The Company

But the school’s only a small part of the story. It’s no fun and useless, but most of the time you’ll be at the company, anyway. That should be great, getting your hands dirty on production stuff – no theoretical bullshit, just the nitty-gritty of real-world programming.

Well, yes and no. One important thing to note is that, even though the whole system looks like it’s for the benefit of the people getting educated, it’s mostly for the benefit of the companies “doing” the “education”.


For one thing, they can pay you next to nothing. I’m not legally allowed to talk about my salary – but I am allowed to talk about what the German state pays me. It’s around 200 € a month. Now, Germany’s social security system is fine, but it’s not a paradise. This money is not for filling up my Bentley once a month – these extra 200 € are deemed absolutely necessary by the state for me to exist.

And while it looks like the German state pays me, they do of course actually pay my company. The social security stuff here makes it possible for my company to pay me as little as they do. I’m not the one making the money here.


You might say that a small salary is okay, because it’s basically an education program. We’re not real workers, right – we’re more like students. And students don’t get payed a lot either, right?

Well, yeah – that’s the difference between theory and practice. In theory all of that is right. In theory, the company invests into your education. In practice, there’s a conflict of interest. I’m more valuable to my company if I can do real work. They can re-label that as introducing me into the practice of my profession. They win, I lose. It’s as simple as that.

Surely, there must be good companies, too!

Yes, I’m sure there are. But they don’t need that stupid apprenticeship program in the first place. They wouldn’t gain anything from it. The system only makes sense for companies that exploit it for profit.

The Result

Okay, the school’s bad, the company’s probably even worse – but after the apprenticeship is over, you’ll at least have a nice and widely accepted certificate, right?

Well, you see, that’s maybe the biggest problem of the whole program. The certificate is worthless.

Anyone doing a hiring decision based on that certificate is stupid. I don’t want to work for stupid people. You can, of course, hire people like me because we have 3 years of experience in the industry. That experience is real – but that’s not what the certificate is about. The certificate is about all the parts of the system that don’t work for the profession of programming – the bullshit school education, the worthless “final project” with a ten-page report at the end, and a multiple-choice test. It’s worth the heat of combustion of the paper it’s printed on. It’s pathetic.

The Rating

1/10 – wouldn’t recommend it to my worst enemies.

Leave a Reply

Your email address will not be published. Required fields are marked *