How to become a coder
Tags: career, programming
Published: 2021-03-20 21:16:42

Lately, I've been swamped with messages asking for career advice. Members of my family, my friends, and strangers all want to switch careers or get a high-paying job with work-from-home options.

The people who generally ask me for career advice know that I did not graduate with a Computer Science degree. They've looked at my [LinkedIn](https://www.linkedin.com/in/paguinaldo/) profile and found my strong career progression in my current role. I imagine in my head they're thinking: "Okay, so if she was able to do it. Then maybe I can too." 

<img src="https://media.tenor.com/images/c1da7e2520ff1b83b5bb27527094b4f9/tenor.gif" />

And you are right! It just takes a bit of grind, some leg work, and taking calculated risks. 


## How I got started

My journey started about three years ago. I somehow weaved my way into programming while trying to customize my Wordpress website for my artisan soap side hustle. To be honest with you, my knowledge of HTML and CSS at that time were things I've from the MySpace era and [concepts](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee) I've learned back in 4th grade while reading through my cousin's high school programming book.

Anyway, I dropped out of my masters program and began teaching myself how to code while still working a full time job 40 hours a week at an outpatient clinic. At that time, I was trying to figure out how I can quit my full time job at the clinic as fast as possible without having to run out of money or go hungry.

So I started by googling stuff like:
* "Coding careers"
* "How do I become a software engineer?" 
* "How to quit my job really fast and become a developer?" 

Much of the resources out there for a fast career transition into programming boiled down to two essential questions:
1. What kind of engineer do you want to be?
2. What are you willing to sacrifice to get to where you want to be?


## What kind of engineer do you want to be?
Most people at the starting point think of coders or programmers as "hackers". You know the sort: heads down, hoods up, 10x whiz kids. I myself didn't know the difference between a hacker, a software developer/engineer, and a programmer. So I made it a point to read through articles that explained the differences. ( Article [1](https://danielmiessler.com/study/programmer_hacker_developer/#:~:text=A%20Hacker%20is%20someone%20who,together%20to%20make%20it%20work.&text=The%20term%20software%20engineer%20is%20mostly%20synonymous%20with%20developer) | [2](https://medium.com/javascript-scene/software-roles-and-titles-e3f0b69c410c))

<img src="https://danielmiessler.com/images/DeveloperHackerProgrammer-e1464829544285.png.webp" />

It turns out that there are many other roles in the software or technology space rather than just coder or a developer. For example, there are entry level jobs like Quality Assurance (QA) Engineers, Data Analysts, and UI/UX Designers. There are also other career paths like Dev Ops, Engineering Management, Security, Product, and Artificial Intelligence. 

Anyway, the research led me to review a list of available jobs in the tech space. For each role, I took note of the starting position and the [opportunities of growth](https://www.ongig.com/job-titles#/) for that position. I also noted the salary I wanted and the kind of life style I wanted for the next 30 years. Then I made my top 3 career choices: 
1. Software Engineer / Developer
2. UI / UX Designer
3. Data Scientist

## How to choose the best role that fits me
I wanted a job where I was away from customer service and had a good career progression. I imagined my day consisting of working on something tangible and having the ability to deliver a product at the end of the day. I didn't want to get pigeonholed into one career for almost five years like how I was at my previous company. 

<img src="https://f7y4w3i9.stackpathcdn.com/wp-content/uploads/2020/04/pigeons-arent-real-drone.png" alt="birds aren't real"/>

So I looked up "[Software Engineering Hierarchy](https://www.ongig.com/job-titles#/)". It turns out there is a lengthy ladder that I can climb up for the role "Software Developer / Engineer."

<img src="https://d2shvezvv4hf5p.cloudfront.net/wp-content/uploads/2020/03/29091750/software-developer-job-titles-hierarchy-Ongig.png" />

At this point, I answered the first question: "I want to be a software engineer." 

## What next?
Well I identified two road blocks:
1. I did not know anyone who was a software developer.
2. I didn't know any practical skills. 

What do I mean by "practical skills?" These are the basic skills that you need to learn in order to get hired for the position. Think of it this way: if you are a technician, a nurse, or a pilot, you'd first have to train specifically for that job. Programming is also a technical job that is learnable.

### Building my network
Not knowing anyone who worked as a software developer is a major disadvantage. I didn't have anyone to ask for career advice. But addressing this first roadblock is super easy! All you have to do is go on to your social media (Facebook, Instagram, LinkedIn) and reach out to your connections and see if anyone is working in the field. You can send them a message explaining your desire to break into the field and ask them a couple of questions. I started by asking the Sisters in my sorority if anyone was a developer. Then, I reached out to each one personally and booked a time for informational interviews. 

Note: Keep in mind that being prepared for these meetings is key to getting the most out of your interactions. I came prepared with my list of questions!
1. What’s your coding story? How did you get started?
2. What is your job title and what are your responsibilities?
3. If you don't mind me asking, how much do you earn? Is that a competitive salary for your role in your area?
4. What is your company’s stack?
5. How is your day like in the office? Or what is your workflow like?
6. Is your company [Agile](https://www.atlassian.com/agile)?
7. Is your company team oriented? What is the culture and the dynamic like?
8. What task makes up the majority of your time?
9. What dev tools do you like to use?
10. Do you have any advice for me?

I interviewed about 5 people, three of which were women! One of them went through bootcamp while the other two graduated college with a computer science degree.

At this point, I now had 5 people in my network who I can reach out to. I was able to expand my network! But most of them were not in the Boston area. So I had to try and build my network in Boston, MA where I plan to get my first career in software development.

The next logical thing to do is to start attending meetups. I searched for the earliest Tech meetups in my area on [Meetup.com](https://www.meetup.com/) or [Eventbrite](https://www.eventbrite.com/d/ma--boston/events/). Luckily, there were plenty of free intro classes hosted by bootcamps like Thinkful or General Assembly. But there were also events hosted by organizations like [Women Who Code Boston](https://www.womenwhocode.com/boston) or [Google Developer Meetup Cambridge](https://www.meetup.com/GDG-Cambridge-MA/).

It was very easy for me to network pre-Covid. Nowadays, it's hard for people to build those organic relationships since most events are now virtual over Zoom. The important thing here is to start building your engineering network! Keep networking because good connections is key to finding good job opportunities.

### Sacrifice something to fast track your goal
Okay so at this point, we answered the first question, 
"What kind of engineer do you want to be?" Now to the next question:
What are you willing to sacrifice to get to where you want to be?

<img src="https://i.gifer.com/F0DT.gif" alt="sacrifice" />

"How can I get practical experience super fast?" I asked my support group (Google Search Engine) whether I should go back to school and get a Computer Science degree, go to bootcamp, or self-learn. I figured that going back to school for a CompSci degree was not feasible. I was already buried neck deep into debt from my undergraduate degree, loans from dropping out of my masters program, and the credit card interest rates just to keep up my day-to-day expenses. So I had to make a calculated risk. 

If I tried to self-learn, it will surely be the cheapest option, but it's also the most inefficient and slowest way to go. I wasn't close enough with anyone who can teach me the skills to become a developer. I had no idea where I would start. So the best option was enrolling in a software engineering bootcamp. 

<img src="https://media3.giphy.com/media/xULW8JVxArl4AE9xWU/200.gif" alt="sign my soul to bootcamp" />

### Bootcamp
Bootcamp is NOT for everyone. You can still learn the stuff that you learn from bootcamp through Udemy or open-source courses. It just takes a lot of discipline to self-motivate, pace yourself, and be self-accountable. Also, enrolling at bootcamp is NOT cheap. But I was not willing to sacrifice any more of my time in self-learning. I wanted to switch careers fast. So, I took a calculated risk by getting an income share agreement in order to pay for my training. 

At the time, I had no other financial choice open except for an ISA (which is a terrible deal). In addition, I ended up talking to my manager at the time about reducing my hours because I was trying to switch careers. I reduced my hours from 40 to 26 - 30 hours per week. I worked only the weekends and some weekdays. While I was fully enrolled at bootcamp logging 60-80 hours a week on learning for the next 6 months. I really do not recommend quitting your day job until you have another job lined up!

<img src="https://miro.medium.com/max/1000/1*jhpCmRoeQFnHbo1jAgs_Kw.gif" />

What I valued most at bootcamp was the ability to work 1:1 with developers. I cherished the times I would meet with my mentors and asked to pair program whenever possible. I learned a year's worth of self-studying material in a span of 6 months at bootcamp. They were all things that helped me get started in the tech space. Such as:
1. The history of computers, internet, and websites
2. Imposter Syndrome
3. Command Line Interface (CLI)
4. Git and Version Control
5. HTML & CSS
6. JavaScript
7. Object Oriented Programming
8. Data Structures and Algorithms
9. How to pair program and work in Agile teams
10. How to do well in white board interviews

Although I learned a lot, bootcamp cannot replace 4 years of computer science. But it taught me what I needed to know to get an entry level job. Anyway after 6 months of hard work and a lot of sleep-deprived nights, I was able to graduate bootcamp and land a sweet job as a Quality Assurance Engineer! A year after that, I transitioned to full stack development.

<img src="https://i.pinimg.com/originals/88/dc/6f/88dc6f10faff36878581024c210e3834.gif" />

----
## FAQ
1. Is coding is something you have done before? 
Yes. I used to `<marquee> my way </marquee>` in life prior to my journey 3 years ago. If you are referring to running scripts to make your computer do certain tasks or feature development then also yes. I am a developer at heart.

2. What is the first language that you learned?
Before I learned any programming languages, I read up on the basics of websites and computers. I watched videos on Youtube about the brief history of websites and computers. Then, I started learning HTML, CSS, and manipulating the computer using the Command Line Interface (CLI). These are the very basic prep work you need to know before you can start learning about web development. 
The next thing I did was learn JavaScript through drills and feature development. After that, I learned frameworks like React, Redux, Node.js, REST API, and so forth. I worked on learning database management systems like NoSQL and PostgreSQL, data structures and algorithms, and best practices of Object Oriented Programming. 
I tested all of my knowledge regularly in mock interviews and by building full stack applications. After all of that, I learned how to work within a team using Agile best practices. Once I was confident in all of that, I learned Python for fun!
3. What tech stack should I learn first?
Honestly, it'll depend on the tech stack that is popular in your area. It's important that you look at job descriptions for your intended role and figure out what kinds of requirements they are asking for in the job description. For example, at [Reggora](https://www.reggora.com/careers/?jobId=5969f076-5c13-4041-b494-3e6c5fe3fce2) we require our Senior Full Stack Software Developers to have strong OOP and software design knowledge and experience with JavaScript frameworks like React/Redux. My advice is sort through a couple of job descriptions offered in your area and then start from there!
5. What are some books or resources you used to start my own self-learning?
You can find some really good [Udemy](https://www.udemy.com/) classes. You can also find some open-source program like the self-taught courses in CompSci offered by [Open Source Society University](https://github.com/ossu/computer-science). I recommend taking a comprehensive program that allows you to learn through practical exercises. At the end of your program you should have a couple of technical projects that you can show off on your resume. 
Anyway, I learned the MERN stack when I first started. But I have grown to like Python more so than JavaScript. Though to be honest with you, once you learn Object Oriented Programming, the language matters less. It's more of like a syntax preference. If you are looking to start somewhere, I recommend learning JavaScript first with React Hooks and a NoSQL database like MongoDB.
6. Do you have any other insights?
Yep! If you are just looking to switch careers without going through such intensive training you might consider applying for a QA Engineer position. Though the transition from QA to Software Engineer is a bit hard, it's a good starting point if you are starting from scratch and no Comp Sci major. The second advice is to find mentors or peers who are also learning how to code. Trust me you will be stumped at some places and it is helpful to have someone to bounce off from. Word of caution though, much of your success will depend on you. This road is a tough one but it is also very rewarding!