Tuesday, February 08, 2005

Howard Lewis Ship - Brilliant, Self Promoting Jackass, or Both?

Check out Howard's latest missive on The Server Side.

I'm not sure what to think of this guy. Every time he lays out a well thought out post, that everyone can learn from, helping to make their own mind about stuff....he ends up ruining it.

He outlines a fine commentary on why people get confused over IoC and/or DI:
I have seen a common thread among people who "don't get IOC" that they confuse an object constructor with the construction of a service.

The object is not the service (it's a key part of the service, but not the service itself). The object's constructor is not the services constructor.

Adding more code never makes things simpler! This kind of heavy weight approach just shifts the design towards more heavyweight, monolithic services. I prefer the opposite ... small, easily testable services with minimal dependencies.
And then proceeds to screw it all up with the following self-promoting lump of crap:
In Tapestry 3.1 (which is built on the HiveMind microkernel), most of my services inject fewer than three collaborators, often just one or two. So, even though there are dozens of individual services, testing is under control because no single service is that complicated. I know the system works because I do very complete unit testing, plus a good amount of automated integration testing.
What the hell is that? Why does this guy repeatedly ruin any good commentary he has by being so brazen to self promote his next consulting gig? It's highly obvious it's what he's doing, despite any claims otherwise. I can't believe he'd be that naive when it comes to posting.

But, just in case he is...Howard, take a clue, and just put it in your sig. At least then you wouldn't be tooting your own horn so much trying to make people think you're so freaking cool. How Tapestry/HiveMind does things is not part of the subject. Maybe you should blog about it and have people click over to your site to learn about it.

Perhaps "take it to email" needs to be updated to "take it to your blog". That's why I'm posting this here and not on that thread! It's not relevant to the thread whatsoever.


Howard said...

You mean I can't be both?

Honestly, I think you are missing the point about the discussion of Tapestry 3.1. Often these kind of architecture/design pattern discussions spin off into an ether of vague, abstract hypotheticals. Rewriting Tapestry 3.1 on top of HiveMind has been exhilarating for me, because it's been a chance to test and verify many assumptions about IoC/DI in general, and HiveMind in particular. You can talk a lot about the theory of IoC making things simpler and easier, I wanted to contribute some notes from the front-line trenches.

Howard said...

Also, Tapestry is not "my next consulting gig". It is a large, successful, open-source project that I created and lead, something I've devoted the last five years of my life to.

Mike said...

You can't honestly tell me that promoting your product doesn't promote your consulting practice. Come on now!

I've been a consultant, I know exactly what my consulting firm did when it sold its software packages. And people know who you are. And a simple google will show them what you have done.

My point is, you've got a good product that many people use. It just so happens to be open source. Which means those that know it "really really well" (TM) can offer up services. But you don't need to beat that message to a pulp. People who are looking for a framework will know about Tapestry.

FWIW, I wish that the product I currently work on had been able to choose something like Tapestry four years ago. Too late and costly to make a change like that now.

Howard said...

Of course promoting Tapestry promotes me. That doesn't mean it was out of line; it's like the game of Go: every move should have at least two purposes. Again, I return to hypothetical vs. practical. Tapestry 3.1 work is practical, something others can download and see.

Using IoC is giving me the strength of an Oak and the flexibility of Bamboo. In other words, shoehorning Portlet support into Tapestry is going quite well ... because of IoC.

Lastly, and sadly, all too many developers have not heard of Tapestry. Marketing may seem like an annoyance to reasonable techies, but it is a real and important force in technology decisions.

Mike said...

And of course marketing is paramount to technology. And yes it's something most techies can't stand...find it selling out or whatever.

I have no problem with it...but I think there is a way to promote without being over the top.

For example, my major pet peeve with most open source frameworks is that there are not very many good step by step getting started examples beyond "hello world". The stuff for Tapestry is good, but I still struggle on how I could wrap my current environment into it, since i've already got objects to gather data from the DB, but they are very generalized in their approach with the parameters to the methods grabbing the appropriate value. The difference is, I don't need to code a bunch of them, I only need three to do what I need...they all cascade off of one another.

Regardless, it could just be that it wouldn't be the right framework...and in any case, I'm tasked with migrating to an updated version of the product with a new presentation layer starting in July. There's no point in retrofitting the current application unfortunately.

FWIW, Howard, I'm quite surprised you even found this...it's not like anyone reads this blog.