The presentation is starting, and you recognize one word out of the entire presentation: Hello. Software developers are throwing around words like it's their job (which it is), but you are completely lost. You've heard words like "agile," "scrum," and "sprint," but not used in terms of software development. More importantly, you're too embarrassed to stop the presentation and ask what the developers are talking about.
Don't worry. That's why we wrote this blog post. Take this list of software development terms into your next meeting, and you will have a better understand of what each term means.
Agile -- Back in 2001, a group of software developers in Utah created a methodology for the next generation. They created a manifesto with certain principles. For instance, developers should focus on individuals, interactions, a working software, and customer collaboration. They also wanted developers to respond to change quickly, hence the name "agile."
Scrum -- An agile way of managing complex projects. Instead of focusing on the tiny details of each feature of the software, this way focuses on the overarching goal of the project and which features need to be done before the next sprint meeting. This way, the experts can solve problems in their own unique way.
Waterfall -- An alternative to the agile method. Before moving on to another part of the development process, this method forces everyone to finish the previous part of the process. For instance, you can't design the software without the proper analysis. The waterfall methodology is another way of organizing software development. Progress is measured at each level, and customers aren't as involved in process, unlike the agile method. Even though each step is done sequentially, the entire process doesn't have to be exactly in order. For instance, developers can work on other projects while business analysts document exactly what needs to be done on the current project.
Pair programming -- This is when two people are coding at a computer. The driver, or the one at the computer, types the code. The other reads the line of code and edits as needed. This type of programming helps keep the process moving along quickly.
Continuous Deployment -- A continuous deployment implements automatic tests as you're developing the software. Programs automatically test the code. Once the code is tested through the rigorous process, the code is sent to production for deployment. The testing is expected to change over time, always evolving into the perfect test for developing the software. Be careful not to confuse continuous deployment with continuous delivery. There are debates about which is which, and you can click here and here for more details.
Sprint -- Like Usain Bolt sprinting to the finish line, a sprint is a set time period for completing a certain task. The product owner (the person who initially came to the developers with an idea) and the development team set a meeting before the sprint and plan everything out, like what the product owner wants and what the development team can realistically do in that short amount of time. Once the meeting is done, the product owner stays out of the development, unless he/she wants to answer any questions the development team has. The SCRUM master (team leader) has daily meetings to discuss current progress and brainstorm solutions to challenges that arrive.
These are the 6 terms we believe are the most important for you to know. If you have more questions about agile software development, think we left some key terms out, or if you're team doesn't know what these terms mean contact us by clicking the link below. We'll be happy to help you out :)
These Stories On Process