Matias is a Software Engineer at Making Sense. He has his own blog and the following piece was originally published there (start following him!). We thought it contained some useful advice so we’re sharing it with you!
There are a lot of people out there willing to learn how to code and enter this profession. While some of them might not have the resources to do this, others might not know where to begin. Or maybe someone has already started but they are struggling to keep their head above water.
It will be easy for them to find details on programming languages or even on architectures, processes, and methodologies.
But there’s some stuff most people won’t tell you. This is where this post comes in.
I would like to think that the presentation I did some time ago helped some people out there. I have learned more things since then so I thought it might be a good idea to expand on what I said that time with what I’ve learned these last couple of years.
Please, if you find this post useful, feel free to share with whomever you think it will help!
#1 Learn English
Alright, you can skip this one if you are an English native speaker.
For all those out there that are born in a country where English is not the language people use, consider this. There’s no way you can work in this profession without communicating with other people, probably from any side of the world. Try learning English since it’s a widespread language and it’s being taught as a secondary language in a vast majority of countries.
Can’t afford a course or training program? Don’t worry. You can see your favorite series/movies without subtitles. You can try to learn the lyrics of your favorite songs. You’re a gamer? That’s it, complete that game in English. Do you have a phone? Set it up in English.
Distributed teams are pretty much the standard today so you will all need a common language to communicate. Language is another tool in your belt.
I will never forget about that guy from Brazil who showed me how to fix an issue on a game I was working on. “I’m sorry. I don’t speak Spanish” he said. “Don’t worry, I don’t know Portuguese either,” I answered. Think about it: without English, we never would have been able to communicate. That guy, a complete stranger, dedicated his Sunday morning to help me out by troubleshooting my problem. Thank you, my anonymous friend!
#2 How You Communicate is More Important than you Think
I’m not a person who talks a lot. I’m quite an introvert. I thought programming would be a profession where I would spend most of the day programming. Well… you will need to talk with teammates, customers, managers, investors, business partners and a lot of people who don’t even know what programming is. It will be part of your job if it’s not already.
Learn how to communicate properly. Be respectful, treat people nicely. Identify when to talk and when to listen. Learn to give the right level of detail. Look out for cultural differences between you and your interlocutors. What’s normal in your country might be offensive in other places.
#3 Ask For and Absorb Feedback
I have heard people taking feedback negatively more times than I wish, myself included.
If you have performance reviews, don’t get mad when someone remarks on something you can improve. Use it as the fuel you need for waking up tomorrow and being a better professional.
Code reviews? Yes, please. Take all the feedback you can have. Improve what you do every day.
Everything is nice and quiet, no reviews? Maybe it is time to ask for some feedback. Look around, ask people to tell you what they think about your work. Ask questions about how they think you participated in the last meeting or how you handled the last couple of refactorings.
Not in the mood when receiving feedback? It happens, just walk away so you can think peacefully.
When someone remarks on something you can improve, use it as the fuel you need for waking up tomorrow and being a better professional.
#4 Learn from Your Mistakes
Guess what? You will fail. All the time. There are infinite opportunities where you can do something wrong. That’s ok, but you have to do something about it. You have to learn from it.
First of all, don’t lose yourself. Take it easy, we all make mistakes. Don’t panic, clear your mind, there’s probably something you can fix.
Something went wrong in production? Do a follow-up. Do a postmortem. There’s a chance you can prevent the same mistake from happening twice.
When you fail, there is a huge chance that someone else ends up helping you out. Learn from that person. How did that person proceed? Did that person do something you couldn’t understand? Ask about it. Learn.
Observe other people. It doesn’t matter if that person knows more or less than you do. It doesn’t matter if that person does nothing related to what you do. There’s a chance you can learn something from it. Seriously, I saw people missing the opportunity to learn because they thought they knew more just because of their positions. What a waste!
#5 Don’t Marry Any Language, Framework, Library, Design Pattern, Methodology or Whatever
One of the best ways to learn is taking something new and assimilating it.
Learn a new programming language every year. You don’t need to rock at it, just try it out. If you understand the basics of programming then you have the tools to learn any language imposed by yourself or your project.
Do you know frontend technologies? Come on, try to debug that backend API that doesn’t answer what you expect. You do backend code all the time? Then help the frontend folks some day. Feel comfortable by changing your shoes frequently. It’s one of the best ways to learn.
Not all problems need the same solution. You might have a project where an SQL Server database is one of the best options out there. However, in a fairly small and offline mobile app, an embedded SQLite database could fit better.
And remember: what is hot stuff today can be the outcast tomorrow.
Bonus track: Read The Pragmatic Programmer Book
This book is really good and most of the advice in it (if not all) is valid up to this day. I did a review if you want to know more details. You can buy a copy right away.
Remember: these are the things that really helped me a lot. I wish someone would have told me about these things the first day I was a junior programmer. You might find that none or just a few of these apply to you. That’s ok. Feel free to share your own thoughts too. :)
Thanks to all the people who helped me through this journey. And I still have a long way to go.
Thank you JD for helping me A LOT with this post.