Live data from Hacker News

Ask HN: How best to learn software design principles?

news.ycombinator.com

1–10 of 100 posts

Ask HN: How best to learn software design principles?

#1
Recently I had several rounds of interviews with one of the big tech companies, and while they said my problem solving and coding skills were good, they said they eventually decided to reject me due to my inadequate solutions to design problems, particularly software design.

In the long term, I'm sure the usual advice of reading through great open source code is the way to go. In the short term, where can I find write-ups of software design, going from 'How would you build a spreadsheet program?' to actual UML designs, discussion of design patterns, etc.

Re: Ask HN: How best to learn software design principles?

#3
post #2

http://cleancoders.com/ See them all. The best investment you can make into yourself.

I hate to sound stingy but at $445 is there a cheaper alternative? Like a book, or maybe shorter series?

What videos would prioritize over the others?

Re: Ask HN: How best to learn software design principles?

#4
Dive into design patterns. Get yourself a good book listing them. The bible of all developers is the Gang Of Four (http://www.amazon.com/Design-Patterns-Elements-Reusable-Obje...), but there are plenty good ones out there that aren't as dry and academic.

Design patterns are the greatest tool there is for learning software design. If you know them, you can apply them, but much more importantly they show you how you can apply the basic principles of OO development to various problems. By learning them, you're learning the thought process of how they came to be, and you'll be able to apply those thought processes to your own problems. Consider it like learning algebra by doing exercises. You can read theory all you like, but unless you apply it it just won't click.

Re: Ask HN: How best to learn software design principles?

#6
post #2

http://cleancoders.com/ See them all. The best investment you can make into yourself.

I hate to sound stingy but at $445 is there a cheaper alternative? Like a book, or maybe shorter series? What videos would prioritize over the others?

Well $445 is nothing in contrast to what you can make if all this knowledge is put into effect. I would definitely recommend SOLID principles above others.

Re: Ask HN: How best to learn software design principles?

#9
post #6

Earlier quoted context omitted.

I hate to sound stingy but at $445 is there a cheaper alternative? Like a book, or maybe shorter series? What videos would prioritize over the others?

Well $445 is nothing in contrast to what you can make if all this knowledge is put into effect. I would definitely recommend SOLID principles above others.

I say that because currently $445 represents 12 weeks of food for myself.

Re: Ask HN: How best to learn software design principles?

#10
http://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 successes.

"Our goal is to change that. In these two books, the authors of four dozen open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to these books provide unique insights into how they think.

"If you are a junior developer, and want to learn how your more experienced colleagues think, these books are the place to start. If you are an intermediate or senior developer, and want to see how your peers have solved hard design problems, these books can help you too."

edit: a major advantage to aosa is that all the source is available.

Post reply on HN