Oftentimes when a software development team is not delivering the features desired by a business in the time and quality that the business expects, management will look to add software developers to the team.
Like all members of a professional team, software developers are a challenge to hire, and they may not be the ones with the skills or inclinations that your team needs to move faster.
Instead of over-hiring developers to problem solve, organizations are wise to turn to other members of their team, like Software Development Engineers in Test (SDET), to address constraints and accelerate project delivery.
What is an SDET?
SDET (Software Development Engineer in Test) is a technical IT professional who works equally in software development and testing processes. They often focus on testing automation, increasing efficiency and reliability in addition to enabling faster testing results. SDETs are deeply skilled in both quality engineering (QA) and software development.
Optimizing Software Development Processes
Developing the software, writing the code that is the application, is the central task of an IT organization. It is the software that we install on the servers, that we sell to our clients, and that adds so much efficiency to our business.
We will realize significant benefits when we direct our focus to how to get the greatest amount and highest quality of software developed as quickly as possible.
Software development is the primary constraint to the delivery of software. Improvements to other activities involved in software delivery will have no effect if code is not delivered correctly and quickly enough.
The management and optimization of constraints to processes like these is known in management science as the Theory of Constraints.
What is the Theory of Constraints?
The Theory of Constraints is a problem-solving methodology for identifying the most important limiting factor, or constraint, that stands in the way of your project. The core concept of this theory is to identify and address that constraint in order to optimize processes and strengthen the project performance.
The Theory of Constraints also establishes that spending time addressing and optimizing non-constraints will not deliver significant benefits or impacts; only improvements to the constraint will achieve the goal. In other words, the methodology focuses on the “weakest link in the chain.”
Theory of Constraints Example
A well-known example of the application of the theory of constraints comes from Kevin Fox, managing partner of Viable Vision LLC. Fox shares how he helped a manufacturing facility make radical improvements to the throughput of their welding work.
Welders were moving as fast as they could, but their department was lagging behind, with a deep backlog of parts to be welded.
When Fox visited and observed the facility, he noted that although the welders were always busy, they spent very little of their time actually welding; instead, much of their day was spent moving and prepping parts.
Fox introduced support staff to help with all the non-welding activity and the whole department went remarkably faster, significantly boosting the output. The company needed more welding, not more welders.
Constraints in Software Development
In software, we often view development as the constraint, and our first instinct may be to add developers. But what the company needs is not more developers, but more development.
Other highly skilled roles can play an impactful role in keeping the whole team working at maximum effectiveness. You likely have people with these roles on your team today, but are you thinking of them as accelerators of delivery?
Do you have enough of them to keep your developers writing the most and best code?
With software developers as the constraint, often the thing that the teams need to get more features in front of users faster are:
- Software Development Engineers in Test
- Scrum Masters or Project Managers
- DevOps Engineers
Each of these roles serves as a force multiplier in our projects that are critical to delivery.
When this work is not done by SDETs, DevOps engineers, and scrum masters, it will fall onto your developers, affecting the whole delivery.
Leveraging SDETs to Drive Delivery
Software Development Engineers in Test (SDETs) are one of the most powerful and underutilized roles in a software organization.
These highly creative and technically skilled individuals can make revolutionary improvements to the cost to deliver software by giving your developers feedback on the correctness of their code, and often can clarify the expectations of the systems developed in new and more effective ways.
Developer activities that SDETs can improve or eliminate include:
Requirements clarification and review
Developers spend a significant amount of their time figuring out what exactly needs to be built. The users and other business-minded people that ask for a piece of software have a strong understanding of their needs, but often do not recognize the mountain of details required to fulfill their need.
SDETs are technical, detail-oriented, systems-minded people. They have deep expertise in translating abstract and desired needs into deterministic and detailed descriptions of the expected behavior of the software.
SDETs refer to these descriptions of expected behavior as “test cases.” If your developers are struggling to build the right thing the first time, give the requirements to the SDETs first and have them write out the test cases.
Some will be manual, some may be automated, and all of them will be very high-quality inputs to the developers on what the software is supposed to do.
Tell your developers to build the software that will pass these tests, and they will know better what to do, and know better when they are done.
Project status reporting
Developers are forever complaining that they are in too many meetings. A good chunk of those meetings is intended to let management know how the project is progressing, what the areas of risk are, and when the features will be suitable to ship.
SDETs possess multiple tools and techniques that are designed to illustrate the aggregate, the detail of the truth, and the quality of the software.
The progress of completed and tested features, gated test automation, the number and priority of bugs, and the major feature delivery through quality gates is excellent data that software testing professionals naturally have at their fingertips.
This data can be coalesced into reporting, freeing up the valuable time of developers and other members of the project team and enabling them to redirect that time to developing software.
Test data management
Developers are continually challenged to observe their software in operation in realistic scenarios. It is common for applications to be built only against the data schemas and system requirements, and not against a good variety of data payload.
An SDET is extremely skilled in expressing test conditions in data and usually has in their toolkit a set of utilities to generate data that expresses normal conditions, edge cases, and payloads that are downright malevolent.
Tasking SDETs with providing a variety of data payloads, messages, and records before developers must sit down and write the application can lead to:
- A deeper understanding of the requirements
- Faster delivery of stories
- Fewer bugs discovered after stories are delivered
Leveraging Your SDETs’ Skills to Accelerate Your Projects
The distinct skills and approach that software testing professionals bring to projects can allow clarity, predictability, and velocity to a high degree.
Using quality-minded individuals in your preparations and relying on them for status can get teams moving. Velocity equals speed and direction; your SDETs will add significantly to both.
Want to Optimize Your Processes to Accelerate Project Delivery?
We leverage our deep expertise in technology and passion for empowering our clients’ growth and success to help companies tackle their most challenging projects. Let’s accomplish your goals together.