I recently finished reading a book called Ask Your Developer by Jeff Lawson, the Co-Founder and CEO of Twilio.
It's a book about how companies can stay up to date and compete in the current economy, where software is eating the world.
I thoroughly enjoyed reading it and found many tips and ideas that I wanted to keep and remember for future reference.
So I've written this post to put down my key takeaways and notes from the book and questions that can be asked to better understand the software development culture within a company.
Why developers matter more than ever
Off-the-shelf software is for general purpose and does not give an edge over your competitors. Businesses need to become more software orientated to gain that edge. "You need to build your own software or die."
- Ask your senior technical leaders what should be bought and which digital innovations are the differentiators between you and your competition?
Understand and motivate your developers
Developers pride themselves on being bright and creative and use those skills to solve problems with software. They don't like to implement a solution that's handed to them, making them feel like an assembly line worker.
The key to getting business people and developers to work well together, and building a world-class engineering culture, is for the business people to share problems, not solutions, with the developers. So bringing developers into the big issues you're trying to solve and leveraging their full skills.
- One way to get a feeling if that's happening in your company is to ask a developer what they're working on and what customer problem it's solving. Do they know?
- Ask when they last interacted with a customer and how it made them feel. Did it motivate them? Ask what they learned that surprised them.
Based on their answers, you'll get a sense of whether developers are genuinely brought into customer problems or if they are just asked to implement solutions.
To stay on top of competitors, you need to innovate. To innovate, you need to experiment. Experimentation is the prerequisite to innovation.
You need to ensure that there's tolerance for failure - both personally and organizationally - it's the primary key to unlocking innovation.
- How is intermediate progress of experimentations measured? How will you know if you're on the right track?
- What hypothesis are they trying to prove with the experimentation?
Making your developers successful
Creating an open, learning environment
An open learning environment is where the company is receptive to not having all the answers, is comfortable with uncertainty, and strives to get better every day.
It means being flexible instead of rigid and having a culture where people continually seek the truth. You want knowledge and truth to win, not politics.
- Ask your developers what happens after an outage. Is the person to blame or the process?
- Are people encouraged to learn quickly, even at the risk of making mistakes?
- Do you provide venues for learning from each other and even take risks by giving younger leaders the reins to parts of the business?
Small teams and single-threaded leaders
A company's structure built on teams around ten people is a way to scale up a company without losing the urgency, focus and quality of talent that characterizes a startup by building a large company out of what are essentially many startups.
"Single-threaded" leaders have only one thing on their mind - how their team can win.
They are empowered to make their own decisions and be responsible for them.
- Ask your developers who made some recent decision?
- When a decision was made, did they commit and move forward as a team?
- What metrics are you measured by, and can you reasonably control them?
- How many people outside of their team decide what they can or can't do?
Wearing the customer's shoes
Make sure your customer feels you're on their side.
Encourage developers to talk directly with customers, listen on a call or attend a meeting with customers regularly to get a human connection with the customer and understand their problems better.
- Ask your developers what customer problem are they solving/working on?
The core of Agile is the ability to move quickly and easily, change direction quickly and respond to changing inputs.
- Ask your developers whether they want product managers to be gatekeepers or facilitators of customer interaction? Do PMs view their role similarly?
- Do they collaborate to groom road maps coming from a shared customer understanding, or whether they divide and conquer where PMs know the customers and engineers know the code?
Invest in infrastructure
"Move fast with stable infrastructure."
Providing platforms and processes that help developers build faster while still having guardrails ensures that customers and the company were protected from awful outcomes. Great infrastructure is the foundation of innovation.
- Ask your developers which processes have not been automated but should be?
- Which part of the development process is the most likely to cause your app next outage, and is that something you should fix first?
- How much work is it to deploy code to production? Are they frustrated? Where are the bottlenecks, and how can they be eliminated?
Thank you for reading.