Vicious Cycle of Better Opportunities
Early in your career as an intern or a junior, you are in a deadlock state.
Jobs only hire the ones that have experience, and you only get experience working in a job.
To break this deadlock, you need to say “yes”, like in the Yes Man movie, to every single opportunity that shows up for you.
When you say yes, even for a “bad opportunity”, or even to work for free or for very little money. You are allowed to prove yourself. If you deliver and exceed expectations.
The person who gave you this opportunity will surely give you more and better opportunities. You will also be referred to other people who need something similar to be solved.
This is how you build your trust.
The more people trust you, the more responsibility and more projects you will be given to you.
It is a good vicious cycle.
You can also create your opportunities. Contribute to open source. Build a side project in public. Help people in communities. Each of these will give you access to more and better opportunities.
Learn faster as a Software Engineer
After you break the deadlock, you need to keep improving and learning to reach a more Senior level.
Knowledge is not enough to become a Senior. You need real-world experience!
You need experience building products from scratch, from zero to production.
You can find this experience of building a feature/product from scratch in early-stage Startups, or companies that keep innovation. You can move and learn faster on startups because it has less bureaucracy.
You also need experience operating, monitoring, and evolving this system.
You can find this experience in early-stage startups that already have customers using in production, and are growing fast every month. You can also find this experience in big tech companies, so you can learn to scale the system to millions/billions of users.
You need a growing userbase, to force your software and product to evolve faster, making you learn faster.
Production and real users are the real feedback systems that you should plug in.
Users will tell you if your assumptions when building software were right or wrong
They will tell you if your software architecture will scale or if you gonna need to rethink it.
To gather even faster feedback you need to gather feedback from other people, your team.
Each feedback someone on your team receives will be also feedback for you.
You need to be the one taking the decisions, and watching the consequences of them over time. Thinking carefully about tradeoffs and what worked or not in production will make you a senior engineer faster.
You can learn fast from incidents, an incident happens because there was some missing process or as a consequence of a series of errors or assumptions.
When an incident happens, you test your knowledge of the system as fast as possible to be able to solve it.
This is a great opportunity to think about how to make the system more resilient and reliable to avoid this from happening again.
It is ok to “fail”, or to have an incident in production. But you need to recover fast and make sure you will never get the same incident in production
Sum up
Early on in your career, say yes to as many opportunities as you can.
These opportunities will open more opportunities if you exceed expectations.
Build your trust and reputation to be assigned to harder and bigger projects to be able to gather more and faster feedback.
Manage a team to also get their feedback as your own.
It is very hard to exceed the expectations without working pretty hard.
If you wanna outlive the existing senior people of your company, you probably gonna need to work harder and smarter than them
And this means putting in more hours.