In July I had the opportunity to give a talk at Event Loop about how to be a good programmer. This post is a summary of the topics I covered in that talk.
First of all, I want to say that we’re in an incredible industry that provides a ton of opportunities, regardless of who you are, where you come from, whether you have a degree or you’re self-taught. All you need is an internet connection and the drive to make it happen.
Many companies today actually pay you to learn, because finding talent is really hard. So many choose to find people who are passionate and train them. But the industry moves really fast, so we face the challenge of never stopping learning and always continuing to grow.
So the right questions are: how do I become part of this industry? And how do I grow fast enough?
How to land a good opportunity
The easiest thing would be to think that graduating from a university, showing a degree, and waiting for the companies that are actually worth working at to hire you is enough. The bad news is that it doesn’t work that way. The good news is that you can make it happen with a little effort.
When hiring someone without experience, what people look for is that you enjoy programming, that you have a real interest in solving problems and building things.
So how do you show that you’re into it and that you’re the person who deserves an opportunity?
The advice you’ll get most places is to have a portfolio, and that’s a good option because at the end of the day, a portfolio is a way to show that you’ve built things. But I don’t think that’s enough on its own.
Some things I’ve definitely seen work:
- Attend events, or if you can, even help with organizing them.
- Participate in Slack channels/chats of companies you like.
- Do related things like building projects, writing a blog, starting a YouTube channel, and being consistent about it.
These things have something in common: they give you visibility. They help you get known by others — people who are already doing what you want to do. At some point, one of them will help you get an opportunity.
Be patient. An opportunity might come quickly or it might take a while — just don’t stop trying. In my personal case, it took over 6 months of doing things without earning a single penny before someone decided to give me a chance.
Don’t stop trying. If you love this, you can do it.
Getting started
Once a company notices you and gives you an opportunity, you’ll come in as a trainee or junior. You’ll usually have someone to guide you, but it’s still your responsibility alone to grow and prove how much you’re worth.
Something very normal when you’re starting out is feeling afraid — for lots of reasons. Because you feel like you’re not going to make it, because you feel like you’re working with people who already know a ton and you don’t (impostor syndrome).
My advice is: don’t focus on your fear, focus on learning every day, because wherever you focus is where all your energy will go.
Some of the main things you should learn at this stage:
- Fall in love with solving problems — that’s really our job
- Don’t just learn to use tools — learn to understand the problems
- Don’t memorize everything — Googling things is part of the job
- Learn to break big problems into small ones
- Learn to read code
- Don’t binge-watch courses like they’re Netflix series — pause between courses and apply what you learned
- When you feel stuck, take a break. Go do something else, sleep, or even procrastinate — it’s actually a great idea
- Sleep well. Staying up all night won’t make you better
- Let others see your code and accept their feedback
- Understand what your learning style is. We all do it differently. The course that helped me the most with this is “Learning How to Learn”
Be clear about where you want to go, understand what you need to get there, and work on it.
Growing is a lot about soft skills — don’t forget that
Once you reach a certain level of confidence in your work and can solve increasingly complex problems, the next challenge is finding a way to keep growing without stagnating.
But before that, at this point there are other things you should also learn and/or keep in mind:
- The code you write is meant to be read by others. Code that’s easy to understand is good code
- Learn to be a team player. Products that impact society are created by teams
- Don’t work alone. Surround yourself with people who are really good
- Be a good person. That’s the most important thing
- Don’t switch companies every two months. The real learning happens when products grow
- Be humble. Accept feedback and try to learn from others
- Do things that aren’t programming. Have hobbies. Find things you want to do
- Learn new things. Take courses where you know nothing and you’re the biggest beginner
- Learn to negotiate. Getting others to do what you’re looking for is complex, but that’s how you achieve what you want
- Learn about other areas: marketing, sales, design, etc.
- Read open source project code and try to contribute, even with simple things
Okay, now — how to keep growing
The approach I’ve found that works for me to keep constantly learning and growing is based on three steps:
- Decide what you want to learn and study it.
- Build something with what you learned.
- Teach what you just learned.
Why does this method work?
Because it doesn’t rely on learning in just one way. Let me explain: most of the time we only do step one and that’s enough for us. Maybe if we need to do something, we’ll go to step two and certain things will become clearer. But the third step is essential.
The most powerful way to know if you really understand something is to try to teach it. Because to teach something, you have to organize what you know about it, give it structure, research it, and share it with other people in a way that they can learn it too.
Doing this consistently will make you learn and grow a ton. Don’t stop growing.