Talking about software development can, to some, conjure images of developers hard at work, writing lines of code. That’s an important part of it, but it is only one part of what it takes to develop successful software products.
Developing modern software is a complex and multi-disciplinary process that relies on groups of people with very different skill sets and mindsets. My experience is that you excel when you have a team with a diverse range of skills, experience and education.
Why this matters
At Steer73 we build software to solve problems. Understanding the range of roles needed to deliver software products is needed to appreciate the challenge and complexity involved in developing these software solutions.
Typical roles in a software project
These are the roles we have at Steer73 and the functions they serve. While we’re listing the roles individually, the sum is certainly greater than the parts. It is all these different people working together as a team that delivers good products.
Project leadership – the product director and the technical architect
Our projects are always led by a product director and a technical architect. These are very senior roles in any business.
The product director is responsible for a holistic understanding of the problem, where it sits commercially within an organisation, and shaping the nature of the solution we create. They bring experience and cross-industry expertise to bear.
The technical architect on a project shapes the fundamentals of a technical solution: the solution architecture, which technologies should be used, how they are put together. They lead the team and enable them to develop individual user requirements.
Product management – the product manager
The product manager role is a challenging one. They can be considered the ‘interface’ between commercial requirements and the technical team. Product managers have to develop the solution to the core problem, understand the requirements of users but also balance those requirements with the needs of all stakeholders.
They write the requirements, define the acceptance criteria and when it comes time to build the product they help guide the technical team.
Analysis – data scientist or data analyst
The data scientist or data analyst is there to understand how the product is being used. Hypothesis have been developed and assumptions have been made, the data analyst is there to test and validate or invalidate these.
Taking data from multiple sources, their synthesised analysis is crucial in guiding decision making.
User experience design
User experience design is the over-arching process our product and design team go through to develop solutions to the user requirements. It covers all aspects of design from usability to user interface, functionality, tone of voice and user flows.
While we may use a dedicated ‘user experience designer’ at Steer73, most often user experience design is a collaborative effort between product managers and a user interface designer.
User interface design – UI designer
The user interface (UI) designer creates the interface. While ‘design’ is in the title, this process is more science than art. Based on the requirements that the product managers have created and the over arching user experience parameters, the UI designer works from sketched out wireframes through to prototypes and final, full designs.
The prototype phase is especially important, as it allows a product to be tested and validated well before a single line of code is written.
User interface (CSS) developer
When creating websites or web applications the design is represented by HTML/CSS. HTML represents the content and structure of the page, and CSS the design and display of the HTML elements.
Typically, this is done by a front-end developer, but we’ve found there are benefits to have a dedicated, expert UI developer who really specialises in CSS. A UI developer’s job is to accurately represent through code what the UI designer has designed.
Front end developer
Many applications can be considered to have a front end, what users see and do on a webpage, and a back end, the system that produces what they are interacting with.
A front-end developers role is to build the web application or web page that users interact with. A front-end minded developer will typically have a design aesthetic and be interested in optimising the performance of a webpage.
Back-end developers create the logical back-end of any system. This is the ‘computational logic’ of the system that allows users to accomplish the tasks they need to on the front end.
They make this available to the front end, often through development and management of APIs (Application Programming Interface).
Our app developers build native iOS, Android and PC apps. They understand both application front end development and how the different operating systems (OSs) behave.
Quality assurance (QA) testing is a core part of software development, and it starts early. QA testers are involved at early stages of a project and help define how user requirements will be tested. What does “done” mean? How do we know a feature works correctly across browsers? These are some of questions QA testers have to ensure can be answered.
Using a combination of automated and manual testing, QA testers are the final check on a system’s correct functionality.
A vital role, the project manager helps ensure the right people get the right information when they need it. Through project planning and careful scheduling, they help balance the many dependencies and keep a project moving.
Key take away
There are many roles required to develop a software product. The more channels a system requires (web, app, etc) then the more roles will be required. Being able to work together effectively, as a team, is required to ensure quality delivery.
At Steer73 a core part of the value we bring to clients is this diverse skill set – an entire product development team, working together effectively, with proven ability to deliver.