This summer I turned 30 and decided to share a few things that I learned over the years as a software developer, trainer, entrepreneur. This post does not have a specific goal - it's just a set of thoughts. I had to reduce the post to just 3 thoughts, to make it readable. I am glad if you find some of them useful. More posts will follow.
When I started my career in software development, I thought that my job is to write code. Over the years, I realised that sometimes writing code is not the best solution to the problem. Often, more code means more problems. Do you remember the universal law of software development? 🤔
e = mc²
errors = (more code)²
The more code we write, the more code our team and the team after it has to maintain. More code leads to more complexity and errors. More code means not doing other things that matter. Writing well tested, clean code takes a lot of time. Writing code is inherently expensive.
Today, I don't like the term software developer. We are problem solvers. It's a completely different mindset. A paradigm shift.
The company hires you to solve problems. Generally, a for-profit company wants to make more money and reduce expenses. Our goal is to help. Instead of thinking in terms of features, think in terms of money. If bringing coffee to your colleagues makes them productive (and productivity is the bottleneck) - be the coffee mugger. It doesn't matter who is responsible for what. It doesn't matter what's in your job agreement. It doesn't matter if you are CTO.
Focusing on job titles, roles and responsibilities is distracting us from what really matters to our customers – money 💰.
Our job is to understand how the company is making money, help it make more money and reduce expenses. By thinking and acting this way, you will quickly become the most valuable asset in the company.
I also apply similar strategy to choosing skills for development. For example:
✅ Serverless - pay only for resources you consume, spend less time on capacity planning =💰💰💰
✅ TDD - shorter feedback cycle, fewer bugs =💰💰💰
✅ Soft Skills - align people so they are more productive and happy =💰💰💰
If you're struggling with what to learn next - answer a simple question:
What skills can help my company make more money and reduce expenses?
Hopefully it will make you stop learning one more JS framework.
I've spent more than 10 years in tech and believe me there is a pattern - trends come and go.
Keeping up to date with Angular, React, Vue, Riot, Ember, Knockout is fun, but it takes your life away. It takes you away from "things" that truly matter - friends, spouse, children, parents. Our life is limited. You have to make most out of your time. You have to start investing your time in things that will outlive the next hype wave.
Understanding the Lindy effect helps a lot:
The Lindy effect is a concept that the future life expectancy of a technology or an idea is proportional to their current age, so that every additional period of survival implies a longer remaining life expectancy.
Applied to books:
If a book has been in print for forty years, you can expect it to be in print for another forty years. But, and that is the main difference, if it survives another decade, then it will be expected to be in print another fifty years.
This is how I choose programming languages, tools and frameworks. The longer a technology is on the market, the better investment it is for me. New things has a high probability of dying. Let time decide which technology is worth investing. Time is your best advisor. Learn to wait.
When I was a Java developer, I was investing most of my time in learning Java and its ecosystem. Especially frameworks. I thought that the more hip frameworks I know - the better developer I am. Then I met my mentor, and he went:
– Ed, what are you doing?
– (proudly) I am reading a book on how to build Java apps using GWT
– Obviously because I am Java developer and want to keep up with trends
– What was the previous trend book you read, the one before GWT?
– Well… It's a book about Tapestry framework. Tapestry was a thing.
– Is Tapestry still a thing?
– Not really. Now GWT is a thing.
– Can you use Tapestry skills to solve current company's problems?
– Does Tapestry knowledge help understand GWT?
– Almost no, but I see some overlapping patterns.
– Yes, they are called design patterns. Can you use them to solve current problems?
– Yes. (tick!)
– Trends come and go, but they have a lot in common. Set priorities right. Invest 80% of your learning time in fundamentals and 20% in volatile things such as frameworks. Remember to give preference to things you don't know. One day you'll say thanks.
It was a life-changing advice. I threw out most of my "framework books" and started learning fundamentals. Not just fundamentals, but fundamentals I have no experience with. Things such as modularity, clean code, rules of simplicity, test-driven development, teamwork, psychology.
It was year 2008. Since then, I have worked with more than 60 teams. And I am thankful to my mentor. Because 80% of knowledge I acquired is still relevant today. It's portable across companies, teams, domains.
➡️ 🔥 The most important skill is knowing how to deal with different people. Now go and add Nonviolent Communication to your bookshelf.
I am from 🇱🇻 Latvia - fantastic country with nearly 600K people in its capital. When I left my full-time job, I didn't want to become employee again. But I barely could find a customer for consulting or training. The market is too small.
I thought that my skills are not in demand and I felt miserable. I was a high-paid employee, so I was temped by the opportunity to escape from uncertainty, return to the comfort zone and become an employee again.
But I forgot one important thing. Skilled developers are always in demand. Basically, market works for us. We can afford taking risks. If we fail (learn), we can always find a job. Maybe it won't be the dream job. But if we dream about a job, maybe we're not dreaming big enough? 🤔
So I decided to embrace uncertainty and follow the strategy explained in one of my favourite books - Anti-fragile:
The combination of aggressiveness plus paranoia - clip your downside, protect yourself from extreme harm, and let the upside, the positive Black Swans , take care of itself.
What is downside? Going bust and not being able to pay rent. So I clipped my downside by keeping good relationship with my ex-employer. And cutting expenses.
Just after that, I went for a journey full of uncertainty, hoping for a huge upside.
I started looking for customers all over the world. I studied online marketing and sales. I started public speaking. I spent ~3 months in London to build connections. I offered free consulting to find my first customers. I started a tech community. I started a conference. I started training. I even sold my nice Audi to pay for rent. 🚘😭
With trial and error, I realised that the world is big and has no borders. It's bigger and much more diverse than I could imagine. No matter what you preach, no matter what you are good at, you can always find your customer and make decent living. It just takes time, a bit of courage and being comfortable with uncertainty.
You can be a trainer, consultant, conference organiser, startup founder, spaceman, whatever. There is no excuse for not doing what you love. The world is huge and rewarding. Don't be afraid to find (and do) what you love ❤️. It's now or never. Bon Jovi knows. 🎸
I believe that we are shaped by the environment that surrounds us. I was lucky enough to have mentors, nice people to hang out with, and no-bullshit info-space (I don't watch TV, never argue on social networks and my favorite social network is Goodreads).
Remember - environment shapes who you are.
You can become whoever you want to be if you surround yourself with the right people and quality info-space. You have the power to create or find environment in which you can blossom.
When a flower doesn't bloom you fix the environment in which it grows, not the flower.
Sometimes it means acquiring new connections and cutting connections that pull your down. As Sandro Mancuso famously said at DevTernity:
You can not always change people around you, but you can change the people you choose to be around.
Sometimes it means preferring a company with an inspiring mentor over a stable, rich company.
Sometimes it means saying goodbye and doing things your own way.
Remember - our environment shapes who we are. Take responsibility over your environment. Be the great environment for others.
That's it. Now give your family a hug. ❤️