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

  1. Identify and articulate constraints, especially the non-negotiables. When people say “let your imagination run wild” tread very carefully.
  2. Manage upwards by giving enough context to signal that everything will be ok.
  3. Understand how people are incentivised. Identify and be careful when these are misaligned.
  4. Map the power dynamics, both soft and hard.
  5. Help others succeed.
  6. Keep people on track. Articulate your point of view respectivly.

Team

  1. Agree on roles and responsibilities up front.
  2. Bonding in good times is like making savings that can be withdrawn in bad times.
  3. Align expectations at all levels. Vision, strategy, tactics.
  4. Dictate less. (You dick)
  5. Lead from behind. Roll up your sleeves. Put the hard work in.
  6. Raise expectations.
  7. Believe that your team know more about their speciality than you.

Process

  1. Create a backlog. One feature per item please.
  2. Features or fanciness. Manage trade offs.
  3. Building product is not a factory process. Don’t just chuck work over to the next person on the assembly line.
  4. 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.
  5. Don’t do shit just because your boss said do it, do it because it makes sense.
  6. Articulate the strategic intent, then direct the product to be in service of this intent.
  7. Build in a proper channel to capture and action feedback. Both internal and external.
  8. Have one source of truth (eg your code repo). Don’t make changes directly on the server!

Research

  1. Talk to people.
  2. 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.
  3. Look for the surprising, then say “that’s interesting, tell me more”
  4. Synthesis is about connecting the dots
  5. Seek to identify, articulate and solve the right problem.
  6. Understand the limitations and levers of the system.
  7. Look at what the competition is doing. User alternatives are also competing for the same scarce user resources (time, energy, attention and money)

Ideation

  1. Defer judgement. It’s very difficult to tell the difference between a good idea and a bad idea.
  2. Linear vs lateral. Expansive vs reductive.
  3. Quantity first, then quality later
  4. Challenge assumptions
  5. Build from first principles
  6. Success makes ideas sticky. Simple, unexpected, concrete, credible, emotional, story based

Design

  1. Don’t reinvent the wheel. Instead of figuring out a login flow, copy something famous. Spend your time on new stuff
  2. Think systems not screens. Refactor your design. Don’t be lazy. Standardise.
  3. Assume content sucks. Does this break your beautiful ui?
  4. Take a content first approach.
  5. Manage contrast to manage readability.
  6. 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.
  7. “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.
  8. If you had to ship in one week, what would you drop? Think about dropping it.
  9. Data + Opinions. Pure data is like navigating using only the rear view mirror. Pure opinion really sucks when you are wrong.
  10. Map out your key metrics. Decide how you will measure success before you design for it.

Development

  1. 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)
  2. If you are denormalising your database for speed, don’t forget migrations!
  3. If data can be accessed via a public, unprotected api or URL, please make sure it doesn’t include any personal info.
  4. Performance matters!

Web

  1. 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.
  2. Responsive as default. Mobile first media queries and progressive enhancement are your friends.

Mobile

  1. 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.
  2. 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)
  3. Notifications are hard. Use third party services.
  4. 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.
  5. Have a way for users to tell you how much your app sucks. Instabug is really cool.