How to talk to your Boss about Agile

We’re giving a talk about ‘how to talk to your boss about agile‘ for the Irish .Net Developers Association next Tuesday in Buswells hotel Dublin.

More details (including the slides themselves, as a preview of what you are missing) are available here in powerpoint, openoffice, pdf and flash formats. The slides explain how 4 pictures of bridges can explain the difference between Ad-Hoc , Predictive, Agile and XP projects. No , really , you do want to check this out.

Links to a lot of the sites / articles / tools used in the presentation are here on Del.icio.us. More posts on this blog about using agile techniques on projects are here.

The Bridges are:

  • Old Drogheda Bridge from the 1200’s – Quick and Dirty or Ad-Hoc project. Got the job done , and fast . Was patched a load of times, but eventually fell down under the weight of the traffic.
  • New Drogheda Motorway Bridge – Predictive Projects. Very easy to specify what you want (I want a bridge going from A-B to carry a motorway) and very easy to know when you are finished.
  • Drogheda Railway Brigde – Agile. Once the longest Iron Girder bridge in the world.Built in the 1850’s and the spec has kept on changing since. This included a complete rebuild in 1925 without losing a single days traffic. How’s that for unit testing?
  • Bungee Jumping off bridge in Queenstown – Extreme Programming (XP). Great fun if you’re doing it (and can be pretty effective), but scary for anybody watching.

As a sample of some of the pictures (which include lego people showing everything that can go wrong on a team), check out the image below.

source the brick testament.com.
Image from
TheBrickTestament.

Web 2.0 and Enterprise Java – move over Struts

A while back I wrote an article for an O’Reilly sister site, Java.net , on Sprinkle Some Ajax Magic into your Struts Web Application. I’m going to repeat one thing I said in this article: while coding Ajax is cool, you really want to use a framework if you have the choice. If you don’t believe me , check out some of the podcasts on Ajaxian.com. When you listen to the problems that the frameworks have overcome (What if the ActiveX XmlHttpRequest Object is turned off? What if you want to do local storage? What if the user hits the back button?), you’ll be a convert to the ‘Frameworks are better’ approach. So which Ajax enabled framework should you use as an Enterprise Java developer?

Pre Ajax, the answer to ‘which Java presentation framework should I use?’ would have been Apache Struts. Not because it was technically better than any of the other frameworks (although feel free to leave your comment!) but because everybody else is using it. This meant
(a) using Struts is good for your client, as they can replace you if you get run over by a bus and
(b) using Struts is good for you, as you can take your Struts skills to your next piece of work.

However , in this strange new Ajax and Web 2.0 world, things are beginning to change. Javascript gone from ‘has been kiddie scripting language’ to ‘coolest thing on the planet’. User expectations about what Enterprise Web applications can are going through the roof as Web 2.0 enters the mainstream. What Java framework are you going to use to deliver these expectations?

With this in mind, I did some research on the Ajax Enabled Java frameworks that are currently (Feb 06) available. I tried to pick out the best ones (best for your career, and hopefully technically best) based on the following criteria:

  • Java – Web development frameworks with Ajax capability.
  • Rating based on technical capabilites, and which is most likely to be the ‘next Struts’ (i.e. become the defacto standard for Java-Web Development).
  • Rating is based partly on downloading and running the projects and partly on evaluation of what the websites / other people say.
  • Products must be available (at least partly) in open source form with a recognised open source licence – as these are most likely to get community traction.

Before we get into the list, there a couple of items that you may think are missing:

  • Whatever you may think of non-Java frameworks (e.g. Ruby on Rails, PHP with Ajax), these are not included here. The notion of Java being replaced by Language / Framework ‘X’ is an entirely different article.
  • The list also does not include several excellent ‘server neutral’ frameworks such as BackBase, Dojo, Prototype, or JSON. While these frameworks are included with some of the toolsets listed below, we’re aiming to get an ‘out of the box’ toolkit for the Web tier of Enterprise Java applications.
  • You’ll also probably note that there are 3 implementations of the Java Server Faces (JSF) standard on this list – MyFaces , Ajax JSF and Struts (Shale).

Think we got the evaluation wrong? Leave your comments at the bottom of this post.

Ajax Java Web Presentation Frameworks

AjaxAnywhere Independent of Java framework (e.g. Struts, JSF or Spring). Closest in approach to Java.net Struts-Ajax Article. Good interim solution based on existing frameworks, but can’t see this being the main framework long term.
Apache Myfaces Apache implementation of JSF, including technology donated by Oracle from ADF / Oracle Fusion. Being Apache, will become one of the main JSF implementations in use. But is JSF the best way of doing your website?
App Fuse combines a lot of the leading frameworks (Struts, Dwr, Spring with JSF as an option) into one easy to use package. Already a very good ready to go package (for web , mid and business tiers) and the Appfuse team have a good track record in integrating the latest, most widely used frameworks.
Ajax JSF Ajax implementation of the Java Server Faces Specification. Good indication of what a full JSF Ajax implemention would be like, but implemented by only one brave developer!
Echo 2 Evolution of original Echo Framework, can run in any Servlet container. Original has cult following, but doubt if it will become the number 1 web framework.
DWR – Direct Web Remoting Acts as a proxy so that you can call Java Objects transparently from Javascript. Good solution, seems to have traction, even though it still forces you to write Javascript and keep objects in Synch with Java. Several other frameworks (e.g. Appfuse and Webwork (soon to be in Struts) integrate this.
JSP Controls Aims to be drop in (Ajax enabled) replacement for JSP Tags. Can be used both with simple JSP and other frameworks, but at the time of writing has less than 1000 downloads
JWIC Dynamically add Ajax to Java class based application – similar to Velocity concepts. A good simple framework, based on POJO’s but doesn’t (yet) seem to have much traction on sourceforge.
Struts The original, and to many, still the best. Many changes are afoot in the next version, including the integation with WebWork (which already has Ajax capabilities) and the move to the JSF compatible (‘Shale’) Struts aims to be backwards compatible, and the forthcoming JSF and Ajax capabilities look good. Pity there is no ‘offical’ milestone release yet.
Struts Layout Struts Tags, but with Ajax capabilities. Another good interim solution based on Struts, but is the Struts Event model suited for the Ajax world? (e.g. multiple events being raised from the ajax web page, instead of just the one (GET or POST) in the standard HTML model)
Swato Integration with Java Servlets through use of Servlet filters.Not a lot of documentation, nor a demo to encourage me to invest more time in it.
Tacos aimed at providing Ajax for Tapestry
Tapestry is technically a good framework, just didn’t seem to get the traction Struts did. Not sure if adding Ajax is going to change that.
Webwork Will integrate with next version of Struts (as Model – called the ‘struts action framework’). Strong contender, gives Ajax functionality through (integrated) DWR and Dojo.
WidgetDev Hybrid (Open-source/ commercial) Framework. (In my opinion) Not enough maturity / features to justify open source version with reduced features
zk8 XUL / XAML type framework , capable of being rendered in either Swing or HTMLGood Framework, might attract people who are familiar with extending Firefox using XUL, but can’t see XUL (no matter who much I think it is a good idea) being mainstream without a visual designer.

Conclusion
The New Struts is …. Struts. Some other framework may overtake Struts to become the new standard, but I would recommend the following Struts-related frameworks based on the following scenarios

Scenario 1: Adding Ajax to existing Struts Applications. Use AjaxAnywhere – closest to the approach taken in the article Sprinkle Some Ajax Magic into your Struts Web Application. Despite writing this article , I see the frameworks evolving rapidly to the point where you would only take such an approach for adding Ajax to ‘Legacy’ applications.

Scenario 2: Need Ajax Now for a new Java Application. Use Appfuse as it gives Struts, Ajax (with DWR) and the possiblity of JSF integration now, all ‘out of the box’. This fits in well with …

Scenario 3: Medium Term. Use an implementation of JSF (either MyFaces or whatever Appfuse promotes – probably Struts Shale). Struts Shale (JSF) has so far released only ‘overnight’ builds. Apache MyFaces (JSF) tool support and Ajax capabilities are likely to improve over time. Both Struts-Shale and MyFaces are likely to play well with AppFuse , making it a safe bet for investing your time checking it out.

Enterprise Java Workshop in Dublin

Link to Enterprise Java Workshop, to be led by Dr. Bruce Martin in Dublin on the 6th – 9th March.

Is anybody going? Is it worth $1995 USD for 4 days? (and I’m not going to get sniffy about us using Euro over here 🙂 ) Who is this course aimed at? In some ways this course is like Corba: very relevant to the very small niche that use these technologies, but the broader line of ‘best practice’ has moved on.

An extract from the Agenda is below. It seem to broadly match what Sun looks for in it’s Enterprise Java Architect Certification. As such it shares the plus and minus of this approach : You get the Orthodox Entreprise Java Approach, or at least the approach being plugged by Sun about 3 years ago.

The trouble with this approach is that the Enterprise Java world has moved on. Hibernate has pushed aside Entity Beans , so much so that Enterprise Java Beans 3.0 is a complete turnaround it it’s direction. Spring has got a lot of traction as an EJB-Lite (and I mean that with the most positive connotations). Enterprise Java Patterns are much better understood (just search the IBM site), if not more widely understood.

Where’s the Ajax and the impact of multiple, small , web requests on application scalability? The JSON (as part of the Web Services)? Does it cover Java Server Faces and the emerging Ajax enabled Java Presentation Frameworks? What about workflow and rule engines and Java Messaging Services (JMS)? How about the tool integration to make your teams life easier when building the designs that you , as an Architect , have come up with? I don’t see Security in there , nor any of the other JSR (Java Specification Requests) that have come out of the broader Java community in the last 3 years.

And that’s before I go on about the only ‘technology alternative’ being offered is .Net – the PHP , Ruby and Oracle guys will have something to say about that! All have strong cases to make on a project by project basis. What about off the shelf products (both open source and commercial) that could , depending on the project, give you most of the functionality you need and you just have to customise the remaining 20%?

Maybe I’m being unfair, and the above is not the aim of the course.

For info, it’s on in the Gresham hotel on Dublin’s O’Connell Street from the 6th to the 9th of March. If you want a good solid foundation in Enterprise Java, and if somebody else is paying for it then it’s probably to be recommended. It might even help you get certified as a ‘Sun Enterprise Java Architect’. But unless you’re in an outstanding group, don’t expect it to be cutting edge.

Are you going – prove me wrong and leave a comment!

Project Module

  • Introduction
  • The Value Propositions of J2EE and EJB
  • J2EE vs..NET
  • Requirements of the Auction Application
  • Group Discusssion: J2EE or not, EJB or not
  • Activity: Identify the Auction Objects
  • Vertical Slices
  • Activity: Identify Vertical Slice
  • Communicating Architectures

Persistence Module

  • Pros and cons of JDBC
  • Object Relational Mapping
  • Java Data Objects (JDO)
  • EJB 2.x CMP Model and Relationships
  • EJB 3
  • Other O-R mapping solutions
  • Group Discussion: Persistence Matrix
  • Activity: Persistence Strategy for the
    Auction
  • Advanced Transaction and Concurrency
    Control topics
  • Activity: Identify the Transactions

Scalability Module

  • Principles of Scalability and Fault
    Tolerance
  • Application Server Clustering solutions
  • Activity: Scaling the Auction

Integration Module

  • Messaging
  • Activity: Messaging in the Auction
  • Connectors
  • XML, Web Services and SOA
  • Activity: Enterprise Application
    Integration
  • Activity: B2B Integration

Application Design Module

  • Top Ten J2EE Design Patterns
  • Activity: Design patterns or not
  • Activity: Complete the design
  • Group Discussion: Custom Consulting

How to avoid losing 150m Euro

It now seems obvious that the Healthcare Payroll system was destined to fail. If you were working on the project, I’m sure it felt very differently at the time. How can your projects avoid a similar fate? While IT may sometimes seem disconnected from reality, the following guidelines show that ‘Real World’ lessons still apply.

  1. Know what you want and stick to it. If you’re building a house and change the plans several times the builder is going to fleece you, no matter how low the initial quote was. The same goes for IT Projects – if you change your mind after the price is agreed, you’re going to pay more.
  2. If you don’t know what you’re doing , find a friend who does. I know very little about houses, so when I was buying my own I got a friendly surveyor to check it out. With IT projects, this ‘friend’ should be genuinely on your side, and have something to lose (e.g. financial or reputation) if things go wrong.
  3. Little and often is better. Like exercise, smaller projects that deliver results little but early are best. If the results are good, try a second (and third) round to add more functionality based on the feedback from users.
  4. It’s been all done before. Tailored suits cost a lot more than ready-made ones – and most people are happy with a ‘Good enough’ instead of ‘Perfect fit’. There are literally thousands of ‘off-the-peg’ computer systems out there ready for final alteration to what you need.
  5. If you don’t understand the answer, ask more questions. Thankfully the days we sat and nodded at the Doctor’s Latin words are long gone. IT Consultants may sometimes speak a different language, but if they can’t explain what they’re talking about in English that you understand, the chances are they’re trying to hide something.
  6. Don’t build on sand. Like houses , projects need good foundations. For IT Projects , the good foundations are sound knowledge of the Business Processes being coded into the system. Changing processes and changing IT systems at the same time is like building on sand.
  7. Sometimes the tortoise wins the race. Unless your entire business model is built around being the very first to market, then being a tortoise and letting others race ahead has very big advantages. Not only can you learn from other people’s mistakes, but the chances are you’ll get it at a much reduced cost – For example websites now cost a fraction of what they did during the dot.com boom.
  8. Use a safety net. When building houses, often the first thing to go up is scaffolding, for safety reasons. The equivalent safety net in IT is called ‘Unit Tests’. Not only do they help you get there faster, but they let you know if you’ve broken something you’ve already built.
  9. Be a good poker player. Good poker players never give away valuable cards. For IT projects, owning all cards mean just that – make sure that you have full rights to the solution so that you can still move tables and use a different supplier. Even if you never make the move, knowing that you can is an effective bargaining chip.

And finally …

When you are in a hole, stop digging. The decision to call a halt to the projects was no doubt a difficult one, and is to be applauded. Too often, the temptation is to keep on going and hope things will turn out right. Recognising problems at an early stage means there is more chance of being able to fix them.

Technical Knowledge Base – Just Launched

Our Technical Knowledge base has just been launched.

We found that over the last 5 years , 80% of the solutions we were building were the same. How many ways are there to take information from the web, apply some business rules or logic to it, and then save it into a database?

Currently the knowledge repository contains information on Enterprise Java , XML , Eclipse, Oracle, Architecture, Project Management as well as a lot of useful links for Dublin, Ireland and Technical specific areas.

The public area to the site can be found here. All information is generic, non-client specific, and can probably already be found on the web, although it is much easier to read it here!

Why IT Projects fail – mastering the monster

The UK based IT Architect site is running a series of articles on why IT Projects fail.

IT Architect Logo

(Part 1) suggests what is obvious (that there are different types of projects), but more usefully classifies them into two types. Type 1 are those that deliver concrete goods (like roads, bridges and office blocks). Type 2 are fuzzier projects aiming to change things, such as a process or organisational culture. It’s much harder to determine success in this second set, as they tend to deliver intangible results (i.e. you can’t drop them on your foot) . They also tend to suffer greater rates of failure. IT projects tend to be Type 2.

Some depressing statistics that if you’re lucky have only read about , or if you’re unlucky, know from personal experience. According to the Standish group, 31% of IT projects are cancelled outright, and over half have such serious performance issues that they were fortunate to escape the same fate. In contrast, a 3% overrun on a construction project is often the trigger for a public enquiry.

While there are many ‘excuses’ given for project failure, the author suggests that often the root cause is over-optimism and ‘biting off more than you can chew’. Symptoms of this over-optimism include projects started without any tolerances set, no change control and without proper reporting structures in place.

The 2nd Part of the article , is a bit more optimisitc, in that starts to tell you what you can do to improve the rates of project success. Broadly speaking , there are two areas suggested for this:

    • Make Type 2 (IT) Projects more like Type 1 (Construction) – remove the fuzziness of success , so that you see the outputs of your project. This often comes down to metrics on the basis of ‘you get what you measure).
      Understand the level of success that you are aiming for. This can range from a simple level 1 (did the project do what was asked of it) , to Level 4 ( did the project have a positive impact on our business strategy). In between are Level 2 (Was this project success a once-off, or do *all* our projects suceed) and Level 3 (our projects may be successful, but are we working on the right ones).
  • For more details , here are links to part 1 and part 2 of the article.
    http://www.itarchitect.co.uk/articles/display.asp?id=203
    http://www.itarchitect.co.uk/articles/display.asp?id=224

    SAP and Java

    When SAP announced that they were migrating their solution to a full J2EE server stack, I was initially sceptical. While it makes good business sense (after all Enterprise Java server’s are now effectively free), and complemented their decision to open source the SAP DB (now known as Max DB), there was still a niggling feeling at the back of my mind.

    Why? Well over the years we’ve learnt a lot of lessons of how to build Scalable Java applications. Even then, some people can’t seem to get it right (No names , but you know who you are). How would SAP people (who I have a lot of respect for as you don’t get to the position SAP is within the industry without getting at least something right) react to this strange new Java world. Would they shed all past baggage and dive in with the enthusiasm of College Graduates? Or would they take a ‘not invented here’ attitude and hack together something in Java along the lines of what they were used to.

    I suspected the latter , and fully expected to end up cleaning up some mess of a CRM or ERM system. However, I am pleasently surprised with SAP’s Java Website. On a pure Java level, it approaches the efforts from Oracle , IBM and BEA. If SAP are making this amount of effort to promote Java best practice, then there may be hope after all.

    Final question: If this goes the way SAP is planning, at what point does it’s installed base get counted as part of the Market share of J2EE servers. What percentage of the market would it have? A healthy and very profitable 10%? Certainly the strategy (and the Market share) is very close to Oracle , which also bundles it’s (10g) App server with it’s main product (a Database rather than a CRM or ERP Solution).