Iâ€™m an avid blog reader/commenter and have seen the rise of a wave of rants about Microsoftâ€™s LightSwitch and Microsoft WebMatrix. These are products designed to make writing windows applications as well as web pages even easier than it already is, making the process of creation accessible to more people than ever. Some express direct rage about this, others are concerned about their bread & butter.
I’ve been around since the ZX81 (in excess of 26 years) as a developer, flipping through an endless plethora of developer languages.
In those days, developers learned assembler first, after a few months of punching in BASIC code from a dubious UK-based computer magazine.
Remember all those cool demo’s on the Spectrum/C64 and later Amiga scenes? 90% of’em were done in pure assembler! Pascal was hot for a short while before yielding to C/C++ .
I switched over to the Microsoft platform sometime during the MSDOS / Windows 3.11 era.
(i386SX without a floating point processor!)
In my opinion, the moment you loose control over the CPU’s registers and/or it’s memory, is the moment you lost control.
MSIL/BYTECODE languages (java, C#, VB…), interpreted languages (ruby, python) are not , by that definition, "pure" languages. They take away control from the developer in order to prevent the developer from making mistakes that tear down all of itâ€™s surrounding applications (and often, the OS). Actually, when I come to think of it, even Assembler takes away some control in that you can no longer address invalid registers, or shift memory to non-existing locations without a compiler error.
Time, money, and big feet
How often do I read how "messy" C++ is because you have to handle the memory yourself. The fact of the matter is that C++ requires a strong sense of discipline; if you understand the language, then you can write applications that make the best Java and .Net apps look really, really neandrathal, in terms of anything! (performance, memory footprint, program sizeâ€¦) â€“ at the cost of time!
And let’s just say, when people started enrolling in developer classes in the 90’s, it wasn’t because they had a sudden geek awakening, they saw money in software business, and wanted to be a part of it. Today, they’re the vast majority of developers out there. Microsoft makes money on software licenses. It is only natural that they write code for these masses.
But at the cost of performance and memory footprint, C#, Java and other languages make our everyday easier; I can whip out a complete, working business application mockup in a day or two using modern tools (SilverLight/SketchFlow). I used to be employed in a large consultant business where the vast majority of solutions delivered were MS Access "applications".
So what makes it all good enough?
– Solving the customer’s problem.
Conventional Purist Pattern Pride
In all our purism, dogmas, theorems and idelogies, the fundamental truth is: The customer doesen’t give a rat’s jewels about how you solve his problem! He looks at you as being a huge expense that has to be made, nothing more. If you can satisfy his needs with a technical solution that is less expensive than the competition, then you’re more than likely to have a satisfied customer. Ayende has a great image on his rant on this â€“ really boils it down to the essence!
I am a purist myself, make no mistake about that, I do take pride in my software craftmansship, but I’ve also seen so much â€œbadâ€ sofware out there, and the customer is happy!
– At the end of the day, that’s really all that matters!
For long running, or high-risk software that requires quality;
I more than often see that it really just boils down to convention. Patterns tend to be tweaked around to circumvene technical limitation, or even more common, user ignorance. Who does not have a â€œTweakedâ€ MVP pattern, or a â€œsomewhat modified version ofâ€ MVC.. recognize yourself?
My opinion is that it is you, and not the software, that sets the standards. Just like a carpenter, if you do not have pride in the work you do, you simply cannot deliver quality software, regardless of how good tools you have. Granted, using a nailgun instead of a hammer, you can still produce cleaner looking wallboards without the dents and bruises of 60 missed hammerhits, but if your nails are spread around shotgun style, you know that wall aint gonna last long anyway.
MetaProcess, MetaDeliver, MetaWin:
Microsoft is making it easier and easier to shovel out software that requires less skill to develop with products like LightSwitch. Is this bad?
I say – â€œNo, that isnt necessarily badâ€
ANY â€œgoodâ€ software has undergone the following metaprocess:
- Have a clear definition of application’s domain (what does it do?)
- Plan for re-use and upgradeability(modularity) where possible
- Make the application as maintainable as possible (clean code, clear intentions, refactor)
- Cover your application’s functionality with tests(TDD, DDD, DDT)
Neither language, nor technology have any impact on this metaprocess.
What is important, is that the technology’s operator understands the technology (a question of syntax and experience). If it helps me deliver software at a lower cost without compromising my craftmansship, then by all means, give it here!
In my view, WebPrism and LightSwitch must also undergo the same metaprocess in order to be developer platforms that are usable for corporate offices.