6.05.2007

The Decline of the Art of Programming

Two things are happening in the development world that I really don't like. The dumbing down of programming tools, and the dumbing down of programmers themselves. Consider my latest adventure with drag-and-drop. I wanted to create a custom HttpHandler for our web site. I prefer to actually write code, but I found a nice tutorial about how to do all this GUI work in Visual Studio, and presto! a custom HttpHandler. Problem is, if you follow the tutorial, you get an error. If you search for the solution to the error, you get all the forum posts from people who followed the tutorial and ended up in the exact same place I was. If you then go and read the answers (if there are any), you find no actual solutions to the problem... instead you find a bunch of losers who basically decided that since they couldn't drag-n-drop a solution, they decided to do it a completely different way. So, the most popular tutorial on the subject leads to an error, all the other tutorials are directly copied from that one, and nobody ever bothered to figure out the real solution, fix the original tutorial, or post a good answer on a forum, anywhere on the entire Internet! Cool... way to go, Programming Community! Good one.

Clearly, there is not a solution that you can just copy from someone else. If I was the type of person to look at this situation and decide that, since nobody else solved it, the problem can't be solved... I would be implementing a way to tie Apache and IIS together and re-write each other's URLs, or something stupidly complicated like that.

Instead, I used my arcane knowledge of compilers and linkers and How Computers Work, to come up with a solution to the original problem. See, I recognised the error as a linker error right away... and it didn't take me long to figure out why the linker couldn't import my custom handler code. If I was a drag-n-drop programmer, it's likely I wouldn't even know what a linker is, and I would have been screwed. I'm not even sure why I spent a whole day looking for someone else's solution, although I did get an education about the subject, which probably helped my mental process derive the actual answer. Still, my first instinct was to look for a pre-fab solution, and it took a whole day for me to accept that there wasn't one.

The other issue is the dumbing down of programmers themselves. This problem is caused by modern education. Kids are being told that "if you just try hard enough, you can do anything"... this is not true, and it's hurting our kids to teach them that. Kids need to learn when to give up on something. We have too many programmers who shouldn't be programmers because of this issue. These are people who think that if they just try really hard, they can be good at programming. It doesn't work that way. This is a field like being a fashion model - if you aren't the right person for it, you might get somewhere but it's going to be hard and you will never reach the level of proficiency that you could in another field.

In Boulder, the school has a policy outlawing all games where there is either a "winner" or "loser" - because losing at a game is too traumatic for kids. BullSH$!%&?!!!! Losing is important! If I hadn't got my butt kicked multiple times as a kid, I might be out there right now trying really hard to become a football player, and not getting anywhere at all, because I'm skinny and uncoordinated and I have no endurance. I'm not a physical person, and there's nothing wrong with that. Why is it suddenly "not ok" to be a person with limited mental abilities too? I know my mental limitations and my physical limitations, and I'm irritated that kids today are being taught that there aren't any such limits, and they are being prevented from experiencing failure, which makes them totally unaware of their own limitations.

This all leads to an incompetent workforce, and that requires tools that can be used by an incompetent workforce, which is where we are now. These "tools for the dumb" are not helping the problem, and are contributing to the decline in Computer Science as an academic pursuit. People are starting to see computers like they see cars, as a machine to do a job, which it is, but it's so much more than that, and there will always be those of us who are interested in that "more" that it can do. I would bet that there are the same number of us now as there always have been, but our percentage is smaller, because we are now lumped in with everybody else who uses computers. It's like considering all car owners as mechanics... clearly they are not, and I'm insulted by the suggestion that script-kiddies and data-entry clerks are anything other than grunt-workers performing tedious tasks that the knowledgeable people are tired of.

3 comments:

Anonymous said...

I agree with you that programming on the Windows platform specifically has been incredibly dumbed down to allow many people who would under normal conditions never begin programming in the first place and end up getting somewhere. However, in light of your argument saying that programming is something that not all people can understand I deeply disagree with. The art of programming itself is incredibly feeble, but solving complex problems is where programmers tend to shine. This "few right many wrong" methodology surrounding programming is something we experience just like losing at a game. If you do something wrong the first time, you learn and continue to refine. Reiterate reiterate reiterate. Programming is no different than any other IT career field. Cheers!

Anonymous said...

Did you file a bug (or submit a correction) to the tutorial for the HttpHandler? That would be very helpful ...

Jasmine said...

Yes, I sent a note to the author telling what the problem is with the tutorial, and how to fix it. However, this will not make any difference, because the person will likely not go back and edit the article. Furthermore, there's about 85 tutorials out there which are copies of the MSDN one as far as I can tell... so the error has been propagated all over the place.

The funny part about it is that when you go to the forums, you see that everyone is having this one same problem. I asked the question on ASP.Net forums, after searching and finding that it had been asked and not resolved several times before. Someone else asked the exact same question minutes later, and it showed up right next to my post. That is what I call a Frequently Asked Question. The thing that made this one special is that, even though it is FAQ material, nobody had ever posted a good answer, on any forum, anywhere. I did that when I figured it out, which I think is the missing step here... nobody came back and let everyone else know what the problem was in the first place - or they never figured it out, I don't know. I wasn't going to leave the question hanging out there without an answer, because Jasmine always figures it out!

 
hit counter script