My product management toolkit (50): Systems Design

  • Design for simplicity — Whilst you might need to future-proof your system, don’t try to cater for every single edge case or scenario that might occur in the future. Reduce complexity as much as possible.
  • High risk items first — Work on high-risk items first in order to reduce risk. Because of their risky nature, these items are the most likely to change, causing change in other parts of the system as a result.
  • Design for scale and ‘evolvability‘ — There’s a fine balance to strike between reducing complexity and designing for scale. A system will evolve, especially as the environment that it’s part of scales. For example, when designing a system you can distinguish between elements that are likely to remain stable and those that will change, and put extra effort into designing interfaces for those elements that are likely to change.
  • Group data and behaviour — If you’re designing a software system, it’s important to group together data and the behaviour or log that operates on it. This is to ensure that when the data changes, the behaviour changes accordingly and vice versa.
  • Design the interfaces — Especially when there are a lot of different subsystems, it’s important to have interfaces in place. An interface will help to make the flow of information between different systems (or parts of a single system) feel more accessible an intuitive.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store


Product at Intercom, author of "My Product Management Toolkit" and “Managing Product = Managing Tension” — see