004 Thinking Changing Scaling
Thinking; something you spend an awful lot of time doing. Whether that be about what you’re working on now, something new you need to build in the future or a particularly gnarly issue, you can’t get your head round.
So surely, having a set of tools you can use to aid your thinking is useful? Right?
One of my favourite frameworks for thinking about problems is using First Principles.
First Principles thinking boils a problem down to its purest form, the smallest potential building blocks. And uses them building blocks to build up a solution.
Imaging you are building something on AWS. For argument’s sake, you’re deploying an application to a virtual machine. You’re trying and trying but your application won’t scale.
You’ve re-written modules, optimised hot paths, you’ve done everything you possibly could.
First principles thinking boils it down to its core. Forget about your application code, the specific language or technology choice. What you need is a software system that scales to meet X demand. That’s the root of the challenge you’re solving.
Now that you know that, you can build back up. “If I was building a system that scales, I will do X”. Now you have a solution to work towards.
This article from the Farnham Street blog is not technology specific. But will walk you through the process of thinking from first principles.
Top tip, it works much better if you do things the old-fashioned way with a pen and notepad.
Change, the one and only constant in life.
The only thing you can guarantee at any point in the future is that something will have changed.
The business requirements of your system.
The features of a service you’re using.
The structure of your organisation.
Your life situation.
Change is the only constant. So effectively managing change is a pretty fundamental life skill.
Something you will do in your career in software is bringing about change. Sometimes, you’re the person causing the change and requisite stress for the rest of your organisation.
When you find yourself in that situation, how can you do it effectively? Minimising the feelings of upheaval and stress for the people your change is affecting.
In this article, Mary Lynn Manns (author of the book Fearless Change) proposes that you can use emotional connection to help with the change process.
If you connect with people on a deeper level and recognise how they are feeling, the change process will be a lot smoother. I promise 🙂
For some super practical tips, go read the article.
You are working within a certain set of scaling constraints. Whether you’re Netflix servicing millions of users, or a smaller organisation just meeting the needs of your first 100 customers.
Banging your head against the proverbial scaling wall is something you’ll inevitably do in your career.
And obviously, you’ll only realise your system can’t scale once everything is on fire.
A lesser talked about scaling issue, though, is one of architecture. How do you scale the practice of architecture across your entire organisation?
At one end of the spectrum, you have the centralised enterprise architecture team. Done badly, this leads to a team of architects sat in their ivory tower dictating decisions on the rest of the organisation.
At the other end, you shift the responsibility to the individual development teams. Let teams architect their own solutions. Which sounds magical, but then what happens when you have an architectural requirement that affects multiple teams or even the entire organisation?
Scaling architecture is difficult.
Thankfully, Andrew Harmel-Law has some suggestions for you. What’s even better, is that Andrew’s proposed process is so simple, I almost fell off my chair in surprise.
Word of warning, this one is a long read. To tempt you in, I’m going to pull a quote from the opening section:
I’ll explain how, within this alternative approach, everyone can do the architecting they need, safely and efficiently, without everything descending into chaos.
Sounds perfect! So grab a cup of your favourite hot or cold beverage and settle in for the read.