CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Jeremy D. Miller -- The Shade Tree Developer

Under the hood and working with .Net, TDD, Software Design, and Agile Stuff

Will we ever learn?

I met a friend yesterday for lunch that works for one of my former employers.  I left this place five years ago because my division of IT had devolved into complete madness.  I've written about the organization several times, most recently in my Reversibility post with this little nugget about our process:

At no time in the project were developers, analysts, the architect, and the testers ever actively engaged on the project at the same time.

Basically, my then organization collapsed because we were reorganized along the "shared services" model where all the "resources" were temporarily assigned to a project for their particular phase.  The same projects that I would do today with a team of 4-6 people dedicated to the project would be done by over a dozen specialists popping in and out of the project at different times.  The fun part was that each and every person in the entire organization was spread over multiple projects at any one time (I topped out at 7-8 simultaneous projects as the "Architect").  Collaboration was basically zero.  Ownership was basically zero.  The VP who came up with this brainchild was removed and placed in charge of an ergonomics study for IT before being asked to leave (don't feel bad for her, she's now the CIO of a Fortune 500 company).

At the same time, they tried the old centralized team of non-coding architects and the typical hilarity ensued, culminating for me the day that our chief architect tried to demand that all data access be done through web services.  You might say to yourself, isn't that an atrociously inefficient way to do data access?  Both in terms of developer efficiency and performance?  Ah, but you just don't have the proper appreciation for enterprise level architecture concerns.

That's all water under the bridge and I've long since escaped into a more sane Agile world, but my poor friend might be going down the same path as his organization seems intent on making many of the exact same mistakes as my organization of 5 years ago.  He's just been named to the centralized architecture group and they're starting to split the different disciplines into more and more separate organizations.  The killer for me was being told that a corporate architecture group is trying to force all data access to be done through exchanging messages over a brand new ESB infrastructure.  Yee haa!
 


Published Feb 29 2008, 07:44 AM by Jeremy D. Miller
Filed under:

Comments

Chad Myers said:

"force all data access to be done through exchanging messages over a brand new ESB infrastructure"

Ah-hah! That'll solve it. Now, back to the bat cave, Robin.

I could almost hear the conversation in the room before that decision. "If only we could solve our anemic process. I know! We need (*cue superman music*) MORE TOOLS!"

# February 29, 2008 8:21 AM

jdn said:

Reminds me of the person who not only wanted data access to be done through services, but that all *joins* should be done by the C# code *after* it was pulled through the web service.

# February 29, 2008 11:04 AM

Jimmy Bogard said:

Gee, I wonder who the company might be....hmmm....

# February 29, 2008 11:07 AM

Dale Smith said:

"Water under the bridge"?  I think you mean "water over the fall".

# February 29, 2008 12:14 PM

Jeremy D. Miller said:

@jdn,

Come on!  Nobody still tries the "do the join in memory trick" anymore, do they?  I watched a very expensive supply chain automation suite crash and burn because of that.

# February 29, 2008 2:28 PM

jdn said:

Yeah, it was pretty stunning (though also hilarious) to hear the idea.  You know, the prototype against tables with 10 rows didn't before that bad, so how bad could it get with a gigabit network (production tables with hundreds of thousands or millions of rows)?

Luckily, it didn't make it past the next prototype (feel sorry for the two days of the developer's life he'll never get back).

# February 29, 2008 2:59 PM

Jeremy D. Miller said:

@jdn,

Here's the thing though, everytime I hear somebody say or read the word "hilarious" I just hear Jayne from Firefly

# February 29, 2008 3:34 PM

jdn said:

Had to look up the reference, but, yes.

# February 29, 2008 3:48 PM

Fernando said:

>>> culminating for me the day that our chief architect tried to demand that all data access be done through web services

What's so wrong with that concept? I'm asking from the standpoint of total ignorance on my part, really.

For example, the ADO.NET Data Services (Microsoft's forthcoming RESTful framework for data access, Link here: http://astoria.mslivelabs.com/) is implemented upon the ADO.NET Entity Framework and the RESTful facilities in Windows Communication Foundation. It basically brings a stateless data access to the web with CRUD support, all done via HTTP. It also serializes either JSON or AtomPub.

For any given data source to qualify as "ADO.NET Data Services-ready" it must implement two interfaces: IQueryable and IUpdatable. One of the tenets of the ADO.NET Data Services Framework was to be "persistence ignorant", meaning it doesn't matter who provides the data. However, as of today it only works with SQL Server 2005. In the long term other DB vendors will implement IQueryable and IUpdatable too.

With ADO.NET Data Services the queries (very succinctly) are sent to the service over the wire, and the corresponding result sets are returned to the client. The heavylifting is carried out by the DB engine, as it has to be. In the cases where it's not possible to represent a query with a RESTful URI, you have to pull the raw data and do the heavy lifting via C# code in the client as one commenter pointed out.

I understand this technology is best suited for the WWW, however it also targets corporate development. In that regard the ADO.NET Data Service Framework already provides the respective client libraries.

Now my questions:

Isn't this story about "data access done through web services" ?

What's wrong with it? (boyond the somehow un-performant HTTP protocol and serialization overheads, which are evident).

Thanks.

# March 11, 2008 9:05 AM

Craig Bowes said:

@Fernando

I think the key problem is not that he decided to do SOME data access through web services, but ALL data access.  Right tool for the right job.

I use O/R Mappers.   Generally, they don't have the same performance problems that a web service might have.  They call databases without all the serialization.  But I still wouldn't say every project  or every query or ALL data access must be done through an ORM.  I use them where they're appropriate.  Thats what being a programmer (or architect although I hate that word) is all about.

# March 13, 2008 10:56 PM

Adron said:

I think "right tool for the job" sums it up nicely.  If you have millions of transactions or other heavy lifting going on between the database and whatever application, you really don't have the "convenience" or whatever one would call doing all data access through the web services.  I've seen it attempted with WCF and that didn't fly at all.  I've also seen it attempted back with WSE 3.x stuff.  Maybe in certain SOA situations it might work fairly good, but even then SOA != Web Services and Web Services != SOA.

# March 19, 2008 12:46 PM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Jeremy D. Miller

Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy previously worked as a systems architect building mission critical supply chain software for a Fortune 100 company and learned agile development practices as a .Net consultant at ThoughtWorks, one of the pioneers of agile development. Jeremy is the author of the open source StructureMap (http://structuremap.sourceforge.net) tool for Dependency Injection with .Net and the forthcoming StoryTeller (http://storyteller.tigris.org) tool for supercharged FIT testing in .Net. Jeremy's thoughts on just about everything software related can be found on his weblog "The Shade Tree Developer" at http://codebetter.com/blogs/jeremy.miller, part of the popular CodeBetter site. Jeremy is a Microsoft MVP for C#. Check out Devlicio.us!

This Blog

Syndication

News

All opinions expressed here constitute my (Jeremy D. Miller's) personal opinion, and do not necessarily represent the opinion of any other organization or person, including (but not limited to) my fellow employees, my employer, its clients or their agents.

About Me

"Best Of" Compendium

StructureMap (Dependency Injection for .Net)

StoryTeller (Supercharged Fit)

Build your own Cab

TestDriven

MVP