HACKER Q&A
📣 chocolateacc

Books to read to get better at designing software systems?


Recently, I built a job scheduler to distribute machine learning tasks across GPUs, and while I got the job done, I felt as if that someone more experienced would have:

1. Written something more bug free 2. Used more appropriate tools for the job (redis, etc.) 3. Made it simpler yet just as effective

I'm good enough to ship things to production, but I don't feel as if my code is simple, clean, and bug-free as people 10+ years my senior.

Of course this is expected--but I was wondering if there were books I could read to increase my abilities?


  👤 sargstuff Accepted Answer ✓
For non-management related things: "Mythical Man-Month, The: Essays on Software Engineering" by Frederick Brooks Jr.

"Code Complete" by Steve McConnell

"The Design of Design" by Fred Brooks

"Managing Humans: Biting and Humorous Tales of Software Engineering Manager" by Michael Lopp

"The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary" by Eric S. Raymond

"Assessment and Control of Software Risks" by Capers Jones

"Structure and Interpretation of Computer Programs" by G.J. Sussman et al.

"The Pragmatic Programmer" by Andy Hunt and Dave Thomas

"A Philosophy of Software Design" by Jhon Ousterhout

Amazon developer best practices series : https://www.amazon.com/dp/B09PV4J7TR



👤 Khelavaster
"A Timeless Way of Building" "Notes on the Synthesis of Form" "On the Nature of Order"

by Christopher Alexander


👤 cranberryturkey

👤 surprisetalk
Two great books on design, and are surprisingly relevant to systems architecture:

• Timeless Way of Building

• Design of Everyday Things


👤 sargstuff
Alternatively, can look at various relevant published industry standards[0][1][2].

Standards often are driven by design issues and often have other followup references related to use case(s)/scope/intent of things expected to be handled by a standard.

Less trendy, reviewing relevant past/present inventors/entrepeneurs/startups might also provide some insiteful information. ( polaroid / xerox / apple / microsoft / dec / motorola / intel / datarace / etc )

Resources describing how things came about / implimented. Discussions on implimentation of .

Looking at/into open source projects and/or relevant discussions (change log, source code, newsgroups, etc) about a given open source project(s).

Can also look ouside of field / comfort zone in trying to identify hidden 'features'[4][5][6][7][8].

Do a hobbist take on something to learn by experimenting. -- It's how the digital camera happened!

-----

[0] : https://en.wikipedia.org/wiki/List_of_technical_standard_org...

[1] : https://standards.ieee.org/initiatives/autonomous-intelligen...

[2] : https://www.nist.gov/artificial-intelligence/technical-ai-st...

[3] : https://developers.google.com/machine-learning/guides/rules-...

[4] : https://www.youtube.com/watch?v=UJelNh1VyRU

[5] : https://www.youtube.com/watch?v=lGBjS9Ax-eg

[6] : https://www.youtube.com/watch?v=yE4bmwQBHQE

[7] : https://www.youtube.com/watch?v=rqQzQHVoKl0

[8] : https://www.youtube.com/watch?v=bYeAXWtg2Co