Thinking Toolkit: How to Improve Your Analytical Skills
In the last months, I’ve been thinking a lot about software engineering and life. Technology meets philosophy, so to speak.
It all has started with a simple observation: When I’m in programming flow, things are easy. Everything just clicks.
But as nice as that feeling may be, my workday eventually ends, and my momentum vanishes away quickly.
Thinking becomes hard again, and life gets its grip back on me. Daily chores, nutrition, finances, private life – the whole package.
So I asked myself a question only a software engineer would ask himself: Can I apply software engineering (SE) to improve my general life? Why not leveraging my knowledge about software engineering in all areas of life?
And I did exactly that.
I started to look at life from a software engineer’s perspective by applying automation, abstraction, and pattern-thinking.
Example 1 – Finances
As a first step, I started to automate my finances. What particularly disturbed me was that different stock- and currency-prices have been scattered around several websites. Each day I visited at least 3 websites to check out the current status of Bitcoin, S&P 500, Gold & Co.
That’s why I created an online sheet that visualizes all the prices I’m currently interested in with the help of MarketWatch.
So from now on, every time I open my browser I can see the latest trends and prices in one single place. I did what software engineers do best – automating tedious work.
Example 2 – Facing Fears
Besides that, I created an individual anti-fear-method for myself. Every time I experience some form of anxiety or restlessness, I execute a clear sequence of steps to calm myself down.
From a software engineering perspective, I created a generic method (my anti-fear method) to solve recurring and similar problems (i.e. public speaking or social anxiety).
Example 3 – My Blog
My blog also wasn’t spared from the crazy mind of a software engineer. For the first time, I looked at my blog from a high-level perspective and transformed one huge project into smaller independent blocks like marketing, SEO, writing, and storytelling.
By doing this, I applied arguably the most important software principle: modularity.
Although I’m at the beginning of this SE experiment, I can honestly say that my thinking got sharper and my life became more effortless in general. And there’s still plenty of room for improvement.
But I didn’t leave it there because the next question popped into my head. Can I make this knowledge reusable for other people? Maybe even for non-programmers?
First of all, why should SE help you to think better? Why not just playing logical games or reading more books?
The short explanation: software engineering is pure analytical thinking in action.
And this kind of thinking matters in modern life. A lot. Because, essentially, your analytical thinking skills are highly related to your problem-solving skills, and thus to your overall success in life.
Whether we talk about fixing your car, brainstorming creative ideas, budgeting your finances, or organizing a meeting.
Analytical thinking is the ability to break down a big problem into smaller core components to understand their isolated behavior. Then a problem analysis can be performed on these components to find insights and optimizations.
Think of a mechanic who fixes his car:
- He disassembles the car.
- He analyzes the car components (motor, exhaust, electricity, …)
- He finds & fixes the broken component(s)
- He sets the car back together.
Asking Steve Jobs For Advice
Software engineering involves an extremely high degree of analytical thinking. Maybe it’s the most analytical field in the world. It’s for that simple reason that it can teach you a lot about analytical thinking and thinking in general.
But hey, I’m a software engineer, so I’m biased. Of course, I think SE is the best and hardest profession in the world. You don’t have to believe me – and I totally understand if you don’t.
However, if you don’t listen to me, at least hear out what Steve Jobs has to say. He once recommended:
„Everybody in this country should learn to program a computer because it teaches you how to think” – Steve Jobs
What exactly did he mean?
As you probably experienced yourself, computers are the most unforgivable things in the world. They’re mean. If you treat them wrong, they will punish you.
This is especially the case with programming. One simple bug can cost millions of dollars, no matter whether your name is Bill Gates, Elon Musk, or whatsoever.
There’s no gray truth in software engineering. It’s just black or white,0 or 1, right or wrong. This harsh reality forces software engineers to think analytically – every time, all the time.
Software Engineering Is Eating The World
If you think that software engineering is just about software, you couldn’t be more wrong.
Not only does software engineering teach you how to think, but SE knowledge itself has a lot more in common with modern life than most people can even imagine. Especially in a time where the real world and the digital world merge into one another.
A large portion of knowledge, entertainment, and opportunities exists solely on the internet. Jobs, processes, and entire areas of life are outsourced to the cloud or automated by software.
This has the result that humans and machines are getting closer and closer. Or as Elon Musk already stated, „we are already cyborgs“.
Whether this statement is exaggerated or not, this new world obviously requires a new type of skills. Some of them are automation, process-based thinking, systems-design as well as complexity-management.
If you want to compete in such a digital environment, you’d be better off learning this stuff on a very fundamental level – which basically means software engineering.
Or, in a nutshell: If you want to excel in a world run by machines, you need to be able to think like a machine.
The Best Way To Think Better
So far, we have made two important realizations about software engineering:
- Programming improves your (analytical) thinking.
- In our digital world, SE knowledge is more valuable than ever.
Now the key question is this: How to think like a software engineer without becoming one? How to download SE knowledge directly into your head without signing up for Code Academy?
The quick answer: I will teach you software principles.
The majority of programmers agree that good software is based on universal principles. They represent the essential truths of software engineering.
The interesting thing is that you don’t need to understand the underlying technologies to comprehend these basic principles. If you just learn the most important ones, you’ll have all the building blocks to improve your overall thinking.
But why principles?
The power of principles is well researched. Harrington Emerson (1853-1931), who was an American efficiency engineer and business theorist, delivers the explanation:
„As to methods there may be a million and then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble.” – Harrington Emerson
If you want to get the essence of ideas, methods, techniques, or disciplines, you need to understand the deeper-rooted principles. They will help you to cut through the clutter and will give you the flexibility to create your own solutions.
Think of principles as „bullshit“-detectors. Every time you come in contact with a new idea, method, or concept which isn’t based on solid principles, simply forget about it.
Because, as Emerson states, just following methods and techniques blindly won’t get you anywhere because you will always see the wood for the trees. You will always suffer from shiny object syndrome and fall for the latest trends, hypes, or products.
What This Guide Will Teach You
To sum up, this guide will teach you how to improve your (analytical) thinking skills by applying SE principles in your daily life – even if you have absolutely no programming skills.
After finishing this guide, you will have a solid set of universal principles that help you to analyze complex problems and create appropriate solutions – be it on your job or in your private life.
So every time you are faced with a new challenge, you can apply these principles one by one. And, I guarantee, one of these principles can always be applied in one way or the other.
Every few weeks, I will publish a new blog post that breaks down one principle in great detail, including definitions, application advice, and everyday examples.
Over time, I will create at least 7 blog posts – maybe even more. The first few blog posts will focus on problem analysis, while the last blog posts will deal with solution design.
If you want to get informed about new blog posts, subscribe on the right (or below if you’re on mobile) and I will let you know if new content gets published.
Lastly, here’s a quick preview:
The Analytical Thinking Guide
- Principle 1 – Modularization („Divide & Conquer”)
- Principle 2 – Abstraction („Don’t Repeat Yourself”)
- Principle 3 – Conway’s Law („The Power of Environment”)
- Principle 4 – Incremental Development („Make Small Changes, Often”)
- Principle 5 – KISS („Keep It Simple Stupid“)
- Principle 6 – Inversion Of Control („Don’t Call Us, We Call You“)
- Principle 7 – Open Closed Principle („Open For Extension, Closed For Modification”)