This is why your agency is terrible at software projects

You’re an advertising agency. You are increasingly being asked to do software development projects for your clients. Project to build websites – small ones that integrate with Facebook and collect names and email addresses, big ones that support daily content updates and ecommerce features for international businesses – or to build mobile apps on iPhone and Android, or to try and apply big data analysis to the reams of data about your client’s customers that you have collected, almost certainly without getting proper permission and without adhering to safe storage practices for private data.

None of these projects ever seem to make a profit, but you have to do them, because there isn’t any other work left. You think the solution is that you need to learn how to use ‘Agile’, but some of your team said they tried that in other companies before and it didn’t work and they ended up overburning and overrunning even more than when they tried to do it ‘waterfall’.

Forget all that. You’re a million miles away from being ready to try agile. You have much more fundamental gaps in your capability than that. Here are the three reasons you’re failing:

1) You’re not doing any testing

You think you are but you’re not. At the end of the project, you’re having one or two “QA” people give the software a once over before you send it to the client. But by then it’s way too late. You realise that you never nailed down exactly how the software was supposed to work. That the client was expecting something totally different. You’re already late in delivering so even though you found quite a few bugs, you don’t actually have time to fix any of them.

2) You haven’t got any real software engineers

Your developers have been building websites since the 1990s. Unfortunately ‘developing’ websites in the 1990s didn’t actually involve programming, and your team actually consists of failed designers who weren’t good enough to do creative work, and have remained bitter and frustrated about that. Their knowledge of JavaScript tops out at making a clock, and their approach for doing anything remotely complicated involves googling until they can find some code that already does what they need, copypasting it into your project without any consideration for intellectual property rights or security. You have one guy in the team without whom you aren’t sure you’d be able to deliver anything at all let alone a finished project, but he’s a contractor who refuses to go perm. He has an actual software engineering degree and his day rate is so high you can’t make a profit on him.

3) Your organisation doesn’t have the capability to manage projects

Your project management staff consists not of experienced Project Managers who understand Gantt and PERT charts, critical path analysis, three point estimation, stakeholder oriented risk assessment and the software development life cycle. They are Producers and Client Services staff who started their careers as junior dogsbodies because they liked the idea of working in advertising, but had no particular redeeming talent so settled into ‘telling other people what to do’ . These people do not know how to plan, and they manage by lurching from one fire to another, requiring heroic efforts from them and the teams around them just to boil a cup of tea let alone deliver a complex piece of software.

You’re probably doing several other things wrong as well, like not finalising contracts until the project is already going badly, by which time the client has no incentive to sign it. You’re probably unwilling to pay a market rate for qualified developers, while overpaying mediocre creatives that you aren’t even getting above 50% billable utilisation. Most of all though, your organisational culture resents that things aren’t the way they used to be and you’re having to work for a living to survive.