Jeremy D. Miller -- The Shade Tree Developer

Sponsors

The Lounge

Wicked Cool Jobs

Syndication

News

Advertisement

Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at imagehelp@codebetter.com
How many frameworks does it take to screw in a lightbulb?

Ok, I spent the better part of today and yesterday writing code and configuring build scripts to take a couple lists of reference data from an Oracle table and put that data into a dropdown in a .Net client via a web service written in Java.

I used:

  1. Oracle + DDL scripts + a NAnt script to setup the database from scratch
  2. Spring + 3 xml configuration files
  3. iBatis + 2 xml configuration files
  4. Tomcat
  5. Maven + many, many loose ends of xml.  As far as I can tell, Maven is to Ant as a jack hammer is to a regular hammer
  6. Apache Axis for web services
  7. JUnit
  8. StructureMap to configure the web service proxy
  9. The XSD tool to help roll the web service proxy
  10. A new build script to set up the database
  11. New Fit fixtures to drive the web service and set up data in the database
  12. StoryTeller to run the Fit tests
  13. A little homegrown tool to help codegen the WSDL file as messages are added later.  We're more or less doing Contract First definition of web services.  Ted Neward recently called this the 5th circle of hell.  If Dante were writing today, he just might have included SOAP in there somewhere.
  14. Let's say about two dozen little classes between Java and .Net, including test fixtures

The list is a little bit bogus because there will be about a dozen more web service methods over the next month and we've effectively layed down a nice foundation, but still, all I needed to do was to take a couple lists of strings and stuff them into a ComboBox.  In the back of my mind is a little voice saying "do you know how fast this would have been if you could just code the entire thing as an Access app?"  Down little voice, down!


Posted Tue, May 8 2007 4:08 PM by Jeremy D. Miller

[Advertisement]

Comments

Fregas wrote re: How many frameworks does it take to screw in a lightbulb?
on Tue, May 8 2007 11:58 PM

Yeah for something that simple, was all that really necessary?

By the way, how do you like iBatis?

Tokes wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 1:20 AM

And the true irony is that each of these frameworks claims to make us more efficient. In the development community we are frequently guilty of adding increasing numbers of layers of abstraction to protect us from future change, to increase maintainability (!!), to improve robustness...

And what's worse we do this at the expense of our very existence - stop reading now if you have a sensitive stomach - developers only exist to solve business problems. That's right, your clients won't judge you by the number of cool patterns you've used or by how many open source frameworks you've managed to conquer. As developers, we have to constantly remind ourselves of the end goal and not be blinded by the technology candy that tempts us (myself included).

Ivo Grootjes wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 7:26 AM

Interesting post :) Alot of people must recognize that voice u mention, at least I do. I know the solution you came up with in the end allows for better maintainable software. On the other hand, your solution requires a lot of knowledge about a lot of different technologies / tools. I think maybe 5-10% of the .Net developers in the world is able to fully understand your solution. In that perspective how maintainable is your solution by those 90% developers who have no clue why you used such a  (in their eyes unnecessarily) complex solution?

I guess developers should just be somehow forced to learn this stuff.

Jeremy D. Miller wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 8:24 AM

Thanks for the comments one and all.

@Fregas:

So far I'm pleasantly surprised by iBatis.  Granted, my needs on this project are relatively simple and I'm using the more mature Java version, but so far I'm feeling like it's a solid choice.  It's definitely faster than I could code this stuff going to JDBC raw (puke).  I was a little itchy when the client wanted to go to iBatis instead of Hibernate, but it's been less friction than Hibernate would have been for what we're doing.

I think I'm going to give iBatis.Net a spin soon.  

@Tokes:  There's enough functionality following on behind this to justify the infrastructure -- I think.  Some of the technology choice is driven by corporate standards, and theoretically that should imply a widespread familiarity with the technology throughout the larger enterprise (it could happen).  It still feels a bit wrong though.

@Ivo

Your comment makes me very uncomfortable.  It'll be supported by both Java & . Net developers later, but I'd be scared for them that no one single person will have a clear understanding of the whole after I'm gone.

Now you're starting up that whole neverending "do we dumb down simplify the approach" or "raise the level of developers" argument.

cmyers wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 8:51 AM

I'm really afraid for the future of the ALT.NET movement, or Open Source in general because of the fragmentation and a horrible case of 'Not Invented Here' syndrome. MS is bad, but OSS developers are 100x worse.

The people who do these projects are highly motivated, highly intelligent, highly interested people who also usually happen to be highly opinionated and intently focused which leads to a lot of reinvention.

We almost need a conference like MiX every year or other year to get all these people in a room and get them to settle on a singular configuration mechanism, a singular this, that or the other thing.

The hardest part about using any of these frameworks (Spring, NHibernate, StructureMap -- any of 'em) is that they're all so wildly different.

Some can justify their difference based on true innovation, but there needs to be some introspection/cool-off time where someone stands back and evaluates the situation and merges some of these innovations together to prevent the fragmentation we have today.

cmyers wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 8:56 AM

clarification: I didn't mean to say that Spring should merge with NHibernate, for example. I meant that the X project and Y project (and all ALT.NET projects) should compare notes and look to see what the other has done for, say, configuration or dynamic proxy type generation, or etc, etc, etc and try to unify these things and produce a common 'solution set'.

"Hey, are you an OSS developer starting a new project? Please strongly consider using the ALT.NET common configuration system!"

And we, as a community, should give a little pressure to the projects to move in this direction.

It benefits the developers, also, because they're not spinning wheels reinventing everything, every time and having to maintain it, etc, etc.

Jeremy D. Miller wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 9:02 AM

Chad,

As a thoroughly biased guy here, I'm going to mildly disagree.  Three points:

1.)  Diversity is good.  iBatis & Hibernate take different paths to O/R mapping.  The end result isn't just fragmentation, it's having solutions that fit different situations.

2.)  Genetic programming baby!  Only the strong will survive while the weaker tools will fall off.  Or at least that would be true if we didn't allow ourselves so much emotional attachment to our tools.  Of course "strong" means word of mouth and familiarity as much or more than technical merit.  *I* obviously think StructureMap is a better solution on technical grounds for IoC/DI than Spring.Net, but Spring.Net is winning hands down in terms of adoption.

3.)  Software development is young and the book is still being written as we speak.  I'm using better techniques, tools, and coding habits than I did 5 years ago.  I'm assuming that that'll be true in 5 more years.  Reuse and standards are *good,* but we could still use the innovaters like Heilsberg, DHH, and Avi Bryant to keep software development moving forward.

Jeremy D. Miller wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 9:11 AM

Chad,

You're right, but I think that it does happen.  I know that MbUnit has pushed NUnit somewhat.  I almost purposely ignore Windsor & Spring.Net to avoid the temptation to keep up with the Joneses.

cmyers wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 10:21 AM

Jeremy:

You made good points.

I wasn't referring, necessarily, to entire projects. I think that it's cool that we have iBatis and Hibernate, Sprint.NET and StructureMap, etc. These things need to exist.

I was referring to the more mundane aspects of each project. I'm willing to guess that the Configuration requirements of all four of those projects are almost identical. Sure, they have different items that need configured, but the MECHANISM by which they are configured (XML, fluent API, etc) could, essentially, be the same.

On your point #3, there's absolutely still room for innovation. If someone comes up with a new whiz-bang configuration mechanism, projects can start migrating to it or even adopt it without having to issue a new build, etc.

It seems that we, as a community, should introspect, at least a little, and come to a consensus on some of the more basic aspects of all these projects. I know I keep harping on Configuration (because it's the thing that the users most often interact with), but there are other things -- like the basic data access (I don't mean NHibernate/iBatis, I mean how to work with ADO, etc).

Does there really need to be 27 different ways to read an XML configuration file? Command-line parameters (sheesh! How many times have we all written cmd-line parameter parsers!!?)? to do ADO.NET/JDBC interaction?  

I'm willing to bet that when you started StructureMap and Storyteller, you spent more-time-than-you-should-have worrying about how to configure it, how to take cmd-line parameters, etc, etc, etc.  That's a shame. That's time that you could've spent making StructureMap/StoryTeller better. It just seems wasteful to me that our best community contributors are worrying about these things. People like you should be worrying about solving the bigger problems.

Maybe that's where someone like me should come in. I'm not a front-line major problem solver like you guys. Maybe people like me (and most of the people that read your blog, I'm willing to guess) should be working on these types of Support projects to enable people like you to be working on the Important Stuff(tm)?

Jeremy D. Miller wrote re: How many frameworks does it take to screw in a lightbulb?
on Wed, May 9 2007 12:35 PM

Chad,

I wonder how much this cross pollination will improve as the blogosphere becomes more and more important and prevalent.  When I was writing StructureMap I did it in complete isolation.  If I'd been in contact with Ayende or Hammet in 2004 it would have been much different, or I would have just jumped into Castle then.

Of course, come to find out, there are at least another pair of projects going to do things similar to my vision for StoryTeller, so who knows (one is from Rick Mugridge of FitLibrary fame and is Java centric, another is from Green Pepper.  I don't know much about either yet).

StructureMap is an accidental byproduct of worrying way too much about how to configure a framework.

StoryTeller just used StructureMap for configuration;-)

Point well taken though

The command line parser would be nice though.

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Devlicio.us