Software development: What I know now that I wish I'd known before

After recently starting as graduate developers at the Guardian, Max Harlow and Lindsey Dew explain what they have discovered

Max Harlow, Lindsey Dew

Published on Thursday, 23 August 2012


Organising the development of the Discussion project here at the Guardian
Organising the development of the Discussion project here at the Guardian Photograph: guardian.co.uk

We’ve both started working as graduate developers for the Guardian in the past year, but have both taken quite different routes to get here. Max: I came from a fairly typical Computer Science background, after which I worked in a small digital agency for a year before joining the Guardian. Lindsey: I studied mathematics at university and undertook roles in the finance and charity sectors before getting into software development.

Getting into software development at graduate level doesn’t necessarily require a Computer Science degree. Often the skills employers look for is an ability to problem solve, reason and communicate. Learning to program on the job is challenging, but not impossible. Working on real systems and on genuine problems makes you consider the wider implications of your code, beyond whether it works as you expect on your own machine. Picking up a couple of online programming courses and writing some small test applications can be really helpful in getting to grips with the basics. Coursera run a variety of excellent courses, from an introduction to programming to some advanced computer science concepts – and for free!

Being receptive and able to learn new technologies is more important than knowledge of any particular language or framework. Becoming proficient in a different programming language is much easier after you know one – don’t be put off from applying to companies who use different technologies to those you are familiar with. The pace of change in the industry means that everybody has to constantly be learning, not just graduates.

There are no standard job titles. You could be a developer, software developer, web developer, back-end developer, a programmer, a computer scientist, or an engineer. Sometimes there’s a hierarchical prefix too, such as graduate, junior, senior or lead. Furthermore, ‘graduate’ jobs aren’t necessarily taken by those fresh out of university: we both worked at other organisations before joining the Guardian.

There are typically more opportunities for career development at a large company than at a smaller one. At the start of your career you should be thinking about where you can learn the most, and large organisations will have more resources to expend on staff development. Here at the Guardian, we have the chance to move between projects, gain exposure of different languages and platforms, and learn from more experienced developers. However, working in a smaller organisation also has its benefits: your role will be broader. This can mean not only working on software development, but also testing, deployment and user support – skills that you probably wouldn’t gain otherwise.

You probably won’t know how to deal with a large legacy system, yet most organisations will have one. It’s probably huge, and probably essential, and all the newer developers are a little scared of it. There’s probably no documentation, and if there is, it’s out of date. Most or all of the developers who originally worked on it have left the company/are dead. It’s not unknown for large companies to have servers that are kept running because nobody is left in the company knows what they do – turning them off could mean turning off something essential. Eek!

You probably won’t realise how much of the development process isn’t programming. There are many different roles needed to plan, develop and sustain a system – a typical team at the Guardian includes front-end and back-end developers, QA (quality assurance) and UX (user experience) specialists, as well as product and project management. Furthermore, there is our Systems team, who manage the technology infrastructure, and the software architects, who make high-level decisions about how different applications work and interact.

Whatever your background, starting as a graduate in software development can be challenging. However, the culture of continuous learning and the satisfaction of seeing something you have helped create being used by potentially millions of people makes it all worthwhile.

What have you learnt about working in development that you wish you’d known before you started? Let us know in the comments area below.

Continue reading

Reimagining the timeline: behind our Second Screen web app HTML5 and native apps: the hybrid approach