From the course: Getting Started with Azure DevOps for Non-Programmers
Understanding the software development process - Azure Tutorial
From the course: Getting Started with Azure DevOps for Non-Programmers
Understanding the software development process
- [Instructor] Before we begin talking about Azure DevOps, let's take a step back and look at the software development process as a whole. When you use a new website or app, do you ever wonder how it has been designed or made? Do you know there might have been 20 people involved along the way just to make one simple website For complex software like Facebook or LinkedIn, this could be thousands of people, and only a minority of those will be actual programmers. One of the things that drives complexity is the number of platforms the software supports. Facebook, for example, offers you a website, an iPhone app, and an Android app. That's three entirely different pieces of software, which require programmers with different skill sets. Typically, a business analyst or project manager will be tasked by the business to make it happen. This person will make sense of the business requirements and should be quite technical, providing a first reality check on what's feasible within the budget. The business analyst should also know new technology and therefore be able to come up with ideas the business stakeholders might not have considered. The best results come from open dialogue here, rather than one person having and driving a pet project. These days, software development has dedicated teams doing quite specific tasks and handing over to each other along the way. The business stakeholders need to kick off the process by specifying what is needed and funding it. I'm defining the business as those people working close to the money generation, so they may have client contact or they know where the gap in the market exists for this new software or new feature. They are the ones identifying the opportunity and risking the money. The business analyst will refine the business requirements and approach a user experience designer or UX designer who understands how people interact with software and also understands new developments and approaches. You might not realize when you serve the web the number of standards and protocols you've got used to, but imagine trying to buy something online and the Buy button is at the top left. It trips you up. You are used to seeing that bottom right. There are thousands such conventions, and your UX designer has this knowledge. They will produce a set of wire frames, a series of images of your future software, which the developers will use to make sense of the business requirements. The business analyst will show the wire frames to the business and have a series of conversations with focus groups and stakeholders until everyone is satisfied that this design will achieve what is required. The business analyst will also be talking to developers trying to get estimates of the cost of different features of the software, because the BA needs to keep the business expectations in step with what can be achieved. Once the budget and design are approved, the BA and developers work together to agree the order in which the software features will be developed and to specify the detail of what will be delivered in the early bursts of work called sprints. They may well specify this work in a tool such as Azure DevOps. There are lots of alternative resourcing models here. First, you could have the business product owner running things, but they don't really understand software. They will also not know what is possible or new in software. Business people tend to develop software by focusing on eliminating current pain points rather than transforming the entire software in a consistent and manageable way. Another model would be the business could delegate to the developers to run things themselves, appointing a project lead. This can work okay, but you are then paying a programmer to perform administrative tasks and asking them to facilitate disagreements between different stakeholders. Software development is a fundamentally human process. It isn't maths. Far more time is spent forging agreement and brokering compromises than in writing code. The setup I describe in which the BA or project manager drives the project has some key advantages. The pivotal person here running all these conversations and driving agreement is the business analyst. This person probably sits within an IT function, but in any case, they are agnostic as to what is developed. They don't have a pet project or pet feature they are keen to develop. They receive requirements, specify wire frames, facilitate conversations, settle disputes, make compromises, and generally chip away until the software is developed. Next up, we'll look at the world of software maintenance and how it differs from software development.