Live data from Hacker News

Ask HN: How best to learn software design principles?

news.ycombinator.com

21–30 of 100 posts

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

#22
I think one of the most helpful classes at MIT for learning the basics of software design is 6.033. Class schedule and readings here: http://web.mit.edu/6.033/www/schedule.shtml

In particular, the papers covered topics of software design from failures (like Therac-25) to examples of successfully designed large scale systems (like Map Reduce). I'd highly recommend reading through the papers, most of which can be found via Google search.

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

#23
Learn a functional programming language. This has had the most impact on the way I think about systems by far. The biggest impact was realizing all of the time I've spent trying to master all of the OOP acronyms hasn't paid off. I've also realized that OOP might be meant for a type of programming that I don't do (video game logic? device drivers?), where as FP seems to fit great for Web applications that are just wrapping databases and spitting out HTML or JSON.

As for FP languages for a starter, I'd recommend any of Erlang/Elixir, Clojure or Scala (only for its FP features and great learning resources)

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

#24

Learn a functional programming language. This has had the most impact on the way I think about systems by far. The biggest impact was realizing all of the time I've spent trying to master all of the OOP acronyms hasn't paid off. I've also realized that OOP might be meant for a type of programming that I don't do (video game logic? device drivers?), where as FP seems to fit great for Web applications that are just wra…

Would you say that FP itself (not the thought process it generates) would benefit me in mobile application devlopment. It's mostly gaining data and then setting it.

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

#25
post #2

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

DAS is great too: http://www.destroyallsoftware.com/

Gary Bernhardt is currently working on a book:

https://twitter.com/garybernhardt/status/485978334434586625

You could do worse than learning from his book when it comes out!

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

#26

Learn a functional programming language. This has had the most impact on the way I think about systems by far. The biggest impact was realizing all of the time I've spent trying to master all of the OOP acronyms hasn't paid off. I've also realized that OOP might be meant for a type of programming that I don't do (video game logic? device drivers?), where as FP seems to fit great for Web applications that are just wra…

Would you say that FP itself (not the thought process it generates) would benefit me in mobile application devlopment. It's mostly gaining data and then setting it.

FP has been hard to realize on mobile mostly due to the limited choice of languages available.

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

#27

Learn a functional programming language. This has had the most impact on the way I think about systems by far. The biggest impact was realizing all of the time I've spent trying to master all of the OOP acronyms hasn't paid off. I've also realized that OOP might be meant for a type of programming that I don't do (video game logic? device drivers?), where as FP seems to fit great for Web applications that are just wra…

Would you say that FP itself (not the thought process it generates) would benefit me in mobile application devlopment. It's mostly gaining data and then setting it.

Intentionally or not, the thought process FP languages generates will creep its way into your programs, and then probably into the way you would write object-oriented programs.

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

#28
post #26

Earlier quoted context omitted.

Would you say that FP itself (not the thought process it generates) would benefit me in mobile application devlopment. It's mostly gaining data and then setting it.

FP has been hard to realize on mobile mostly due to the limited choice of languages available.

Yeah, I agree with this. However, I could still see a lot of merit in writing the server that the mobile application talks to in an FP language.

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

#29

Bob Nystrom's Game Programming Patterns is an engaging, informative book about design patterns that are commonly used in games but are relevant to non-game software too. http://gameprogrammingpatterns.com/

Sorry I unintentionally downvoted you when I wanted to upvote. But yeah that book is great.

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

#30
post #2

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

While I don't disagree that Bob Martin presents useful information in those videos, his presentation style is... bizarre to say the least. 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 eg…

I asked elsewhere but perhaps I asked the wrong person. Which episodes would recommend in particular for the highest bang-for-my-buck?
Post reply on HN