Latest Replies
Thursday
Aug052010

Microsoft.Data, LightSwitch and WebMatrix are the Next Step of Evolution

There is a bit of flame wars in the community around the latest Microsoft projects:

  • Microsoft.Data - new assembly/namespace that contains everything you’ll ever need to access a database © Microsoft.
  • MIcrosoft Visual Studio Lightswitch - the simplest way to build business applications for the cloud & the desktop © Microsoft.
  • Microsoft WebMatrix - everything you need to build Web sites using Windows. Small, simple and seamless © Microsoft.

These products look like they are quite simple to use, lowering the entry barrier for the developer skills and initial resource investment. This means, that more business-oriented companies without a big budget for highly-qualified developers will be able to benefit from the IT boost such technologies provide (as compared to the mail/paper based solutions, for example).

Even a CS grad could assemble something really useful for the business with such tools. This is exactly what creates business value and benefit for the real people that will be served by such solutions. Obviously the code would be less than perfect (all of my projects older than a year have plenty of room for improvement), but that's much better than nothing!

At the same time there is a lot of critique coming from the .NET pro devs that goes like this:

...If Microsoft thinks that they can get the market for bad developers, good for them. But that needs to be highly segmented. It should be clear that going with that route is leading you to a walled garden and that writing real apps this way is not good. (Ayende on Microsoft.Data).

These complaints are pretty much summed nicely by Lance Hunt:

it seems that the public .NET Community has become more and more elitist and biased towards “purity” in programming to the extent that anything less than perfectly crafted code is failure.

The fun part is that these "pure" approaches are not that perfect either (nobody is perfect, and that's good). For example, let's consider Alt.NET to be the "next cycle of evolution" above the WebMatrix and Microsoft.Data. Well, these approaches and tools are a less-than-perfect for complex enterprise solutions with wild auto-scaling in the cloud, reliable processing and integration in the unreliable business world, where you have to factor in probabilities, alternate realities and costs of managing that. Different thinking and tools are required in order to be really efficient there. I would assume that the next level of complexity and scalability above that (i.e.: quantum computing and SkyNet) would require completely different mind-set as well.

Given all that, every single approach has it's own place under the sun. Business context and real-world costs determine the efficiency of the specific approach in every single case. Case conditions also tend to change as the business evolves in anticipation to the environment changes around it.

One could look at Microsoft.Data, LightSwitch and WebMatrix as a way to capture and verify initial business requirements in the code in a cost-effective manner. From this standpoint, these approaches are much better, than solutions implemented with VB Macros, MS Access and ASP pages with embedded SQL. That's the next step of evolution in this niche.

Let's say a few freelance students implement such a project for the company that really needs to speed up some paper-work and automate a few forms. Essentially they are using equivalents of duct-tape, wood and staple guns to build something.

If such a project works out and helps the company to grow, this will be indicated by the encountered bottlenecks and willingness of the business to pay for the further evolution. Then, higher-level developers and teams could chime in and be creative about refactoring, data access and sharp tools, where it matters. Sure, the structure will be shaky, but do you always bring construction crane, hardware, concrete and certified architects, whenever you need to fix a shed for a few days?

Afterwards, if the business is lucky to grow to the next complexity and performance level, there could be CQRS, DDD and cloud computing applied to the stress points. And so on.

In the long run, all these things are just tools fit for some jobs and expensive (time, budget or quality) for the other cases. If one does not find a good use for the duct-tape in everyday life, that's still not the reason to ban its production. Natural selection and business demand will eventually figure out what's worth what.

« Windows Azure Storage Can Be Confusing | Main | Challenges of the Code Documentation »

Reader Comments (13)

Yep, I totally agree. I have been myself in the "elitist" camp, but business reality is something else. There are situations where you have a business opportunity, but can't have good developers at hand right now for geographical / deadline / budget reasons. These tools might help in such (very common) cases.

August 5, 2010 | Unregistered CommenterJulien Letrouit

+1

August 5, 2010 | Unregistered CommenterSean Kearon

Bang on. +1.

August 5, 2010 | Unregistered CommenterBen Taylor

Well put. I think as devs we often lose sight of the fact that at the end of the day we're there to add value to the business, not develop perfect solutions. It's easy to want everything clean and tidy and perfect, but the reality is that it can't always be like that (at least without an unlimited budget). I was watching Eric Evans' talk about Strategic Design from NDC2010 yesterday and his first point really resonated with me. "Not all of a large system will be well designed."

August 5, 2010 | Unregistered CommenterJeremy Wiebe

I agree - it is the next stage in app dev evolution. This is just taking RIA services a few steps further to provide a complete and common app framework that is not just the foundations, and without the black box sharepoint baggage.

I have been at several customers where I've had to build "same but different" infra again and again - big multi solution .NET 4 systems with hundreds of projects. We roll out Prism, WCF pub sub +MSMQ, EntLib etc ad infinitum ...

I am counting on LightSwitch to rapidly generate a baseline - with plenty of.NET hook points, interfaces, plugins and template points to be 100% customizable and extensible. It will generate a common base infrastructure - instead of us reinventing the wheel doing repetitive work, we can then focus on more complex algorithmics.

August 5, 2010 | Unregistered CommenterJosh

I have been deving in .net forever. We have developed a highly complex framework to do our enterprise development with, but I can't wait to get my hands on LS. If I can bang out a simple app in no time, I am all for it if it's built on top of .net and Sql Server. My hobby projects will actually get done due to the time shrinkage. Bring it on.

Oh and your post was right on target.

August 6, 2010 | Unregistered CommenterTerrence

Long time ago I wished there exists a RAD tool which is similar to MS Access, but on the top of .NET. We had to create a lot of data entry forms. Most of the forms deal with only one table in the database but may also need a look-up column. Now Lightswitch is the right tool for such simple data entry applications! I think LS is a very good project. It needs to exist! We need to try it! If it happens to be bad , well it is still good for 1 thing -> unless we finish all the bad solutions & ideas we may not come to the perfect solution!

August 6, 2010 | Unregistered CommenterElias Haileselassie

I agree that there's a lot of unhealthy elitism going around in the .NET development community, and even unhealthier is the rampant fundamentalism that has nothing to do getting things done.

However, I really understand the negative response toward LightSwitch. Maybe, even hopefully, it will turn out to be a great tool. But...

1. It's not as we haven't seen a lot of RAD/CRUD frameworks before (and the video presentation of LS still presented it as something new), and they usually fail miserably in real world applications. Most .NET developers are ASP.NET developers and we have all (?) seen Microsoft demo the virtues of DataSources + Master/Detail, etc., only to soon find out that it just doesn't work.

2. The general pleasure level in the community is going south quickly. A lot of vocal developers are jumping ship (or implying that they want to), turning to other platforms where they've found more productivity and innovation.

In that situation, what the development community needed the least was yet another RAD tool which seems to repeat the old recipes for rapid application failure.

That said, we certainly spend a lot too much time creating CRUD+Master Detail code and could use some good practices (not necessarily tools or frameworks) to handle that, but I doubt that LS will do much to help. Remove a couple of mentions of "the cloud", "distributed" and "Silverlight" from the manuscript for the LS presentation and it could have been written 15 years ago.

August 6, 2010 | Unregistered Commentergunteman

Gunteman, I've heard from folks that were making 5-digit figures per month if LS-like frameworks (DX XAF), by simply dropping out forms and some lists. Everybody was happy, so this seems to work out.

One thing, this platform still lacks is the simplicity of deployment offered by the cloud capabilities. These could reduce the friction a lot in LS-powered solutions.

August 6, 2010 | Registered CommenterRinat Abdullin

Jeremy, precisely! Ivory-tower designs tend to be to unrealistic to survive in the harsh world.

August 6, 2010 | Registered CommenterRinat Abdullin

It's been tried before, and will be tried again. In an ideal world, tools like these would let us hire cheaper developers and churn out more software per calendar month than we used to. However, the notion that this does not imply any degradation in development standards and quality is ludicrous: we already have fairly clear-cut segmentation between various business models (in-house, consulting, outsourcing, etc.) and the way they relate to quality. When you introduce tools catering to a less professional business segment, you immediately ruin the game and devalue the industry.

August 7, 2010 | Unregistered CommenterDmitri Nesteruk

@Dmitri, tools are just tools. They do what they are designed for in the hands of the owner. Planning the project, designing the architecture, managing risks and costs happens at higher logical level than applying the tools. Hence, if explicitly considered, it is possible to design architecture that considers efficient (cost-effective) outsourcing from the start, while using the most of the technologies and tools available. I'm currently working on the article talking on this subject.

August 8, 2010 | Registered CommenterRinat Abdullin

The majority of technology complaints for LS basically seem to be solved by patterns - since LS's output uses the same language/runtime as the people writing software with those patterns, why can't it replace those people once the patterns are added into the templates that generate LS apps? (including regenerating existing LS applications to use those patterns and/or new microsoft favored technologies)

I'm no microsoft fanboy - I tend to find them to be a significant factor in why computers are 10 years behind what we could have already, however, azure, silverlight - these aren't buzzword technologies, rather part of the next era of technology many businesses will utilize. (and from the sounds of it there are many pet projects going on in/near the group working with templates for various other parts of the MS stack)

When I look at it, the part microsoft doesn't appear to be overly promoting in their marketing is the model driven nature of LS. Long term, basing it on entity framework pushes business IP into microsoft's modeling technology which can be used to generate other application types with the advent of new templates; (eg WPF version of the templates)

I'd say the clamor in the community is based on it's [warranted] insecurity - when comparing to previous attempts, (the platform access is built on isn't open like .net or utilizing MDA technology) it's not about technology, that seems somewhat like a sure thing- the biggest question is if microsoft can find the audience and manage their communities - LS has the potential of generating more unform/feature-rich code through templates than what a team could afford to produce while re-using the models business developers would create in the first releases of LS to keep producing more capable applications without developer intervention.

I think when M$ figures out the extensibility patterns for where to add custom code, and promotes building relationships between business users and software architects, (instead of between business users and developers) the product could conceivably replace 90% of enterprise coding.

September 9, 2010 | Unregistered CommenterFosterAF
Comments for this entry have been disabled. Additional comments may not be added to this entry at this time.