February 20, 2020 · 9 min read
So you want to be a software engineer?
It's no secret that the Tech industry is on the hype. If you want to surf this wave, there is no better time than now! In this article I'll talk about Software Engineering, only. But be aware: there are tons of other roles in tech. From Product Managers to UI/UX design. You name it.
If you have no idea on how to start a career as a software engineer, don't worry. A long time ago I was in the same situation. Here are my tips for you on how to get going.
The answer is straightforward: no. You can become an awesome software engineer without ever going to a college, university, etc. However, if you can, there is no harm on that.
I graduated in Software Analysis and Development (a branch of Computer Science). Was it really required? In part yes, because I was living in Brazil and having a diploma would help a lot land my first job in tech there. But it was 2013. This is not true anymore.
I started as a Software Development Intern at IBM in 2015. When I was interviewed there, I was asked for a diploma. However, some years later the IBM CEO, Ginni Rometty, announced that IBM was re-evaluating the way they hire, focusing more on the skills you have rather than your diploma (if any).
After some years in this industry, my opinion is: the "formal" education can give you a more direct path of what to study. Most universities will teach you the CS fundamentals (algorithms, data structures, etc). There is a value here. You can't just ignore that. However, you can do it by yourself. It requires discipline, as anything in this life.
To be honest, I'd say 80% of everything I know about coding today I've learned after graduating. It required effort in getting something done. If you think you can learn the remaining 20% by yourself, got for it!
This is a very short topic. There are NO prerequisites to start. Actually, there is one: motivation. You just need to put yourself into it, don't be afraid.
One day you may stumble across some open source code repository and see a very intricate algorithm going on. Don't panic, whosoever wrote that code started with a simple "Hello World!" string some day.
Whenever someone asks me how to start, I always give them the most frustrating, but yet valuable tip: start from the basics and understand the fundamentals. Don't attempt to code a spaceship program in your first try. It will come with practice. Start simple, keep doing it.
There are literally thousands of ways to start. With a LOT of free options out there.
If you have a tight budget, or are just curious to learn some coding and don't know how serious you want to get, I'd recommend looking at freeCodeCamp. They are a non-profit organization with tons of free content. You can earn certifications by completing their projects paths. They cover everything from learning a specific programming language to interview preparation.
I could go on and on, but here are the links to online resources that I think are worth your time:
Recently I've come across this tweet from Andreas Mehlsen. He created the Web Skills page, which is a very comprehensive list of skills you can learn to code for the web. Highly recommend you to check it out!
And, as always, search engines (aka Google) are your friend. Just search by "free courses in software development" or any variation of it and you'll get something to start.
Do you remember those movie scenes when a hacker is breaking into CIA database, typing very fast and getting the "ACCESS GRANTED" screen?
Sorry to disappoint you, it's nothing like that. In my experience it's 50% communication and discussion with your team, users and stakeholders. 40% planning what to do and engineering the software. The remaining 10% are the actual code writing.
We are nerds, we enjoy coding for long sessions in a dark room at home. But don't be mistaken: if you need to work inside a company with more people than just yourself, you must communicate. It's very rare to work alone in a project. You got to collaborate with others in other to get the right thing done.
You'll battle against bugs, trying to figure out why the user X is facing an error while user Y is not. It's ok. The fun part is solving the problem and going home with the satisfaction of learning something new every day.
Everything in life is relative. Whatever worked for me may not work for someone else. But here are some tips that may help you avoid some mistakes and can fast forward your career.
The most basic knowledge
When I first started coding as a weekend hobby, I did not understand how my code really worked inside a computer. I just typed some random Python code in a terminal and got a basic program running. I skipped an important part: understanding how a computer works.
You can become a programmer without knowing too much about paging, or even not fully understanding what computer networking is all about. That's ok. But you must have at least the basic knowledge on those topics (and the whole computer architecture) to become a professional software engineer.
Seek a mentor
IMHO, the easiest way to learn anything is by being mentored by someone good at the thing you're trying to learn.
A good example is my experience learning how to play the violin. Without my mentors and teachers, I would have struggled a lot to understand even the most basic techniques.
When I joined IBM, I rushed to find a mentor. He helped me to cut straight to what I had to do, helped me with my questions, and shared experiences from his own career. It's valuable knowledge that you won't find easily by just googling stuff.
Keep the momentum
Whatever path you take (college, bootcamp, self-taught) it's important that you keep practicing what you learn. Don't just watch tutorials or have a class and go home to watch a movie. You need to practice what you've just learned in different contexts.
Reinforcement is key for the learning process. Practice makes perfection. So, take some time to build something with what you learned. It can be anything: from a simple to-do app to a tic-tac-toe game. Practice, practice, practice.
OK, now you know what you should learn, where to learn it and more. Once you feel comfortable with it and think you're ready to try it for real, you got to apply for some junior positions (or even an internship).
Having your skills assessed by someone else is never easy. Facing a lot of behavioral and technical questions is not as easy as eating ice-cream. But hang in there, you've been preparing for that. Every experience counts towards the end goal: become a Software Engineer.
Create something you can show
You probably don't have a previous job experience in your Resume that relates to the position you are applying to. That's fine. A very good alternative is having some projects you have worked on (alone or not) that can showcase your skills.
It can be literally anything. From your own website, to an app that allows people to upload cooking recipes with a voting system. Anything that can show to the interviewer you know the basics and have applied it in something real.
I recommend making these projects open source on Github once it's easier for people to find you from there. I've received job offers that referred to projects I've published there.
This is the most annoying step for me, but necessary. You can use any jobs platform for that. From LinkedIn to Indeed. What it's really important is for you to know what to look for.
When reading a job posting, avoid focusing only in the "technical requirements". They are important and aligning your skills with them is key. But you also need to feel connected with the company. It doesn't need to be a soul mate kind of job, but remember: the first impression matters and working in a comfortable place is important to your mental health.
Seek information about the company on sites like Glassdoor. Read experience that others had while interviewing with them. If you cannot find the company in there, try to connect with some current/past employees from the company on LinkedIn and ask them how is the day to day like there. There's a pretty good chance you'll filter your options to the best matches.
You've done your search. Applied to jobs and got some interviews. Now it's time to rehearse what you've studied and practiced.
Every single company has a different interview process, but they all share some common patterns. I'll cover here what I've seen in the interviews I've taken part. Your interview may vary, but it's up to you to ask the recruiter for details about what to expect from it.
Here are some of the things you should practice:
Working as a developer is exciting! I love doing it on a daily basis. I get tired, of course. But every day there is a new challenge, and I enjoy the dynamics of it. I hope this article gives you the basics to start and that you can find your way into Tech. It's never too late to start. Good luck and happy coding! 😄
Cover photo by Hack Capital.