I recently read the State of Software Development 2018 report, authored by Tamas Torok of Coding Sans, in which the company surveyed a variety of 300 participants. I was surprised by the shocking statistic that only 10% of companies outsourcing their software development are "absolutely entirely satisfied" with the results. It appears something is wrong with the system.
In my twenty years of development experience, I’ve had the opportunity to observe what works and what doesn’t. The problem is the majority of projects don’t follow a process. At least not a thoughtful and well-documented one.
Great developers don't make great software, a great process does. Bad process leads to an inferior product. Technical debt occurs when we take shortcuts. Cliffs are the fastest way to the bottom, but the worst way to get there.
Poor Planning Produces Inferior Products
In the same survey, managers and developers were asked what the number one cause of software delivery problems is for them. Seventy-five percent of the issues reflected a lack of planning before starting the product life-cycle and during its development. (see page 29, State of Software Development 2018)
Prepare for a world-class product launch in the early stage of discovery. Everyone’s excited to jump into development and eager to push code. Slow down; orient your team towards your goal before you start running - not after. It won’t take as long to follow the correct steps as it will to backtrack and repair problems later.
We ask a lot of questions and take a lot of notes. What’s working, and what’s not? What hurdles do you face every day? What’s your most significant pain-point?
When building software for human-computer interaction, it’s important to understand the user experience. We follow their journey, step-by-step from the time they see an ad for a product until it’s in their hands. Where can things go wrong? How can software improve efficiency while reducing errors?
For other projects, we need to follow a flow of information instead of a product, through each of the steps it takes to produce the desired outcome. What data needs to be transformed? What path should it take, and who does it notify? We want operations that feel personal but only interject a human when required. How do we do that?
We analyze the existing process and talk to everyone who works on it. What’s effective? What’s not? Where are things getting stuck? How can we improve systems?
We are looking for efficiency and automation - sometimes the best solution is integrating existing software, while other times custom programming is required. We want a direct, effective route from beginning to end that solves the problem as quickly and efficiently as possible.
The most crucial aspect of any process is the people involved. It starts by establishing a relationship of trust and confidence so we can dig into the problems we need to solve together. We’re on your side, and we want you to know that. Too often we forget we’re talking to real people and it requires human interaction to get to the answers. The world is not digital, and people still matter.
Lock In Your Destination
It is essential to establish the final destination we’re navigating toward or the structure we envision. Our development follows an accurate blueprint, digital roadmap or a GPS guided laser — depending on the job.
Once we know our destination and we’ve found our north star, we’re ready to start a journey of one thousand miles with a single user story — a development task that defines a user, a desired action, and a reason for doing it. It’s like mad libs for developers, and it goes something like:
As a ____________, I want to _____________ so I can _______________
With this simple structure, we describe solutions that change the world. Sometimes they are granular and simple; sometimes they are broad and grand. However, they always provide the definition needed for the team to move confidently forward.
One of the wonderful things about an Agile Scrum process is that you don’t have to know all of the steps in your journey. You don’t have to define every task in advance just to get started. You only need to write enough user stories for the first sprint, typically two weeks, and you’re ready to move quickly, efficiently, and most importantly, in the right direction.
So, bring out the whiteboard. Ask questions about everything. Brainstorm. Innovate. Disrupt. Together we’ll come up with fantastic software solutions to your toughest problems.