…but is anyone home?
Ok horrible pun, but here’s the question – is Microsoft LightSwitch worth the price of admission?
A little autobiographical interlude
So I attended my first meeting of the Perth .NET Community of Practice yesterday. It was held in the seminar room at Ennex 100, right in the heart of the CBD. I had no idea that the Perth Microsoft Office was right next door – they must have the most kick ass lunches!
The talk was by Andrew Coates about LightSwitch. The talk itself was great and I think I’ll be attending more of these kind of things. Was a little bemused by the fact that Visual Studio 2010 managed to lock up during the demo several times, especially considering that Andrew’s laptop was rocking 8 cores!
Back to the point – LightSwitch
LightSwitch is a totally RAD, sorry I mean Rapid Application Development, tool which gives non-software people, or as Andrew referred to them: “The Omega Geeks”, the ability to quickly build a forms over data application. My first gripe is with the non-software people part, but I’ll get back to that.
So when LightSwitch fires up, you’re asked to specify where the data is coming from. You can pull in data from a variety of different sources, as long as they are Microsoft SQL Server or Microsoft Sharepoint. Luckily this aspect, along with most other aspects of the product, is extensible.
Next, you’re essentially asked to design the database schema. Woah, hold up! That doesn’t really sound like a non-software person kind of job. Even the plain English definitions of One-to-One, Many-to-One, etc. will probably be lost on the target audience. Validation functions? Computed fields? Forget about it. Second gripe.
Next, you define your screens – essentially the ‘view’ part if we’re talking MVC. This part looks rather neat. There’s a bundle of readily available common screen formats available: row edits, list and details, new entry, grid. Select your screen, point it at a table in your database and BOOM, out pops a… wait, what? A tree view of the screen? This is my third gripe. So now you’re non-software people have to arrange everything in this tree, because apparently non-software people don’t have a clue about HCI either. To see the result you have to build the solution and launch the application. Confused? Imagine how the user is going to feel.
Ok enough hating, now the good bits. Everything is extensible. You name it, it’s extensible. And not in some junky macro language extensible I mean plug in there and start writing C# code extensible. So here’s the idea: Non-software person reaches the limits of their ability. They can then call in Captain Software to the rescue, who dives in and starts developing more powerful features with all the power and flexibility and portability of .NET. Oh wait sorry, forget the portability part.
So I admit, this is much better than the existing alternatives – Microsoft Access databases or (worse) an Excel Spreadsheet! Another biographical aside. I once worked for a company that did all of their company finances in Excel. With macros, cell formulas and the rest of it. No wonder the books didn’t balance. Eeeeek. But is this really a solution for the non-software guy, or is this simply another enabling tool that allows people out of their depth to dig their way into a giant, expensive, ominous mess?
The takeaway: Don’t let the “Omega Geeks” near our software!
I don’t think LightSwitch is the answer to the knowledge gap between us “Alpha Geeks” and the “Omega Geeks”. I can see the point that there is a great divide between these two camps and both of us are just as bad as each other when it comes to communicating effectively.
An example dialogue (paraphrasing from Andrew’s presentation):
“Omega Geek”: I need an application for my book store
“Alpha Geek”: Ok so give me a list of requirements and I’ll get back to you in a few weeks to talk architecture
“Omega Geek”: Archi..wha? I already have a house, I don’t need another one.
“Alpha Geek”: (panting) Ok here it is. It works using a plugin architecture, just enable the plugins you need at runtime. Oh and configuration is done using a backend database. To change the configuration you just need to do a few SQL queries. Simple right? Oh and I had a problem getting it to run on Windows XP, the target platform you originally asked for, so you’re going to have to upgrade everyone to Windows 7. Oh and I didn’t get time to write the user manual. Cool?
“Omega Geek”: Dude. I run a book store. Well I used to. Now I’m broke. Thanks a lot.
Now a counter-example:
“Omega Geek”: I need an application for my book store
“Alpha Geek”: Ok what do you want it to do?
“Omega Geek”: I don’t know. Database or something. Reporting. Automate. Internet. And stuff.
“Alpha Geek”: (sigh) Have you heard of this new awesome LightSwitch thing. It’s awesome. Bye.
I’m not trying to be jerk to anyone here, it’s just the nature of the beast that we attempt to tame every day. So how do you cross this great divide? In my opinion, you build a bridge. You insist on close and consistent communication between both parties. You iterate early and often. You remain flexible to change at all times. Uh wait, sounds like I’m stumbling towards something like Agile. What I’m adamant that you don’t do is give the “Omega Geeks” a hang glider and say JUUUUUUMP!
An alternate use case: Tool for developers and aspiring developers
So just quickly, I’m already past the point of rambling here, what can we do with a broken LightSwitch? How bout we turn the tables. I see LightSwitch as a fantastic tool for “Alpha Geeks” to use as part of their development process. Want a working GUI prototype in seconds? Boom. Want to let your customer populate the back end before the front end has caught up? Boom. Want to get fancier? Reach for your C# and boom! (ok, you get the point. Boom)
What about the kiddies? (I say knowing full well that most “kids” are already far more advanced in their software career than I am, after selling their fart app on the App Store). I see this as a great way for aspiring developers to get started with .NET. Think about it, a rich, graphical, tweak-able application seems a lot more exciting to me than “Hello World”. As their code ninja skills increase, they can delve further and further into the code until they look around one day and say “Holy crap, I’m an Alpha Geek!”.