illumineX : Java & WebObjects Development, Consulting, & Hosting.
About illumineX Contact Us
iX Cards
illumineX.com : Java & WebObjects (main page) illumineX Software illumineX Consulting illumineX Support iX Cards

Agile Development Process

We practice agile development methods because they work. In the rough and tumble world of custom software development, we need to be able to create software to support a business process that you just invented -- or that you're still inventing. Rapidly evolving product requirements of the internet age demand adaptive and flexible behaviors from development teams. We work to foster real and nearly real-time involvment between our developers and the client.

Standard Industry Practice

Big shops bring in top talent for the sales meeting. After you sign the contract, you never see those people again. Your project is staffed with random developers, who have never worked together before. Some have never worked with the technologies on your project before. Meanwhile, the top talent is off selling the next load of canned tuna: "white salmon: guaranteed not to go pink in the can!"

They make you pay to even think about building software. A mid-sized project may cost a quarter to half a million bucks or so for a months-long study to "gather requirements" and do "detailed design" before a single line of code is written. A project plan is laid out, calling for 18 months to two years of work, at the end of which a product magically emerges.

Frightfully often, the magic doesn't happen. Standard industry practices carried the software development industry to an astounding 80% failure rate in the nineteen eighties. The project success rate is believed to be only a little better now, with something like 25% of software development projects delivering product of value to the business.

Standard Industry Practice clearly isn't good enough. That's why we use Agile practices.

Nimble Development Teams

Our lead developers have worked together for over ten years, in different combinations and on different projects. Like many other lean, nimble teams, we've adapted to new technologies, and new paradigms several times. Along the way we noticed a pattern. High quality software which delivers real value to the customer tends to be created by teams that buck the established industry practice. Like other teams, we decided to revolt against long-cycle development.

We've been using our own Agile or "lightweight" development methodology since the early nineties, refining and adapting our management and development practices continually. Our motto was "Do The Right Thing", and pretty often that included throwing somebody's expensive methodology out the window, and working to implement practices that support efficient software development.

When other teams began formalizing and publishing their methodologies (Scrum, Crystal, XP) we adopted terminology from the Agile development movement, to bring our efforts into alignment with the emerging movement. We generally agree with the Agile Manifesto, crafted in the spring of 2001, by the Agile Alliance. It succinctly describes the core values of a nimble, productive development team.

Agile Practices

We employ a variety of Agile practices, which together give us the ability to respond quickly to your changing requirements, adding features according to your priorities, even if your priorities can't be predicted months or years in advance. These practices help us build and deliver software that's useful to you, early and often.

Frequent Opportunity for Customer Review

You get frequent opportunity for customer review, a transparent view into the development process -- and control over your project. We don't press a pen into your hand and make you swear that you know everything that will happen to your company in the next two years, and that you won't ever change your mind about anything you currently want or need. Instead, we deliver functioning software and new features on a regular and frequent basis. You get direct access to the development team working on your project, including email and phone contact information. You get a private customer area on our web site where all of your project materials are available -- including the latest build of your software.

Iterative Development ("Short Cycle Development")

Different projects have different natural rhythms, but we haven't found a project yet where the natural rhythm looked much like the typical 18 month waterfall project plan. Generally we deliver a proof of concept within three weeks of project start, by which time major components of the system architecture (database, framework, transports, interface platform) are identified and standing up together. After that, some iterations are as short as a day, some are as long as a few weeks, most are about a week.

Automated Unit Testing

All projects are instrumented with automated unit tests. These tests execute automatically during the build process, so that defects are detected and corrected as early in the development cycle as possible. We use popular, well-documented, and open source frameworks in support of that effort, including httpUnit, JUnit, and OCUnit. Your software is easier to maintain and enhance over the project lifecycle as a result.

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions
over
processes and tools


Working software
over
comprehensive documentation

Customer collaboration
over
contract negotiation

Responding to change
over
following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Continuous Integration

All components required to produce a functioning product are archived, and delivered releases are tagged so that any given release can be reproduced at any time during the lifecycle of the project or product. The current product can be built at essentially any time, and may often be built several times each day during active development. This practice eliminates the overhead associated with the "integration" phase of typical waterfall projects, where weeks or months of overlapping coding efforts must be reconciled. As a result, the development team can turn on a dime. If your priorities change, it's often relatively easy to shuffle the features on deck to align with your new business needs.

Self-Organizing Teams

Everybody knows a story about three developers making a great product in their garage, or spare bedroom, that kicks the butt of some giant company -- and launches them off to success. Most of the large consulting companies find it difficult to employ the practice of self organizing teams, since "human resources" on a given project are allocated often times on the basis of availability or other arbitrary criteria. Unlike the large "body shops" we have the luxury employing only highly motivated developers (we won't have it any other way). Our developers help project managers allocate projects and tasks among themselves in various combinations, employing the principle of self-organization down to the task level. Very small teams can be remarkably productive this way -- it's basically the "three guys in a garage" story, formalized in a process. Self-organizing teams build better software than you can get from a team of random strangers, and they build it faster.

Pair Programming

This is a technique common among the Agile methodologies, where two developers work together at the same keyboard to implement a new feature in the software product, for example. It can result in better design, and fewer defects. We employ pair programming selectively, by task. We find that certain tasks benefit more than others from pair programming. (For the arm-chair methodologists reading this, we suspect that this may be an artifact of a tightly integrated team, where each member is familiar with the capabilities of the other members, skill sets are complementary, and tasks are often self-assigned. We suspect that as we grow, and add new developers to the mix, pair programming will prove to be more useful on a wider spectrum of development tasks.)

Integrated API Documentation

Every project is thoroughly documented using modern techniques and supporting tools like JavaDoc . The complete API documentation for your project can be viewed easily with a Web browser. This helps us during the development of your project, and it helps you if you want to move product maintenance in-house at some point during the project lifecycle.

illumineX : Java & WebObjects Development, Consulting, & Hosting.