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/