11 steps to becoming a software engineer (without a CS degree)

| Get awesome (and free) stuff here


Despite popular myths, you can become a software developer without a college degree.

Whether you’re re-entering the workforce or stuck in a career you dislike (administration, operations, banking, etc.), transitioning into a career as a software developer is within your grasp. As long as you’re willing to put in the hard work.

According to US News, software developers have a median salary of $95,510 per year, and an unemployment rate of 2.5%, making it one of the most lucrative technology careers. Additionally, the profession offers above-average work-life balance.

Even more, the Bureau of Labor Statistics projects that between 2014-24 there will be a 17% growth rate. Meanwhile, the average growth for all occupations is 7 percent. This translates into 186,600 job openings.

And guess what? Despite the positive outlook and abundance in opportunities, only 2.4% of college grads study computer and information science. As you can see in the image below, by 2020 there will be 1.4 million computing jobs versus the 400,000 CS students.

More jobs than CS students

You get the picture: programming skills can bring more financial security as well as flexibility in your day-to-day. But how do you get these skills, without sitting through four years of CS classes? And more importantly, how do you land one of these in-demand and highly-paid careers?

Here's the good news: it's totally possible! And I partnered with Flatiron School's Learn-Verified team to bring you this 11 step guide on how to become a software engineer without a CS degree. So read on!

Step #1: Be crystal clear about your end goal (and commit to it)

Before getting started, understand that the following steps are specific for those looking for a full-time job (I abbreviate as FTJ) as a software engineer. They’re not for the person who is:

  • Dabbling with code for the first time
  • Unsure if coding is right for them
  • Wishing to pursue web design, UX, UI, or any other design-related field
  • Wanting to freelance full-time
  • Hoping to start their own business

Transitioning into a new career is not easy. But when you have a final destination in mind, it helps tremendously when you hit bumps in the road.  A crystal-clear goal looks something like this:

  • “I want to work as a software developer at an established tech company.”
  • “I want to work at a brand new startup, as a software engineer, in the industry I adore.”
  • “I want to build things on a team, and get paid well for it.”

No matter the specifics of your dream, if you want to make it through all 11 steps, you MUST be committed to the end goal of becoming a full-time software engineer.

Step #2: Choose a language to learn

When starting out, many people get stuck deciding which language (and framework) they should learn. Ruby on Rails? Python and Django? MEAN stack? So many options, so little time.

Here’s the thing: once you know a particular language/stack well, it is not difficult to transition to a new one. That means that when you’re becoming a software engineer, what you want to focus on is understanding programming fundamentals. In essence, learning how to learn.

Once you have a solid foundation, you can easily transition to new languages, frameworks, and technologies. As co-founder of Flatiron School Avi Flombaum says, “The most important aspect of it is that you’re learning how to think like a developer.”

learn the fundamentals

All of this said, you should focus on one language/framework to start. For many, Ruby is an excellent way to go.

Ruby is readable and efficient, making it much easier to get comfortable with than some other languages. It’s also open source, so you’ll have access to plenty of tools and a community of other developers, all for free. And perhaps most importantly, it’s flexible: the language is used by plenty of companies (Airbnb, GitHub, Hulu, Kickstarter, etc.) and gives you a solid foundation to branch out into other languages later.

Former Learn-Verified student Sarah Lichter says, “As I was learning on my own and making these decisions, I had read a lot about Ruby and about it being friendly, easy to pick up as a first language, and had a great community around it, so learning Ruby seemed like a great choice.”

Step #3: Practice…and practice some more

While the stack you learn doesn’t matter a whole lot, what does matter is learning by doing. This means dedicating some real time to perfecting your new craft. You must set aside a significant amount of time every day, every week, to learning.

You can’t become a software developer after 10 hours of practice. It’s just not possible.  

Become a software developer by practicing

Some people say it takes 10,000 hours to become an expert. Now, you don’t need 10,000 hours of practice to get your first software developer job. But you do need to dedicate some serious time.

To give one example, the Flatiron School’s Full Stack Web Development Learn curriculum is about 600-800 hours total. It takes most students between four and ten months to make it through, depending how many hours they devote to the program each week.

Step #4: Use tools that real developers use

While free resources like Codecademy are great, you’re not in a real-world environment when you use them. Instead, you’re typing directly into the web browser and getting a score based on a quiz or some other kind of interactive activity.

In the real world, you’re not going to be working like this. So, what you want to do from the beginning is build how real engineers build. You want to use the tools that they use. Down the road, this will make it much easier to transition into a full-time role and join a team.

But it’s hard to build how real devs build, and use tools real devs use, when you’re first starting out. (If you’re anything like I was, it’s hard to even know where to begin.)

The good news is that there are programs out there that teach you how to use these tools—like Flatiron School’s online program, Learn-Verified.

Learn-Verified’s curriculum is built around the tools and processes real engineers use every day, like:

  • Git and GitHub
  • Working in your terminal
  • Test-driven development
  • Group projects/collaboration

This will enable you to adjust much faster once you’re in a real job, rather than having yet another steep learning curve to master.

Students at Flatiron School

Step #5: Read other people's code

Another important aspect of becoming a software engineer is learning how to read other people’s code. You can do this by browsing through GitHub repositories, and looking through documentation.

Sometimes, documentation can be wrong…but the source code never lies. By learning to read that code, you’ll be able to understand what’s going on and how a program is working. (This skill is also important when it comes to debugging, because you’ll be able to identify which piece of the code shouldn’t be there.)

This is often an overlooked skill, but it can really benefit you to see how experienced developers do things. Don’t just do a cursory skim of the code, either. Delve in deep, learn the ins and outs, map out the functionality, and finally, recreate it if you can. This way, you’ll be able to reverse-engineer an existing program, helping you understand that much better how to create one of your own.

Step #6: Find a community

Finding a community to learn with can make or break your success as a software engineer—especially when you’re just starting out. When you are surrounded by a community of like-minded people, you have an automatic support system: a group of individuals you can call on when you get stuck, or lose motivation. (Both of which can happen to the best of us!)

Find a community to learn with

In-person groups exist, but can be hard to coordinate with and are not accessible in every area. But anyone can join an online community, and they’re just as helpful.

While learning with Learn-Verified, you gain access to a Slack group. This group allows students to come together and work through lessons or topics on a video chat and private Slack channel. Students also can set up or join additional online study groups with peers. All experience levels can participate; in fact, over 40% of questions asked are answered by another student. However, there are also seasoned devs in the group to help you out, too!

Step #7: Build projects

Don’t just read tutorials and watch videos—put your skills into use. Solve problems along the way, just like everyday software developers do. When you do this, you not only further your learning, you also show potential employers that you can hack it. (Because the end-goal is to get a job, right!?)

You can build projects solo, or with a group.

By the end of Learn-Verified, you’ll have plenty of projects to show off. You’ll build 3-5 applications throughout the program, followed by a capstone project. And they’re not just boring “fill in the blanks” projects: you have the choice to build what interests you.

Plus, the way the Learn-Verified program is setup, you do everything on GitHub. This acts as a great foundation and a way to showcase what you can do to potential employers.

Step #8: Cultivate your professional network   

As you learn how to code, build projects, etc., you should be slowly but surely cultivating your professional network. Because when it comes to finding a great job, it takes more than just applying for jobs online (which, these days, can just be a waste of time).

Instead, you want to build a strong network. For starters, rely on your existing connections. According to Jobvite, 40% of new hires come via employee referral, making it the most common way.

Beyond tapping into your first-degree network, you can also get intros to your second-degree connections (friends of friends). The goal is to set up informal coffee meetings with people connected to companies you’d like to work for, which builds connections and sometimes leads to real interviews.

A few other ways to make new connections without having a mutual friend:

  • Go to meetups
  • Maintain a blog (which will give you exposure)
  • Volunteer
  • Speak at events

Get involved, and contribute to the community, and almost inevitably, opportunities will come your way.

Discussion at Flatiron School

Again, the Learn-Verified curriculum covers all of this—everything from how to network, send cold emails, maintain a coding blog, and more.

Plus, they have a job guarantee that commits them to helping YOU land a job. If you don’t get a job offer within 6 months of certification, they’ll give your money back. Basically, they put their money where their mouth is.

Step #9: Master your pre-interview essentials

After starting to build connections with peers and influencers in the field, it’ll be time to get ready applying to the jobs themselves. (However, if you make a solid connection – you may get to skip this step altogether!)

But before sending out applications or asking for direct referrals, you’ll need to master three things: resumes, cover letters, and your online presence.

Even in a modernizing world, resumes are necessary. Hiring managers still look at them to get a snapshot of your skills and experience. Similarly, cover letters are needed when applying for jobs online; they’re your opportunity to get someone’s attention and make an impression.

Those are basics across industries. But beyond resumes and cover letters, there is also your online presence to consider. This is incredibly important for anyone in the tech industry, and it’s something you should be building and maintaining over time. Your digital footprint matters because it’s what recruiters and hiring managers will see when they Google your name before inviting you in for an interview.

Your online presence, as a software developer, is made up of a few things:

  1. LinkedIn profile
  2. GitHub
  3. Twitter
  4. Personal website (or portfolio site)
  5. Blogging (which can be an addition to your personal website)

Employers will check these and form impressions of you based on what they see. So make sure those impressions are good!

Step #10: Ace your job interview

Finally, there is the interview itself. Most companies start with a screening interview, usually done online, at home. After that comes a phone interview. If you make it through those two, you’ll land the on-site interview.

In addition to the standard “greatest strength/weakness etc. etc.” questions, you’ll need to be ready for technical and behavioral questions. You may be asked to build a project or work through a code challenge, or describe how you’ve handled difficult situations in the past.

One helpful resource to consult is the book Cracking the Coding Interview.

Fortunately, when you use Learn-Verified, you won’t have to prep on your own: you’ll have access to their comprehensive careers curriculum designed to make sure you’re interview-ready. (In fact, I helped write some of it!)

Every Learn-Verified student receives a mock HR/Behavioral interview with feedback to help refine their soft skills and bring awareness to now HR professionals might perceive them. Moreover, students receive a mock technical interview with a developer.

Ultimately, the team at Flatiron School's Learn-Verified program is committed to getting you a job. (They do guarantee it!) But remember, you get what you put into it.

Step #11: Accept the job offer

Congrats—you did it!

After you make it through a series of interviews and demonstrate your new skills, it’s just a matter of time before you get an offer. And yeah, it might be entry-level at first, but you have to start somewhere! As you continue to learn and grow as a developer, you’ll continue to climb the career ladder to bigger and better positions.

All of this sounds like a lot of work, right?

Short answer: yes. It’s not easy, and I can all but guarantee that you’ll get frustrated sometimes. But it is absolutely doable. And you can probably even achieve it all on your own. Many people successfully transition into software development using hard work alone.

learning how to code

The thing is, for the majority of people, learning on your own makes everything harder, whether it’s mastering the skills or searching for jobs.

That’s why it makes sense to have help. Learn-Verified makes it possible to fast-track your career as a software engineer. Lots of places have a tried and tested curriculum—just like Learn-Verified does.

But what really differentiates Flatiron School’s Learn.co program is the job placement component. They offer students career counseling as well as a job guarantee within 6 months of completing the program—or your money back.

And the numbers don’t lie. 99% of students are placed at jobs eventually, and 95% of them are within 120 days. They earn on average over $74,000 per year for their first junior developer role.

Aside from the numbers, one of the best ways to get a feel for a program is to hear from those who have done it before. The majority of former Learn-Verified students report great experiences with the program. Here’s what a few of them have said:

  • “If you place yourself into this program with a will to succeed, then Learn Verified will give you the tools and the mentorship you need to start a future career in web development.” – Luke
  • “I have learned more in the past few months with Learn than I learned in two years of self study. This program has focused me on the right topics to study, and the right order to study them.” – Lisa
  • “I love the community and feeling of connection as we all share code and vent our frustrations and cheer each other on from all over the world. I couldn't have asked for a better experience. Flatiron School rocks!” – Marsi

If you’re interested in the Learn.co program, you can test the waters by getting an account for free here.

Alternately, you can sign up for an upcoming information session where you can meet the team, learn how the job guarantee works, and more.

The team at Learn-Verified wants all students to be hard workers, willing to put in the necessary effort to learn the material and land the jobs. You’ll need to go through an application process to prove that you’re willing and able to be their next success story!

If you have a dream of becoming a software developer and want the most direct route to achieving that goal, it’s definitely worth your while to check out Flatiron School's Learn-Verified program. While the program is rigorous, it also comes with extensive support. As long as you’re ready to put in the work, you’ll walk away from the program with the skills you need to land your first job as a software engineer.


  • Cerobi

    This is good information, but quite honestly it sounded more like and advertisement for learn verified than anything, and I winded up skimming towards the end. Disappointing.

  • Kevin

    I am going to have to agree with Cerobi on this one. For you readers out there: as a much more economical alternative, you could sign up for a Treehouse account for $25 dollars/month, including a 30 free trial. You could have a subscription for 5 months for a tenth of the cost of what’d you pay for a single month for Flatiron’s online learn program. To be fair, you wouldn’t have access to Skype sessions with mentors or a job placement guarantee, but if you have never little to no coding experience then you should absolutely dabble in some cheaper online courses before dropping thousands of dollars on a program like Flatiron. However, if you have some experience and you want to level up and start looking for a job, a program like this might be a decent option. One thing that personally really bothers me about these schools is their lack of transparency when it comes to curriculum. Many will tell you the technologies and languages you will use/learn, but don’t offer any insight on their website as to the actual projects that you will be building. For example, a Todo list app built in Ruby on Rails, is not going to knock the socks off a potential employer, but it is a great starter project to get your feet wet when learning how to code. If I were an prospective student, I would want to know exactly the projects I was going to be building before paying any amount of money. The reason I bring this up, is because Flatiron’s online program, and many others like it, do not offer insights about projects on their website, nor in the syllabus they send out when you enter your email address. Udacity’s Nanodegree is an example of program that does outline each project that a student would build, and those courses range from $300 – $500 per month. To make a long story long, the industry of learning to code is hot right now, and they are a gazillion online options and a ton of competition among them. So, for your own sake, shop around and weigh the pros and cons before making a decision.

    • Raj

      Agree. Perhaps its better to learn the basics yourself using books and cheaper options and then go to bootcamps.

    • Serenity

      The entirety of learn’s curriculum is on github. It couldn’t be any more transparent

      • Kevin

        Okay, that’s fair. I removed my original commentary.

  • Raj

    Yes, you can become a software engineer by skipping CS and going to boot camps. You’ll probably regret not learning CS when you face a situation that requires knowledge of the fundamentals. Here is an example “Node.js in flames” http://techblog.netflix.com/2014/11/nodejs-in-flames.html

    “A global array is not the ideal data structure for this use case. It’s unclear why Express.js chose not to use a constant time data structure like a map to store its handlers. Each request requires an expensive O(n) look up in the route array in order to find its route handler. Compounding matters, the array is traversed recursively. ”

    Data structures, algorithms, recursion etc. I don’t know any bootcamp which covers these basics. The best they do is data structures and algorithms. That is a very small part of CS.

    • NF

      You can still learn these things and become an expert at algorithms without bootcamps. All you need is patience, self-belief and hard work. DS&Algorithms and some elementary algorithmic analysis is all a programmer really needs from a CS curriculum. If you want to delve a little deeper, learn about different programming paradigms you are a good to go. Learning about modern software engineering practices is much more important than say, compiler construction or computation theory or even networking.

  • Tu AN Huynh Van

    I really appreciate your guide and tips, but the frequent reference to Learn-Verified program trivialized your post, turning it into a longer piece of advertisement.

    Frankly, I scrolled through the post without reading it anymore after seeing the name popping up the third time.

  • It also helps to be a resident of Mumbai or Bangalore, where a salary a sixth of a UK one provides a good
    standard of living. I have nothing against Indian nationals personally and enjoy working with them, but you cant have a serious article about UK software industry without mentioning offshoring. In the past offshore
    workers have mostly picked up the more mundane tasks, this is increasingly changing – a UK contractor might earn £400 a day at the moment – but I doubt that will be the case in 5 or 10 years.

  • Very well done. It really unraveled my long-had myth/question of “You have to be a genius to become a
    programmer”. This definitely gives me hope that I can possibly do programming. Thank you so much.

  • Marcus Tomlinson

    Good article. In fact, I just wrote a book on this very topic.

    The aim of my book is to introduce people to the world of free and open source software development as a means of acquiring new skills and gaining focused, real world work experience.

    It’s called: “How to Become an Expert Software Engineer (and Get Any Job You Want)”. Love to hear what you thought of it.

    http://amzn.com/B01A36ZI66

  • pizap 2

    Post is explained clearly so that we are able to understand it clearly.camera 360 online