The other day, my friend Sam McEwan published a post “How computer science saved my ass” on his blog. In this post, he explained how he ended up doing computer science and elaborated on both the good and the bad parts of his university (and in general overall schooling) experience.
When I read Sam’s blog post, I immediately thought: “Wow, I had a very different experience” and I wondered if it was better or just different. To help myself reflecting my experiences better I wrote up some of my thoughts and opinions in this post – it’s kind of a response to Sam’s post.
One of the starting points Sam was looking at was the theory of universities’ relative ineffectiveness at preparing IT students for the world. I have a MSc degree in Maths with a major in Computer Science from a German university that I’ve completed in various steps from the mid-/late 1990s onwards.
Before starting university, I went to a high-school in a 25,000 people town in the center of Germany. Back then, university entrance required you to do 13 years of school, year 11-13 in what’s called a ‘course’-based system with a lot of electives and options to focus. I never was an uber-excellent student, I usually had good grades but I was sensible enough (or plainly lazy) to put in only the minimum required effort to get away with achieve grades being equivalent to As and Bs in the New Zealand system. I also managed to get away with a setup of mandatory and optional courses to achieve my high school graduation with the minimal amount of courses (I had lots of free time and fun during high school, while some of my peers spend 40hrs a week at school, ha!).
My ‘high school majors’ were Maths and Physics and I truly got lots out of it. There was ‘Computer Science’ available, but in the early 1990s, that pretty much dealt with using spreadsheets and word processors as well as maybe some BASIC programming. Boring.
However, Maths and Physics was exactly what I wanted and also excelled in. Besides the subjects being appealing as such, looking back I find that I was heavily influenced by the two teachers in each of those subjects throughout that particular period of three years. Both my Maths and Physics teachers back then probably had the biggest impact on developing my academic interests and my further choice of studying Maths.
It’s kind of hard to describe what exactly they did right or better than so many other high school teachers. If I had to pinpoint it to one thing only, I’d probably say that my Maths teacher was seriously excited by Maths and the mechanics of it himself and not just ‘teaching Maths’ (He’s a also a Magician and the other subject he’s teaching is Physical Education, a quite diverse setup). We learned awesome stuff outside of the mandatory curriculum and I developed a serious appreciation for formal geometry. My Physics teacher was a very laid back guy who was teaching Maths, Physics and Computer Science and he’s a hobby astronomer – we spent about 6 months learning about Astrophysics, which was awesome. The learning environment in both those major courses was excellent.
Funny anecdote: In German high schools, it’s very common that in Years 11-13 your teachers would either use the formal “Sie” to address you with then either your first name or even your last name, like “Herr Koenig”. I guess it’s meant to make clear that in those last years of school you’re considered an (nearly) adult. The other option is for the teacher and the students to agree on everyone using the informal “Du” and only first names. In both my Maths and Physics major courses that was the case and it created an awesome, informal and friendly learning atmosphere.
University – Year 1
When it came to university subject choices, Maths seemed to be the way to go for me as I tremendously enjoyed it during high school. I went with a combination of Maths and Computer Science subjects with (at this time) the idea of becoming a Mathematician. In the first year my courses were Analysis I and II, Linear Algebra I and II as well as Foundation Computer Science I and II. I passed all of them but Linear Algebra II (which I luckily didn’t necessarily need and didn’t even try to re-sit; I just needed 3 out of the 4 Maths courses — you see there’s a pattern in me making academic “minimal effort” choices here :-)…).
I have to honestly say that I struggled throughout the first year. In high school, we obviously performed Maths on a reasonably low level compared to all the formalities that come with studying Maths at university. Computer Science however was awesome. Both lectures dealt with and covered programming, fundamental structures one would need to do programming and algorithmic work and delivered first experiences in thinking about Software Architecture. To pass Foundation CompSci II we had to specify and architect an Ambulance Scheduling System for the city of London. We didn’t have to implement the actual full solution, but it was an awesome experience in regards to what’s involved with building a real solution.
University – Year 2
Around the first term of year 2 it became clear to me that I wanted to shift focus towards Computer Science. Luckily, the university I attended had a very nice loophole in their rules that allowed me to count all my CompSci courses towards my Maths degree so that I didn’t even have to formally change degrees. And to be honest, I still enjoyed a lot of the Maths courses. They closed that loophole right after me…
One of the major reasons for me to shift focus was a CompSci course that I took in the first term of Year 2. It was called “Practical Computer Science”, but it was really all about formal models of theoretical computer science: formal grammars, regular expressions, state machines, O-notation, etc. This particular course was taught by the same professor who was teaching the instances of Foundation CompSci I and II that I attended in the previous year. Practical CompSci was a much smaller group (as it was only a mandatory Year 2 course for us handful of Maths students and an optional Year 4 or 5 course for the people who were enrolled in the “Business Computing/Commerce” programme). The professor teaching this course did an awesome job in winning me over. Very much parallel to what I experienced in high school, I can clearly pinpoint my further academic and career choice to a very talented individual teacher who sparked my interest in a subject and made me wanted to further study it.
University – the rest of it
It’s a quite straight story going forward: I started to work part-time for my CompSci professor from essentially the second term of Year 2 onwards. The work was twofold: Academic support (I held tutorials accompanying his lectures, corrected the weekly mini exams etc) as well as a Student Researcher in multiple of his research projects at the time. My research work also involved a lot of Java coding, so I had a chance to pick up that (back then) reasonably new language. His department essentially specialises in the science behind Software Architecture — that explains quite a bit my ongoing interest in it, even today. I took more and more CompSci courses and seminars and got away with the minimum required in Maths (yeah, my ‘optimisation’ again). I also took up Philosophy as a minor to further my interest in some other academic area.
My further Maths courses were things like: Statistics I, Numerical Mathematics I, II, III and IV, Common Differential Equations I and II and a few others I struggle to remember. A lot of them actually worked really well in combination with CompSci where I went deeper into Architecture, Formal Methods and Technologies of CompSci, Machine Learning, Simulation and Requirements Engineering.
Morphing into employment
I finally wrote my 200-page thesis at the department where I was studying and working beforehand quite a bit. It was a very interesting mix of theory and practice. My topic was to investigate a reference architecture for rich internet-based enterprise web applications. At the time I was already working in a proper job and my studies were actually a bit on the back burner. Why, you ask?
In 1999, Europe was full of internet startups offering and burning lots of money for web stuff. That’s how I got sucked into the web — I worked at a failed “travel search engine” startup (sushi, pool table, expensive paintings on the walls and massages anyone?) and then got into a proper job at a software/web development firm. Initially that was all kind of part time but when I had finished all my course work at uni, it sort of morphed into full time, promotion to a lead role at that firm, making good money and having lots of fun. This company I worked for after the failed startup was a very interesting place to be at. It’s where I met AgentM and where I could right away apply my university knowledge.
Again I was lucky. The owners and directors of the company gave me incredible amounts of freedom and quite a bit of a carte blanche to do whatever I deemed to be necessary to contribute to the success of the company. Interestingly enough, in hindsight I understand many of the decisions they took resp. had to take back then much, much better now that I’m on my own running a small company. My role there morphed into a lead developer and architect, actively driving and closing consulting gigs all over Europe and promoting us out there in the community. That’s kind of where the circle closes, as some of the outcomes were this blog, me attending and speaking at conferences as well as Diane and I traveling to Australia and finally settling in New Zealand. I actually think that both the experience I gained there and the freedom and success I enjoyed contributed to me nowadays pretty much being unemployable with most ‘average’ companies and me rather going freelance and doing my own thing. I do see that as a very positive thing, I clearly don’t seem to be made for a corporate career and I don’t miss it.
What’s the lesson to take?
How does all of this relate to the original problem of universities not producing CompSci graduates that are ready for the world? I have some theories:
1. First of all: It’s not the universities’ problem, nor should it be
Universities are academic institutions. They produce academics. It’s up to each and every individual to take the knowledge they get in lectures and seminars and do something useful with it. That means using a programming language for a hobby project, or playing with various database systems to learn some more. It doesn’t mean to only attend the lectures and pass the exam. That’s not enough anymore these days.
2. Everyone needs a teacher or mentor to look up to and to learn from
I had two excellent teachers in my high school majors Maths and Physics and I was lucky enough to reasonably early meet a professor at uni who was able to spark my interest in a certain area of CompSci. I’m aware how lucky I was and I’m obviously glad about it. There are many people out there who haven’t been that lucky and I’m of the strong opinion that governments seriously need to invest into their education systems to weed out bad teachers and get the really good people into teaching and sharing their knowledge in the first place. Looking at what one could earn as a Maths, Physics or CompSci high school teacher in New Zealand, it’s a quite sad state of affairs, this is unfortunately also true when one looks at academic/tertiary institutions.
3. If you’re in uni NOW, get work experience NOW
If you come out of your CompSci degree and your only work experience is packing shelves at Countdown, that’s bad. If I was to hire you, I would seriously wonder why that is and your application would frankly end up quite far down in the pile of CVs. I acknowledge that today’s employment market is very different from what it was maybe 10-15 years ago. However, looking at some of the excellent reasonably recent uni CompSci or Media School grads I’ve met, they all have one thing in common: They were interested enough in what they do and they did something meaningful with their spare time. Among them are people like Sam himself, Tanya (who I had the pleasure to mentor for a while) and Catherine; and there are numerous others.
Look at Indy Griffiths from Dunedin for instance. He’s still in high school and has recently launched his first web startup Parent Interviews. Coincidentally I know that there’s an incredibly good and highly motivated CompSci teacher at his high school — absolutely matches some of the patterns I’ve described.
Looking at my own CV, it’s seriously broken from a formal point of view. On paper I went to uni for 9.5 years because I was enrolled for something like 3.5-4 years while I was working full-time and only occasionally working on my thesis. I don’t care, I both had an awesome time and I got the most valuable experiences I can imagine. Actually a lot of friends of mine who followed the ‘normal’ way of going through university in Maths and CompSci ended up being unemployed for a significant amount of time after their graduation (along the lines of 3-12 months) and had to write hundreds of applications. The common pattern was: they haven’t gained any meaningful practical experience during their uni time.
I strongly think that universities should not cater for the the requirements of the job market of the day. They’re academic institutions and they should continue to teach concepts. How those then can be applied to web development or app development or corporate IT is a different story. I feel that if you wanted a less academic tertiary education one could attend a course at a technical institute such as Weltec, NMIT or a TAFE in the case of Australia. In Germany those institutions are or used to be called ‘FH’ (Fachhochschule).
Again: Don’t blame universities for not being good enough or not producing what the ‘market’ needs. Be motivated, go the extra mile and use your knowledge as early as you can. Find inspiration through teachers and professors. Go out there and do cool stuff! If you’re a company, offer appropriately paid jobs and internships for students. That’ll help them to gain experience and avoid them having to stack shelves in the supermarket. Also – if you treat them nicely you’ve got a competitive advantage when it comes to hiring someone.
I don’t want to deny that there are bad lectures and bad lecturers at universities. Multiple-choice exams should not be allowed at all. Never. I never sat a multiple-choice exam during all of my university studies. All the exams were either written exams (2-4 hrs) or oral exams along the lines of 30-60 mins. You basically needed to know you stuff really well.