+ Free Book "The Architecture of Open Source Applications" : http://hackershelf.com/book/54/the-architecture-of-open-sour...
Ask HN: How best to learn software design principles?
11–20 of 100 posts
Re: Ask HN: How best to learn software design principles?
#12http://www.aosabook.org/en/ "Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's su…
Re: Ask HN: How best to learn software design principles?
#13http://www.aosabook.org/en/ "Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's su…
I was going to reply about experience (and code review) being the best teacher, but this is better. Critics from your peers are good, but critics from the experts are even better.
Re: Ask HN: How best to learn software design principles?
#14* Large-Scale C++ Software Design
* The Practice of Programming
* Code Complete
These are a good start but in the end it's experience. It takes a lot of practice to build a good intuition when making software design decisions.
Re: Ask HN: How best to learn software design principles?
#15Re: Ask HN: How best to learn software design principles?
#16http://cleancoders.com/ See them all. The best investment you can make into yourself.
You'll find as you watch them that the signal-to-noise ratio drops with each episode. In the last few, there's about ten minutes of useful information mixed in with about 50 minutes of cosmology lessons, tours of his house and neighbourhood, and babble amongst his various alter egos (Data, Sherlock, Spock, Minecraft guy, Ruby guy, Microsoft fanboy, and so on).
Everyone has their own threshold for how much of that they can tolerate. For me, it crossed that about five episodes ago.
Re: Ask HN: How best to learn software design principles?
#17The C2 wiki has interesting entries on software patterns and related ideas: http://c2.com/cgi/wiki?WikiPagesAboutWhatArePatterns
Stanford CS 240 has a great list of papers on system design: http://web.stanford.edu/class/cs240/
One paper that's no longer on that list, but I remember from when I took the class: End-to-end arguments in system design http://web.mit.edu/Saltzer/www/publications/endtoend/endtoen...
Re: Ask HN: How best to learn software design principles?
#18Read the AOSA book, read Design Patterns, and read something like Domain-Driven Design. Realize that no-architecture is frequently chosen due to ignorance ('pragmatism'). Know SOLID back and forth. Understand why people strive to isolate things when doing TDD. Recognize and know how to decrease coupling, and what the costs of that are. You can practice these concepts every day, and you should, if only to develop the necessary element of taste.
You'll go through a phase where you adhere to these ideas religiously, then eventually assimilate the knowledge so that it becomes almost unconscious.
Best of luck.
Re: Ask HN: How best to learn software design principles?
#19Re: Ask HN: How best to learn software design principles?
#20* The C++ Programming Language 3rd edition, Part IV of the book. * Large-Scale C++ Software Design * The Practice of Programming * Code Complete These are a good start but in the end it's experience. It takes a lot of practice to build a good intuition when making software design decisions.