The software development industry has struggled for decades to figure out how to best manage software projects. I believe a fundamental problem is that most think of software as just another engineering industry, but software development has a lot in common with industries outside engineering. What if I told you that managing a software project can actually be done in a similar fashion to producing a movie? Sound crazy? Just keep reading…
Before I get into the details, let me just give you a bit of background about myself. I am, first of all, a software developer by trade. After several years of working as a developer on projects of various size and complexity, I eventually made my way to Delivery Lead (a mixture of Product Owner and Scrum Master). During those years, I learned different techniques and processes to improve my software project management skills. Here at Axosoft, I work with the sales, marketing and development teams in order to understand our customers and build a product that meets their needs.
Now to be clear, my intention for this blog post is not to start listing all the metrics and reasons repeatedly used to try to understand why things go wrong, but to offer a different perspective. I understand that managing software development projects is an extensive, complex problem, but if we take it one step at a time, we can improve our processes and be more successful.
Think about how many times you have been on a project that has been late or simply canceled because it was not managed properly. I bet it has happened more than once. It is not a secret that the software development industry has a hard time accurately planning and tracking projects. Most of the surveys and reports I have found online agree that around…
60% of software projects do not meet their schedule, budget or quality goals, and therefore they are considered failures
…(some surveys here, here & here). Sixty percent is a really scary number; if you are in the software development industry and you are not scared by it, believe me, you should be. People have tried to help solve this problem by using techniques and frameworks from other industries, such as manufacturing, military and quick-serve. Some techniques have been widely accepted by the development community and others have already been erased from the development history books (and for good reason).
Cutting to the chase, a lot of people still have a hard time understanding that software development is a unique industry. Although it belongs in the engineering category, it has a set of properties which make it different from its sister industries. Most engineering industries can be defined as a set of repeatable tasks which can be optimized to maximize throughput. For example, if we look at the automobile industry (from which we “borrowed” Kanban), building an engine requires a set of specific tasks. Every time an engine is built they know exactly the required parts to build it, where each piece goes, they even know the number of turns required to screw in each part; and none of these requirements ever change. On the other hand, in software development, every new piece of software is unique; each phase is built with a unique set of resources and skills, in order to solve a unique set of problems.
Not too long ago I read about how software development might have more in common with the film industry than with other engineering industries. It was an interesting analogy, one which I believe to be true. Let me give you a short example of what I am referring to. Each movie and software project have these things in common:
- Each is a unique, one-off product
- Each requires specialists with unique sets of skills
- Complexity (and cost) can be defined based on the amount of special skills and time required to deliver the final product
- People and time are subject to change, and so they have to be adaptive
- There are always quality problems due to lack of resources
- In most cases, each person has a unique role and its hard to make them fit in different roles
- The final product is normally different from what was originally written/approved
- You cannot film a movie faster/create software faster by asking people to just do their jobs faster
- Each is a piece of art (well, maybe not all movies and pieces of software are great art, but I still like to think of developers as artists)
We can easily find more similarities, but we can also take it one step further by listing some of the key roles in software project management with their equivalent counterparts from the film industry:
- Project Manager – Producer
- Product Owner – Director
- Scrum Master (if you are using Scrum of course) – First Assistant Director
- Developer Lead(s) – Lead Actor(s)/Actress(es)
- Developers – Actors/Actresses
- Designers/UX – Creative Directors
- QA – Supporting Roles
- Customers – Viewers
It is important to understand how to adapt successful practices from other industries into your own.
Our industry is in need of Project Managers that understand their roles as producers and assist their teams to be better at what they do best: develop software. We need Product Owners that can direct the cast and crew to create an overall vision through which the final product eventually becomes realized.
So what’s next? If you are interested in more information about how to improve your team performance, please get in touch on Twitter and let me know. At the end of the day, it is about your team needs. Make sure that whatever process you put in place is there to encourage and improve your development team’s innovation skills.
Stay on the cutting edge of software development by getting innovative tips, trends and stories delivered to your inbox every month!