Programmer's Apprentice

I dropped out of school when I turned 16. It just wasn't for me. Computers were what attracted me. Maybe I was wrong, but it seemed to me that school was just a waste of time and my real education only started when I went home. I stopped respecting the institution and naturally dropped out of school altogether. Well, they gave me a bunch of diagnoses like "unteachable" and started treating me. The only thing left to do was to wait for it all to be over soon.

In the end I decided that the best thing to do was to drop out of school and go to study to become a computer scientist - a programmer. This may sound silly to those who live in the U.S. and Canada. After all, there you have to graduate from a college or university to get a degree in computer science, but in Germany leaving school to become an apprentice is commonplace. We call it the "dual system of secondary vocational education". This system is probably one of the main reasons for Germany's success.

Apprenticeship is closely tied to the history of the whole country. For centuries, if not millennia, carpenters and other crafts that play an important role in the region have used the apprenticeship system to pass on their expertise. This system is based on the idea that for some professions experience is more important than theoretical knowledge, and that it is much more useful to spend time working yourself, listening, observing and learning from the master.

In Germany, many companies take on apprentices, similar to the way companies in North America hire interns and on-the-job training students. If a company decides to hire you as an apprentice, your job is guaranteed by the state. If the company goes bankrupt, you will be transferred to another company the very next day. There is a whole network of companies in the country that provide reciprocal job guarantees.

However, unlike trainees in companies in the U.S. and Canada, students in Germany are treated as ordinary junior staff, which is simply cheaper (when I went to study, the salary was 700 marks or $ 400 a month), often younger than everyone else and about 60 working days a year is not available to attend classes at the educational institution. There they taught theory in each chosen profession, and after passing the final exam at the end of the three-year training program, students were given diplomas. Student apprentices (referred to as "pins" - "pencils") who successfully complete the training and pass the exam are given a job specialty.

I entered as an apprentice at a company in my hometown, BOG Koblenz. It was a subsidiary of Siemens, a company known for constantly hiring apprentices. For some reason, I remember very well one question I was asked during the interview.

"The number of lilies in the pond doubles every day. On the first day of the month there is only one lily in the pond. The second day there are two lilies, the next day four, then eight, sixteen, thirty-two, and so on. If the pond fills up on the thirtieth day of the month, on what day of the month will it be half full?"

I won't say it was very difficult for me.

Three other such students came to work with me at the company. The first day they gave us a tour of the company, which had 150 people working for it, which seemed like a lot at the time. During the first year, we ran various errands: 3 months working in the cafeteria, 3 months helping with accounting, another 3 months doing accounting and inventory, and 3 months working at the front desk. We were told that it was a kind of rite of passage.

During my first three months in the cafeteria, I quickly got to know all the employees, learned what kind of coffee or tea they liked, and made sure there was plenty of caffeine in their coffee. The ones I was most interested in worked in a small room in the basement of an unattractive building. I don't remember what their positions were officially called, but they essentially worked on their own, without any outside supervision.

Their work was different from what everyone else was doing. Most of the company worked in a little-used programming environment called Rosie SQL, which to my Demo Szene-grounded perception was killer (either Assembler and Pascal or nothing!) And these guys had Delphi. I just fell in love with it! Finally, the programming language had people, not machines, at the forefront. It was designed for instant results, experimentation, and rapid prototyping. Its library of window controls called VCL was way cooler than anything I had seen before. But most importantly, it was all run by Jurgen.

Jurgen was a long-haired, gray-haired rocker in his fifties who would have looked great in a gang like the Hells Angels. Jurgen was a rebel. He refused to abide by the company's dress code and was not shy about speaking openly to people when they were wrong. And in spite of all this, Jürgen was universally respected. I tried my best to get his attention, even borrowed his Delphi manual and learned it by heart between coffee deliveries.

In the meantime, I continued to go to school on Fridays, was twice on a two-week study leave and took my exams. I liked studying that much better. I felt like I was in my right place. Thanks to the fact that I was always hanging around Jurgen and his guys, I learned the basics of my profession. We also learned algorithms, "O" big and so on, even the basics of soldering and electrical work.

It turned out that my learning problems weren't really problems at all - I was just a practitioner. I couldn't understand or find solutions to problems I'd never encountered before. It was different in college. I knew what we were talking about, I understood the problems we were solving. I had been in those situations before. It was awesome! My self-esteem and self-confidence grew every day.

My plan was working.

After the first year, Jürgen took me over to his small, basement-dwelling team. It was probably the most important event of my professional career. Jürgen was a first class teacher. He created the kind of environment in which it was calm and easy to work all 10 years. It is this method and the same conditions that I am trying my best to recreate here at Shopify.

Almost every day when I came to work, I found a printout of the code I had written the day before with red marker marks: either my idioms weren't good, or I could have chosen better abstractions, or somehow hinted more carefully at the architecture of the system as a whole. It taught me not to show ego in my codes. There's always something to tweak and improve, so that kind of feedback was a gift to me.

I remember when we were developing software for GM. One dealership needed a faster system for estimating the value of incoming used cars - a significant competitive advantage. Jurgen gave the project to me. To deliver the project, Jurgen and I had to go to that dealership, a trip that would take all day. When the project was still in preparation, the company gave me money to buy a suit. After all, we were working for Siemens, and we needed to look appropriate.

The day before the installation Jürgen sort of casually tells me that he has to go somewhere on business, and I will go to the dealer alone. I was terribly upset, but somehow managed to make a good impression, and everything worked as it should.

This situation happened all the time. Jürgen knew my "comfort zone" and created situations where I had to go a little outside of it. I overcame these difficulties by trial and error, doing my job and directly applying in practice the theory taught at the school, and I did well.

My degree is not recognized in North America, so technically I am considered a high school dropout. My co-founder at Shopify has a PhD, and we like to joke that we average a bachelor's degree for two of us.

It's not the degrees that matter now; it's the experience that matters. That's what my apprenticeship and double major system taught me: the most important things in life are gaining experience and acquiring knowledge quickly. If you have these skills, you can create incredible situations for yourself and emerge victorious from them time after time.

Perhaps the most important thing that my degree program gave me was a good starting point. If I had gone to university to get my PhD like my coed, I would HAVE still been finishing it. Instead, at the age of 32, I've been getting paid to develop sophisticated software for almost half my life.

This is a very serious advantage, and thanks to the dual system of secondary vocational education almost any student in Germany can get it. According to the latest figures, the apprenticeship system is offered for 356 different professions and occupational fields, from hairdressers and furnace builders to various computer programming specialists. For practitioners or kinestheticians like me, the apprenticeship program is a real chance for success.

For me, it was the perfect environment. I learned a lot and am eternally grateful to fate that I chose this particular path. I wish students had a similar choice in countries that are trying to reduce high school dropout rates and create jobs for them.

Author:  Toby Lutke, co-founder of Shopify