Archive for August, 2003

Joel-on-software Dinner in Oslo

Joel Spolsky, of Joel-on-software fame was in Oslo, and had an open invitation to dinner for readers of his website. I think around 30 people showed up, which totally blew my mind.


It is always nice to meet people who care about software development beyond having a job to go to from 9 to 5. Maybe there is enough interest to have a regular network event for technical people who care about what they do?


If you live in Oslo, work with software, care about what you do, read this, and think a regular social/technical event sounds like a good idea, why don’t you drop me a line?

Comments

MDA, MDA, MDA - go away, go away, go away

Learning OO is such a disappointment. When you go from the models and into the code, you pretty much discover that it is all bunk, anyway. In your neat customer-order-product design, each entity explodes into circa 10 artifacts if you implement it in J2EE, or gets fragmented into mostly pure data management if you use .NET. You can hardly find the classes again anywhere in the implementation. What went wrong?!


In an ideal world, you would be able to write the business code as naively as you wanted to. “I have a customer class with a (bidirectonal) collection of orders, a few methods, etc. etc.” This code should be full-fledged, honest-to-god working code. Write it, test it, tune it. Don’t worry about the infrastructure. Then, write your infrastructure rules. “Oh, the customer lives on a clustered application server. It is loaded from the database like so. When a client uses it, transmit the customer along with all the orders to the client. The calculateTotalOrders method should run on the client, but the consolidateOrders method should run on the server”. This code should be as compact as possible, with as few possibilities for error as possible, and as good defaults as possible. Heck, the application server could even calculate statistics and automatically deploy it after doing some “realistic simulations”.


Why isn’t this possible? Well, it is, but it is not done. All frameworks are infrastructure centric, and the business code has to bow to the infrastructure. You wanna distribute this class? Create an interface (and a home interface for EJBs), and make sure all the methods throw exceptions. You wanna cache data for this object on the client side? Well, just implement the Data-Transfer Object pattern (%!@#!). You wanna test your code? Well, fire up the 200MB application server, wait 2 minutes for you #@$!!! to deploy and hit it. This is not what the state of the art should be.


And this is where MDA comes in. With MDA, the focus is on the business entities. You can have the plumbing all generated for you. The Platform Independent Model lets you draw up your customers, orders and products. A good MDA tool will then generate the forest of artifacts required to realize each entity in a J2EE architecture. This is roughly 10 files per entity. This is kind of like applying a fire hose, a chainsaw, and generous amounts of duct tape to the insufficent technologies, but it works. If J2EE was designed to be used without tools, they did a very poor job of designing it. I think technology that is designed to be usable without tools is inherently better, but you have to use what you’ve got.


Do I like MDA? Heck, no. Is it the best we have got with the current state of technology? Heck, yes. Do I want to use it when I am forced to do J2EE? Heck, yes!

Comments

Agile Contracts: Pay-by-value

On the Agile Management mailing list, David J. Andersen writes:



It would get a little more involved than that but the
you get the basic idea. Pay for the value delivered,
not the effort expended. Incentivize the vendor to
deliver high quality.


Most agile methods use a variation of a backlog. In an ideal project, the payment would be only dependent upon the value of each feature requested. Most software projects are much more resilient to underdelivery than people realise (and less resilitent to late delivery), which makes this into an contract that keeps both parties interests in mind.


There needs, of course, to be some specific variations based on quality of the delivered software etc.

Comments

Creative Commons Attribution 3.0 Unported
Creative Commons Attribution 3.0 Unported