Logo

dev-resources.site

for different kinds of informations.

Thoughts on Software Architecture

Published at
4/18/2019
Categories
software
architecture
architect
leadership
Author
ramsey
Author
6 person written this
ramsey
open
Thoughts on Software Architecture

I originally posted this as a thread on Twitter in response to a recent #DevDiscuss topic. I'm reposting here to preserve these thoughts and for others to easily refer to it.

Software architecture concerns itself with how the software is built, including high-level design and technical standards, as well as coding standards, tools, platforms, etc.1

A software architect is a software developer who has become an expert in these things through extensive experience practicing them and learning from others.

A software architect (as a role) is a leader in the organization, helping the team turn a problem domain into software. They are able to grasp the concepts of the domain and communicate how to represent them in code. Additionally, they work with the team to set standards and develop practices that will ensure the quality of the software created and the long-term maintainability of the code. They balance purity with pragmatism, considering the business goals and priorities—and they articulate the risk to the business when sacrificing quality/purity for accelerated timelines.

I believe a software architect should be a mentor, using their experience to teach others how to create the best software they can. This involves in-depth code reviews and pair programming, among other teaching techniques. Good software architects are humble and patient. They don’t berate or belittle their team for not yet grasping concepts that they see clearly. Instead, they use these moments as teaching opportunities.

Many see coding as formulaic as algebra equations. Software developers are natural problem-solvers, often seeing a code solution based on a formula before fully understanding the problem. Software architecture is different. There is no formula for it. There are recurring patterns seen across problem domains, and Martin Fowler has cataloged many, but his book Patterns of Enterprise Application Architecture cannot be treated as a formula by filling in the blanks and generating the code. It doesn’t work that way.

Learning to design software from an architectural perspective is an exercise in grokking2 the problem, taking a Zen-like approach to perceiving its true nature. To do this, you must exercise restraint so you don’t cloud your mind with thoughts of the solution before you fully understand the problem.

architect Article's
30 articles in total
Favicon
Top Architect and Structural Engineer for Custom Designs
Favicon
Similarities of a startup and museum of art. The role of an architect.
Favicon
Exploring the Intersection of CAD Designing and Artificial Intelligence
Favicon
Enhancing Negotiation and Presentation Skills for Enterprise Architects
Favicon
Software Architect
Favicon
The Power of Practicality: How Hands-On Coding Enhances Architectural Decision-Making
Favicon
Making the leap to AWS with Architect
Favicon
Interview with Solutions Architect
Favicon
Que es ser Arquitecto de soluciones y por que certificarse como AWS Solutions Architect?
Favicon
Introduction to Enterprise Architecture (EA)
Favicon
Tales from the Real World - Architecting the Transformation
Favicon
Creating successful high-level software solutions
Favicon
Microsoft Azure Architect Technologies AZ 303 Introduction
Favicon
A First Look at Architect
Favicon
AWS IAM User
Favicon
Serverless dependency management in OpenJS Architect
Favicon
Serverless OAuth com Múltiplos Provedores
Favicon
AZ-303 Azure Architect Technologies - Introduction
Favicon
AZ-303 Azure Active Directory [Module 1]
Favicon
Serverless GitHub OAuth with OpenJS Architect and Begin - Part 2
Favicon
Strangler except serverless with OpenJS Architect
Favicon
Express style API with OpenJS Architect
Favicon
Using Tailwind with Begin.com and Architect
Favicon
Connect an Architect App to a Cloudflare Domain
Favicon
Top 10 takeaways from "How to become an aspiring architect" meetup
Favicon
AWS Solutions Architect Associate
Favicon
SNS vs SQS? AWS Messaging Services - Know the difference
Favicon
How not to architect your project? 
Favicon
Thoughts on Software Architecture
Favicon
5 things I wish I knew before using CloudFormation to build a CodePipeline for Lambda Functions

Featured ones: