|
|
|
|
|
by shagie
1846 days ago
|
|
I'm a adherent to the idea that nothing teaches system design except experience and having to fix your own mistakes in sufficiently large systems. In most software development courses, the student is learning how to make something (and then after that is done, its thrown away for the next homework assignment). System design is often about writing the glue between different constraints - frequently through another constrained component... and then having to live with the consequences of that design for a year or more (possibly trying to fix it). Take the "I've got a relational database here with mixed transactions and record updates and a document database there that I want to reflect the current state of an object in the relational database." And so you get to figure out how to use GoldenGate ( https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/intr... ) or Postgresql to amqp ( https://livebook.manning.com/book/rabbitmq-in-depth/chapter-... ) and then write something that consumes that and writes it into CouchDB or MongoDB (which do you chose? why?) Once you've got that working... keep it working for a year or two. That's how you learn system design. |
|
So much of system doesign is understanding what your 'actual' problem is, and then thinking it through, looking for what others have done, and then bringing it together with your team knowledge.