3,2,1… REBOOT to Software Engineering!

Person learning to code

As a full-stack developer who took the leap into software engineering from a totally different field, I know how intimidating yet exciting it can be to reboot your career. Just four years ago, I was a high school math teacher, spending my days at the whiteboard explaining algebraic equations. But I couldn‘t shake this feeling that I was meant for something else.

I had always loved tinkering with computers and was fascinated by the apps and websites I used everyday. So on a whim, I signed up for a free intro to coding course online. From the first "Hello World!" I was hooked. I knew software engineering was what I was meant to do.

But the road from there to landing my first developer job was not easy. Learning to code is hard, especially if you don‘t have a computer science degree like me. There were many long nights staring at my laptop in total confusion, wanting to throw it out the window. Imposter syndrome was my constant companion, telling me I would never be good enough to make it in this field.

However, I was determined not to let those doubts hold me back. I quit my teaching job and dove head-first into learning full-stack development. I treated it like a full-time job, dedicating 8+ hours per day to courses, tutorials and projects.

My learning journey looked something like this:

  1. Front-end fundamentals (HTML, CSS, JavaScript) – I started with freeCodeCamp‘s Responsive Web Design and JavaScript Algorithms and Data Structures certifications. I supplemented with Codecademy courses and built practice projects to solidify concepts.

  2. Back-end basics (Node.js, Express, databases like MongoDB and SQL) – freeCodeCamp‘s Back End Development and APIs certification was a great foundation. I also took Udemy courses on Node and Express and built RESTful APIs.

  3. Full-stack frameworks (React, Angular, Vue for front-end and frameworks like Ruby on Rails for back-end) – I deepened my skills with freeCodeCamp‘s front-end libraries certification focused on React. I also learned Angular through a Coursera specialization and built full-stack CRUD apps.

  4. Computer science fundamentals (data structures, algorithms, computing concepts) – This was the most challenging as a self-taught developer. I worked through freeCodeCamp‘s coding interview prep section, took a data structures and algorithms course on Educative, and practiced problems on LeetCode.

Here‘s an example roadmap of what to learn in what order to become a full-stack developer:

Full-stack developer roadmap
(Image source: roadmap.sh)

Throughout this intense period of learning, I made sure to code every single day, even if just for 30 minutes. I publicly committed to the #100DaysOfCode challenge, which kept me accountable. I also started blogging about my learning journey and projects, which helped me digest concepts and connect with other aspiring developers.

One of the best decisions I made was getting involved in my local tech scene. I started going to meetups, hackathons, and conferences to meet professional developers, learn new skills, and get my name out there. I met some incredible mentors who gave me valuable advice and even made introductions to hiring managers.

After about a year of non-stop learning and building projects, I finally felt ready to apply for developer jobs. I tailored my resume and portfolio to highlight my most impressive projects that showed off valuable skills. I applied to hundreds of jobs, did dozens of interviews, and eventually landed an amazing opportunity as a full-stack engineer at a fast-growing startup.

That was two years ago, and since then my career as a software engineer has taken off faster than I could have imagined. I‘ve been promoted twice, lead the development of new features shipped to millions of users, and mentored new hires. I wake up excited to take on new challenges with my brilliant teammates.

But I‘m not saying any of this to brag. I just want to show you what‘s possible if you‘re willing to put in the hard work to reboot your career. Software engineering is an incredibly rewarding field with endless opportunities for growth and impact. And despite what you might think, you don‘t need to be a math whiz, computer nerd or young prodigy to make it.

The demand for software engineers is sky high and only projected to keep growing. According to the U.S. Bureau of Labor Statistics, employment of software developers is projected to grow 22% from 2020 to 2030, much faster than the average for all occupations. The median annual wage for software developers was $110,140 in May 2020.

Software developer projected job growth
(Image source: U.S. Bureau of Labor Statistics)

But beyond the numbers, being a software engineer is exciting because you get to build things that can change people‘s lives. Every industry is being transformed by technology, so the work you do can have a massive real-world impact, whether that‘s building an app that helps people manage their health, or optimizing software that reduces a company‘s carbon footprint.

As a full-stack engineer, you have the power to take an idea from just a spark in your mind all the way to a functional, deployed application. You‘re not just a cog in the machine – you‘re an architect, an inventor, a creator. Your work involves constant learning, problem-solving, and collaboration with interesting people.

Of course, this doesn‘t mean the transition into software engineering is easy. Learning to code takes serious dedication and there will be many frustrating moments along the way. Imposter syndrome is very real, and you‘ll likely battle regular bouts of self-doubt.

But remember, every expert developer was once a beginner too. The key is to focus on consistent progress, not perfection. Celebrate your small wins and learn from your mistakes. Surround yourself with supportive people who encourage you. Take care of your mental and physical health to avoid burnout.

If I could go back and give my past self who was just starting to learn to code some advice, here‘s what I would say:

  • Believe in yourself and your ability to learn and grow. Your past doesn‘t define your potential.
  • Set realistic, measurable goals and make a plan to work towards them every day. Small steps compound.
  • Focus on understanding the fundamentals, not just memorizing syntax. The languages and tools will change, but the core concepts are timeless.
  • Build lots of projects, especially ones you can put in your portfolio. Practical experience is key.
  • Document and share your learning journey. Teaching others is one of the best ways to solidify your own understanding.
  • Don‘t be afraid to ask for help. Join communities of other developers (online and in-person) and find mentors to learn from.
  • Prepare for technical interviews early. Practice data structures, algorithms, and system design questions. Do mock interviews.
  • Tailor your applications and learn to sell yourself. Highlight your unique background and transferable skills.
  • Treat your physical and mental health as a top priority. Take breaks, get enough sleep, exercise, meditate, and lean on your support system.
  • Never stop learning and exploring new areas of software development. Stay curious and have fun!

So if you‘ve been thinking about making the switch into software engineering, I‘m here to tell you to go for it! It doesn‘t matter if you‘re 18 or 58, an art major or accountant. If you‘re willing to put in the work, you can reinvent yourself in this incredible field.

Start small, but dream big. Take advantage of the amazing free resources out there and start building your skills. Get involved in the welcoming and collaborative tech community. Bet on yourself and don‘t let fear hold you back from pursuing your passion.

As a great computer scientist once said:

"The best way to predict the future is to invent it." – Alan Kay

So what are you waiting for? The world needs more people like you to help invent the future through code. Reboot to software engineering and change your life. I did it, and I know you can too.

3, 2, 1…happy coding!

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *