The Decline of Development
Scott Dorman wrote up an interesting blog entry about programming for the lowest common denominator. I found his statements pretty closely aligned with my own experiences of late. According to his entry, there are something like 18 million hobbyist developers out there - which is not, in itself, a bad thing. These people use Visual Studio Express to do their development and are weekend warriors. There is even a MS sponsored site out there for these people - Coding 4 Fun (btw - great site if you take a look). They like VS Express for a number of reasons, but I'd imagine some of the reasons are:
- There's a wizard to do just about anything.
- Intellisense.
- Easy to hack around.
- It's FREE!
This in and of itself is not a bad thing. I like the idea of more people getting joy out of coding - even if their applications are simple copy/paste jobs from any number of other sources. The reason I have zero issue with these people is that they are not hurting anyone. They are coding for themselves and their family - maybe some friends - and that's about it. They are not developing Enterprise scale applications for multi-billion dollar companies.
The issue that I DO have is that the same features that are available in VS Express are also available in other versions of VS.Net. The same wizards and intellisense and ability to hack around all come as part of the VS package. The problem with all of these "features" is that it makes us a little lazy. Who wants to type all that code to fill a dataset when I can have VS do it all for me? Who cares what a class is, if I can set all my properties in the designer?
Productivity improvements you say? Decrease the time to deployment? 50% less code needs to be written? Yes, yes - that's all well and good. However, a Developer should still know how to code something without all of the wizards and flashy features. The problem is that new folks coming onto the scene with dollar signs in their eyes aren't learning to code - they're learning to point and click. It's not just new programmers either - we're talking people that have 3-5 years of "experience" are infected with the same malady.
This has become abundantly clear while I have interviewed potential new hires for my company. I always start (regardless of years of experience) with the same basic questions:
- What is a class?
- What are the parts of a class?
- What is an interface?
- What is the difference between an interface and an abstract class?
- When would you use an interface instead of an abstract class (and vice-versa)?
These are basic, basic, BASIC Object-Oriented-Programming questions. Anyone want to guess how many get them right? From my experiences - only about 30% of the people I have interviewed can answer all 5 questions.
And yet, these people stay employed or find employment elsewhere. How is this possible? Is programming truly becoming a point and click occupation? Can every requirement be boiled down to a wizard? Maybe I'm just working for the wrong company - but in my experience - every wizard in the world won't satisfy real-world requirements.
Users have gotten smarter...nothing seems to really impress them anymore. They've seen every out of the box feature a few hundred times. They always want a little something extra...something special that they can say "See that? I requested that feature - isn't it great?"
In-fact, I encourage my users to say that...I like to see them engaged in an application I developed. Those little extras and that relationship with the user is what keeps me employed. It's what keeps all of us employed...so, I'll ask my question again...how can these people subsist in that environment if all they know how to do is click around?
Seriously.