Maybe you’re running a digital agency with amazing creative chops. Your team is cranking out some amazing marketing websites for a jealousy-inducing A-list of clients. Or maybe you’re a high-tech shop or freelancer focused on building complex web or mobile applications. You’ve assembled a team of the best designers, developers, account managers, salespeople. Client services is second nature and you’ve mastered the art of becoming an expert on behalf of your clients, no matter what crazy subject they throw your way.
You’re ready to spring forward. Conquer the Internet. Make millions.
But along the way, you realize that you’re also in the software business.
And you’ve probably already learned that building good software is hard. Damn hard. Designing, estimating, coding, testing, releasing—a precarious dance that seems more like black magic than engineering. Sometimes it feels more like you’re just along for the ride than steering the ship.
You struggle to release on time, even with cycles based on geologic time, and the software is full of defects. Estimates are always off, sometimes embarrassingly so. The team is working late nights and weekends, and it’s painfully obvious that, well, they hate your guts. Turnover is high, making it harder and harder to catch up.
Your clients see all of this, and it’s painfully obvious that, they too hate, your guts. You’re quickly losing autonomy, risking becoming another feature mill instead of a high-value, trusted strategic partner.
The good news is that—with the right systems and tools in place—predictably and confidently driving the software delivery pipeline is well within reach. Despite how it sometimes feels, it is possible to build better software faster, make your team hyper-productive and uber happy, and repeatedly wow your clients. All while increasing profits.
Imagine a world where you:
- Make accurate estimates and hit them.
- Use data to drive project timelines and milestones.
- Minimize rework due to mistakes.
- Communicate more effectively.
- Are seen as trusted experts at building and delivering complete products.
- Delight your clients, again and again.
- Make more money with less pain.
It’s not black magic, but to those on the outside, you’ll appear a conjurer of the highest order. Things will fall into place, and clients will begin to use words like “magician” and “rockstar” to describe your team.
And here’s the best part—not only will your margins improve and become more predictable, but you will be able to charge more because you will have cultivated a process-driven, high-performing team unique to your business that consistently delivers results.
In theory, theory and practice are the same. In practice, they’re not. – Yoggi Berra
During my twenty-plus years as a software engineer and consultant, I’ve seen every kind of project imaginable. Successful projects that generated massive profits, failed projects that cost entire teams their jobs, and everything in between. After a few years, I started to notice that—regardless of the type of project or the size of the team—the successful projects shared a few common traits:
- First, the teams tasked with executing were painstakingly selected and were empowered to get things done. Everyone had access to the information they needed to do their jobs. Teams had autonomy to make important decisions without fear of constant veto or micromanagement. Impediments like never ending meetings and useless, day long email threads were virtually non-existent. Turns out that a good team, given the right amount of freedom and the right information at the right time will always surprise you.
- Second, these teams have well-documented processes that they believe in and follow consistently. This might consist of an overarching software development methodology, source code management strategies, an automated testing practice, high-efficiency communication techniques, or a dozen other things. There’s no prescriptive silver bullet here—the point is that well defined processes extend to every facet of the delivery lifecycle and that they are designed with the team in mind (and not the other way around).
- Finally, these teams had ready access to the tools they needed. There was a dedicated budget for tooling and the flexibility to build and maintain custom tools if necessary. They also had relative autonomy over the evaluation and selection of their tools—under a certain threshold, protracted selection by committees of middle managers, accountants, lawyers, and other non-stakeholders was absent.
As software development—particularly web development—has evolved, these traits have been refined into a set of philosophies and tactics that can yield massive returns on investment for technology teams. And businesses that consistently employ these principles will almost always outperform their competitors.
With a bit of planning and carefully executed changes, I’ve been able to help teams:
- Increase project visibility for stakeholders, without adding hours of expensive status meetings.
- Implement non-dogmatic, agile methodologies that actually work.
- Use inexpensive, cloud-based tools to effectively manage projects.
- Reduce software defects and provide clients with tangible test evidence.
- Release software during business hours. No more sleepy, 3AM Saturday night pushes.
- Respond to production issues proactively, often before clients notice there’s a problem.
- Leverage the cloud to reduce expenses while increasing uptime and performance.
- Automate repetitive, error prone tasks, instead focusing on what they do best—building software and making more money.
If you’re interested in boosting your company’s profitability by accelerating your team’s velocity and increasing the quality of their output while avoiding the dogmatic advice usually associated with software development processes, you’re in the right place.
Check out some articles that will help you develop a practice for your business that works.
- Are You Ready For Faster Software Delivery?
- Quantifying the Value of Automation
- How Much Are You Really Spending on Meetings?