Setting the clocks back to 2008, a small group of developers came up with an approach and a set of methodologies that helped to develop scalable products and bring business agility. Over the years, this became a part of our DNA. It is currently followed by a team of 700 product managers, engineers and testers.
Outlined below are some of the challenges or questions answered by our product development approach:
- How to develop progressively evolving systems/products?
- How to ensure true collaboration in geographically distributed agile delivery teams?
- How to reduce project overheads through engineering?
- How to bring predictability in cost and time estimates for agile product development?
Our product development approach follows a mix of Scrum, XP and Kanban methodologies, enabling us with the best of both iterative and incremental approaches.
Here is the diagrammatic representation of our product development approach:
Discovery – Our team will do a detailed analysis of the product idea which includes researching products/solutions of competitors, identifying end user personas and so on. Post analysis, we conduct workshops with clients in a pre-defined and structured manner. We present the possible solution approaches created during analysis.
Initiation – The Initiation tasks are kicked off during the discovery workshops itself. Some of the initiation tasks include setting up the project environment, defining the way of working, defining dependencies, executing POCs and so on.
Delivery – On having a clarity about various aspects of the project, we identify a clear path which everyone has to follow till we revisit the same. One of the most important aspects of any project that we execute is iterative development model. While the sprint backlog is being populated from the project backlog based on the project priorities, the focus is to demonstrate and define end to end user stories. Our team uses JIRA or any such similar tool for storing the sprint backlog. Each sprint is executed like a complete delivery cycle where all the phases including analysis, design, development, testing and deployment are executed.
We religiously follow the below mentioned Agile Practices for seamless communication, transparency and trust building:
- Sprint planning
- Daily standups and Local standups
- Regular co-locations
- Mind sprint demos and sprint demos
- Direct access to code repositories
- Joint retrospectives
- Communication planning
Our engineering practices for faster development and superior finished products include:
Test Driven Development
At TO THE NEW, we ensure TDD (Test Driven Development). Our development team implements test frameworks and creates unit tests right from the first sprint. This ensures that all the scenarios are being thought through by the development team members while they write the test cases. Development is then done on the basis of the unit test cases.
We also encourage and implement test automation in our projects from early stages. The development team is encouraged to enhance the software so that all the newly written test cases get passed. The choice of framework (such as “Selenium” or “Protractor”) will depend upon the technology used. Tools like “Test link” are used to define the test cases. We would typically have an automated sanity suite that typically runs on a Jenkins environment. Each developer will be expected to run this suite. This approach has helped TO THE NEW uncover problems at an early stage where it is easy to identify the gaps and less costly to fix them.
With DevOps as a service, we automate all the redundant tasks enabling faster time to market and reduced cost in the long term. Some of the activities performed by DevOps team include setting up the automation, assessing the existing development pipeline and infrastructure, preventing risky deployments, and optimizing performance.
On an average, every developer at TO THE NEW makes 3 to 7 code commits every day. We use various DevOps tools such as Jenkins or Bamboo for continuous integration during the development process, which automatically deploys the latest code onto the server. Clients receive regular notifications for any significant progress in the project for e.g. Release is pushed. Moreover, clients always have environment with latest running code and complete visibility on the progress of the project.
We have seen the cons of sequential waterfall model and moved to Agile enabling quick turnaround time incorporating iterations at any stage of the project. Our product development approach shows willingness to evolve, iterate and correct if required before it is too late.
Download this whitepaper to know more about our Product Development Approach. Should there be any questions pertaining to our approach, feel free to write back to us.