Sunday, February 11, 2007

2007-02-11 Traveling...

I'm flying out of Seattle this morning for a 4-5 month sabbatical - and a little bit of sailing.

I'm planning on using this time to do a couple of things:

- research application and architecture security threats / defenses / trends / developments

- an intensive period of Visual Studio 2005 development

- an intensive period of Java / Open Source development

When I return later in the spring / early summer - I will be re-charged, and with a much sharper edge.

2007 is going to be a great year.

Saturday, February 03, 2007

2007-02-03 Software is hard...

There's an interesting article on Software is Hard

I've been involved in software development efforts for the last 20+ years...over half of that time as a leader or manager - often still directly contributing to the coding effort.

Three of my most productive and successful periods of software development were done with none of the heavy processes that are quite often mandated in large mature organizations. Budgets were tight, production environments demanded rapid responses to competitive threats, resources were scarce. Under those conditions the teams excelled. In larger organizations, with massive budgets, and heavier processes - the results were more often than not: "crash and burn".

A handful of use cases, a good data model, the best talented developers you can afford, strong end-user involvement, and a strong architect leading the charge are what I have found works best time-after-time.

Too often, organizations that foster a culture of design by consensus via a committee - invariably end up burning 2x+ of their budget - and never produce any software that is actually deployed into production.

Case in point: U.K. Dept of Health: Prescription for Disaster

Thursday, February 01, 2007

2007-02-01 Rich-Interface Applications

There's a short DJJ article out recently quoting Steve Jobs on Java's usefulness in creating Rich-Interface Applications (RIAs).

In 1998, when Java was around release 0.9x - I spent $10K on a client project hiring someone on a contract basis (who I believed to be a good C++ programmer) to develop a backend administrative web interface using the then current servlet techniques. After about one month of development effort - I did a code review of the progress thus far - and was less than excited at what seemed to be a rat's nest of code needed to do some of the most basic types of user interface functionality. I deemed the code was un-supportable, given my client's level of technical sophistication, and their budget constraints. We threw the code away and wrote it in Cold Fusion. Never regretted that decision. It worked for the client - and we delivered on schedule...and the client was able to subsequently find local talent quite easily to continue enhancing the application.

In 2004-2005 I was leading the development efforts for a start-up in the Bellevue Washington area - for a new cutting edge commercial software product to market to the international banking and financial service market. The team was hand-picked by me. They were sharp, highly skilled, and had significant experience with Java. We adopted Java Server Faces (JSF), Hibernate, and Spring - and utilized an Open Source Java Web Server for our development and production environment. It was an interesting experience.

The product we eventually delivered was stable, strong, flexible, and had a competitive mix of feature / functionality.

However, I don't know if I would choose JSF as a technology base for such a commercial application development effort again. There seems to be just too much pain and complexity in the learning curve for developers. [Granted - we were one of the very very early adopters of the Beta release of some JSF libraries].

I don't know if I agree with the suggestion at the bottom of the article that I linked to at the top of this posting (use Flash for enterprise user interface application development?!!!] - but I might be willing to try it - given the drawbacks of other options.

I've been researching AJAX libraries and frameworks - and have some reservations - unless I happen to find a good IDE environment that offers a good AJAX WYSIWYG development - I would avoid any substantial AJAX development effort that required extensive hand-coding of JavaScript for the user interface...the issues with handling browser compatability at level of code is just a maintenance nightmare that I wouldn't want to wish on anyone.

You're probably wondering why I haven't mentioned ASP.NET as an option - or PHP?

Depending on a client's existing skill sets, technology policy / constraints - I might very well recommend / use either of those technologies.

In th past, I have developed applications with both of ASP and PHP - as well as some C# .NET development for user interface development. They are reliable technologies - and I feel comfortable working with any of them.

But I still believe that most software development projects expend way too much time, money, and effort hand-coding user interface details that should just be easier - at this stage of our industry's growth.

I'm always open to tring some new ideas / approaches.