In today’s fast-paced, hyper-competitive markets, companies must rely more on their R&D initiatives to stay innovative while managing their costs. The best way for an organization to optimize their R&D activities is by implementing a suitable structure. In the case of software development, this process is imperative in ensuring that a product is delivered in a complete state. Some organizations want to focus on time-to-market, while others want to leverage internal synergies as much as possible. Some prefer a centralized approach to ensure products are consistent and leverage common components while others prefer complete autonomy to the R&D leaders.
The future of software quality and delivery is dependent on the way that the development and testing process is conducted, but for all this to happen, first and foremost we need to have a solid structure to have an effectively functioning R&D organization.
Structure of an R&D Organization
There are several ways that an organization can structure their R&D activities for the delivery of software. On a general note, any new software feature in an organization that has a well-established R&D pipeline goes through the following six steps, which we call the New Feature Implementation Cycle.
New Feature Implementation Lifecycle
- Step 1 – Research is conducted to observe different ways the user interacts with new and existing features of a software product.
- Step 2 – Large amounts of data are collected and analyzed to come up with different inferences.
- Step 3 – Business decision is made whether to proceed with the implementation of the feature based on the data analysis, alignment with a strategic vision of the company, competition research, and whether the feature meets the needs of the existing and new customers.
- Step 4 – If the business decides that the feature provides value to the customers and the company, the UX designers formulate wireframes, flow charts, mock designs, etc. to communicate preliminary structure and functionality.
- Step 5 – Final design assets are produced and delivered to engineers.
- Step 6 – Different iterations of the software are developed and tested until the product meets its requirements and can be delivered to end-users.
One of the most important steps in the development of quality software is to ensure that it meets its set requirements. Quality assurance (QA) testers focus on this area of the R&D process so that the developed software can be finalized. The future of software delivery is dependent on the ways that these teams organize their development and testing initiatives, so it is important that they use the right tools and methodologies for this effort.
There are two ways organizations can structure their R&D teams to ensure there is a seamless and continuous innovation pipeline.
High-Level Organizational R&D Structure
Separate Functional Teams
One effective way to structure a R&D team is to separate QA from development. For some companies, this means using a third-party QA service, and for others, it means organizing their QA testers into their own internal but separate group. What this will look like in a software development setting is the developers will produce their code and package it so it can be deployed by testers in their testing environments. Once tested by QA, the code is sent back to the engineers with any issues flagged so they can be fixed.
One of the biggest advantages to this structure is that it leads to better documentation and packaging so that teams can communicate properly, and it allows them to focus on separate, specialized modules. In this structure, the developers create unit tests for their code. QA is then responsible for regression, functional, and end-to-end testing. It is key for bugs to be properly documented in this structure. If not, a lot of time is spent going back and forth between triaging and reproducing the bug.
Development and QA Work as a Single Team
Some companies find that grouping development and QA together works best for them. There is a fine balance that must be considered when organizing a combined structure to ensure that the developers can keep the quality of their software high. A structure like this would involve a high level of collaboration between development and QA, where software engineers build the software, ensure the feature is built based on requirements, write the required unit tests, and document aspects of feature which were not developer tested. While the developers are working on building the feature, the testers start writing automated tests, create test plans, and set up test data and systems in parallel. Once the feature is pushed to the testing environment, the testers start executing their test plans, do exploratory testing, and document all the findings from their evaluation. This information helps the stakeholders to make informed decisions about their product.
Teams that follow this structure usually work in an agile environment and in two week sprints involving daily standup meetings, sprint retrospective meetings, scrum meetings, and other activities that involve a high level of collaboration between developers, QA, and the business. This encourages all the team members to keep communicating with each other. It also aligns with the shift-left paradigm, which emphasizes the fact that development and testing should start as early as possible in the software development lifecycle (SDLC) and happens continuously throughout the SDLC until the feature is implemented.
There are many tools available to help teams to collaborate easily. Testim, for example, provides various features to increase collaboration such as branching, version control, test suite/plans, and easy CI/CD integration with third-party grids. Also, it is an AI-based software testing platform that uses machine learning to make your tests more simple, stable, smarter, and faster. The AI underneath the hood analyzes all the DOM objects in real-time and extracts all the object trees and properties. Based on this, it creates a list of location strategies. From this list, it chooses the best way to locate an element. This strategy is called dynamic locator strategy. The more tests you run, the smarter it becomes, resulting in more stable tests.
The Future of Software Delivery
Artificial intelligence and automation are two areas of modern technology that are rapidly evolving and have already taken over almost every major industry, and software development will be no exception. The main reason we are seeing this trend is its effectiveness in performing repetitive processes, learning from different flows, and optimizing their behavior.
The one question that always comes up with software delivery is “Who owns quality, and how is it measured?” In an ideal world, quality should be owned by the entire team and should not be left in the hands of only developers and testers. This is not usually the case, so there is a need for companies to collaborate better and look for effective tools and processes to streamline their software delivery process and ensure high quality. The following use cases will give you a better understanding of how companies can structure their development and QA process while also making use of solutions like Testim.
Engagio is a good example of a company aligning themselves with the shift left aradigm and using a tool to streamline their delivery process. Engagio is a marketing platform where businesses can manage, track, and gain insight from their marketing activities. Testing is done by the developers and authoring tests is part of the sprint. Two to four hours are allocated in each sprint for developers to add and update automated tests (apart from the time spent on developing new features).
Wix is an example of having cross-functional teams work together to ensure high quality. The structure that Wix makes use of is a guild structure, where developers are dispersed throughout different teams but belong to their own guild. A guild contains groups of developers who are organized based on a feature set of the software product. The guilds meet periodically but work primarily with their own teams.
This is a relatively new structure, which mixes development and QA together in various groups across the project’s scope. This means developers are likely not too involved in the specific QA tasks.
This is a great example of a traditional R&D structure. At Walmart, development is separate from QA, and QA owns quality. This makes sense, considering that Walmart does not primarily provide a single software product, but rather encompasses a large number of modules that need to interact together to provide the holistic retail experience for the customers and has billions of dollars in resources at their disposal.
This is a good example of teams following a hybrid approach. NetApp is a data management solution that provides businesses with a platform to aggregate all of their data over the cloud. Centralizing your data allows you to gain more accurate insight into how your business is operating. NetApp’s software delivery process involves QA writing the tests and reusable components and developers maintaining those tests. This leads to tests being authored or updated close to development while QA has the bandwidth to increase coverage.
Quality as an Organizational Initiative
The way in which a company’s R&D efforts are structured will have a direct impact on the quality of their products, services, and procedures. For software specifically, the question revolves around ownership of the development and QA process. With more tools becoming available to developers and QA testers, and with the integration of AI, companies can customize the structure in any way they see fit.
Companies like Engagio, Wix, Walmart, and NetApp are already using automated testing solutions, and they all have a unique organizational structure for their R&D activities. A solution like Testim that makes use of artificial intelligence and allows anyone to easily author, execute, and optimize testing will bring value to any business involved in R&D.