Did you ever get the feeling that you are missing something? Something that's seems quite evident to everyone else, but you. You only pretend to understand and keep quiet, you wouldn't want to appear foolish or arrogant. The feeling may pass, but the nagging thought remains, is it me or everyone else?
I get such feelings while browsing through various OO magazines, or while attending technical conferences like OOPSLA. Everyone seems to be talking about methodologies for analysis and design, about creating formal and mathematically precise requirements, about the software development process, and hardly anyone talks about programming.
I get particularly embarassed, when I give short talks about my current project and someone in the audience asks "But what kind of methodology are you using?". Now, you must realize that our project is one of the largest and most succeful Eiffel projects, build by a handful of developers in record time. Yet, when this question is asked I mumble "Well, we don't actually use any particular method. We use Eiffel. Our design? Well, it's trial and error." I feel guilty giving such unsatifying answer and I wonder if I am missing something.
Yet, in all my years of developing software systems, I have never used any particularly formal method of design or analysis. The only real requirements document I saw, written by a highly paid consultant was completely useless, poorly written and out of date by the time coding started. Still, most of the systems I developed worked well, some of them are still in use after more than 10 years of service, moving billions of dollars around.
Over the years I have tried some of these more formal approaches and methods, I tried some CASE tools, but found that they did not much help in designing software. A white board, some markers, and a collegaue willing to listen always seemed to be the only tools necessary for design. The next step invariably was code to try out the white-board design. Any other documents were always produced after the fact. Still, despite the success I felt occasional pangs of guilt for not sticking with the disciplined approach and remaining a "cowboy programmer". Mind you, although I think I am pretty good, but definitely not a "brilliant" programmer on the order of D. Knuth or D. Ritchie.
So, as you can see thoughout my career I have been faced with the contradiction of succeding in my projects, despite the fact that I didn't use any particular method or formalism that everyone says is necessary to build quality software.
Not so long ago, while browsing through a computer section of a local bookstore, I found a book title "Software Creativity" by Robert Glass. The title intrigued me, I picked it up and started reading. All of a sudden I found the author describing the way I write programs and he was saying that it was good!