|Think about Loose Coupling|
Why, not Howby Ovid (Cardinal)
|on Dec 14, 2000 at 01:54 UTC||Need Help??|
So there I was, reading this article entitled Why software still sucks and I started thinking about this issue. Let’s face it, software does suck. Why the subject of the aforementioned article seems unsure as to the reasons, I think I can come up with some:
With increases in power of hardware, companies are constantly trying to develop software that takes advantage of the potential. Unfortunately, the more complex something is, the more likely it is to have defects.
Market pressures also play into this. I don’t see a way around this. If company ‘M’ decides to rush a broken office suite to market and captures 90% of the market, company ‘Other’ can come out six months later with a much better market suite, but everyone’s trained on the broken model. Many would feel that if the first office suite is not too broken, it’s cheaper to work around problems than to retrain everyone.
Educated programmers are becoming increasingly more rare. How many times have you seen a “Programmer wanted” ad with a line like “Bachelor’s Degree in computer science or equivalent experience”? Everytime I see that I think "danger Will Robinson", but then I'm grateful because I don't have a BA.
Why does tilly consistently come up with slick algorithms to deal with problems? Education and experience. Why does merlyn routinely spit out nifty one-liners that make Perl look like the Yoga master of programming languages? Education and experience.
Many new programmers discover that they are very gifted with programming. Let’s face it, we’re handed seemingly Herculean tasks on a regular basis and somehow, some way, we manage to clean those stables. Some of us use shovels and others divert a river, but we get the task done. But at what cost? Do you know why binary trees are less desirable than B-Trees? Would you write a bubble sort when a quicksort or binary sort would be better? If you don’t have education or gobs of experience, how would you even know what the issues are? Personally, I only have an Associate of Science degreed. Many programmers that I know only have a high school education (and at least one is a high school dropout).
I’m becoming convinced that one of the biggest obstacles that we face is poorly-educated programmers. So many people try to reinvent the wheel not for educational purposes (I’ve written CGI parsing routines just to better understand what’s going on), but because we feel that we can do better. But do we? Find me a hand-written CGI parsing routine that works. 99% of them out there are broken and I’ll point out the flaws in them in a heartbeat. But that’s because I’ve educated myself in this one narrow area. Unfortunately, there’s too much for me to learn. The Renaissance man is dead.
You can’t control market pressures. Most don’t have the power to stop a company from overreaching themselves when trying to exploit hardware potential. However, you can educate yourself. That’s one way we can help improve on much of the dreck that gets shrink-wrapped.
I was reading through the Black Diamond thread and have mixed emotions about it. I would change one of the main statements to “You must be this tall to use Perl to its fullest advantage.” I think this is particularly true of those who reinvent the wheel without understanding the problem, or those who use cargo-cult code.
Don’t stop learning the abstracts. You can learn everything about creating TK apps, the HTTP protocols and how different sort operators in Perl work, but unless you keep abreast of the “why” in addition to the “how”, you’re going to be just another hack. And I mean “hack” in the journalistic sense, not in the 7337 sense. Frankly, I can’t claim to be particularly educated in this area. I have about one year of structured program design methodology pounded into my head in college and that’s about it. I started writing programs just knowing that I’m the most brilliant programmer around. That, of course, is bull$#|t.
Next time you're going to rail against monks who say "don't reinvent", "cargo-cult warning", or "I wouldn't use a regex" (gasp, sob) ask them monk why they would approach differently. Even if you don't agree, you can gain great insight into how problems are approached. Personally, I don't see any easy way around the general degradation of commercial software that I see, but poorly educated programmers is probably the easiest problem to identify. Don't be one of them.
Thanks for letting me spew.
PS: Ironically, as a kid I knew that I didn't want to be a doctor or lawyer because then I would have to study for the rest of my life :)
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.