12 Lessons I Learned Working As An Architect You Can Also Apply In Software Development
14th Oct 2022
Photo by Henry & Co.
People often use building architecture as a metaphor for describing software.
But what are the similarities between building a physical construction and building a web application?
In this article I describe 12 lessons I learned working as an architect at Proctor & Matthews, and how you can apply them in web development to become a unique software engineer.
1. Design comes first
To solve a problem, architects sketch.
Drawing on paper helps you frame the question. When the question is clear, you come up with potential ideas. Software developers, on the other hand, often skip this step and jump straight into coding.
Diagram your ideas on paper to make software more tangible.
2. Plan for maintenance
Architects figure out strategies to keep a building in shape over time.
How are you going to clean fixed windows, how do you access the roof? These questions are asked right at the beginning of the planning stage. Using a similar approach in software can help locate potential incidents and give your customers a seamless user experience.
When working on a feature, think about what to do if something goes wrong.
3. Great things take time
Procedures in architecture are not exactly quick.
Planning consents take months - if not years. Construction sites are slow and sometimes are paused for lack of funds or lack of labour. In the blazing fast software world, it is refreshing to slow down sometimes and don’t take everything for granted.
When using an external library, take the time to appreciate its contributors.
4. Details create your signature
In a building, people remember the small things.
Architects' studios are usually known for their craft - like creative facade compositions or unique material combinations. Drawing technical details sometimes takes more time than completing the planning stage. In software, on the other hand, technical solutions are often borrowed from other people, thanks to the open-source community.
Although this transparency is a great resource, invest into building something in-house if it’s unique to your company.
5. Iteration is the key to progress
Life is a dance you enjoy in the moment, with faith in the next step.
Architects' studios often collaborate with consultants, with back and forth drawings and comments. This allows both parties to solve incongruences and refine the project every time a new revision is made. In software, the same approach should be used between the stakeholders, UX and development team, to ensure no one will go too far in the wrong direction.
Seeking feedback is an act of strength and shows you believe in teamwork.
6. Productivity comes from volume
Aiming to produce 100 bad ideas is better than aiming to produce the winning one.
In an architectural studio there is no difference between inspired and uninspired days - every day is spent generating sketches and variations. It is this volume that eventually exposes the best ideas - often sparked by seemingly stupid propositions. In the same way, you should try multiple approaches to solve a problem before deciding you are stuck and need help.
Focus on maximising output to let the natural creative flow do the work.
7. There is not only one right solution
Coming from a degree in engineering, I thought I had to find the perfect solution.
During my first months in an architectural studio, I struggled validating my own ideas as I couldn’t logically evaluate them. Apart from special cases, architecture taught me there are instead multiple solutions to a given problem. This is true also in software, where your great idea is likely to survive just for a few months.
Detach your ego from the code you write.
8. Accessibility is a first-class citizen
When designing a floor plan, accessibility defines the edge cases.
The minimum circulation distance defines the size of the bedroom, the minimum room height defines the height of the building. Striving to create inclusive spaces drives the architect's creativity and effectiveness. In the same way, you should study web design accessibility guidelines to create creative constraints for building an inclusive web application.
Understanding the semantic difference between a link and a button is a good place to start.
9. History knowledge sharpens judgement
Knowing what happened up to now gives you an edge.
In an architecture studio, design sessions usually start with a historical and vernacular site research. This information is the key for generating the first ideas. In software, in the same way, knowing where a certain pattern comes from helps you make trade-offs and structural decisions.
When learning a new language, find out what problem it solved in the first place.
10. Passion for your craft transcends the job
Being an architect means more than just designing a building.
It is creating spaces that make people feel safe, open and part of the community. It’s an act that spans across multiple disciplines, like history, psychology and sociology. In the same way, creating great software is more than writing code and releasing features.
Ask yourself why and for who you do what you do.
11. The more experienced the more high level
The lead architect creates the narrative, the young intern executes it.
When I started working in architecture I didn’t have much technical knowledge or practical experience, so I was hooked on learning all the details. The more I grew in the company, the more I focused on the big picture, which led me to more structural and coordinating responsibilities. In software, in the same way, grasping the fundamentals of a language or a pattern gives you freedom to take on more important decisions.
Working every day on the same specific coding task will slow down your learning.
12. Mastering the tools makes you resourceful
A great architect knows every single technique to visualise spaces - for themselves and for others.
To be great at what you do, you need to understand it first and then communicate it to other people, either colleagues or clients. Managing the tools of the craft should become second nature to you, so they don’t get in the way of what you are trying to accomplish. In software, to communicate clearly, you should know the ins and outs of tools like version control, text editors and flow diagrams.
Become proficient in the basics of the tools you use everyday.
The internet has become a parallel world to the one we live in.
Make it a quality place.