Scrum is not enough. Even if teams are actively exchanging feedback with stakeholders and trying to deliver in short sprints, the output of the sprints are often not potentially shippable. Bugs plague the output, and when one bug gets fixed, three more take its place.
Agile embraces short deliveries and accommodating change, but those are impossible without sound engineering practices. Agile teams deliver software at the end of each sprint that is solid - very few defects, even if each sprint accommodates massive changes.
The only way to do this is through disciplined Agile Engineering practices - Test-Driven Development, Object-Oriented Design, Continuous Integration, etc. Teams write even the smallest unit of code in ways that catch defects early on, and in ways that easily and safely accommodate changes.
We have espoused Agile Engineering from the very beginning of O&B's existence. It is a point of pride of each of our teams to keep our codebase near-defect-free and deployable, not just at the end of each sprint, but at any given time.
Our clients may or may not care about Agile, but they care about the results of the software they receive from us - solid software on which they can trust their business.
WHAT IS AGILE ENGINEERING?
Orange & Bronze is one of the first companies in Asia to use and advocate Agile Software Development. We have been using it since our inception in 2005, back when Agile was still an emerging movement.
We believe that software development requires a collaborative environment where the software can start and evolve into a useful and strategic system. A common vision between O&B and the client is essential to have an effective collaborative environment. This, along with constant communication and repeated testing, ensures that the project will be delivered on time, all the time.
Programming is a talent. All the training in the world cannot turn a mediocre developer into a great one. That's why we invest heavily in recruiting and screening the best talent. Despite a highly-competitive recruitment market, we only accept 3% of our applicants. Our screening process starts with programming tests. Those that pass move on to interviews that search for qualities such as leadership, communication skills, and passion for software development.
We invest time to design a rich domain model that expresses the business domain in the code, ensuring every system built has a very high level of maintainability. We keep the code expressive and uncluttered via judicious use of AOP.
We integrate our work in small increments several times a day to get immediate feedback on the system’s integrity. The integrity of the system is constantly verified via an automated continuous integration tool such as Hudson or CruiseControl.
Quality starts at development. Our programmers write comprehensive and meaningful automated test to ensure that the code works.
Our developers are trained in Java and Java EE best practices, including a solid understanding of design patterns. Our engineers understand low-level practices such as the effects of String manipulation and the proper use of BigDecimal, to the pros and cons of Singletons, application of Layering or implementing a Layer Super-Type.
The Agile methodology enables flexibility and offers adaptability – resulting in an efficient workflow. Orange & Bronze also adapts the following Agile practices with productivity as the goal:
- Pair programming
- Sprint planning
- Automated testing
We also use tools that optimize the development process, including version control tools and issue trackers.