Software delivery is a team sport. There’s no way for a single person to be an expert on everything necessary to go from inception to launch. This blog post offers a look at the roles and practices that fuel the success of software delivery teams.
Who is Needed to Take Software from Inception to Launch?
Every year brings new and dramatic changes to technology. That means that every year it becomes even harder to know all there is to know about a chosen field. With that pace of change, a single person can never be an expert on everything necessary to take your software from inception to launch.
Just as you wouldn’t expect a plumber to build an entire skyscraper, building software is a cross-functional team effort. Thomas Edison didn’t even single-handedly invent the lightbulb. While it’s tempting to hero-worship, we must remember that collaborative teamwork, good communication, and effective processes are the real heroes of any successful venture.
At the core of agile is a belief that a self-governing team works best. This means you don’t have a project manager or a scrum master whipping everyone forward. But you still need goals, and someone to coordinate and prioritize competing requirements. This is where the product manager operates, helping to maintain balance, keep scope and priorities in check, and keep the backlog and non-technical requirements organized and aligned with a strategic vision.
Most large organizations are complicated enough that, even with a product manager, business analysts will be required to gather requirements from stakeholders and help understand the value of different requests. Also known as data analysts, product consultants, and associate product managers, business analysts know how to convert business logic into high-quality and actionable software requirements. They know how your business works today, and they can help prioritize your team’s efforts to get the highest ROI. The best business analysts typically have a background in software development or quality assurance, and have analytical minds and strong communication skills.
User Experience Designers
User experience designers craft workflows and map decision journeys, as well as research user actions to create actionable improvement suggestions. They are mindful of the various target audience personas and are skilled in understanding how to accomplish business objectives based on the needs of the user. These are your experts in accessibility, helping to keep things as simple as possible and focus on your customers’ needs.
Good user experience designers think through imperfect path issues to prevent them from snowballing. If you want to speed up development, a user experience designer will ensure you have good workflows and wireframes that leverage a unified component library, enabling you to accelerate your creative design and development. Just remember: user experience design isn’t creative design.
Creating good software is more of an art than a science, and even the most basic software requires designers, copywriters, sound technicians, and a whole slew of creative people to produce a polished finished product. Good copy, good visual design, and brand alignment are all things needed in modern software development. Would we even know about Apple today if the Mac didn’t have nice fonts?
Much like the product manager regulates the non-technical scope of the project, the software architect owns the decisions for the technology. How will APIs work? What languages and frameworks should you use? What coding standards should be enforced? Their job is to make sure everything gets built properly from a technical perspective. Software architects also have the burden of trying to predict the future when they make technical choices. Will the creators of that framework still be in business and producing security patches in a year? What language will developers be drawn towards in a year or two? Will that license comply with legal, and our end-customers’ privacy needs? Is everything secure, performant, and reliable? Software architects have big questions to dwell on, and mountains of documentation to shepherd.
These are the people who turn your business logic into code, and create all the APIs and microservices that power your websites and apps. Back-end developers tend to use languages like Java or C++, and can optimize your database and solve application performance issues. Back-end developers also write unit tests and work with QA engineers to ensure sufficiently accurate test data and mock services are built out. Security is everyone’s job, but your back-end developer needs to take point on understanding and addressing security risks.
Historically these are your “IT guys” or server admins who managed the physical boxes. Now, they focus on all things cloud as well as on deployment automation and application performance tracking. They make sure you can build, deploy, and run test automation with one command. They help generate test data by sanitizing the production database and they know how far your system can scale and where the breaking points are.
Quality Assurance Engineers
These are the people on your team who are responsible for creating test scripts and helping build test automation practices across all areas of your software development process. They help with code reviews, ensuring proper unit tests are created, and they work with your DevOps team to make sure performance issues are properly logged and addressed. There are numerous testing tools, most of which require a fair amount of coding to get right, and this team helps keep the testing infrastructure running smoothly so you know what’s working and what isn’t.
Quality Assurance Testers
With so much testing still being done manually, these people diligently craft test plans, manage test cases, and click through your application to find bugs. Most organizations also rely on QA to spot issues with requirements that will result in a faulty customer experience, as well as to cover all the edge cases that weren’t properly included in the acceptance criteria.
The real reason Siri or Alexa can identify and respond to your voice is the millions of hours testers put in to teaching them human speech patterns. From small websites to big data, we’ll never fully replace manual testers. As much as advancements in technology will reduce the manual workload of QAs and eventually free them up to become “qualify advocates” to verify and teach testing throughout organizations, this is a job that requires a human touch.
And There’s More
These are the people you need to build software, but there are so many more people involved with maintenance, support, and growth. From your salespeople and customer support staff to product marketing managers, human resource staff, procurement officers, and line managers, everyone from the CEO to the temp in the mailroom plays a part in getting a project across the line. Good team members are vigilant about identifying conflicting goals or inefficient processes between teams, and they are vocal about raising concerns to appropriate people who can work to resolve issues. The best team members will also go out of their way to find opportunities to give praise. And teamwork, good communication, good processes (and some good vibes) will always be at the core of a successful venture.