Contributed by: Ajay Mulkalwar (Director of Engineering)
Ajay is an accomplished program director, with over 17 years of experience across every aspect of product development including Program and Project Management, Client Management, Delivery Management, Business Development, Finance Management, Systems Design and Application Development. Ajay handles multiple product development accounts and is responsible for end-to-end engineering operations that span the whole product development life cycle. He is also involved in managing business operations across all the company. Previously he was a Director at Symphony Services, consultant at Oracle and senior account manager for J P Morgan’s offshore development center at Satyam.
As per industry and customer trends shift, IT companies have started looking forward to Product Development and Integration services and many Indian companies have got into the fray of focusing exclusively into this niche segment. Globant is one such company with focus exclusively on Product Development services for products focusing on Usability and User Experience. It works with Product Development companies, for whom Exemplary User Experience is a key to Competitive strategy.
Having collaborated with multiple ISVs for successfully developing and launching their products in competitive markets, Globant has collated various best practices that are driven towards optimizing the product development process in Product Development Life Cycle (PDLC). A number of them have been evolved from learning from various product development activities in the past. Each best practice targets one or more activities in a particular phase of the development process.
Before looking at all the best practices, let me list down some of the key phases of the product development that are critical in a PDLC.
Key Phases of Product Development Life Cycle (PDLC)
It is often said: ‘Well Begun is Half Done’. The same applies to any product development. Proper planning in the beginning of the project often leads to a successful result. A focused approach towards nailing down the requirements for the product, creating a detailed project plan, identifying the development methodologies and processes to be followed through the PDLC and defining the test strategies and setting up the right infrastructure for product development are some of the key activities in this phase.
Technical Design and Architecture
Before starting the development, it is imperative to create an overall architecture for the product with focus on non-functional areas like Scalability, Security, Usability, Performance, Integrity, Reliability and Supportability. In parallel, we need to freeze on the tools, technologies and frameworks for development; and execute various Proof of Concepts (POCs) to ensure that they are workable and apt for the project. The resulting deliverable should be a detailed design document that uses tools like pseudo-code, flowcharts, object structure diagrams, or event diagrams to group the program’s activities into modules.
This is undoubtedly the most critical phase of PDLC. This phase ensures that requirements and design are translated into a working application using a programming language and application development tools. Developers need to ensure that their code is robust, well commented and meets the specifications. Making sure that each code is reviewed and unit tested before taking it to the next phase is the key.
Today, management of product quality has become an integral part of product development life cycle. Every product organization is laying stress on building an effective process that is well supported by systems to enforce stringent quality management of their product. The phase involves testing the completed code as per the test cases and managing the test results, along with management of defects identifying during this phase.
PDLC Best Practices
The ability to launch products in record time and manage them over their entire life cycle gives product development companies a decisive advantage over competitors that can translate into increased revenue and above-average growth. So, how does Clarice realize these benefits for its customers? It does by using “best practices” at various levels: some at Organization level and some in each of the above mentioned phases of PDLC. Some of these best practices in a collaborative product development environment are listed below:
Integrated Design and Development
If your product focuses on User Experience as a key differentiator, getting such products developed by a service company that has Product UI design and technology services under one umbrella gives you a distinctive advantage. Getting the designers and development involved together upfront eliminates technical feasibility and integration gaps and creates a highly cohesive development environment.
Most of the independent software vendor often start with a concept or idea which they feel has a potential to become a full-fledge product. Such product developments are often driven by faster time to market and ever changing requirements that are driven out of customer feedback. Agile development methodologies fit quite well for such customers. Agile model promotes development iterations, teamwork, collaboration, and process adaptability throughout the product life-cycle.
In-person Discussions during Project Initiation
When product development is aimed with geographically distributed teams, In-person discussions during the Initiation phase helps build rapport and mutual trust and this goes long way in establishing a foundation of a good working relationship. Rotational travels both ways adds further in strengthening the bond between teams and weakening of cultural gaps.
Remove Unknowns early in the Cycle
During the Initiation and Design phase, it always helps to have productive discussions and trials in order to remove any unknowns earlier in the cycle as the cost of such unknowns will be quite high if they occur during later phases. Whiteboard discussions, Proof of Concept (POCs), technology evaluations are some of the must-do activities in the initial stages.
Leverage Solution Accelerators
In order to align themselves to the client’s goal of shorter time to market, services companies need to arm themselves with solution accelerators to increase the productivity of development. Such solution accelerators could be a combination of re-usable components, tools and frameworks that could reduce development time. At Globant, we have created a number of such solution accelerators like login components, security frameworks, notification frameworks, pdf generators etc to enhance the design and development process.
Religious Code Reviews
Ensuring that a developer’s code is thoroughly reviewed by a peer or a lead ensures that a number of defects get removed before the code is passed to QA for testing. Apart from setting up a process for code review, various code analysis tools could be used to determine the quality of code written by a developer. Tools like PMD, CPD, CheckStyle, FindBugs, JavaNCSS, Sonar etc could be used for Java code while tools like FxCop, Ndepend, Reflector etc could be used to analyze .Net code. Also, use of good unit testing framework like JUnit or NUnit also help to remove bugs earlier in the cycle.
Process, Tools, Documents and Templates
Documenting PDLC processes in standard templates help executing product development in efficient way. Documents like ODC Handbook, Quality Plans, Status Reports, Review Reports etc should be prepared and tracked through the PDLC. Further, adapting easy-to-use tools across the entire value chain for better collaboration, visibility and program governance add to the smooth execution of projects.
Governance model for improved Quality and Customer Satisfaction
An appropriate level of governance is an essence in PDLC. Daily status reports, weekly project status meetings, monthly review meetings and quarterly governance meetings are some of the key activities under a governance model. Also, portals like Wiki, SharePoint etc for Online ‘Total Visibility’ adds to proper governance of projects.