Essential Engineering Skills For Every Software Architect
Learn eight categories of engineering craft classifications that will help you grow as a software architect to develop depth in selected areas and awareness of others.
Join the DZone community and get the full member experience.Join For Free
As a software architect in today's world, expectations of essential engineering craft have increased drastically with the rise of the spectrum of technologies. Full-stack architecture knowledge, product and design thinking with customer centricity, startup mindset to do experimentation applying platform engineering, proactive production monitoring and observability applying SRE practices, and many more engineering practices are the new normal.
The breadth of Engineering Knowledge is becoming more important than the depth of technical skill in a specific area. As quoted in Harvard research, Generalists are more valuable in innovation as they are Jack of All Trades and Master of Knowledge.
At a broader level, engineering crafts can be classified into eight different categories as depicted below. You don't need to be a master of all of them, but having the depth in selected areas and awareness of others is essential as you grow as a software architect.
#1: Software Engineering and Architecture, Design Patterns
The recommended learning path to cover essentials of software engineering, architecture, and design patterns is as follows:
- Software Architecture Essentials and Documentation: Cover the guided approach for formulating software architecture by documenting Software Architecture using Viewpoints and Perspectives.
- Software Architecture Patterns: Cover the essentials by understanding Software Architecture Patterns such as Layered, Event-driven, Reactive, Message-drive, Microkernel, Microservices, Pipeline.
- Foundational Design Patterns: Cover the essentials of object-oriented design patterns: Creational, Structural, and Behavioral patterns (catalog of 22 design patterns).
- Cloud-native Design Patterns: Cover the essentials of modern design patterns such as 12-factor app principles, domain-driven design, and Cloud Design Patterns.
- Enterprise Architecture: For seasoned architects growing towards Enterprise Architecture, understanding The Open Group's TOGAF or similar frameworks like Zachman or PEAF is a must-have.
- Reference Material: Read our article on Industry Research/Reports for Architects and Standards and Guidelines for Software Architecture.
#2: Infrastructure, Cloud and DevOps, Automation
The recommended learning path to understand infrastructure, Cloud, and DevOps is as follows:
- Infrastructure (Compute, Storage, and Networking):Cover the essentials such as:
- Compute: Bare Metal, Virtualization (Hypervisor), Containers, Container Orchestration, Edge Computing, Serverless, Load Balancing, etc.
- Storage: Object Storage, File Storage (NFS, SAN), Database Storage, Storage Replication
- Networking: Basic networking (Hub, Bridge, Switch, Router, etc.), Topologies, LAN, WAN, VPN, VPC, CIDR, etc.
- Cloud Architecture: Cover the big three cloud service providers offerings covering key concepts, design principles, and architectural best practices for designing and running workloads in the Cloud:
- AWS Well-Architectured Framework with Operational Excellence, Security, Reliability, Performance Efficiency, and Cost Optimization as architecture pillars.
- Microsoft Azure Well-Architected Framework with Cost Optimization, Operational Excellence, Performance Efficiency, Reliability, and Security as architecture pillars.
- Google Cloud's Architecture Framework with Operational Excellence, Security, privacy, and compliance, Reliability, Performance, and Cost Optimization as key principles.
- Read the consolidated article on Cloud Migration or Adoption Frameworks.
- DevOps: Cover the Continuous Build and Integration lifecycle, Continuous Deployment, Differentiate between Continuous Delivery and CI/CD, etc. with the following essentials such as:
#3: Quality Engineering, Continuous Delivery
Recommended learning path to understand the nuances of quality engineering and continuous testing is:
- Continous Delivery: Understand the basics of continuous delivery for the entire lifecycle. Join CD Foundation, which is an opensource based community to share best practices related to that.
- Agile Delivery Practices: Get certified in one of the Agile frameworks such as SAFe (Scaled Agile Framework).
- Practices of Quality Engineering: Cover the basics of standard practices such as unit testing, behavior-driven testing, functional testing, sanity testing, regression testing, progression testing, mobile testing, accessibility testing, pixel testing, performance testing, and security testing.
- Continuous Testing: Cover the essentials of automation with practices, tools (such as Selenium).
- Software Quality: Read this article to cover different aspects of software quality as an architect.
#4: Production Engineering, SRE
The recommended learning path to understand the dynamics of modern production engineering practices is:
- Foundational SRE Practices: Cover the essentials of SRE Principles, Practices, and Management aspects from Google SRE knowledge book.
- Design for Production: Cover the essentials of designing your application from a production engineering perspective (Release It book) with patterns and anti-patterns.
- Modern Practices: Evolve your knowledge with modern practices such as Chaos Engineering.
#5: Platform Engineering, Research and Awareness
The recommended learning path to understand the relevance of platform engineering and research is as follows:
- Platform Engineering: Understand the new trend of the platform engineering team and applying its capabilities.
- Industry Research: Read this article to keep abreast of industry research reports by Forrester, Gartner, and others.
- Engineering Blogs: Read this article to keep yourself updated with best practices and case studies by reading blogs.
#6: Data Engineering, Machine Learning, AI
The recommended learning path to understand the broader understanding of data engineering, machine learning and artificial intelligence (AI) is as follows:
- Data Engineering: Cover enterprise architect's guidebook (by Oracle) and Big Data basics (basic understanding of Hadoop and Cloudera), Data Lake in Cloud, emerging trends like Data Platforms and Data Cloud using Snowflake or Databricks.
- AI and Machine Learning: As a broader technologist, understanding and applying AI and Machine Learning is essential. You don't need to be an expert in this field as a data scientist but more like an AI and ML consumer covering:
- Machine Learning Introduction covering basics with fundamental algorithms
- ML Algorithms (Classification, Regression, Clustering…)
#7: Observability, Monitoring, Analytics
The recommended learning path to understand the nuances of observability, monitoring and analytics is as follows:
- Application Monitoring: Cover the nuances of application and system performance monitoring.
- Observability: Extend the boundary of monitoring towards observability (logs, metrics, tracing, experience).
- Analytics: Understand the behavioral, performance, marketing, and customer analytics tools.
#8: Business Value and Customer Centricity
The recommended learning path to understand the relevance of business value and customer-centricity is as follows:
- Business Value: Understand applying business value, value stream analysis, and mapping, etc.
- Customer Centricity: Understand customer value, customer centricity, and design thinking with the digital transformation journey.
To conclude, engineering skills are not just related to technology. Holistic development goes a long way. Also, it is a continuous journey and all the above angles play a part in making the journey successful.
Published at DZone with permission of Ankur Kumar, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.