Ask HN: how can I learn about real-world software/system design?
for example, I routinely find myself wondering how to design something, jumping from idea to idea until I accept that I really don't know and just pick the path of least resistance. other things that regularly come up are database scheme issues, how to properly set up a test environment, proper logging/error handling practices, writing fault-tolerant network code, and more. things I never saw in coursework. I can bang out code for sure, but I know I can do better.
I've tried looking at a couple books (code complete, design patterns) but couldn't get much from them. I've tried looking at open source code, but that's missing the back-and-forth dialogue I'm looking for. assuming I don't have access to any experienced developers, what can I do at this point, save for posting non-stop questions to stack overflow?
3 comments
[ 3.7 ms ] story [ 17.8 ms ] threadI think this is a hard one without working on a big project with senior people. I struggled with this for years and still do but have gotten a little better thanks to senior developers guiding me. I think besides reading books and attending lectures or listening in on talks online, I think you need to find a problem sizable enough and build it from scratch. My work with senior guys has shown me that designing on paper and the white board is essential to tackling the problem for understanding and eventually building it. The patterns will reveal themselves as you go through this exercise if any patterns are needed at all, and I think this is something you definitely will not learn overnight but overtime by getting your hands dirty. If you have not visited this site infoq.com, please do so. It has tons of experts speaking on it. I have been able to incorporate some of what I have learned from here to the job. A quick link to how YouTube was built: http://www.youtube.com/watch?v=ZW5_eEKEC28&feature=youtu...
Really good talk with lots of jewels. Another good book for you: http://www.amazon.com/Scalable-Internet-Architectures-Theo-S...
Hope this helps.