This sort of module level variable abuse morally offends me! This is a comment I had to add to some code I was reworking today.

When I went to work for the summer, I ending up in charge of a program that had been written by some consultants that didn't understand the problem they were supposed to solve. As a result, they fumbled around and spent a lot of money, and made a horrible little program that was totally unusable. Even the database design on the backend was (still is) screwed up. I had to get this thing working as soon as possible; people were itching to use it.

I read through it. What did I find? Global variables. GOTO's. Module level variables that belonged in the local scope. Incorrect error handling. Bad user interface design. The three or four people who wrote the thing didn't seem to have a clue about the language they were using, relational database design, or the problem they were trying to solve.

These are professional programmers! It's not like the company I work for hired some bums off the street or some high school student. Professionals! WTF! The consultants have done other work for my company before, and we've never really been satisfied with it, although it has been passable. The initial analysis was good for this one, but they just couldn't follow through. This sort of thing is an excellent way to go out of business.


jimbeam asked in the chatterbox what language the bad programmers were using. Visual Basic 6. The BananaMan Visual Basic writeup pretty much parallels how I feel about VB. It's not the language that makes a bad programmer though; it's just as easy to be a bad programmer in C++ or C as in VB.

Unfortunatly Torque, this is one of the problems with the IT industry at the moment.
Too many people without aptitudes for computers and programming working doing that very thing.

You don't need to know computers to pass, or even pass well a Computer Science Degree today. You just need to be smart. It's not hard to knock up a little server/client program for your final project, but when it comes to the real-world people need to know computers backwards.

They leave their little world of college, without a clue about program usability, without a clue about basic computer operation. They've learned how to program fairly well, but without the natural curiousity and intuition when it comes to computers, you can't program them well.
The most you can achieve is something acceptable. But not good.

Why do you think Visual Basic is such a hit?

Computers and Programming Languages are designed by people with a certain type of aptitude and therefore, people with that same aptitude find it wasy to pick up computers as a result. The rest, just don't get it

A response to ^P^.

While it's easy to bitch about bad programming, I think it's important to keep in mind the underlying reason why there is so much bad code being produced by incompetent or lazy programmers.

The bottom line is that, for any organization of any size, bad code is vastly better than no code at all. This is something that Microsoft realized a long time ago--something that partially works today is preferable to something perfect tomorrow.

The productivity gains1 engendered by even bad code are so valuable that companies continue to happily shell out the (generally large amounts of) money required for the care and feeding of a software development staff. Who cares if the program requires a single $90,000 per year programmer to maintain if it also lets the finance people get by without 8 $20,000 per year permanent temporaries.

While serious programmers2 generally have little respect for the people who make a living this way, it's important to remember that most of the time it is good enough. And that, in the end, is all that matters.

1- According to the United States Government productivity gains are accelerating. This is attributed by many professional economists to the effect of the massive computerization undertaken by corporate America over the past 30 years, while others say that the gains are just a blip and the long term trends remain unchanged.
2- Who still hack assembler on ancient pdp-11's using ed(1)

Disclaimer- I make a living hacking Unix, I'm just sick of listening to the real people with real lives, real kids, and real problems trying to making a living writing silly VB scripts getting bashed. For most people this stuff is just a job and there is nothing wrong with treating it as such.

One of the problems that lead to the issues discussed in this node is the fact that people with programming skills are still very thin on the ground. Take me frinstance, One day I was the guy in the office who fixed the photocopier and bailed the users out when they fucked up their windoze box too badly.

The next day I'm hacking up a little qbasic program (I grew up learning 6 different dialects of basic plus one of assembler) for storing and collating exam results (I worked as clerical staff at a college), 6 months later I'm hacking up an MS Access database to do the same thing... I do not doubt that I did a godawful job of it and that if I went back to it today I would be deeply ashamed.

Another 12 months and I'm Database Administrator at a small electricity retailer, having picked up the proper way to design a Relational Database Management System along the way.

I'm a much better programmer these days, having picked up the rudiments of C++ and Java and having been trained in structured programming techniques but the point is this:

  • Did these jobs need to be done? Yup.
  • Did they need to be done by me? No one else was volunteering (not at that salary, anyhoo)

The College at which I worked did not even realise that they needed an IT department until 2 years after they started needing one. During that 2 year period, I was the only person on the premises full time who knew one end of a keyboard from another.

At the electricity retailer, My programming skills were improving but still fairly poor. They were, however, getting exactly what they were paying for.

I served my, apprenticeship, for want of a better word in the IT industry without any support structures, mentors or any guidelines on how it should be done. And while employers are not prepared to pay Computer Science graduate wages for people doing "apprentice" level work, the computer industry remains unable or unwilling to establish and enforce a formal system of professional training, this problem will persist.

I'm not complaining, mind you. I went from 26 years old with no future to a career in IT completely off my own bat and It's an accomplishment in which I take no small amount of pride. (Even if I'd like to forget some of my earliest work.)

On a more practical note, those of us who are skilled in the basics of our profession need to start taking the attitude that the next generation of programmers are our responsibility. Mentoring new entrants to the industry in the basics rather than hurling abuse from the comfortable anonymity of an internet website is an excellent way to begin.

Log in or registerto write something here or to contact authors.