Random Product Pro Tips
An on going list of some things I’ve learnt, in no particular order, after working in the product space these last five years.
Stakeholders
- Identify and articulate constraints, especially the non-negotiables. When people say “let your imagination run wild” tread very carefully.
- Manage upwards by giving enough context to signal that everything will be ok.
- Understand how people are incentivised. Identify and be careful when these are misaligned.
- Map the power dynamics, both soft and hard.
- Help others succeed.
- Keep people on track. Articulate your point of view respectivly.
Team
- Agree on roles and responsibilities up front.
- Bonding in good times is like making savings that can be withdrawn in bad times.
- Align expectations at all levels. Vision, strategy, tactics.
- Dictate less. (You dick)
- Lead from behind. Roll up your sleeves. Put the hard work in.
- Raise expectations.
- Believe that your team know more about their speciality than you.
Process
- Create a backlog. One feature per item please.
- Features or fanciness. Manage trade offs.
- Building product is not a factory process. Don’t just chuck work over to the next person on the assembly line.
- Agile is better. Not because it lets you change your mind, but your entire workflow should be in service of something you can put in front of users more often.
- Don’t do shit just because your boss said do it, do it because it makes sense.
- Articulate the strategic intent, then direct the product to be in service of this intent.
- Build in a proper channel to capture and action feedback. Both internal and external.
- Have one source of truth (eg your code repo). Don’t make changes directly on the server!
Research
- Talk to people.
- Build rapport by being open. Don’t judge. Make them feel safe. Show that you get it. Help people feel like they’ve been heard.
- Look for the surprising, then say “that’s interesting, tell me more”
- Synthesis is about connecting the dots
- Seek to identify, articulate and solve the right problem.
- Understand the limitations and levers of the system.
- Look at what the competition is doing. User alternatives are also competing for the same scarce user resources (time, energy, attention and money)
Ideation
- Defer judgement. It’s very difficult to tell the difference between a good idea and a bad idea.
- Linear vs lateral. Expansive vs reductive.
- Quantity first, then quality later
- Challenge assumptions
- Build from first principles
- Success makes ideas sticky. Simple, unexpected, concrete, credible, emotional, story based
Design
- Don’t reinvent the wheel. Instead of figuring out a login flow, copy something famous. Spend your time on new stuff
- Think systems not screens. Refactor your design. Don’t be lazy. Standardise.
- Assume content sucks. Does this break your beautiful ui?
- Take a content first approach.
- Manage contrast to manage readability.
- Find the insight (what do you know that other people don’t) and exploit it. The goal is to make that which is hidden obvious in hindsight.
- “Jobs to be done” is a useful framework. Find out what people are trying to do in a given context. Design your product to put this front and centre.
- If you had to ship in one week, what would you drop? Think about dropping it.
- Data + Opinions. Pure data is like navigating using only the rear view mirror. Pure opinion really sucks when you are wrong.
- Map out your key metrics. Decide how you will measure success before you design for it.
Development
- Only send enough information that the client view needs to render. AKA don’t send all user data down then filter it out for a specific user (non admin)
- If you are denormalising your database for speed, don’t forget migrations!
- If data can be accessed via a public, unprotected api or URL, please make sure it doesn’t include any personal info.
- Performance matters!
Web
- Put a load balancer in front of your app just in case. You never know when you’ll need to bring your entire server offline. Load balancer means it’s easy to direct to a temp server during downtime.
- Responsive as default. Mobile first media queries and progressive enhancement are your friends.
Mobile
- Build a way to test current apps on staging APIs (so you minimise breaking changes). Usually this means versioning your APIs and having a hidden in app developer mode.
- You can “hack” the Apple approval process by testing in parallel. Instead of test then submit. Submit, test and don’t release if there is a showstopper (always do manual releases as you can’t pull a version from the store)
- Notifications are hard. Use third party services.
- Seperate your content from your product. This means that you should never have to rebuild an app if you want to serve new content to your users.
- Have a way for users to tell you how much your app sucks. Instabug is really cool.