Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.
-Jamie Zawinski, in comp.lang.emacs
This statement is an all-purpose adage that can be attributed to nearly any problem where the solution might end up just creating a new problem.
As a software engineer, developer, or programmer, everyone needs to realize that their solution might just end up complicating things and making a bigger problem or more problems than they started with.
A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: “How long will it take to design this system if I assign five programmers to it?”
“It will take one year,” said the master promptly.
“But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?”
The master programmer frowned. “In that case, it will take two years.”
“And what if I assign a hundred programmers to it?”
The master programmer shrugged. “Then the design will never be completed,” he said.
– Book 3 – Design, The Tao Of Programming
This quote refers to a subject that many have written about and discussed. The most popular book is the Mythical Man Month, which nearly every person with a computer science degree or in a role of project management should read.
This week’s koan comes from Scott Hanselman, the Microsoft ASP.NET guru.
People think it is hard to see .NET,
but in reality
it is neither difficult nor easy.
It is a matter of responding
to C# and VB.NET while remaining detached
from the runtime,
living in the midst of managed code yet being detached from managed code, seeing without seeing, hearing without hearing, garbage collecting without garbage collecting.
Each Monday, I’m going to try to post a programming related enlightenment. It may be from a book such as the Tao/Zen of Programming or a quote.
The Tao gave birth to machine language. Machine language gave birth to the assembler.
The assembler gave birth to the compiler. Now there are ten thousand languages.
Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao.
But do not program in COBOL if you can avoid it.
– Book 1 – The Silent Void, The Tao Of Programming
Very few people, nowadays, have programmed in COBOL. I’d imagine that even fewer readers that stumble upon this entry has written or seen COBOL code, so most people will not fully understand these words from the master programmer.
Numerous years ago, we used COBOL for an “Introduction to Programming” college course. This was before Java and .NET and I don’t know why we didn’t use C – but it was probably due to the professor’s preference.
If you could update the above quote to any modern language, which one would you choose: C, C++, C#, Java, Perl, Python, Ruby, VB.NET, or something else?