It’s been a while since I left university, and a fair amount has changed. One of the biggest things is that I’ve got a solid job that I enjoy. I was recently asked back to the University of Manchester to give a talk on getting a job, and it made me think about the parts of software development that universities (in general) could do a better job at, in order to prepare you for getting a job.
Uni isn’t the Real World
I always had a bit of an issue with code-related coursework at uni. You got handed a task which was invented by a lecturer, did the best you could in the time you were given, and got a mark back at the end. It felt like I was just ‘playing’ software development.
The real world is different though. The tasks you complete deliver some kind of value to the customer based on an actual business need. You don’t get a mark back – you get feedback from the customer and they let you know whether they’re happy with what you’ve delivered. Then, you repeat until you’re done, or the money or time runs out.
Sure, we talked about requirements gathering, agile methodologies, test-driven development and stakeholders – but this was all theoretical. And you only heard about it if you chose particular modules.
I’m saying all this, but I know that this is difficult to do within the walls of a university. The closest I came to it was in first year, where we had to produce a web application of our own choosing. The rules were pretty loose – it had to work on a LAMP stack, but other than a deadline that was it. I enjoyed it, because we were working on something real.
The real problem was that we were coming up with our own requirements. What would have made that project great would have been if we’d had a pool of people with ideas for projects (ie. customers) that we could pick from. Run the project for a semester, with meetings between the developers and the customer. Let the teams organise themselves how they want – show them examples of how people use agile processes, and let them choose the ones that they think might work for them.
At the end, get them all together to present what they did – and I don’t mean the code. Get them to present the way they worked and organised themselves to everyone else, saying what worked and what didn’t work. Our first year project wasn’t about the code at all, but about learning to work as a team. It’d be great to put more focus on that.
Of course, there’s another way to gain experience of the real world. And that’s to get out there and get a job. I can’t be sure, but I think that it’s my experience that got me where I am today. Having a job gives you something to talk about in job interviews – another set of examples to draw from when you answer questions.
I did a ‘sandwich course’ at uni where I spent my third year on placement at Folder Media in London. That year gave me a much better idea of how I worked, and what kind of projects I enjoyed working on. I’d recommend a placement to anyone who gets the opportunity. I don’t know a single person who regrets doing it, and we found it so much easier to get a job when we finished university.
Finding a job isn’t always easy though. If you can’t find something, pick up a project in your spare time. Make something that you enjoy and that you believe in. It doesn’t matter what that is, but try and make something that people might actually want to use. Put it on Github, or the App Store, or wherever. Getting people to use it gives you a customer, and drives you forward.
Update: The slides from my talk at the University of Manchester are now on Speakerdeck.