our Process

Innovation is complex. There is intrinsic complexity in coming up with an elegant solution to an ambitious business need. Then there is the complexity that we often hoist upon ourselves through poor project planning, broken lines of communication, and misinterpreted objectives. At Agile Commerce, we don't believe a project needs to be any more complex than it already is.

Collectively, we have decades of experience building solutions. We have seen a lot of things that work and even more that don't. Below are three things that we feel work best.

Transparency

The transparency pervades the entire process, from project estimation, to construction of the code, to client interaction. Both iterations and test-driven development contribute to our core goal of transparency. Iterations make our progress visible and test-driven development makes our quality apparent. Our clients have access to the task lists and tools we use internally to manage our projects. We don't believe in secrets among teams.

Iterations

The act of building software is an act of discovery. While constructing the solution, new ideas are generated, old ideas are revised, and some ideas get eliminated. Our process anticipates this learning and also fosters it.

Each iteration is one to two weeks in length. At the beginning, we decide on the highest priority features to implement. At the end of each iteration, there is runnable, production code that the project team can test and experiment with. They get to kick the tires of the final solution as it is being built. New ideas can be contributed to the project while it is still easy to do so.

Attacking the project in iterations leads to software that is better designed, better implemented, and more robust.

Test-driven

Our code is test-driven. We write automated tests for our code before we begin. We then write our code, only stopping once all of the code passes our tests. This ensures that the code produced is correct. The tests then live on as a vigilant guardian, making sure the code remains correct, even as it changes in future iterations and projects.

Testing not only ensures high quality code, but also good design. Writing tests informs developers of how the code will be used. Creating code against actual usage is far better than creating it for hypothetical needs.