How Coshx sculpts best practices to build better products.

Agile with a little

Precisely following process is great, maybe even necessary, in the beginning. When I learned to cook, I relied on those step-by step instructions in a cookbook to make sure I didn’t burn the cake, or worse, burn down the house! It was especially useful to have an expert cook like my mom show me how to do things in real time; she never relied on a cookbook. She had become a master of the art of intuitively knowing how to combine elements to create the best meals, ever.

For those who many not know, in the World of Agile, as it relates to web and mobile app development, there are three main “ingredients”: the Agile Manifesto, which is the mission behind the principles; the Agile Principles which offer guidance to help create the optimal development environment; and then there is the Agile-Scrum Methodology which is a series of steps, roles and project components that help teams get the work done.

As the Agile Manifesto took the development world by storm and the ensuing Agile-Scrum process came about to help us all know we were “doing it right”, we clung to these steps like novice cooks as we learned about their potential. Development teams organized around the principles and projects were built through the six-step cyclical Agile methodology with sweeping positive results. Teams were producing better code faster with fewer bugs and less expensively than ever. Early Results of Agile Study

Beyond what we were all seeing by way of improved productivity, we learned much more about our potential as a team and of ourselves as individuals when exercising the agile steps. The nuance and powerful subtleties of each component of the process can be combined in different measures in response to the needs of each project and the team dynamic. Much like a great chef understands the characteristics of his ingredients to bring out the very best, our team of engineers and UX experts deftly combine agile process steps into a seamless, intuitive flow.

The more I worked with the agile manifesto principles and steps the more I came to love them. And the more the team worked with them together, the better we learned how these guidelines might be applied to support each client and project in the best manner. So, how do we work with agility to cook up something scrumptious? By applying each principle and step in the methodology with forethought and care for the end result, we can assure a happy customer and working software.

Principle 1: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Application: There are two areas of subjectivity here, early and valuable. If we stay true to the two aspects of this principle that are fixed, customer satisfaction and continuous delivery, then we can adjust the definitions of early and valuable for each project. There is no single timeline that works for everyone’s expectation.

Principle 2: Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

Application: Stuff always happens. Developing software in a nimble fashion allows for nimble response when the project needs to flex. None of us has a crystal ball to know just what each project will need to render it competitive or useful. We don’t mind incorporating changes to the code base to keep great ideas moving forward.

Principle 3: Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Application: Iterations of software deployment are completely in the hands of the product owner. They set the priority and focus. We apply the team to build what they determine. That may mean two-week or one-month iterations. While we may prefer to work in shorter cycles, it isn’t always the the best option for all involved. But we’re good with that.

Principle 4: Business people and developers must work together daily throughout the project.

Application: Whenever we read the word “must” there is something inside each of us that tightens up a little. What will happen if I don’t do what I “must” do? We believe that it is vital for business people and developers to stay in close communication and some projects require more frequent communication than others. That being said, we work with our client’s and consider their schedule when planning the work.

Principle 5: The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

Application: Coshx is a distributed team of engineers, strung across the country like Christmas lights. Face time with the development team is a great idea, but with modern communication tools, we can effectively work together while rather far apart. Email, IM, Google Hangouts, Atlassian’s HipChat and other team collaboration tools all work together to create the Coshx Virtual Office, where the team gathers daily. And we bring our clients into this virtual office environment to collaborate with us as we build their great idea.

Principle 6: Working software is the primary measure of progress.

Application: We all need something to measure our success. To software developers we know we did it right when it works. We work with our clients to help them understand the testing and acceptance aspects of development so that they can verify - for themselves - whether we have succeeded, or not.

Principle 7: Agile processes promote sustainable development.

Application: Websites, software and innovation are things that (should) constantly be improved. When we build using agile guidance systems we can assure that the products are sustainable. Continuing to evolve features and add functionality is easier when a project has been built in this organic and value-driven manner.

Principle 8: The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Application: We don’t like burn out. Who does? The honest and open approach afforded to development teams using agile keeps teams moving forward at a pace that is realistic. Since clients are hands-on and considered an integral part of the development team, it’s important to keep a pace that is responsive to the capacity and needs of the team as a whole.

Principle 9: Continuous attention to technical excellence and good design enhances agility.

Application: On a journey, if you know exactly where you are and are completely sure of where you’ve been, then you can make a move with confidence. The same goes for developing beautiful, functional products. We pay close attention to what we are doing as we do it with the end-results ever in mind, so at any time we can easily adapt and incorporate a shift in priority.

Principle 10: Simplicity–the art of maximizing the amount of work not done–is essential.

Application: Humans tend to complicate things. We like to embellish and idea and push it to the outer limits of where it can go. This is a good thing when it comes to visioning a product. But when it comes to building it, the agile process asks us to distill the idea down into its key features revealing The Simplest Thing That Can Possibly Work. Creating products in this fashion puts the core functionality first and allows the early users to help determine what embellishments get built next.

Principle 11: The best architectures, requirements, and designs emerge from self-organizing teams.

Application: Teams that converge around a project and organically parcel out the work continuously produce the best results. Why? It’s human nature to work best on something you choose to do. Self-organizing teams don’t have proscribed roles. The needs of the project and the strengths of the skills of the team members determine who does what. Naturally, better results come from empowered teams.

Principle 12: At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Application: Learning from our past actions and experiences is what allows us as developers (and as people) to continue to grow and improve. We incorporate this aspect of life-learning into our process to help assure that we are working to our highest potential. Regularly scheduled retrospective meetings quickly assess what is working and what isn’t and then we identify some course corrections to do better.

As you can see the core principles of Agile are often directly applied to human interactions and problem solving. Knowing this, we have learned to adapt and apply the principles, as needed, in just the right amounts to build-out awesome products and have happy customers. Through the product development, estimation and build-out of the software, Coshx is agile, with a little ‘a’; keeping it flexible, responsive and real. It’s a good way to be.