Over-Engineering and Picking the Right Tool For the Job

I saw an article this morning by +Jeremy Likness referring to common over-engineering mistakes in Silverlight Application Development and it made me think about the topic at a much higher level.

I haven't really worked in a Microsoft Shop for well over 4 years now and it has been a breath of fresh air as multiple types of technologies have been employed wherever I've been for various reasons but when necessary, they get glued together with .NET based technologies.

7 years ago I worked in a Microsoft Shop that absolutely hated the mere idea of Adobe Flash. It was an evil word and one that was better left unspoken.

Silverlight didn't exist at that time and so all the C# developers there had no reason to look at Flash. It was crappy. It was built by "people that were not programmers and didn't know how to 'do it right'".

So what did we do? We built everything with HTML, CSS and JavaScript and gave the user the feature rich experience they expected for the designated platform.

Move forward a couple of years and Silverlight is on the scene and all the .NET Developers jumped on it like it was some amazingly new technology.... something revolutionary. Sorry but no, it wasn't anything new, it was just Adobe Flash re-imagined by Microsoft using .NET based languages such as C# to do the programming. MXML was replaced with XAML and the Object Oriented ActionScript Programming Language was replaced with C#.

So all of a sudden Silverlight was popular with all the naysayers that never accepted Flash. Why? Because it was made by Microsoft and you could use C# to program it.

Let's move forward to today. Now Silverlight Developers are a dime a dozen and both Silverlight and Adobe Flash Developers still don't get what their number one over-engineering mistake is.

You're doing it wrong.

Both Silverlight and Flash developers sit down with the very same tasks and rather than using the tools and technologies globally accepted and standardized for their release platform, they instead decide to force a square peg into a circle hole.

For Silverlight developers it doesn't matter. Their scope goes no further than Internet Explorer as 90% of all Silverlight Applications are for Intranets so they don't really care.

Microsoft has been telling Silverlight Developers for the last 2 years that they should focus on HTML5 but still, they are reluctant to actually learn how to program for their desired release platform.

There's your mistake. Both Flash and Silverlight Developers begin over-engineering their applications every time they elect to use those technologies to build applications for the stateless web.

My advice, learn to program for your platform.

Don't get me wrong, I am not so closed minded as to not see the need for Flash or Silverlight but personally, I prefer to view them as vehicles to provide assets for a given project. Much like PhotoShop, Premiere or 3D Studio MAX, Silverlight and Flash are best when used carefully and purposely as assets for a given project rather than over-used to be the project.

By the way, the article +Jeremy Likness wrote on the subject of "over-engineering" is very good and you should definitely take a look at it no matter what Programming Language or Frameworks you use to Develop as the concepts are the same.

The Top 10 Over-Engineering Mistakes in Silverlight Applications

Good article Jeremy.
Shared publiclyView activity