A development process

that works

About us

Modern Message

Who are you?

Entrepreneurs?

Managers?

Developers?

Students?

Other?

What's this talk about?

Software development process

What is process?

How software is built

a series of repeatable actions

the golden goose to building creative confidence

http://bit.ly/creative-confidence

Today's agenda

Bad process and the journey out of it

Good process is always important. Why?

What we did to get good process

In the beginning

It's the wild west

This engenders cowboy coding

https://en.wikipedia.org/wiki/Cowboy_coding

"Cowboy coding" commonly sees usage as a derogatory term when contrasted with more structured software development methodologies.

Someone is going down

And your product with them

This puts the company at very high risk.

The risk/reward of this style is never

understood until afterwards.

There is no cost in doing it the right way from the start.

You might get lucky in the short term

Eventually you will pay the price.

bad process == bad code == bad product == no sales

Why do you care?

We would use GitHub tickets, but everyone managed their own work

todo lists

searching assigned tickets

email...

How we used to manage work

How we used to manage work

How we used to manage work

Doesn't scale > 0 devs

How to keep the plane in the air while changing out the engines?

How to triage bad process?

The first step is admitting you have a problem.

Any improvement is progress.

Choose your tools based on your process, not the other way around.

How to triage bad process?

Good process is important at any stage

Why?

Developer Happiness!

Why?

Maintaining institutional knowledge

Good ones are hard to find

Even good ones do not know your system yet

Replacing developers is one of the most expensive things you ever have to do.

Why?

The cost of bad process

  • New features take longer
  • Spooky action at a distance
  • Unrelated code will break all the time
  • Customers will have to tell you the app is broken
  • Mythical man-month
  • Adding new developers won't help

What to focus on

Features that match customer needs

What to focus on

Small units of work, quick iteration

Huge features may take so long that they get dropped completely as a new priority arises.

Stick to manageable milestones, and re-group once you get there.

What to be wary of

Technical debt

It just kind of creeps up on you

What we did

Kanban

What we did

Kanban

We use Huboard, but others exist: Trello, Waffle

Everyone knows what's being worked on, and can participate in planning and triage.

Huboard stores everything in Github, so we keep one source of truth.

What we did

Better development standards

Store the project in source control (Git, SVN)

Write new code on a new branch

Open a Pull Request for someone to review

Don't deploy your own changes!

What we did

Sprints

1-2 week sprints

 (3 weeks is too long for our 5-member team)

Good sprint planning is difficult

Track all the things!

How much unplanned work entered the sprint?

What planned work didn't make it through the process and why?

(shorter sprints are easier to plan)

What we did

Sprints

Do sprint retrospectives and planning as a team

Involve non-devs

We do retrospectives and planning in the same meeting

Celebrate!

usually for 1 hour between 2 week sprints

What we did

Tests

Tests will save your bacon 

Tests are code

Schedule for tests or they won't get done

Start with test coverage for the most critical parts of your app

What we still do poorly

Nobody is perfect ¯\_(ツ)_/¯

We still don't have tests for large chunks of our system

We do not bake enough time into our schedule for writing tests, regular maintenance and unplanned work

What we still do poorly

Nobody is perfect ¯\_(ツ)_/¯

Enforcing the process / business buy-in:

Educating others on the value of the process

Helping them integrate it into their workflow

What we still do poorly

Nobody is perfect ¯\_(ツ)_/¯

But we are getting better!

...the “aggregation of marginal gains.”

Results

...are hard to quantify when you are growing, but qualitatively...

No developers have left

This process has attracted talent

We work normal hours and are rarely stressed out

We have time to work on important things

A good process is an investment in the future of the product

Does your product have a future?

Q & A

Thanks

Resources

These slides:
http://bit.ly/dev-process-that-works

The Phoenix Project:
http://bit.ly/the-phoenix-project

Huboard:
https://huboard.com/

Trello:
https://trello.com/
http://bit.ly/trello-scrum-0
http://bit.ly/trello-scrum-1
(just google 'trello scrum')

Waffle:
https://waffle.io/