It took me over a decade to bring these techniques together. I want to helps you get there in a fraction of the time.
I’ve been developing software professionally since 1995. Over three decades professionally, two ides stand-out:
- Business software is all about economics.
- The winners deliver quality on a rapid cadence.
Business is moving faster than ever. Software is leading the charge. People — talented, motivated, inspired people — make all of this possible.
While software world is constantly advancing, it’s grounded on a foundation of principles established over 50 years ago.
Delivering Daily
I believe every developer on every software team should be shipping to production every day.
I get a lot of push-back when I talk about this.
Some say: “Probably shouldn’t be deploying new code at 4:45 on a Friday.”
That’s fair. But what if you were integrated, with passing tests, by the end of each day? Imagine kicking off each morning with a deployment.
Others have said: “Should they…probably not.”
That’s like saying developers should not be delivering value. That doesn’t hold up.
Yet other comments say: “risk management is real and important.”
Agree, and +1 for risk management.
What I have a problem with is turning that into risk avoidance.
These six practices give you the confidence to deliver valuable economic leverage to your users quickly.
1. Story Slices
Work through the system, front to back, in thin but complete strands of functionality.
- Independent pieces of work. such as create before delete.
- Someone non-technical can use the system to see it working.
- Let’s you deliver the most valuable functionality sooner than anyone expects.
2. Refactoring
Keeps the code clean, readable, and maintainable.
Allow yourself to work incrementally.
3. Automated Tests
Put the soft in software development.
Specify the behavior you want, and have the computer check your work.
- Put the design into your software to that testing is possible.
- Do not depend on anything external, like a file, a database, or the network.
- Run extremely fast, at a rate of hundreds per seconds.
4. Acceptance Tests
Work through the entire architecture, like a user would.
- Give yourself another layer of confidence that the entire system works well together.
- Hit the representative, highest level features.
#5 Automated Deployment
Push one button, let the hamsters do their work, and use the updated system.
- Remove human error and missed steps.
- Let your team roll-forward if there ever is an error.
#6 Feature Flags
Select whether you show a feature based on a predefined criteria.
- Separate deployment (an engineering activity) from release (a business decision).
- Let your team roll out to a small number of users.
- Allows A/B testing as an added benefit.
Developing Good Software Well
It’s not enough just to be able to use software. Users need to conceive and create solutions to excel in today’s competitive market. And they need to collaborate effectively, to see their concepts come to reality.
Developing Good Software
Software is not built, like a car. Nor is it constructed, like a house. It is developed, once concept at a time. A mix of science, art, craft, and praxis. It’s very easy to get started, and can take a lifetime to master.
Good Software
We all enjoy software that meets our needs. Software that is both visually and functionally appealing. Quality software for the user. Maintainable software for the engineer.
Software
Software and computing have entered every part of our lives. This is true in every business, whether you work in an office, warehouse or assembly line, or from your home or your car.