Good Architecture Design Creates More Code and Takes More Time

I came to a realization this evening when working on a new release of our internal CRM application.  We are in the middle of re-designing our CRM from the ground up with new data structures and tons of new features.  That may sound like a drastic measure but the functionality of it as well as the scope has changed over the years so that's why we are redesigning it.  As a result we are taking the time to build our middle-tier using Windows Communication Foundation leveraging the Web Services Software Factory for WCF. 

WCF brings a lot to the table for us such as duplex messages, TCP binary messages and so on.  I'm a big fan of multi-tier design and good architecture design.  You know, the typical  UI->Middle Tier->Database approach.  Anyone that has built an application using three tiered design should know the majority of the work is in the middle-tier and about 70% of your effort is focused in this area. 

For our redesign, in the middle-tier we are following good architectural guidance by creating entities, separated business logic, separated data access and so on (WSSF really helps with this).   At times though I wish I could just drag and drop a database table onto a WinForm, create a strong type dataset and bind to a DataGridView control and totally forget the middle tier.  It sure is faster to code everything in the UI and hit the database directly this is no doubt.  In the end there are tons of draw backs though such as deployment, centralizing business rules, etc.  This is the first case in point that good architecture creates more code and ultimately takes more time.

This evening I was playing around with a test WinForm app for a prototype screen and realized since we are returning entities from the services layer we can't just bind the returned collection of entities to a DataGridView control and get all the sorting / filtering goodness we get with a Dataset.  In the end I had to write more code to be able to achieve this.  Sure it only turned out to be about 500-750 lines of code that will get re-used over and over and over again, but the fact remains that I had to write more code because I followed a good design practice.  This is case in point number two. 

For those that leverage consultants this is the difference in quotes you probably receive from various firms.  Or for those that ask developers how long something will take and he/she tells you two months when you were hoping they would say two weeks.  Sure you can find someone to get it done faster, but did they get it done correctly?  Will the system be easy to maintain?  Scale?   Be easy to extend in the future?  These are the things that developers over time have come to realize when building systems and it is hard to justify sometime to the business or to clients (if you are a consultant).  Sure it may take a developer longer to follow a good three tiered approach, but the business gets a lot of benefit down the road by going with a better architecture.   

RIM You Owe Me $450 or 3 Hours of My Life Back

I'm sitting eating lunch and it just hit me that I wasted three hours of my life last night trying to install the Blackberry Plugin for Visual Studio that was recently released.  I tried to install it on 2 different machines and it kept trying to install SQL Server Express 2005 although it was already installed.    I told it to skip the SQL Server Express install and it canceled the install.  Yeah, the whole thing.  I then told it to go ahead and try to install it hoping it would bomb and then move on.  It did bomb and appeared to be running through the rest of the install but then it would die. 

I spent a total of three hours trying to get this plugin to install.  RIM, if you are going to publish an installer at least make sure it works.  Did you test it on Vista?  How about x64?  Did you assume that no one would have express already installed?  You do know there is a SP2 upgrade for express to even work under Vista?  Why was this bundled in with the installer in the first place?  I can't believe the installer relies on SQL Server Express.  Really this just blows my mind that an installer would need express just to install.  WTF?

RIM, I've lowered my hourly rate to $150 since it was after hours so you only owe me $450 for this time wasting adventure.  I will only accept cash, sending me a $450 Blackberry is not acceptable. 

«August»
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678