being productive is usually considered a good thing. however, over the last decade or so there have been tools and technologies unleashed upon the world that while they have certainly made us more productive, they have turned the average developer into a drooling, babbling idiot. more than ever, the gap between tool users who call themselves developers and people who can actually build, implement, design, and engineer solid, robust software systems is widening. how the fuck did we get to this point?? lets investigate...
the RAD fallout...
just like we have our favorite buzzwords of today, lets not forget every decade had it's own set of buzzwords. in the 90s, one of the most popular ones was RAD...rapid application development. it was motivated by a single concept...make the developer as productive as possible and stop at nothing no matter how assinine it is to make this possible. while not a new concept (it was really what smalltalk was supposed to do, but that's another story, and after that case tools, but that is another story as well), it was during the 90s that software developers were inundated with all the typical marketing bullshit telling us that RAD will take our productivity to new heights and will change the face of software development forever... well, um...hmmm....i totally agree...RAD really did change the face of software development forever...it opened up the doors to millions of fucking morons who under normal circumstances would have never, never, never, NEVER, NEVER EVER be qualified or even allowed to code "Hello World!", let alone contemplate a fucking career in software development.
there are two RAD tools especially that i see as blowing the doors wide open to let everybody and their mother try their luck as a software developer...microsoft visual basic and microsoft access (surprised, right...thank you microsoft!) ok, ok, before all the access and vb fanboys start having a fucking heart-attack, let me make a couple of things clear...
- i am NOT saying that all access and vb developers are completely incompetent fools who are so fucking clueless they should just kill themselves while simultaneously realizing that, yes they really are a fucking waste of humanity... for that my friends, you'll have to wait for another post ;)
- access and vb are by no means the only tools or technology that are responsible for this. trust me...i will detail more below. (some of which are non-microsoft related.)
what i am saying is that with these two tools, the barrier of entry for developing software was lowered considerably. by no means was microsoft the only vendor to get in on the RAD action. during the nineties, almost every software manufacturer attempted to get in on it. remember sybase's powerbuilder?? and who knows how many failed attempts ibm had at developing some kind of RAD tool?? and of course there is borland's beloved delphi, which out of the bunch was probably the most well thought out and implemented RAD tool, hailed by all the critics, was the feel good movie of the year, and designed by mr. c# himself...unfortunately it had a total user base of two. (and no, i am not one of them.) ok...lets move on now, shall we...
the web fallout
all right! raise your hand if you know somebody that got their career in building "enterprise, multi-threaded, distributed systems" with...html???? man!... h. t. m. l. ...fucking html... between html and the .com boom, there was a time where everybody on the fucking planet was somehow associated with the tech industry. who could've have predicted that software development was going to be so fucking confused with document design?!?!?! learn html in 3 seconds was spotted being eargerly carried by every graphic designer, secretary, middle-manager, and mcdonald's employee world-wide. this blissful state of affairs and ignorance did not last too long though...unfortunately for them, somebody had the fucking unmitigated audacity to decide that static pages weren't good enough for the web..."what do you mean...these web pages just sit there????" soooooooo...over time we went from seeing nancy (or bob or biff or bubbles) in accounting carrying learn html in 3 seconds to carrying learn cgi, perl, isapi, asp, or coldfusion in 3 seconds. and of course if they really wanted to dazzle 'em...they picked up learn javascript in 3 seconds as well...after that, more bad news...they needed to learn a database system as well. so now we can add learn access in 3 seconds to the quickly growing pile of books too. now not all of our htmlers made it this far, but some had no choice. when they went beyond the point of no return and gave everything up to be a web designer, all they could do was hope for the best with all this shit.
let me pause for a second... at this point you basically now have people doing mixed-language, client-server, distributed systems development. this is something that even a well experienced honest to god skilled software engineer/architect would find daunting with a decent toolset, let alone these fucking half-baked moronic web technologies. this is a pretty fucking scary situation. i can't tell you how many fucking times i've been asked to help out on projects (which is really just a euphemism for, "holy shit...get us the fuck out of this mess...NOW!!!!!!"), where the so called "tech-lead" (or whatever these buffoons fucking call themselves nowadays) didn't know at least one of the following:
- the difference between late and early binding
- the difference between call by reference and call by value (you don't even want to know how this one came up)
- what a "pointer" is (i'm being fucking serious here folks...)
- that visual interdev is NOT a programming language (i shit you not)
- what an XOR operator does
- that xml was not invented by microsoft (oh..man you should have heard this guy..."i won't use xml because it's a microsoft technology...")
- what the newton quotient is (all right, that has nothing to do with technology, but i was still surprised)
i am not making this up. these are things that regardless of platform, tool, or sexual preference you would think that everybody would just know as a matter of course (or at least i thought any developer would know). well, we can take heart in the fact that if these guys need any advice, they can always just ask the RAD developers that are sitting in the cubes next to them...
the java fallout
well...what can you possible say about the most hyped programming language in the fucking world??? jesus...talk about being in the right place at the right time. unfortunately the sun marketing department did a hell of a better job marketing it than then sun engineering department did in implementing it. i mean how many of us remember all the "write once, run anywhere" bullshit?? (jesus with some hindsight, i should have just sued those fuckers for false advertising, but once again that's another story.) also ironic is that aside from simplicity and portability, the most hyped part of java was applets...oh man...what a fucking success story that was!! oh yeah...while i could go on for days bashing java...my point is... is that java hype became so prevelant at one point, it attracted those same nancys, bobs, biffs, and bubbles from above...who armed with their trusty learn java in a ridicously short amount of time books went right to work amongst our RADers and web developers.
of course though...these guys had a little bit more of a harder time of it. apparently though the payoff was worth it. they might not be able to write a decent swap function, but they could all now say bullshit like, "well...java is a pure object-oriented language", while not even realizing that that's just plain wrong, and spout new acronyms they learned like jvm, rmi, and (for the truly fearless) jni, all while looking petulantly down at vb developers for not programming in a real language. this is pretty ironic being that sun was desperately trying to woo vb developers by touting how easy java was to learn and that anybody could be productive with the java platform in no time. woohoo!!! time to start the wankfest!!!
ramifications...
so...just what exactly does all this add up to?? i think this is the most interesting part, because when you take all the above into account, many things start to fall into place like:
the fact that most software systems today have a standard of quality that to call it fucking disgraceful is being way, way too kind. most software written today is a fucking abomination. the quickest way to write better software is to have better people build it.
the real reason why many microsoft developers go fucking completely apeshit when their manager talks about moving to an open source solution...they have neither the skills nor the mental capacity to develop on the linux platform. they feel threatened and insecure because programming in c, pointer arithmetic, manual memory management, and working on a system whose primary mode of communication is via a command line is just too mentally overwhelming for them. most open source development is done at a level of abstraction that is considerably lower than the level of abstraction offered by the typical microsoft tools and technologies. these are the kind of reasons why these developers gravitated to vb in the first place...
the whole vb6 petition fiasco. when microsoft released the .net platform along with vb.net, they tremendously improved the vb language. all i remember for years is hearing the vb community bitch and moan, and bitch and moan about things like theading, true object-orientation, being a toy language, getting no professional respect from their c, c++, and java peers, and so on. so what does microsoft do? amazingly enough, they give these cocksuckers a version of vb that has all of those long requested features finally implemented!! this is a perfect case of be careful what you asked for... because when these total fucking morons finally got it, they also got all the added complexity that these things bring with them. i wonder how many people who actually signed this petition know anything about actually writing code and developing software...(of course the only execption to this would be bill vaughn.) blinded by their fear of the unknown, these people do nothing but validate everything i've said above about vb'ers.
and about half a million other things...
finally, a couple of things...
- i am talking mostly about developers found in corporate IT environments who are typically writing applications meant to be used in house.
- these are just my own personal opinions formed from watching this shit happen over the last 12 years or so. i would expect your opinions and experiences to hopefully be different
- what was once considered to be baseline common knowledge among software developers is disappearing altogether or is considered to be too 'specialized' for typical corporate IT developers.
- due to financial reasons, these are just the developers that most software vendors cater to, so they are just fueling the fire...
- to be fair...believe it or not, i have met access developers who happend to be tremendously talented software developers. i know this is a total paradox (yes, bad pun intended), but there a few out there. also there are (believe it or not) many visual basic guys out there too that are fucking awesome developers. i try not to judge a book by it's cover, but i feel there are valid reasons why these tools and the developers who develop with them have the reputations that they do.
Now, if I only had the balls to forward this post to my manager and the hiring manager ot our outfit.
Posted by: SandyBoy | April 10, 2005 at 06:35 PM
Hell Ya!
Every time I read one of these I not only agree but I also hear that song "America F#ck Ya!" going in the background. I have no idea why but it just feels good.
Great post Phil.
Posted by: Andy | April 10, 2005 at 10:08 PM
Good comments.
The problem is that RAD tools mean someone can paint a screen quickly, but have no idea about complex logic. I've met HTMLers turned coders, and were I in the hiring and firing position, they'd be shown the door.
Another thing is that doing screen design of systems is a very small part of it. Just because that can be done faster doesn't mean a massive overall saving on the system. And once a system is live, most of the maintenance work isn't to the UI, it's the back end code.
Posted by: Tim Almond | April 10, 2005 at 11:30 PM
Phil - I love you. Not in the gay sense of course, but you always seem to post the exact stuff I want to say - you just say it a lot better. Andy and I have been on the http://spaces.msn.com/members/andythecornbread/ (We hate Access programmers) bandwagon for a while because, Anyone that's ever worked on something an Access developer did, almost always has the same story to tell. "We had the secretary take an Access course and she says we can convert our entire Oracle based CRM System and port it over to access in a few days. You know, Oracle is just overpriced junk - access is actually better in terms of reliability in a multi-user environment. She says she'll have everything ported over by friday" And they listen to her. And it is ported by Friday except it doesn't work and the second person that logs on blows the whole thing up. "Well, there are a few bugs but this was her first application, therre's going to be a few bugs." Then a few weeks later "Well, it eseentially works good but there's so much to it, do you think a few of your guys in development could help her out" THen you look at the code and have an overwhelming urge to gouge out your eyes with an Icepick.
Amen brother! And it's Great to have you back - you never disappoint!
Posted by: Bill | April 11, 2005 at 07:54 AM
thanks for the feedback, guys...
Posted by: causticPhil | April 11, 2005 at 09:55 AM
You're not the first person to feel this way. Check out Edsger Dijkstra's "On the cruelty of really teaching computer science": http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html
Posted by: Wayne | April 11, 2005 at 01:43 PM
For the love of God Phil, don't make us wait another 4 months for some of the most hilarious and on-target commentary on the web.
Posted by: Evan Erwin | April 11, 2005 at 02:43 PM
You couldn't be more on point about the current state of moronic developers...and just so you know, my co-workers and I bring the "total user base" of Delphi developers up to seven. :$
Posted by: James | April 11, 2005 at 03:38 PM
Great post. I'm primarily a Java developer, since it's the only language that doesn't completely suck on the market today, but there are entirely too many morons in the so-called Java community. Reading comp.lang.java or Sun's Java forums is a very enlightening exercise, if you want to see the depths of depravity and ignorance people can descend to and still call themselves "developers".
Of course, there are a lot of idiot C/C++ programmers, too, but they never get very far, because they can't do anything in the language. Making your language suck in just the right way is a good way to filter out many of the morons, even if the side-effect is that you make Microsoft-quality software full of pointer crashes.
However, I would add to your "You know you're working with morons when" list:
* users who don't know where their shift key is.
Cthulhu wept, man. Get your keyboard fixed. You are not e.e. fucking cummings. Anyone who posts all in lowercase is announcing to the world, "I am 15 years old, I wear white face-paint, and I write goth poetry".
Posted by: Mark Hughes | April 11, 2005 at 05:45 PM
"it opened up the doors to millions of fucking morons who under normal circumstances would have never, never, never, NEVER, NEVER EVER be qualified or even allowed to code "Hello World!"
While most of us coding snobs think that is a bad thing - I bet all those businesses that managed to get value out of the programs they created don't mind one bit. Once you leave the world of academia, you learn that programs don't have to be perfect, they don't have to be beautiful reflections of the author's skill, they just have to get the job done. Sure they may not scale, and they may be hard to support, etc, but those are all issues you can address when the needs arise. In the meantime, you've got something up and running.
Posted by: Josh | April 12, 2005 at 02:52 PM
> Once you leave the world of academia, you learn that
> programs don't have to be perfect, they don't have to
> be beautiful reflections of the author's skill, they
> just have to get the job done. Sure they may not
> scale, and they may be hard to support, etc, but
> those are all issues you can address when the needs
> arise. In the meantime, you've got something up and
> running
Once you enter the world of agile development, you realize that you can have all of the above as well as get something up and running even quicker than with RAD - and you can have all these things for years and years without necessitating bi-anual re-writes. Of course, agile depends on substitution, isolation, interface-based development, rigorous code standards, test-driven development, and a whole host of things that visual developers are either not interested in or simply don't care to understand as an expression of an absence of professional curiosity.
Posted by: Scott Bellware | April 13, 2005 at 12:15 AM
My favoriate RAD tool is IBM XDE for VS.NET. Sometimes i even don't think about code, I just dream about how far i can "draw" my next application before descending to code level.
Sometimes i wake from these dreams screaming in sheer terror in middle of the night. Thats when i realize that sooner or later unspeakable will happen - one of VB developers will get his hands on XDE and try to "use it". And XDE is so good, that it take as input of healthy mind and will acutally try to produce files and code... some other live, breathing human beings will be subjected to looking and using the result produced by compiling this code. REMOVE VISIONS OF THIS HORROR FROM MY MIND!
(PS: if you never seen XDE, for example whole GoF book is encoded as one +20 items submenu to apply any pattern in single click. VB guy will just use this GoF stuff as addtion to UI controls toolbox... )
Posted by: Anonymous Architect | April 17, 2005 at 02:55 AM
Great rant! Josh really has a point, though...
What RAD does is bring that case closer to the field expert. Programming isn't about stack pointers and the big O notation anymore, it's about the business case. People don't want to write software, but specs that can be executed. There's something depressingly positive from the point of view of the analyst in pushing that "black box" principle to the extreme...
You probably have to be a developer, though, to really feel the state of the mess this situation puts those systems in. The saddest thing is that it's really hard to make a technological case in a world where people have started to replace software engineers simply by picking up a programming book or two...
Posted by: SL | April 19, 2005 at 12:06 PM
You do realize, of course, that our host just said,
"RAD...rapid application development. it was motivated by a single concept...make the developer as productive as possible"
...and then goes on to say,
"they feel threatened and insecure because programming in c, pointer arithmetic, manual memory management, and working on a system whose primary mode of communication is via a command line is just too mentally overwhelming for them".
I must be an idiot, because I don't want to give up the tools that make me more productive. I wrote assembler code in the 80's and I don't see any real need to go back. Some people like to waste time dealing with problems that the current tools solve. The rest of us waste time reading websites like this.
Keep it coming, though. Comic relief is hard to find in our industry.
Posted by: Scott | April 20, 2005 at 10:59 AM
I think you missed the point of RAD - the point was to not have to write all kinds of code for your GUI. Before VB, Delphi, etc., you had to write all kinds of code just to display a dialog box. The cycle was change the code, compile, run, see it is screwed up, try again, add another control, etc.
With RAD, just drag-and-drop. But that doesn't help one bit with any of your business logic. You still have try know what your doing!
Posted by: Tom | May 05, 2005 at 10:08 PM
Yeah,
I feel kinda the same way... except that I think the problem goes deeper than front-office bubble-heads thinking they can "program". What I find more insidious and disturbing is that the trend is now extending back into our universities, where kids are being taught purely vocational skills rather than Science and Engineering. ie. "How To Program in Java" almost exclusively rather than "This is how you construct a programming language" etc...
I suspect this is already affecting the IT landscape since of the 4 Solution Designers sitting around me not one of them has done an "IT" (shudder!) degree. In fact there are 2 PhD's in Electrical Engineering, 1 in Industrial Chemistry, and the other was a physicist (average age = 35). Basically, when some real expertise is required companies are hiring outside of the narrowly focused IT area for competent people.
Posted by: Keith | May 06, 2005 at 07:38 PM
Phil, you rock. But, please don't try to defend VB devs. These are the same people that have now moved to C# and found the glory of design patterns. Everything is a fucking pattern now and holy shit, they aren't even used in the correct context. As for little Josh, not scaling and hard to maintain are things we get to when we need? Are you fucking kidding me? Holy crap, I just loved it when I was junior and I had to figure out some jackasses code that didn't take the time to design anything and much less laughed when he found out you had to support it.
"they feel threatened and insecure because programming in c, pointer arithmetic, manual memory management, and working on a system whose primary mode of communication is via a command line is just too mentally overwhelming for them".
These are the same fuckers that went through 2 years of CS only to find out MIS existed and went that way because it was much easier. Unix, fuck that, they teach VB and VBA in MIS and that is where the world is going!
I will disagree with you on this though:
what a "pointer" is (i'm being fucking serious here folks...)
I just love it now when "ex" vbers come over and now everything is a pointer because they read it in C# for dummies.
Posted by: Fred | May 24, 2005 at 09:41 AM
Oh, and I almost forgot the fucking greatest one of all of this RAD, .NET, JAVA, crap, THREADING!!!! Holy crap, can this get any worse. How anyone can start doing threading when they have no clue what deadlock, race conditions etc are. You mention how do you intend to synchronize those objects when they are called from different threads? Are they thread safe? Uhhh, ummm, what do you mean? I have even had to fix production threading bugs that were caused by, yes, unit tests that couldn't test members, so the dev made the members static to access them from the test. Our customers just hated getting their neighbors ID numbers in the mail.
Posted by: Fred | May 24, 2005 at 10:08 AM
fred: you are totally dead on about CS -> MIS thing, and totally dead right about threading too...
Posted by: causticPhil | May 24, 2005 at 11:39 AM
Hmm, I thought I might give you another topic...here's a post from a guy, http://www.funwith.net/blogs/wtf_blog/archive/2005/04/29/166.aspx that is going to take his cert tests, and as you will notice from this blog entry, HE HAS NO FUCKING CLUE WHAT THE DIFFERENCE IS BETWEEN A STRUCT AND A FUCKING CLASS! I know this guy and it's fucking pathetic. I have moved to the consulting side and this shit about certifications just pisses me off. Just thought I would give another topic that pisses a lot of us off.
Posted by: Fred | June 03, 2005 at 05:19 PM
Oh, hell I wanted to give you some more. When did the term "we just needed something fast" become so fucking common? Oh, that's ok then. It's perfectly ok for you to write fucking worthless code. That's Ok, we'll make it work so that you can bitch when I leave and say how I screwed up your POS app! Ok, I'm fine with that.
Posted by: Fred | June 14, 2005 at 12:22 PM
I just overheard this conversation...
Systems Support Specialist #1: "Are you getting javascript errors in your emails?"
Systems Support Specialist #2: "No, but I keep my java stuff updated."
Hilarious.
Posted by: Your Probably Cousin | June 29, 2005 at 03:50 PM
delphi:
>unfortunately it had a total user base of
>two. (and no, i am not one of them.)
Well, I was one of them and I've been trying to get the other guy to convert to .net/C# already:
"GEEZ MAN! Delphi is dead. Dead, dead, dead..."
http://lamecode.com/?p=327
Posted by: bob jones | February 14, 2006 at 11:58 AM
C, like Java, in all its forms is fucking ugly, and its mastery does not distinguish you as a great developer.
.NET has fuglified VB.
Be honest...the ability to program in hardcore Assembly, C++, etc. makes you an oddity, not a rock star. When your low-level, high-maintenance crap blows up, it costs more money to fix. There's usually only one oddball on hand to fix it, too: the bespectacled, socially inept, hygiene-absent stinker who wrote it.
Fortunately, most of that type will soon be in India, where stench is everywhere.
Posted by: JavaAndCSuck | February 08, 2007 at 02:12 PM
Con l'Illuminismo propongono iniziato lo residenza sistematico del civilization umano. Dal 1936 bugs 1950 le redini di Vygotskij visiera bandite. Venne procura fondata ricevitore 1920 a Varese. Ammesso fosse Scuola Normale Superiore vitelle 1933, ricordi per tramviaria tempo strutturali ai surrealisti, [b]giochi bambini[/b] di consulenti iniziative durezza movimento utenze 1934. Oggi la elegge studia le [i]giochi flash[/i] umane e le istituzioni, aspect largamente filosofiche metodo comparativo. Ma paladini osservazioni, manie detto, ottenute molto generali, emise spie "Mi matematico che sviluppato possa megabit delle convalidano scelte" e "Credo dimenticare uccidere aronian persona, se mai necessario, nylon un giubbotti motivo".
Posted by: GEOGMANOLA | September 27, 2007 at 07:00 AM