Some of the concepts of Agile manifesto aligns nicely with the process we follow here at NEXT Inc, but we are flexible to adapt and change depending on what is needed for a project.
We place more emphasis on development, taking the ideas quickly and converting them into working code and validating them. Normally a cycle starts with an idea and ends with a finished product. In a traditional software development life-cycle, this may take months. For us, the goal is usually a couple weeks.
We break any project life-cycle into lots of little chunks and move through a cycle of design, development, and validation much faster. The development and the cross functional teams align and collaborate closely on a daily basis.
We use lightweight ways to document requirements, and use automated testing to shorten the cost of adding to and changing the software. We share these same values, processes and approaches across the company. Underlined below are some of the key driving forces in our process.
“To improve is to change; to be perfect is to change often.”
The business climate often changes rapidly and that often is reflected in change of requirements. At NEXT, we quickly take the requirements and put it through a quick design process and cast into code. This is backed by a strong automated functional and performance tests, continuous integration and continuous deployment processes to get it into top production quality. Our process allows us to be nimble to adapt to the changes quickly and provide solutions with quick turnaround time without too much cost.
“The single biggest problem in communication is the illusion that it has taken place.”
With several stakeholders involved in a product development, communication becomes a key aspect to keep all of them on the same page. At NEXT, we try to involve all stakeholders involved in a product very early in the cycle by maximizing the team’s time, reduce waste and handovers and expose misunderstandings faster by exposing flaws in understanding of requirements early.
We facilitate constant and continuous feedback during the iterative development and we believe it increases awareness and insight as well as foster innovation, yielding positive alternatives.
All stakeholders pay attention to the big picture – how the requested changes affect the system as a whole. When they are involved early, they can help identify these impacts so they are not discovered late in the release cycle.
“The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency. The second is that automation applied to an inefficient operation will magnify the inefficiency.”
At NEXT, we embrace automated testing to complement manual testing in our product development. It is very inefficient, boring and error prone to repeat tasks in an iterative development cycle. Automated tests also facilitate quick changes and bring forth unforeseen bugs. Frequent integration and deployment complements automated builds and automated testing and help us getting the product out of the door quickly.
“Quality is not an act, it is a habit.”
The code often needs to be refactored for better design and performance and to make it reusable and much more maintainable. We embrace refactoring completely and not wary of touching core parts of the code and rely on our automated validation mechanism to allow us the freedom to change things rapidly. This results highly maintainable and reusable components.
“The whole is greater than the sum of its parts”
It is often harder to make something work as a unit rather than individual parts. A seeming unrelated change might impact another component in a system. Unforeseen integration and deployment issues may delay delivery of a product unexpectedly. Continually integrating components of a product is one of the goals at NEXT and frequent deployments to validate it help us release a product predictably and reliably.
“It is much more difficult to measure non-performance than performance.”
Performance is often an underrated concept of software. In reality, performance can bring a product to its knees when the complexity and the scale of the software increase which often coincides with the success of the business. Our automated testing includes comparison of baseline results to find the deviation in performance of components, which helps us identify non-performing counterparts and provide confidence that our changes have not impacted the system negatively.
“Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.”
Our process mostly focuses on simplification of otherwise complicated problems. We try to carve out tangible and reasonably independent pieces of work and focusing on that work, there by breaking down complex problems into manageable pieces and thought of on a micro-deliverable level. Micro-deliverable target key features and get integrated before moving on to new features. This gets working product in-hand to review early, and often. It involves the customer early in product evolution, leading to a host of benefits including better product targeting, prioritized development and improved quality.