How do I become a software engineer?


How do I become a software engineer?

You've heard enough about the good salaries, catered lunches, remote work, and job opportunities. Here's exactly how to become a software engineer.

According to Stack Overflow’s Annual Developer Survey in 2019 which surveyed 90,000 developers, most U.S. software engineers reported a +$100,000 salary. In addition to this fantastic pay, it’s not uncommon for tech companies to offer engineers a mix of flexible work schedules, cushy office perks, free lunches, and remote work, in addition to health and financial benefits.

You've heard all this and more and you're ready to make the leap. How do you do it?

Learn to code

The first step is to learn to code.

Before you invest a lot of money into this field, gauge your interest in software engineering with free and inexpensive online resources. Then, continue your learning using online resources, a university degree, or a coding bootcamp.

Free and inexpensive resources

Unlike most skills, you can learn programming without spending a cent. If you are disciplined enough, you can even use these resources to go from zero knowledge to a full-fledged professional.

Textbooks and programming books have always been readily available and inexpensive to learn programming. O'Reilly, the leading programming book publisher, has an online ebook subscription service that is excellent or you can purchase physical books. I've always had trouble learning from textbooks because they aren't targeted at your skill level, and they're generally dense.

So if you're like me you might learn more effectively using free online resources where you get your hands dirty immediately. Here are my top recommendations:

  1. Codecademy
  3. Khan Academy
  4. freeCodeCamp

Check out these resources in top-down order. Each will focus on different aspects of programming, from the basic concepts to building real projects.

College and Bootcamps

If you have the opportunity to go to college, a Computer Science degree will serve you well in becoming a professional software engineer.

However, all hope is not lost if this isn't possible!

You can get a high-quality programming education in multiple other ways. You can absolutely teach yourself to be a professional using free online resources like freeCodeCamp mentioned above.

If you want something more structured and faster paced with more support, you can also enroll in a coding bootcamp for relatively low-cost compared to a 4-year university. Bootcamps are an excellent way to learn programming quickly and get your first engineering job.

I enrolled in a General Assembly's coding bootcamp after dropping out of college to pursue a career in startups and software engineering. This was 5-years ago, and today I'm a successful software engineer at a big, fancy tech company. You can do it too!

Some recommendations when looking into Coding Bootcamps:

  1. Lambda School
  2. Hack Reactor
  3. General Assembly
  4. Look into bootcamps provided by local universities near you. They are often less expensive and provide part-time education, which is sometimes preferable.

If you're considering this route, I recommend reaching out the alumni and considering each one's cost structure carefully. I've heard good things about Career Karma which is a free informational service to help you decide on which program is right for you.

Build Projects

Regardless of what method you learn to code, build projects all throughout your education. Projects will challenge and apply what you've learned, and teaching yourself through building is what you will do every day as an engineer.

Building projects will allow you to recount tangible experiences, hardships, and results of your education, which will be necessary to share in your portfolio and interviews.

You can always build projects that relate to your interests. Taking an idea to a full-fledged application will be one of the most educational experiences you can have.

However, don't let analysis paralysis stop you from building. If you're looking for projects to build your knowledge, I recommend checking out the projects in freeCodeCamp's curriculum.

Build a Portfolio

Now that you have a solid foundation of programming and projects under your belt, it's time to build a portfolio on the internet for the world to see. Here's where all those projects will come in handy!

Create a highly-visual personal website that will showcase your projects, experience, and education so far.

If you're frontend-oriented (the software you write is for the user interface, UI, or user experience, UX), then the visual aspect of your website will be weighed more-so than a backend developer.

If you're more backend-oriented (the software you write is infrastructure or database-related) or your work simply doesn't relate to the UI/UX, the visual aspect of your website won't be weighed heavily. However, you should provide detailed explanations of your roles and responsibilities, challenges, and outcomes of your projects.

Be sure to provide a link to your resume and a clear way to contact you.

Find and Connect with other Engineers

Although this section follows the portfolio building, you should attempt to be networking and sharing your experience all along. It's important to connect with other engineers and people in tech.

Use to go to technology and engineering-related meetups in your area to meet other engineers. You should also utilize LinkedIn and Twitter to start connecting with and reaching out to engineers and managers doing work that you love.

Build a network and start identifying potential mentors who will provide opportunities, support, and guidance in your journey. While you build your network and reach out to professionals, you should make it clear that you're looking for your first opportunity as a junior engineer.

Particularly for your first job in tech, your job opportunities will often come from the connections you made, not the companies you apply to.

Start interviewing and get your first job!

Time for the final piece: the job hunt.

Start applying with your resume and portfolio. Email and message engineering managers at companies you like. Contact your mentors and tell them that you're actively looking for an opportunity.

When you get the interview, know that every company's interview structure is different, but it can be overcome with studying and preparing. Oftentimes you can get insight on the interview format and technical challenge by asking the company's engineers or reading the company's Glassdoor page. Regardless, remember that they want you to be the right person just as badly as you want to be the right person. It's about finding that alignment.

The first job is always the hardest to get, so don't take it personally if you get rejected. That's part of job-hunting after all!

Keep applying, building your skills, and reaching out. Lean on engineering communities like freeCodeCamp, meetups, and your mentors for help and emotional support throughout this time.

You're not alone

This community of tech and software engineering moves forward together. We welcome and support new engineers and new contributions. Continue that excitement for learning, for building.

If you choose to move forward with software engineering, I'm excited to have you along for the journey.

If you're ever feeling stuck, have questions, or simply want a friend, reach out to me anytime via Twitter. Code on, my friend!

Thanks for reading! You are my favorite person for sticking around until the end. 🍻

This blog is a constant work in progress, and I want to get better with your help! Did I miss something? Have feedback or questions on this post? Please leave a comment below or reach out to me on Twitter!

This article is from where I publish articles on software engineering and how to leverage technology to build products that people will pay you for.