In Software Architect, veteran enterprise and solution architect Michael Bell delivers a hands-on playbook of best practices for aspiring and practicing software architects, seeking to improve their software design, integration, communication, presentation, and knowledge acquisition skills. He explores the career enablement, career planning, self-training, and self-improvement topics you’ll need to increase your ability to offer powerful and effective business and technological solutions.
In the book, you’ll learn how to help companies promote business and technological transformation by implementing modern and first-class software design, deployment, integration, and operations.
Software Architect also includes: - A modern software architect’s toolbox that includes best practices for multi-dimensional software design and integration in an enterprise quantum computing ecosystem - A breakdown of the various types of software architects, as well as useful self-assessments for aspiring and practicing professionals - Skill acquisition strategies for software architects along with strategic approaches to ace software architecture interviews
An indispensable manual for aspiring to be architects, software architects-in-training, and practicing software architects. Software Architect is an essential read for anyone hoping to improve their ability to deliver robust business and technical solutions to enterprises everywhere.
Table of Contents
Introduction xxiii
Part 1 Software Architect Capability Model 1
Chapter 1 Software Architect Capability Model 3
Software Architect Capability Model: Benefits 4
How Should Organizations Utilize the Software Architect Capability Model? 4
Why Create a Personal Software Architect Capability Model? 5
Rudimentary Guiding Principles 6
Software Architect Capability Model Creation Process 6
Requirements Drive Architecture Solutions 7
Requirements Issued by Problem and Solution Domain Entities 7
How Do the Problem and Solution Domains Collaborate? 7
Important Facts to Remember 9
Create a Software Architect Capability Model in Five Steps 9
Step 1: Provide Requirements and Specifications 10
Business Requirements 10
Technical Specifications 11
Ensure Clear Requirements 11
Step 2: Identify Software Architecture Practices 12
Establish Architecture Practices 12
Step 3: Establish Software Architecture Disciplines 13
Apply Architecture Disciplines to Architecture Practices 14
Applying Disciplines to the Application Architecture Practice 14
Applying Disciplines for the Data Architecture Practice 16
Step 4: Add Software Architecture Deliverables 17
About Software Architecture Deliverables 17
Add the Deliverables Section 18
Step 5: Quantify Skill Competencies 21
Quantifying Architecture Skills 22
Measuring the Application Architect Skill Levels 22
Measuring Data Architect Skill Levels 24
Skill Competency Patterns for Architects 25
How Can Organizations Utilize the Skill Competency Pattern? 26
How an Individual Can Utilize the Skill Competency Pattern 27
Interview Questions 28
Part 2 Software Architecture Career Planning 29
Chapter 2 Types of Software Architects 31
Business Needs for Technological Solutions 32
Business Needs for Software Architecture: Strategic Collaboration 32
How Does Software Architecture Respond to Business Needs? 33
Business Needs for Software Architecture: Technological Mediation 33
How Could Technological Mediation Efforts Be Utilized? 34
Business Needs for Software Architecture: Technological Implementation 34
How Does the Implementation of Software Products Meet Business Needs? 34
Organizational Leading Software Architect Levels 35
Ranking Leading Software Architects 35
Collaboration Hierarchy of Leading Software Architects 36
Level I: Enterprise Architect Responsibilities 38
Enterprise Architect Summary of Responsibilities 38
Enterprise Architect Responsibility Table 39
Level II: Solution Architect Responsibilities 40
Solution Architect Summary of Responsibilities 41
Solution Architect Responsibility Table 42
Level III: Application Architect Responsibilities 44
Application Architect Summary of Responsibilities 44
Application Architect Responsibilities Table 46
Comparing Responsibilities of Leading Software Architects 48
Types of Domain Software Architects 49
Data Architect 49
Data Architect Summary of Responsibilities 50
Data Architect Responsibilities Table 51
Cloud Architect 51
Cloud Architect Summary of Responsibilities 54
Cloud Architect Responsibilities Table 55
Security Architect 57
Security Architect Summary of Responsibilities 58
Security Architect Responsibilities Table 60
Business Architect 62
Business Architect Summary of Responsibilities 62
Business Architect Responsibilities Table 63
Collaboration Between Leading Software Architects and Domain Software Architects 65
Use Case I: Collaboration Between an Application Architect and a Data Architect 66
Application Architect and Data Architect Collaboration Table 66
Use Case II: Solution Architect and Security Architect 68
Solution Architect and Security Architect Collaboration Table 68
Use Case III: Business Architect and Enterprise Architect Collaboration 70
Business Architect and Enterprise Architect Collaboration Table 70
Chapter 3 Career Planning for Software Architects: A Winning Strategy 73
Software Architecture Career Planning Process 74
Career Planning Step 1: Conduct Self- Discovery 75
Discovery of Technological and Social Talents 75
Career Planning Self- Discovery Subjects 76
Career Planning Step 2: Pursue Research 76
Formal Education, Training, and Certification 77
Employment Opportunities and Interviews 77
Subjects of Research 77
Career Planning Step 3: Devise an Approach 78
Setting Software Architecture Career Goals 78
Setting Software Architecture Career Milestones 80
Decision- Making 81
Action Planning 82
Career Planning Step 4: Plan Career Execution 85
Use Case I: A Software Architecture Career Execution Plan with Alternative Tasks 85
Use Case II: Optimized Software Architecture Execution Plan 88
Self- Discovery Process: The Six Ws 89
The “Why” 90
The “Who” 91
The “What” 92
Self- Discovery Questions for Software Architecture Candidates 93
Self- Discovery Queries for Software Architects 93
The “Where” 94
The “When” 95
The “How” 96
“How” Self- Queries for Software Architecture Applicants 97
“How” Self- Questions for Practicing Software Architects 97
Carving a Software Architecture Career Path 98
The 4D Software Architecture Career Perspectives 99
Social- Driven Career Perspective 100
Social- Driven Career Chart 100
Carve Out a Social- Driven Career Chart 101
Social- Driven Career Path 102
Create a Social- Driven Career Path 102
Technology- Driven Career Perspective 103
Technology- Driven Career Chart 104
Create a Technology- Driven Career Chart 105
Technical- Driven Career Path 106
Develop a Technical- Driven Career Path 106
Leadership- Driven Career Perspective 107
Leadership- Driven Career Chart 108
Create a Leadership- Driven Career Chart 109
Leadership- Driven Career Path 110
Develop a Leadership- Driven Career Path 110
Strategy- Driven Career Perspective 112
Strategy- Driven Career Chart 112
Create a Strategy- Driven Career Chart 114
Strategy- Driven Career Path 114
Develop a Strategy- Driven Career Path 115
Chapter 4 Self- Assessment for Software Architects 117
Social Intelligence 118
Teamwork 118
Partnership 119
Self- consciousness 119
Communication 120
Networking 120
Soft Skills 120
Trust Building 121
Learning from Others 121
Negotiation 122
Self- presentation 122
Teleworking 123
Fellowship 123
Self- sufficiency 124
Handling Customer Relationships 124
Social Intelligence Skill Assessment 124
Software Architecture Practice 126
Software Architecture Strategy 126
Software Architecture Vision 127
Software Architecture Role 127
System Integration 128
Interoperability 128
Software Reuse 129
Distributed Architecture Model 129
Federated Architecture Model 129
Architecture Styles 130
Architecture and Design Patterns 130
Componentization 130
Software Architecture Frameworks 131
Software Development 131
Software Architecture Practice Skill Assessment 132
Leadership 133
Managing Time 134
Decision- Making 134
Problem-solving 134
Diversity, Equity, and Inclusion 135
Responsibility and Accountability 135
Hiring Preferences 136
Creative Thinking 136
Critical Thinking 136
Being Proactive 137
Establishment of Trust 137
Administrative Duties 138
Coaching and Training 138
Team Building 139
Resolving Conflicts 139
Assessment of Leadership Competencies 140
Strategy 141
Software Architecture Strategy 142
Strategic Thinking 142
Problem Identification 142
Problem-solving 143
Abstraction 143
Generalization 144
Visualization 144
Software Design Approaches 145
Simplification 145
Analytical Capabilities 145
Influencing 146
Promoting Culture 146
Strategy Execution Plan 147
Assessment of Strategic Competencies 147
Part 3 Software Architecture Toolbox 149
Chapter 5 Employing Innate Talents to Provide Potent Organizational Solutions 151
Innate Skills Promote Software Architecture Effectiveness 152
Remember: Survival, Survival, Survival 152
Consequences of Failing to Invoke Innate Talents 153
Employ Chief Innate Talents to Become an Effective Software Architect 154
The Power of Creativity 154
The Benefits of Unleashing Software Architecture Creativity 155
Unleash the Power of Software Architecture Creativity 155
The Potency of Imagination 157
The Benefits of Harnessing Imagination 158
Unleash the Power of Imagination 159
Software Design Aesthetic 162
Technical Proficiency and Aesthetic Talents Drive Software Design 162
The Chief Contribution of Design Aesthetic Talents to Software Architecture 163
Curiosity Attributes 167
The Contribution of Curiosity to Software Architecture 167
The Influencing Facets of Curiosity on Software Architecture Practices 168
Chapter 6 Software Architecture Environment Construction 173
Benefits of the Software Architecture Environment Construction Discipline 174
Must Haves: Problem Statements and Requirements 174
Never Start a Software Design Project Without Understanding the Problems 175
Never Start a Software Design Project Without Requirements 176
Software Architecture Structures 176
Micro Level: Multidimensional Structures of Software Implementations 176
Macro Level: 3D Software Architecture Environment Structure 177
Software Architecture Environment: Driven by an Uncontrolled Quantum Landscape Behavior 178
Software Architecture Environment: An Intelligent Topological Space 179
Deformation Aspects of a Multidimensional Software Architecture Environment 181
Entanglement Effects in a Software Architecture Environment 182
Software Architecture Environment Forces Drive Software Behavior 183
Probability Assessment of Software Operations and Behavior 184
Software Architecture Environment Positive and Negative Forces 184
Software Architecture Environment Gravitational Forces 185
The Impetus for Granting Software Architecture Gravitational Powers to Software Implementations 186
Software Architecture Gravitational Force Intensity 187
The Cost of Unbalanced Software Architecture Environment Gravitational Forces 187
Competing Software Architecture Environment Forces 188
Software Architecture Environment: A Survival Game Space 188
Maintaining a Pragmatic Balance Between Competing Software Architecture Forces 189
Mitigating the Competing Forces Challenge 190
Software Architecture Environment Harmonizing and Disharmonizing Forces 190
Chief Properties of Harmonizing Forces in a Software Architecture Environment 191
Chief Properties of Disharmonizing Forces in a Software Architecture Environment 193
Genetic Encoding of a Software Architecture Environment 194
Difficulties of Restructuring a Software Architecture Environment 194
Encoding a Software Architecture Environment 195
Influences on Social, Behavioral, and Business Goals 195
Software Architecture Environment Construction Life Cycle 196
Software Architecture Environment Construction Process 197
Creating a Software Architecture Environment Construction Balance Table 197
Software Architecture Environment Construction Design Activities 199
Use Case I: Software Architecture Environment Composition and Decomposition Design Activities 201
Design- Time vs. Runtime Environment Composition and Decomposition Design Activities 201
Composition and Decomposition Design Methods 202
Composition and Decomposition Process Outline 203
Use Case II: Software Architecture Environment Integration and Disintegration Design Activities 204
When to Apply Integration and Disintegration Design Activities 205
Integration and Disintegration Design Methods 205
Integration and Disintegration Process Outline 206
Use Case III: Software Architecture Environment Centralization and Decentralization Design Activities 208
When to Employ the Software Environment Centralization and Decentralization Design Activities 208
Centralization and Decentralization Design Methods 209
Software Architecture Environment Centralization and Decentralization Process Outline 210
Use Case IV: Software Architecture Environment Elasticity and Inelasticity Design Activities 211
Chapter 7 When to Employ Elasticity and Inelasticity Design Activities 212
Elasticity and Inelasticity Design Methods 213
Software Architecture Elasticity and Inelasticity Design Process Outline 214
Use Case V: Software Architecture Environment Synchronization and Desynchronization Design Activities 215
When to Employ Environment Synchronization and Desynchronization Design Activities 216
Environment Synchronization and Desynchronization Design Methods 216
Software Architecture Environment Synchronization and Desynchronization Design Process Outline 218
Construction Laws of a Software Architecture Environment 219
Best Practices for Software Architecture Environment Construction 220
Structural Construction of Software Implementations in Multidimensional Environments 223
Software Architecture Solids: Rudimentary Geometrical Design Structures 224
Atomic Solid 225
Composite Solid 227
Monolithic Solid 228
Interface Solid 229
Pipe Solid 230
Inclusive Utilization of Pipe Solids 231
Exclusive Utilization of Pipe Solids 232
Internal Utilization of Pipe Solids 233
Data Solid 234
Software Architecture Solids’ Attribute Summary 236
Software Architecture Dimensional Model 237
Software Architecture: Zero Dimension 238
Software Architecture: One Dimension 239
Software Architecture: Two Dimensions 240
What Impacts the Length and Width Dimensions of a
2D Software Structure? 241
Software Architecture: Three Dimensions 242
Volumes of 3D Software Structures 242
Increase in Software Architecture Level of Specificity in a
3D Computing World 243
Software Population Sustainability in an Architecture Environment Space: A Capacity Planning Challenge 245
Comparative Perspectives in a Software Architecture Space 246
3D Software Structures in a Software Architecture Computing Space 247
The Impetus for Establishing a 3D Software Architecture Space 247
Chief Features of Software Architecture Computing Space 249
Influences of Software Structures on Software Architecture Computing Space 250
Relative Positions in a 3D Software Architecture Computing Space 250
Coordinate Axes: Skeleton of a Software Architecture Computing Space 251
Software Architecture Computing Space Logical Coordinate System 252
Cardinal and Intercardinal Physical Directions in Software Architecture Computing Space 253
Applying Cardinal and Intercardinal Directions to Software Architecture Computing Space 254
Marrying a Logical Coordinate System with Cardinal and Intercardinal Physical Directions System 255
Leveraging the Z- Axis to Create Floors in a Software Architecture Computing Space 256
Distribution Styles of 3D Software Implementations in an Architecture Computing Space 257
Federated Distribution Style 258
Flooring Distribution Style 260
Symmetrical and Asymmetrical Distribution Styles 261
Symmetrical Distribution Style 261
Asymmetrical Distribution Style 263
Construction Life Cycle of Software Implementations 264
Software Construction Process 265
Creating a Software Construction Balance Table 265
Software Construction Design Activities 266
Use Case I: Thicken and Contract Design Activities 267
When to Apply Thicken and Contract Design Activities 268
Thicken and Contract Design Methods 269
Software Structure Thickening and Contracting Process Outline 270
Use Case II: Lengthen and Shorten Design Activities 272
When to Apply the Lengthen and Shorten Design Activities 273
Lengthen and Shorten Design Methods 273
Software Structure Lengthening and Shortening Process Outline 275
Use Case III: Layer and Delayer Design Activities 277
When to Apply Layer and Delayer Design Activities 277
Layer and Delayer Design Methods 278
Layer and Delayer Process Outline 279
Governing Laws for Software Construction in a 3D Computing World 281
Best Practices for Constructing Software Implementations 282
Part 4 Software Architecture Interview Preparations 285
Chapter 8 Preparing for a Software Architecture Interview: A Winning Strategy 287
Software Architecture Job Interview Strategy 288
Preparing a Job Interview Defense Plan 288
Preparing a Job Interview Attack Plan 289
Software Architecture Job Interview Preparation Model 290
Software Architecture Job Interview Defense Plan 291
Study and Analyze the Job Description 291
Start with Identifying the Scope of the Software Architecture Job Requirements 292
Dive Deep into the Software Architect Job Description 293
Start with Analyzing the Summary Portion of the Job Requirements 294
Create a Findings Table Version I for the Job Description 295
Next, Analyze the Responsibilities Portion of the Job Requirements 296
Then, Update the Findings Table Version II of the Job Description 296
Last, Analyze the Software Architect Skills Portion of the Job Requirements 297
Do Not Forget to Update the Findings Table of the Job Description 298
Create a Software Architect Skill Competency Model for the Job Description 299
Skill Competency Model’s Requirements and Practices 300
Skill Competency Model’s Disciplines 301
Design Discipline’s Deliverables 301
Cybersecurity Discipline Deliverables 301
Products Selection and Evaluation Discipline’s Deliverables 302
SDLC Discipline’s Deliverables 302
The Competency Part of the Skill Competency Model 303
Discover the Personal Knowledge Gap Before Attending a Job Interview 303
Assess Whether the Next Software Architecture Job Is a Strategic Career Move 304
Conduct a Software Architecture Mock Interview 305
Prepare a Software Architecture Interview Cheat Sheet 306
Prepare for Possible Software Architecture Interview Questions 307
Software Architecture Job Interview Attack Plan 308
Study the Hiring Organization’s Business 309
Start by Finding Information About the Hiring Organization 309
Chapter 9 Leveraging Business Knowledge During an Interview 311
Understand the Business Model 312
Get Familiar with the Hiring Company’s Culture 314
Conduct a Quick SWOT Analysis 315
Understand the Hiring Organization’s Technology 316
Technological Information Sources 316
Discover the Environment’s Technology Stack 318
Learn About the Development Technology Stack 319
Study the Applications 320
Identify Specific IT Projects 321
Demonstrate Enterprise Architecture Knowledge of the Hiring Organization 321
Adopt Software Architecture Lingo 323
Use Design Patterns Vocabulary 323
Use the Software Architecture Guidelines Lingo to Communicate Solutions 324
Remember Software Architecture Tools 328
Classification of Software Architecture Tools 329
Especially Prepare for Architecture Visualization Tools Questions 332
Get Familiar with Software Architecture Analysis and Evaluation Methods 333
Be Aware of Early Architecture Evaluation Methods 334
Be Aware of Late Architecture Evaluation Methods 335
Talk About Software Architecture Analysis Standards 335
An Outline for Software Architecture Job Interview Questions 337
Behavioral Questions 338
Communication 339
Interpersonal Relationships 340
Software Architecture Leadership 340
Skill Assessment Questions 341
Software Architecture Attributes Questions 342
Software Architecture LifeCycle Questions 343
Software Architecture Concepts Questions 346
Design Building Blocks Concepts 347
Employ Design Building Blocks Concepts to Depict Solutions 347
Prepare for the “How to Design” Interview Questions 348
Software Architecture Environment Concepts 349
Business Concepts 351
Consumer Concepts 352
Architecture Style, Architecture Pattern, and Design Pattern Questions 353
Architecture Patterns vs. Design Patterns 353
Understand Architecture Styles 355
Remember Contextual Hierarchy of Patterns 355
Why Interviewers Ask Architecture and Design Pattern Questions 356
Prepare for Architecture and Design Pattern Questions 357
Problem-solving and decision- making Questions 358
Embrace the Software Architecture Problem- Solving and Decision- Making Process 358
Identifying Business Problems 358
Attend to the Problem- Solving and Decision- Making Process 359
Prepare for Problem- Solving and Decision- Making Questions 360
Data- Related Questions 360
Focus on Data Aspects Related to Software Architecture 361
More Data- Related Interview Questions 361
Production Environment Questions 362
Characteristics of Software Architecture Environment Hosted in Production 363
Production Environment-Related Questions 364
Software Architecture Framework Questions 365
Focus on Array of Framework Contributions 365
Software Architecture Framework Questions 367
Index 369