I think I'm a pretty decent programmer and can write well designed libraries, applications, etc.<p>That being said, I really suck at system level architecture: how to cleanly separate a monolithic process into smaller processes that communicate with each other, how to chose the right database / message queue / proxy / caching system / asset packaging / etc. How to leverage OS level utilities like crond / upstart / etc. How to deploy / how to scale. And the worse is I don't know what I don't know. I know I'm not the only in this situation given the popularity of Heroku and co. which make a lot of those decisions for us.<p>What I would really love would be a book with case studies which would explain why a certain architectures/tools were chosen over others.<p>I'll start with a few resources I have found:<p>- http://highscalability.com/<p>- http://microservices.io/<p>- http://singlepageappbook.com/
Honestly the best way to learn is to be lucky enough to work at a company that faces scalability issues. Second best is to try to speak with engineers who work on this kind of stuff.<p>FWIW I work at such a company (Microsoft/Yammer). I've learned more in 2 months on the job than the previous year I spent reading stuff on the side. Nothing like hearing the wisdom of seasoned engineers. I'm happy to chat if you are interested.