Ask HN: How did you learn proper system design?
4 comments
Having to maintain my own software and keep adding features. I have redesigned my largest project several times, and am still not entirely satisfied.
You need to suffer.
You need to suffer.
For me personally, finding a mentor was a huge eye-opener, but that was mostly because I didn't realize that I was(and likely still am) doing it wrong.
The fact that you're self-aware and seeking out the information to further your craft bodes well :)
The fact that you're self-aware and seeking out the information to further your craft bodes well :)
Sounds like you're doing it. You are looking for a way to make yourself a better developer and this never ends. I found eventually, that no one every really knew a good design. It seems like we always invented that along the way. Yeah, we all knew patterns etc, and were bound to certain ways of doing things, but somehow we seemed to always get lucky on most designs. It quite possibly may have been that the problems solved themselves eventually. And after we saw the code we wrote we looked at it made it better on the last few days creating, in most cases, an elegant design. The designs were more apparent after the project was done which were never consistent from project to project.
One way to learn good software design is to look at other peoples code who are good at what they do. For me those people are John Resig, Douglas Crockford, etc.
One way to learn good software design is to look at other peoples code who are good at what they do. For me those people are John Resig, Douglas Crockford, etc.
Working on large projects where you experience the consequences of bad judgment calls made years earlier, and trying to figure out how things could have gone better.
Probably the nastiest way to learn, but still the best.
Probably the nastiest way to learn, but still the best.
Question could probably be: How did you go from goto and general pasta to well designed beautiful code that made people write articles in your honor?
Books? Articles? Down-and-dirty coding? Finding a mentor? Doing open-source? Slaving away as a PhD student in applied mathematics and system design?