Software Development – A Crash Course for Non-Developers – So what's behind this whole "Agile" buzzword?



Software Development – A Crash Course for Non-Developers – So what's behind this whole "Agile" buzzword?

1 0


devCrashCourse

Slides for my talk "Software Development - A Crash Course for Non-Developers"

On Github hamvocke / devCrashCourse

Software Development

A Crash Course for Non-Developers

Hermann Vocke | @hamvocke

Who of you is NOT a Developer?

Don't worry, that's not a bad thing

I bet all of you still have heard some of the terms...

Agile Development

TDD

Continuous Delivery

Continuous Integration

Waterfall

User Stories

...at least once

But do you really know what all of these mean?

No problem, we'll figure this out together.

Disclaimer

This Brownbag is very limited in time and will force me to rush through stuff. In this Brownbag I will be oversimplifying stuff that is actually more complex. I will be opinionated. I will only scratch the surface of many topics. Some stuff I tell might be utterly wrong. Feel free to yell at me at the end of the Brownbag.

So what's behind this whole "Agile" buzzword?

In the beginning was the Waterfall

and it was totally sh!t had room for improvement

Waterfall was slow, clunky and not able to cope with change

Long, detailed specifications

Strict planning, sticking to the plan

People approached building software as they approached building an aeroplane. They simply took what they knew from other engineering disciplines and tried to shoehorn software development into these practices. People made long and detailed plans, wrote big specifications about what needs to be done up front and sticked with whatever was planned. Specifications were then given to the development teams which implemented whatever was specified. Unfortunately this is not how developing software works. Writing specifications up front takes time. The world of software changes -- fast. When the software was finished the world has most likely changed. On top of that you don't really know what people want and how people are going to use your software. A methodology that is not ready to cope with the frequent changes in the software world is not suited to build software. We now know that building software is not like building an aeroplane. That's why the methodologies need to be different.

Agile Software Development to the rescue!

* In 2001 17 developers met in a cabin to find a better way to develop software * amongst others there were Kent Beck, Uncle Bob, Andrew Hunt and Martin Fowler

The Agile Manifesto

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

* Self-organization and motivation and collaboration are important * Emphasis is on working software * You cannot know all the requirements, therefore collaboration with the customer is important * Agile focuses on quick responses to change and continuous improvement

Agile Methodologies for everyone!

Extreme Programming (XP)

Scrum

Lean Software Development

Kanban

...

Agile vs. Waterfall

Iterative & Incremental Development Developing everything in one big batch Efficient face-to-face communication contracts and process Short Feedback loops, quick adaption Long and detailed planning * Developing in short timeframes which produce a result * Efficient communication with the customer and information radiators

TDD

Test Driven Development

Red-Green-Refactor

Talk is cheap. Let's explore how this works.

calculat.io

Disrupt the Calculator Biz!

Look! A User Story!

#001 Add two numbers

"As a user I want to be able to add two numbers so that I can see the result of the addition."

#002 Add an arbitrary amount of numbers

"As a user I want to be able to add an arbitrary amount of numbers so that I can see the result of the addition."

#003 Multiply an arbitrary amount of numbers

"As a user I want to be able to multiply an arbitrary amount of numbers so that I can see the result of the multiplication."

The benefits of TDD

  • Better code quality
  • Fewer bugs
  • A safety net for changing software

Continuous Integration

Merge the team's code changes as often as possible

Practices of Continuous Integration

Build the software automatically

Test the build automatically

Continuous Delivery

Continuous Integration on Steroids

Practices of Continuous Delivery

Everything that Continuous Integration does, plus:

Test the software automatically in multiple stages

Deploy the software automatically

Build Monitors

Make results visible

Why is CI/CD a good thing?

You test your application with every commit

"Good" versions will be deployed automatically

Fast feedback for the team

Features go from development to production insanely fast

Recap

What have we learned?

  • The basics of Agile Software Development
  • The madness of traditional Software Development
  • TDD in Practice
  • Basic Continuous Integration / Continuous Delivery
  • Kanban for Dummies
  • User Stories
  • Git and Version Control
Software Development A Crash Course for Non-Developers Hermann Vocke | @hamvocke