I know, it sounds obvious but often we never really spend the amount of time necessary to do it…
Successful Software Development is Understanding the Problem Domain
Over a coffee with Anton and Dave from RantMedia (they recently released Vectrex Regeneration) we got to discussing the complexity of developing software so we reach a point where everyone can build software. The general opinion was that building an app is a non-trivial problem programmatically.
But I started to think it’s not. I think the real challenge is fully understanding the problem domain. Yes, the task of converting that to code is a challenge but as software development tools improve, especially as we move to visual drag and drop style environments, the real challenge is understanding the problem domain.
To understand the problem domain you need three things:
- The access to those that can detail the problem to you in a complete, end to end manner
- The time to reflect on it, properly
- The mental tools to decompose it and then design a solution you can validate with the problem domain owner
As we talked over these things, what struck me was how little quality time the average software engineer gets to understand the problem domain. Moreover, the percentage of the problem domain we don’t know becomes a void that the developer fills with assumptions and half-baked theories which inevitably become bugs. This will be the maintenance nightmare you then inherit which will probably account for the large part of stress in your role as a developer.
Sadly, the amount of time the developer is ‘allowed’ to understand the problem is usually curbed by the organisation they’re part of. For the most part, project management and the drive to achieve sales KPIs can unfortunately mean that most client-work focused organisations are fully loaded toward courting and winning new development work. As soon as new work is won, the sales resource has to move onto the next prospect. The ‘job spec’ is then passed into the development pipeline where the time starved developer has no time to really understand it and it will slowly become a maintenance headache.
So, take the time to understand the problem, the more you do, the better the solution will be and the less time you’ll spend fixing it.
Or to put it another way, you will retain more of your revenue as profit.