Continuous learning isn’t optional in software engineering—it’s essential. This is my framework for enriching skills, staying current with technology, and advancing as a software architect. I share it as a practical example for others looking to build their own learning routine.
📚 Read Deeply
Books
Building a strong foundation requires deliberate study of fundamentals and modern practices.
-
Fundamentals of Software Architecture by Mark Richards & Neal Ford A comprehensive guide to architectural thinking and decision-making
-
Software Architecture: The Hard Parts by Neal Ford, Mark Richards, et al. Modern trade-off analyses for distributed architectures
Online Resources
- Martin Fowler’s Blog - Timeless patterns and practices
- Developer to Architect - Mark Richards’ architectural lessons
- Dometrain - High-quality .NET and software engineering courses
- ThoughtWorks Technology Radar - Industry trends and emerging tech
- InfoQ - Software development news and deep dives
- AWS Architecture Blog - Cloud architecture patterns
- .NET Blog - Latest from the .NET team
- .Microsoft Learning - Explore Microsoft product documentation and training
💬 Join the Conversation
Learning happens in community. Engaging with other practitioners provides perspective and accelerates growth.
- Rands Leadership Slack - Engineering leadership community
- LinkedIn - Professional network and industry discussions
- Technical conferences and meetups (virtual and in-person)
📝 Refine and Review Your Notes
Regular review reinforces learning. I maintain personal guides and notes on GitHub covering:
Practice: Review notes weekly, refine monthly. Teaching concepts to others (through writing or mentoring) deepens understanding.
🔍 Enrich Your Tech Radar
Maintain your own tech radar to track technologies and approaches worth exploring.
Research Latest News
Stay informed through regular scanning:
- ThoughtWorks Radar - Quarterly industry pulse
- InfoQ - Architecture and engineering trends
- AWS Blogs - Cloud innovation and patterns
- .NET DevBlogs - Platform updates
Validate with Proof of Concepts
After researching a technology:
- Build a small POC to understand practical implications
- Document findings and trade-offs
- Update your tech radar based on hands-on experience
- Share learnings with your team or community
🛠️ Practice with POCs and Open Source
Theory without practice is incomplete. Regular hands-on work keeps skills sharp.
- Build POCs for technologies on your radar
- Contribute to open source projects on GitHub
- Experiment with new patterns in side projects
- Automate and improve your own development workflows
Goal: Ship something every month, even if small. Consistent practice beats sporadic bursts.
🧮 Practice Data Structures & Algorithms
Keep problem-solving skills sharp with LeetCode practice:
- Weekly practice: 2-3 problems minimum
- Focus areas: System design, algorithms, optimization
- Review patterns: Common approaches for efficiency
This isn’t just for interviews—algorithmic thinking improves day-to-day architecture and code quality.
💡 Principles for Sustainable Learning
- Consistency over intensity - Small, regular effort beats marathon sessions
- Balance breadth and depth - Survey widely, dive deep selectively
- Practice in public - Share learnings through blogs, talks, or open source
- Connect the dots - Link new knowledge to existing experience
- Stay curious, stay humble - There’s always more to learn
🚀 Start Your Own Routine
Building a learning routine is personal. Start with:
- Assess your current skill gaps and career goals
- Choose 1-2 focus areas (e.g., cloud architecture, system design)
- Schedule dedicated learning time weekly
- Track progress through notes, projects, or a personal tech radar
- Iterate based on what works for you
Consistency compounds. Start small, stay committed, and refine your approach over time.