| |
My software development philosophy is really quite simple: Design even the simplest project as though it were going to be huge. Consider the fundamentals of object oriented design, even for the simplest of projects.
The 'software crisis' has seen it's fare share of attention and there are several books and systems to address it (RDP, MSF, UML, etc.). What each of these systems essentialy try to do is model the business process for which the software is being developed. This is both their greatest strength and weakness. 'Use Cases', 'ERD', etc. are very powerful tools which can uncover design flaws well before any code is written. Furthermore, many of the modern tools can 'template' out the code from the diagram, which is extremely useful for getting new developers moving.
Unfortunately, all too many developers either don't understand these tools or choose not to use them (including yours truely). Particularly in the web development arena, projects have a tendency to out-grow their initial design. What may have worked 'in the developer's head' a year ago, may now need to be documented, or worse, re-written.
This is where our education system needs to make some adjustments. By teaching new developers how to design first, then code, a great deal of the problems we see in modern software development could be averted. Unfortunately, most CS 101 classes revolved around learning to code, rather than learning to design. If a school offers a design class at all, it's usually in the upper division and may even be an elective. From the start, we're teaching our developers to 'sling code', rather than think things through, which is most unfortunate.
|
|