How to become a Software Engineer without a CS degree?
By: Shailee Patel
Tags: Google, JavaScript, Bootcamp, Software Development, Careers

So you want to learn to code. Fantastic! You’ve heard the chatter about bootcamps, read about how much developers earn, and seen tech startups valued at billions of dollars. It’s the talk of the town, and you’re thinking about checking it out for yourself — maybe even considering a career change.

Now what?

In this article, I am hoping I can convey some of the lessons I have learned in this regard with some specific advice for aspiring software engineers. I’ll cover thinking about where to start from, how to pick a programming language, what is full stack development, how to learn Javascript, how to acquire an advanced skill set, how to choose a bootcamp, process of getting into a bootcamp, what I learned at the bootcamp and how to continue improving your skill set to help you find your footing in the tech space.

Where to start from?

In my case I googled the most widely used programming languages and the ones which have a good amount of resources available to learn from. At the beginning, my goal was to learn a language that was easy to pick up. After researching online and talking to friends, it came down to three options: Javascript, Python and Java (sounds similar to Javascript but is entirely different :P)

How to pick a programming language?

There’s probably a reason you’re thinking about learning to code. Maybe you want to change careers, boost your skill set, or start a personal project. What do you want to be able to do? What do you want to build? For me, it was changing careers and breaking into software engineering. I wanted to learn a language that would help me achieve my goal in the best possible way. As with any field, Software engineering also has a lot of branches you can work in and full stack development is one of the most promising areas to pursue and Javascript is the go-to language for full stack development.

What is full stack development?

In simple terms, it is a combination of front end development (what users see) and backend development (where the data lives). Javascript is versatile and can be used to develop both the pieces.

How to learn Javascript?

There are a lot of resources out there to learn javascript and that can be overwhelming. I wanted to learn in a way where I could actually see what I can build using it and so I chose to do an online web development course from Udemy. I learnt HTML5, CSS3, Javascript, built and deployed web applications. I would say, if you want to learn something quickly, you can’t have your attention scattered everywhere except where you need it. Whatever you pick, focus on it until you have a sufficient mastery of it and only then move on to something else. While it’s still true that learning more than one language or doing more than one course can teach you different ways of seeing things, and even deepen your understanding of your primary language, it is a good idea to start small and build on it.

Once I finished the course, I felt I had a good understanding of programming in Javascript and building web applications. But, coming from a non-traditional background, I knew I had to improve on my CS fundamentals, more specifically Data structures and algorithms that I learned by enrolling in another course on Udemy.

How to acquire an advanced skill set?

I got the foundation after doing these courses but there was still a long way to go to acquire the advanced skills required to work as a Software Engineer in the industry. Going forward I had two options, getting a formal degree or doing a coding bootcamp. After a lot of evaluation, I went with the option of doing a bootcamp since it felt more hands-on and accelerated at the same time.

How to choose a Bootcamp?

There are a lot of coding bootcamps out there but these are some of the things I kept in mind while choosing one:

Reputation in industry Placement of alumni in FAANG companies Course Curriculum Learning Structure

Since I am based in the San Francisco Bay Area, I chose Hack Reactor. It is one of the most reputed and the oldest bootcamps in the Bay area. Some other good bootcamp options are Full stack academy, App academy, General Assembly and HackBright.

Process of getting into Hack Reactor?

It was about a 2 month long process from the application to starting the bootcamp. The process was as follows:

Submit an application and finish a coding challenge as part of it Give a Technical Admissions Assessment If admitted, you are enrolled in a month long pre-course Successfully complete pre-course to become eligible to start the Software Engineering bootcamp

What I learned at Hack Reactor?

As part of the program, we developed production grade web applications using cutting edge tech (React, ES6, AWS, Node to name a few) in a project based learning environment, did pair programming sessions and learned to think like a software engineer.

I worked on developing three full stack projects as part of an agile team, using Trello as ticket management system where I learned how to develop features that keep the end users in mind, designed systems from scratch that handle web traffic at scale, did horizontal scaling, deployment on cloud, load balancing, API development and database optimization.

How to continue improving your skill set?

If you have the time, creating personal projects is an excellent way to practice/learn coding and get acquainted with frameworks & languages that you might want to use in the future. In addition, having personal projects on your resume can help you stand out, especially if you are just starting out and don’t have much work experience yet.⁣⁣

Here are some ideas for potential starter projects:

Personal portfolio website: I’d recommend this as the first project you definitely should do! This is a static website that you can create and deploy where you showcase your accomplishments, projects, work experience, and academics.

Chrome extensions: These are light-weight Javascript files injected into chrome. Extensions are quite easy to publish and can change your browser/site views in all sorts of cool ways.⁣

Video games: Even though there are specific languages and game engines most suitable for mainstream game development, you can write a game in almost any language. Coding a game in a new language forces you to learn the basics and functionality of a language better than a lot of other projects.⁣

Reddit bot: Reddit has a really easy API to work with. If you like browsing reddit, this could be a great choice for you.⁣

Contribute to open-source: This is often a fantastic indicator that the candidate is willing to go the extra mile, and can do teamwork in a large project. Find a decent-size open-source project for this (maybe not Linux or Python codebases, but something bigger than a toy project).

Native apps, like iPhone or Android apps

Blockchain apps

If you have a problem (however small it may be) in your life that you’d like to mitigate, think of how you could create an app, script, website, extension etc. to make it go away! Chances are that you aren’t the only one with this problem, and others would benefit from your project too.⁣

It takes time to build all the skills needed: Be a marathon runner.

There’s so much you can do with code. It takes a lot of time and effort to get up the learning curve, and you’ll likely have a lot of late nights bashing your head on the keyboard. But it’s more than worth it for the sense of accomplishment when you look at what you’ve built, and the magic of making something work. Choosing a career in software development is choosing a path of lifelong learning.