Some Thoughts on Software Development and Complexity
I want to write about a pattern in software development after a bit of reflection I did earlier.
Having the best technical skills won't prevent a slippage in software delivery. What all those expertise amounts to is just knowledge of a machine's behavior.
It is a common misconception learned from school that software development is all about programming. In school (most of the time) all you have to do is solve minimally complex problems all by yourself.
In the real world, however, you have to deal with other problem sources including other programmers, project managers, bosses, boss's bosses, etc. This is the problem that's addressed by software processes, methodologies and best practices.
The pattern is this, as the complexity of activity grows, the solutions required to solve them increases. The solutions that are effective on the small projects usually are not enough when used on the larger projects. The reverse is also true that is, the solution for the big problems would be overkill when used for small problems.
Having the best technical skills won't prevent a slippage in software delivery. What all those expertise amounts to is just knowledge of a machine's behavior.
It is a common misconception learned from school that software development is all about programming. In school (most of the time) all you have to do is solve minimally complex problems all by yourself.
In the real world, however, you have to deal with other problem sources including other programmers, project managers, bosses, boss's bosses, etc. This is the problem that's addressed by software processes, methodologies and best practices.
The pattern is this, as the complexity of activity grows, the solutions required to solve them increases. The solutions that are effective on the small projects usually are not enough when used on the larger projects. The reverse is also true that is, the solution for the big problems would be overkill when used for small problems.
