Live data from Hacker News

Ask HN: How best to learn software design principles?

news.ycombinator.com

51–60 of 100 posts

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

#51

I'm going to go out on a limb here and not recommend a book. Good architecture and design take practice . You can get that practice by working with someone who understands it (some of the better, larger open source projects might be a good way to go). Books can help to a certain degree, but you have to make a conscious effort to practice what you're reading. The best thing to do, assuming you can't get the experience…

I'm not sure it follows that a big project is necessarily an example of good design. But agree on the point that you can't just read about it. Having a qualified mentor is great; if you don't, read and practice.

Note that a lot (most?) comp sci programs don't necessarily address design principles. If you're in a software engineering track they should, but my curriculum was mostly algorithms, data structures, operating systems, and programming languages. My senior year I had one class where design and project management was really a topic.

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

#52

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 su…

https://github.com/aosabook/500lines This is a repo of smaller real world applications that are 500 lines or less in length, so as not to be overwhelming to novice / intermediate programmers.

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

#53

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 su…

https://github.com/aosabook/500lines This is a repo of smaller real world applications that are 500 lines or less in length, so as not to be overwhelming to novice / intermediate programmers.

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

#54

What they want is mainstream orthodoxy like Design Patterns, OOP, etc. You'll want to study the buzzwords, mostly. What are the major principles of OOP? What is a Decorator Pattern? What is TDD? You won't be able to infer this stuff from studying software that works well. There are specific words they want to hear. Functional programming is probably not going to help at those interviews. FP isn't used at big corporat…

Unfortunately, this is very likely the case. Do all the things the thread suggests to learn about design. Then go read the Gang of Four book to get a job.

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

#55

What they want is mainstream orthodoxy like Design Patterns, OOP, etc. You'll want to study the buzzwords, mostly. What are the major principles of OOP? What is a Decorator Pattern? What is TDD? You won't be able to infer this stuff from studying software that works well. There are specific words they want to hear. Functional programming is probably not going to help at those interviews. FP isn't used at big corporat…

Unfortunately, this is very likely the case. Do all the things the thread suggests to learn about design. Then go read the Gang of Four book to get a job.

I'd get a job first. If you are not enthusiastic about corporate programming, there are all kinds of companies with all different styles. If you look hard enough, you can find one that fits your style.

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

#56

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 su…

https://github.com/aosabook/500lines This is a repo of smaller real world applications that are 500 lines or less in length, so as not to be overwhelming to novice / intermediate programmers.

Hey, thank you!

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

#57

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 su…

I'm curious if anybody has an example of how one of the designs in this book informed one of their own designs. I love the motivation for this book in theory, but started reading it and couldn't identify any explicit benefits to my own code.

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

#58

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 su…

Awesome thanks for the link. I've seen this book / project a while back but completely forgot about it.

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

#60

Don't feel too bad; the pop culture side of programming (a lot of HN) is profoundly anti-design of any type. This is likely a reaction to perceived overdesign of years past, such as in Enterprise Java. Thus, you don't see as many articles about the topic. (I also sense a bit of nerd-indignation over the fact that this is a squishy subject and nobody's completely right). Read the AOSA book, read Design Patterns, and r…

Don't feel too bad; the pop culture side of programming (a lot of HN) is profoundly anti-design of any type.

I think that's a surprising characterization; it doesn't jive with my own perception (as subjective as that may be). I think the past decade has (rightly or wrongly) seen a reaction in our industry against enterprise-style "architecture astronauts" but that doesn't equate to being "anti-design". (I'm thinking of the emergence of Rails-like frameworks vs. the JEE stack, and then the emergence of micro-frameworks like Flask/Express/Sinatra after that.) Simple/reduced structure is a valid design choice (of course there are trade-offs that come with that, and of course they aren't always appropriate, but I don't think that means it's popular to be "anti-design").

Post reply on HN