Wow! Was I surprised to see the number of page loads reported in StatCounter for my little blog article from the night before. My PII 600Mhz 384 meg RAM web server circa 2001 was barely able to keep its CPU from melting down.
Double wow on some of the comments. It seems a split between those who got the article and others, well, maybe giving the benefit of the doubt that I was not as clear as I could have been with what I was trying to communicate.
However, having looked at some of the Hacker News comments and Programming Reddit comments, it is clear that some people did not seem to get the point I was trying to make.
Let me try again using a concrete example this time. Let’s use my open source web application I wrote as the example because you are free to download the source code and examine it to your heart’s content to make up your own minds as to what my beef is, if you so desire.
My web app is really simple, in fact, the application consists of exactly one page! Mind you there is a lot going on as your will see, but still, it is one page. For now, who cares what it does, let’s look at the list of technologies, frameworks, languages, components, etc., used (and reused) in this “one page” web application:
-
ASP.NET 2.0 framework classes
-
ASP.NET AJAX (.NET 3.5 FCL)
-
ASP.NET AJAX Control Toolkit (Tab and Hover controls)
-
.NET 3.5 Windows Communication Foundation (WCF) framework classes
-
Visual Studio 2008 IDE
-
C#
-
JavaScript
-
VBScript
-
CSS
-
HTML
-
XML
-
MDbg CLR Managed Debugger (mdbg) Sample application and API framework
-
.NET 2.0 Winforms framework classes
-
Microsoft Agent SDK (API framework)
-
Microsoft Remote Desktop Web Connection Active X component
-
Google Earth application
-
Google Earth Airlines ActiveX web plug-in for Google Earth with JavaScript API
-
Prototype.js open source AJAX framework
-
IronPython 2.0B2 and Dynamic Language Runtime (DLR) with IronRuby support
-
IronPythonTextbox – open source IronPython rich client text box and interpreter
-
Edit Area – open source JavaScript source code editor with syntax highlighting
-
Color List Box – open source WinForms modified List Control
-
Joshua – open source interactive JavaScript HTML console window
-
RealWorldGrid – open source ASP.NET modified GridView control
For those that did read the first post in this series, do you now see what I mean? No? Let me further illuminate with the following ten points:
-
Did I say I hated frameworks? No
-
Did I say I wanted to reinvent the wheel? No.
-
Did I say I wanted to do pure programming? No.
-
Did I say I wanted to code from scratch and roll my own framework? No.
-
Did I say I did not want to use frameworks or reuse code? No.
-
Did I say that I wanted to return to my beloved VB 6 as my “ideal development model?” No, in fact, I have not used VB6 since 2000 when I converted to C# .NET (I was an early adopter).
-
Did I say I was sick of programming? No, first sentence in previous post – I love to write code!
-
Yes, I have tried several programming languages, O/S’s, IDE’s, etc., over the last 17 years that I have been programming professionally – this is not about programming languages, other than that they are a part of a much larger issue.
-
Am I a hobbyist programmer? No, and not to sound defensive, I am a professionally trained software engineer, with a 2 year post grad in Software Engineering Management and 17 years professional experience. I have worked for Motorola (CMM Level 5), Kodak (CMM Level 3) and several other shops of various sizes and industries, plus ran my own successful custom software development company for four years with a staff of 25 people. Currently I work for one of the best custom software development companies that produce enterprise ecommerce solutions to some of the largest retailers and supply chains in the world – the odds are that you have already used our ecommerce software and don’t even know it.
-
You want to interview me? (for those that asked) First, pass my test by downloading my open source code and explain to my why my software design is good or bad and the reasons why for either. Then we will talk.
Enough Tom Foolery. What I said was that web application frameworks, components and tools are like 10 years behind the tools we are used to using to develop desktop applications. In fact, I stated that it is getting worse, not better. I used VB6 in a simple two tier application scenario as the example. Now lets compare to my web app.
Look at how much “stuff” has to be used to make my “one page” web application work. Imagine developing this as a desktop application. You could easily cut out 50% of the stuff used in the web application and still have the same functionality in a desktop application, the least of which would be a working WYSIWYG design editor.
This is what my one page web app looks like rendered in IE 7.
This is what my one page web app looks like rendered in Visual Studio 2008 design time mode.
And no, this is not just a Visual Studio problem, I have run into this with a variety of other web development tools.
My point is illustrated by the number of items listed to make a one page web application and the design time view of the web application. Way too much stuff and I can’t even see what I am doing! How is this helping me being more productive? It isn’t and that is my point. Our frameworks and tools for developing web applications are getting worse, not better. Vendors keep adding more and more stuff, yet we can’t even get an editor that shows a proper design time view of what we are trying to build.
How would an engineer design an automobile (or house or electronics or cell phone or game console or name your item) in AutoCAD with a design time view the same as the one for my web application above? It would not only be totally unacceptable, it would be ludicrous! So why do we, the software development industry, accept it? And worse yet, have people defend it in some of the comments I have read? That is what makes no sense to me at all. Am I the only one with the sunglasses from They Live? I hope not, cause if I remember the movie correctly, it ends badly
via http://softwareindustrialization.com/AProgrammersDilemmaProductivityLostPartII.aspx