"Design and build scalable web applications quickly.This is an invaluable roadmap for meeting the rapid demand to deliver scalable applications in a startup environment. With a focus on core concepts and best practices rather than on individual languages, platforms, or technologies, Web Scalability for Startup Engineers describes how infrastructure and software architecture work together to support a scalable environment.You'll learn, step by step, how scalable systems work and how to solve common challenges. Helpful diagrams are included throughout, and real-world examples illustrate the concepts presented. Even if you have limited time and resources, you can successfully develop and deliver robust, scalable web applications with help from this practical guide. Learn the key principles of good software design required for scalable systems. Build the front-end layer to sustain the highest levels of concurrency and request rates. Design and develop web services, including REST-ful APIs. Enable a horizontally scalable data layer. Implement caching best practices. Leverage asynchronous processing, messaging, and event-driven architecture. Structure, index, and store data for optimized search. Explore other aspects of scalability, such as automation, project management, and agile teams"-- "This is an invaluable roadmap for meeting the rapid demand to deliver scalable applications in a startup environment.
I find that reading books from those genres makes me question things more, which I find is a good exercise towards becoming a better thinker and learning how to piece ideas from different areas together.
For software, has got to be "Web Scalability for Startup Engineers" because it gave me a sweeping tour of most of today's software development, and various books on compiler development as building compilers taught me how to decompose things into smaller chunks.
That said, I have realistic expectations in that becoming a software architect requires field experience with different systems, patterns, making mistakes and learning some lessons the hard way.
Nonetheless, I already started learning at least the theoretical foundations thanks to:
* Designing Data-Intensive Applications * System Design Primer * Web Scalability for Startup Engineers * System Design Interview by Alex Xu * Quastor subscription * Infoq talks, etc.
My interest is only increasing, and I try to participate as much as possible in architecture-related discussions at work with the more experienced developers.
Thanks to the learning resources, it's no longer a problem to understand the theory, but due to lack of experience, I understandably feel anxious and unconfident thinking about designing something myself.
Let me make it clear, I understand that with that little experience under the belt, you can't suddenly become a software architect after having read a book.
However, some day everyone should start. It would be really cool to find out how currently experienced software architects started their path, designed their first systems, what they would recommend to optimize and fasten the learning process.
Thanks!