Man technologist emoji
Published on

How to start a career in tech

Authors
cover picture has a background with monitors that displays some code and people are working in the computers

So you want to be a software engineer?

It's no secret that the Tech industry is on the hype. So 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 tech roles. From Product Managers to UI/UX design. You name it.

If you have no idea how to start a career as a software engineer, don't worry. A long time ago, I was in the same situation. So here are my tips for you on how to get going.

Do I need a diploma?

The answer is straightforward: no. You can become an excellent software engineer without attending college, university, etc. However, if you can, there is no harm in that.

I graduated in Software Analysis and Development (a branch of Computer Science). Was it 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 how they hire, focusing more on your skills than your diploma (if any).

After some years in this industry, I think 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.

I'd say I've learned 80% of everything I know about coding after graduating. It required effort to get something done. If you think you can learn the remaining 20% by yourself, go for it!

Prerequisites

This is a concise topic. There are NO prerequisites to start. There is one: motivation. You 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 someday started with a simple "Hello World!" string.

Whenever someone asks me how to start, I always give them the most frustrating yet valuable tip: start from the basics and understand the fundamentals. Don't attempt to code a spaceship program on your first try. It will come with practice. Start simple, and keep doing it.

Where to educate myself?

There are thousands of ways to start, with a LOT of free options out there.

If you have a tight budget, 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. In addition, you can earn certifications by completing their project 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:

  • Introduction to Programming with Python at Udacity. That's a free course, and they have paid courses called Nanodegrees. I took one there for Full Stack Web Development;
  • Udemy has a lot of good content. There are lots of cheap or free courses there. Tip: consider the course review rating to get the best one;
  • Coursera gives you access to world-class educators. You can even get a Master's Degree there! But focus on the basics for now.

Recently I've come across this tweet from Andreas Mehlsen. He created the Web Skills page, a comprehensive list of skills you can learn to code for the Web. Highly recommend you check it out!

And, as always, search engines (aka Google) are your friend. Just search "free courses in software development" or any variation of it, and you'll get something to start with.

What working in tech is really like

Do you remember those movie scenes when a hacker breaks into a CIA database, typing quickly and getting the "ACCESS GRANTED" screen?

hacker invading system

Sorry to disappoint you, it's nothing like that. In my experience, it's 50% communication and discussion with your team, users and stakeholders. About 40% planning what to do and engineering the software. The remaining 10% is the actual code writing.

We are nerds, and 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 on a project. So you got to collaborate with others to get the right thing done.

You'll battle against bugs, trying to figure out why 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 daily.

Some tips from my experience

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 worked inside a computer. I just typed some arbitrary 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 of 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 what 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 to understand even the most basic techniques.

When I joined IBM, I rushed to find a mentor. He helped me cut straight to what I had to do, helped me with my questions, and shared experiences from his career. It's valuable knowledge that you won't find easily by just googling stuff.

Keep the momentum

Whatever path you take (college, boot camp, self-taught), you must 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 vital for the learning process. Practice makes perfect. 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.

Landing a job

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, you have to apply for some junior positions (or even an internship).

Having your skills assessed by someone else is never easy. Facing many behavioural 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: to become a Software Engineer.

Create something you can show

You probably don't have a previous job experience in your Resume related to the position you are applying to. That's fine. A 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 website to an app that allows people to upload cooking recipes with a voting system. Anything that can show the interviewer you know the basics and apply them 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 refer to projects I've published there.

Job search

This is the most annoying step for me, but necessary. You can use any job platform for that, from LinkedIn to Indeed. What it's imperative is for you to know what to look for.

Avoid focusing only on the "technical requirements" when reading a job posting. They are essential, and aligning your skills with them is critical. But it would be best if you also felt 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 essential to your mental health.

Seek information about the company on sites like Glassdoor. Read experiences that others had while interviewing with them. If you cannot find the company 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.

Interview preparation

You've done your search. I applied for jobs and got some interviews. Now it's time to rehearse what you've studied and practiced.

Every company has a different interview process but shares some common patterns. I'll cover here what I've seen in the interviews I've taken part in. Of course, 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:

  • Algorithms and Data Structures: as mentioned before, these are Computer Science's fundamentals. Understanding it is essential to produce sound, performant and scalable software. You can start without it, but don't avoid it. freeCodeCamp has a great (and FREE!) course that will introduce you to algorithms and data structures, using Javascript to code the examples.

  • Systems Design: let's recall that you are possibly applying for a junior position or internship. Therefore, systems design questions are not so common but can occur depending on the company. Systems design, in a nutshell, is the process that defines all elements, modules and architecture of a system. A dummy description would be the set of rules and best practices to design a system that works. This repository has a comprehensive list of links you can use to prepare for these kinds of questions.

  • How the Web works: most of today's software is deployed and available on the Web. Understanding how the Internet works make your life easier when developing software for it. This article from Mozilla is a good starting point.

  • Testing best practices: although not very common, interviewers may ask you some questions about how to test software. Probably they won't ask you to implement it, but be ready to do so if required. Try to implement some tests in the projects you have in your portfolio. Showing you know how and when to write tests is very good during an interview. It can differentiate you from other candidates.

  • Coding in a whiteboard: let's face it, it's scary to look at a blank whiteboard with the interviewer looking at you, waiting for some solution to pop out from your mind. I've been through it. However, you'll get through it with practice and some deep breaths. Some companies are ditching these tests, but most companies I've interviewed still use whiteboard coding to evaluate your coding skills. I recommend buying and digging into the Cracking the Code Interview book. It's well organized and will give you a good grasp of what you can face during a whiteboard code challenge.

  • Company's culture: this is basic, like any other interview in any industry. Do a little research about the company you're applying to. Don't just arrive at the interview without knowing what the company's business is, who its customers are, etc. Be prepared to ask questions about the company. It's a good sign that you are interested in working with them.

Conclusion

Working as a developer is exciting! I love doing it daily. 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.