First off - if i was looking to hire, the answer would be

No. A brain and an attitude are the only pre-requisites.

About 18 months ago i decided to apply for an MSc in Computing at Imperial College, London. It's the best thing i've done in my short career programming.

I'd fought against the urge for post-graduate education for a couple of years because, well, i wasn't the academic sort. Not at this level at least. I didn't care for formal logic and proofs and such. I wanted to make things. I wanted real-world projects and constraints, because they were what made me tick. And anyway, if you're a good coder, you're a good coder, right? You teach yourself.

I'd taught myself upon leaving my bachelors degree (Chem Eng). I'd been freelancing on and off for about two years, but my formal programming concepts were messy, confused. I knew i could code, but i knew i was missing guidance - what technologies to pick up, which books even. So i thought - enough hacking, time for some proper stiff upper lip formal programming kicks.

I walked into Imperial 20 days before the term was supposed to start. They'd stopped taking applications 4 months ago. They were like, "you want to what?", and i was like "YES. LET ME IN.". I think i spooked the guy because after some mumbling he was all like "ok, see you in a couple of weeks" just to get me out of the office.

When I showed up I was afraid. Very afraid: I had a bunch of previous clients and a bunch of juicy contracts lined up. Now i had this full-time course on my plate and i'd only previously done web programming and matlab. We walk in and on the first day my tutor says,

don't work. if you work and study here you will fail. we are that hardcore. people think they are hardcore, but we are imperial. we are complete xxx.

Or words to that effect.

Gulp.

Imperial stuck true to their word. Some courses were taught at a frenetic pace (all fundamental SQL syntax taught in 2 hours - i mean pretty much everything) and pushed me to the limit, even with a couple of years of web development experience to lean on. But in the end i managed to pick up easily the best commercial work i'd ever done, whilst doing the whole academia thing. It was tiring. Nights were short (add to the commitments a 1+ hour commute to college). But in the end it was worth it.

There's some stuff you just won't force yourself to do. You won't force yourself to learn Prolog from strict first order logic fundamentals. You won't teach yourself finite state process models or assembler programming (probably. unless you're wozniak. or plain bored.). You sure as hell won't teach yourself to formally prove the logic of your code is correct, because you don't need to prove it to anyone. But doing all this informs you as a coder. I'm not saying i implement all the techniques i learnt - what i'm saying is i've got perspective on my code. For example, stack structures are fundamental at all levels of coding - but what better way of ramming home memory allocation concepts than the assembler stack pointer?

Our best tutor was Will Knottenbelt. He would belt out C code infront of us and debug live to reinforce concepts. I found out the practical approach is always the best to learn programming concepts. Darlington was also great - he's a long-standing contributor to the design of the Haskell language, which is what he taught us. He also has a 80 node fujitsu AP3000 super computer poking out of his office. Not many academics can say that.

OK so today i got my results through and it appears i did the near impossible - work commercially on a bunch of software projects whilst doing the full-time MSc thing. The nice folk at IC even let me do my dissertation in Ruby on Rails, which was great experience for me:




These results tell you that i make a pretty lousy sysadmin, but a pretty good high-level coder. And that i can code OK in real-time (labs). And that i can juggle. Juggling is pitching for projects 10 days before your finals and working off your tuition fees as they come in. Juggling is on all the job adverts so i guess juggling is in.

So that's it - MSc done and dusted and after all my apprehension to go strict on my code it was worth it.

Did it help me get my current job? The answer is no. Not one of the questions on the entry test would have been answered through knowledge picked up solely through the MSc. In other words, if i'd graduated fresh with a distinction but with no added personal experience, i would have flunked my interview completely and utterly.

Paul Gardner says

Anil, I guess I had a somewhat similar perspective on my PhD at the time. It certainly changed my approach to problem solving .. Paul
ps: good grades!