I’m thinking especially about software systems design.
The TikTok online assessment had a question about this and I had no idea how to tackle it.
Resources
For software systems design:
- Designing Data-Intensive Applications, by Martin Kleppmann
- Systems Design Newsletter
For general systems design:
- Thinking in Systems, by Donella H. Meadows
- untools, tools for systems design and decision-making
Overview
It’s tough to build robust data systems, especially the more complicated they get. APIs can abstract implementations and sets up what is basically another data system. The hallmarks of software systems are:
- Reliability: the system should work correctly (at a desired performance level) even with adversity (hardware or software faults, human error).
- Scalability: as the system grows (in many ways: data volume, traffic, or complexity), there should be reasonable ways of dealing with that growth.
- Maintainability: other people will eventually work on the system, and they should be able to work on it productively to maintain and adapt the system to new use cases.
See also
- Systems software, which are slightly different