Welcome to my monthly newsletter. I'm an experienced software engineer, a tech mentor to product managers, and the founder of Skiplevel. Every month I share:
- technical skills and knowledge you should know
- tips for working with and collaborating with dev teams
- tips for non-engineers struggling with confidence in technology
- tips for managers looking to build a more technically literate team
Ask me anything (yep, anything) and I'll cover it in an upcoming newsletter issue!
Q: My team just missed a big release with a contractual deadline by almost 8 weeks. I wish this was a one-time thing but this has happened twice now. Every time it happens I get the brunt of the heat from my CEO but I can’t control how fast the engineering team builds. I’m afraid this will affect my promotion. What do you think and how can I prevent this from happening again?
Asked by Sr. Product Manager @ Series D Healthcare startup
Yikes, this is a stressful position to be in, but hopefully you’d find some solace in knowing that you’re not alone. Many product managers find themselves in the same position as you.
Estimating project timeline is notoriously difficult because the work in itself is about solving something. It involves lots of unknowns and risks.
If only there was a fool-proof way to predict the unpredictable. Alas, there isn’t and such goes life. C’est la vie.
The good news is there are ways to manage unpredictability to set your team up for the best possible outcome and this is a core product management skill you’ll need to develop.
Managing the unknowns in a project comes down to two things:
(1) Making as much known about the unknowns as possible.
(2) Managing the expectations of stakeholders.
Let’s get into it.
Making the unknowns, known
If the core of the problem stems from unknowns then the obvious solution is to shed as much light on the unknowns as possible. These unknowns will almost always be of a technical nature that in most cases are due to unknowns about the following:
- Integrations with third-parties
- Existing codebase
- Working with new technologies
You want to get in front of these unknowns by engaging engineering early on in the product development process while you’re working on figuring out the product requirements. By opening up a line of communication early, engineering can start conducting research tasks into possible unknowns and risks before the requirements are fully fleshed out and before the build process officially starts. This will remove a lot of uncertainty once the engineering team moves into the implementation phase.
Here are two project management strategies for making unknowns known as early as possible:
Spike: Timeboxed research tasks
A spike refers to a time-boxed research activity that helps teams make better decisions & deliver better products. Timeboxing is a time management technique used in Scrum and Agile project management, where specific tasks are allocated fixed and realistic deadlines. Timeboxing ensures efficient use of time to complete tasks within defined periods based on the complexity of the task.
Using the timebox strategy, engineer can create timeboxed tasks on their sprint board to investigate and research possible technical solutions.
For example, let’s imagine your product calls for integrating with a third party video editor. There are many options on the market. Before deciding on which video editor to use, research needs to be done to figure out which video editor fulfills all the requirements, is technically feasible, the effort required for implementation, possible risks, and general pros and cons of each option.
Prototyping is a highly effective way to get in front of risks and unknowns early on. With prototyping, engineers come up with a possible technical solution to a requirement → write out the unknowns and concerns about the solution → implement a skeleton version of the solution.
The idea behind prototyping is not to implement the entire technical solution—just enough to answer the outlined concerns. In the process of prototyping engineers also identify possible risks, giving them an opportunity to get in front of them early.
Prototyping should ultimately reveal whether the tested technical solution is a winner or we need to go with another solution.
Manage stakeholder expectations by setting realistic expectations
The very nature of building software is unpredictable. Having hard deadlines for building software is in itself risky.
Ideally building software will take as long as it takes. But try telling senior management that!
Unfortunately, senior managers often lack experience in software development or are so far removed from the development process that they’re unable to fully appreciate the unpredictable nature of technical implementation. This only makes it far more important that you manage expectations early and often throughout the product process.
Always over-estimate based on the number of unknowns
There’s always going to be a level of guessing when estimating project size and timelines, but there is some method to the madness.
Typically, you want to start by breaking up the project into subtasks, estimate how long each one will take, and then add up the...
Got a question? Ask me anything & I'll cover it in an upcoming issue!
This month's Tech Term you should know:
A blockchain is a type of database and is popular for powering cryptocurrencies like Bitcoin. Like all other databases, blockchain is just another way to store data where information is entered and stored–the difference is how the data is structured and accessed.
Blockchain is used to store crypto transactions in a "ledger" format. You can visualize it as an accounting ledger containing bookkeeping entries. Each transaction is represented as a "block" that gets added to the "chain", hence "blockchain".
A blockchain is a distributed database where information is decentralized and immutable.
Here's what that all means:
- Distributed: Multiple copies of a transaction are saved on many machines (nodes), and they must all match for it to be valid.
- Decentralized: Distributing the same record on multiple machines means you can't alter any single record on any one machine. The data is thus decentralized and isn't controlled by a single entity.
- Immutable: Decentralized data means once data is recorded onto the blockchain, it cannot be changed.
Hot Twitter Takes 👀
Here's what I'd want my PM to do:
(1) Be assertive (not aggressive) & push: Attend standups and ask for statuses on tasks
(2) Focus on what you can control: Can reqs be updated for faster build & doesn't degrade experience?
(3) Get hands-on: What can you take off the devs plate to save time?
RIP to this beautiful bird 😢. You were a legend 🙏
I need your help! How can I improve this newsletter?
I put in a lot of time and effort providing you with the best technical literacy content, and I need your help. Tell me how I can improve this newsletter.
Want to feel more confident in your technical skills?
Missed the mid-month PM & Tech Jobs Newsletter?
Looking for a new PM role? My team and I decided to create a shorter newsletter issued twice a month with a list product role job listings from senior to entry-level roles.