In my opinion the number one biggest problem with software development is that programmers concern themselves WAY TOO MUCH with the implementation; when, in fact their “stated” goal is to solve a particular problem. As such, the implementation technology is not important; whether it be software, pen & paper, mechanical, whatever.
The REAL goal is to come up with the most efficient solution to a general problem.
First and foremost, in order to solve a problem, a person needs to have a very detailed understanding of the problem. This step is often overlooked.
Programmers love to program. Tell a programmer about an idea you have about a product (say, a better way to manage the workflow of a lawyer) and before you’ve finished your first sentence, he will already be coding away in his head.
Not only is this way of working ignorant, but it is extremely arrogant. (using the above example, how in the world could a programmer know enough
about the lawyer profession to write a program that runs a lawyer’s entire business, after say, only conducting a few days of background research?)
Most programmers are not driven to solve the abstract, general PROBLEM, but are driven to wrangle the complexity of the computer, solving the complex bugs introduced in the process, and managing the other endless minutia.
I think Computer Science should look towards other, more established professions like Architecture. I haven’t done much research on the subject, but I know that Architects spend a LARGE proportion of their project developing the blueprints, working out the fine details, getting them to pass endless codes (fire code, safety code, etc.). ONLY THEN, once the blueprints have been hammered, does construction begin. THEN, even after all that, the construction process is a difficult enough profession that workers will have interesting problems to work out! (similarly, Programmers can’t cry and say “hey – that’s what we’re for!” Believe me, there is a lot of detailed, cryptic, hard work to do EVEN IF a programmer is handed excellent Product Specifications).