How I went from stuck and hopeless to making my tech career dreams come true

Three years ago, I found myself in a career rut. I was working a marketing job that left me feeling unfulfilled, underpaid, and with little opportunity for growth. I knew I needed a change, but the idea of pivoting into the tech world as a software developer felt completely out of reach. I had graduated with a liberal arts degree and had no formal training in computer science. How could I possibly compete with experienced programmers and computer science grads?

But spoiler alert: I did it. Through a lot of hard work, self-study, and a big mindset shift, I made the transition into tech. I‘m now working as a full-stack software engineer at a top tech company, doing challenging, impactful work that I love. In this post, I‘ll share my story of how I made it happen—along with all the gory details of the challenges I faced along the way. My hope is that it will encourage other aspiring career-changers and show that it is possible to break into tech and build your dream career, no matter your background.

Recognizing the Need for Change

The first step in my journey was admitting that I needed to make a change. I had been working in various marketing roles since graduating from college, but I never quite felt like I had found my calling. The work was fine, but it didn‘t excite me. I couldn‘t see a clear path for advancement or growth. And to be quite honest, I just wasn‘t passionate about marketing.

At the same time, I had always been fascinated by the tech world. I was drawn to the idea of using technology to solve problems and build cool things. But I had convinced myself that I just didn‘t have the right kind of brain to be a programmer. I had tried to take a computer science class back in college and found it totally overwhelming. So I figured coding just wasn‘t for me.

But as the years went by, I couldn‘t shake the feeling that I was meant to do something more. The idea of making a major career change into tech kept popping into my head. I started reading articles about people who had successfully transitioned into software development from all sorts of different backgrounds—English majors, artists, stay-at-home moms. Slowly but surely, a little voice inside me started whispering, "Maybe I could do this too…"

Dabbling and Skill-Building

At first, I was way too scared to quit my job and go all-in on this crazy idea of becoming a programmer. What if I tried and failed? What if I wasn‘t cut out for it? I had a lot of self-doubt to overcome. So I decided to start with some low-stakes dabbling and skill-building on the side while continuing to work my regular job.

I started by taking some free online coding courses through sites like Codecademy and freeCodeCamp. I began with the basics of HTML, CSS, and JavaScript. And to my surprise, I really enjoyed it! The feeling of making the computer do what I wanted it to do, even with just a few simple lines of code, was totally exhilarating.

I loved the problem-solving aspect of programming. I liked how there was usually more than one way to approach any given challenge. And the immediate feedback of seeing my code spring to life in the browser was so satisfying. Through these early experiments, I started to gain confidence that maybe I did have what it takes to be a developer.

Over the next several months, I steadily worked my way through online tutorials and began building a few small projects of my own. I made a simple portfolio site, a JavaScript quiz game, and a weather app that pulled data from an external API. These projects were a chance for me to apply what I was learning and get more comfortable with the core web development technologies.

Overcoming Imposter Syndrome

As I continued to build my skills, I kept running up against a big mental roadblock: imposter syndrome. Even as I made progress, I couldn‘t shake the feeling that I was out of my depth. I constantly compared myself to other developers who seemed to know so much more than me. I felt like a fraud, like I would never be able to catch up to the "real" programmers out there.

Looking back, I can see that a lot of these fears were irrational. Everyone has to start somewhere, and it‘s totally normal to feel overwhelmed at first. Programming is a vast field with a huge amount to learn. It‘s simply not possible to know everything, and that‘s okay.

One thing that helped me push past my self-doubt was realizing just how common imposter syndrome is in the tech industry. A 2018 report from workplace social network Blind found that 58% of surveyed tech workers experienced imposter syndrome. And a 2020 study by Hired found that 39% of developers feel they are not good enough for their current job or prospective jobs.

Hearing these statistics made me feel less alone. It was weirdly comforting to know that even experienced, successful developers often struggle with feelings of inadequacy. I started to reframe the way I thought about my journey. Rather than obsessing over all the things I didn‘t know yet, I tried to focus on how much I was learning and improving every day.

Another mindset shift that helped me overcome imposter syndrome was learning to embrace the struggle. Programming is hard. You will get stuck. You will bang your head against tough bugs. But that doesn‘t mean you‘re not cut out for it. It‘s all part of the process. Once I accepted that struggling was normal and necessary for growth, I was able to be kinder to myself and keep showing up even when things felt challenging.

Going All-In

After around six months of learning to code on the side, I reached a fork in the road. I had built up a foundational set of front-end development skills, and I was really enjoying the work. But I knew that if I wanted to turn this into a career, I would need to go deeper and eventually make the scary leap of quitting my current job to focus on the transition.

I considered enrolling in a full-time coding bootcamp, but I was hesitant to shell out the high tuition cost. I also looked into going back to school for a computer science degree, but I didn‘t want to spend two to four years out of the workforce.

In the end, I decided that self-studying using online resources was the best path for me. I committed to giving myself a year to learn full-stack development and build up a strong portfolio before starting to apply for jobs. And to give myself the best chance of success, I knew I needed to treat this like a full-time job.

So I made a plan. I calculated that I could afford to live off my savings for about a year if I significantly cut down my expenses. I moved to a cheaper apartment, got rid of my car, and made a strict budget. And then I put in my notice at work and took the big leap.

Over the next 12 months, I threw myself into my studies. I started each morning with a few hours of reading and interactive coding exercises. Then I would spend the bulk of the day building projects and working through courses on full-stack development. I made sure to put my work on GitHub and document my learning journey through blog posts to hold myself accountable and start establishing an online presence.

It was equal parts exhilarating and terrifying to have so much riding on this one goal. There were definitely moments of panic and self-doubt along the way. But I tried to break down the huge undertaking of becoming job-ready into smaller milestones to make it feel more manageable. And I surrounded myself with supportive friends and family who believed in me and cheered me on even when I doubted myself.

Getting in the Door

By the one-year mark, I had built up a solid foundation in both front-end and back-end development. I had taught myself HTML, CSS, JavaScript, React, Node.js, Express, and MongoDB. I had a portfolio of half a dozen full-stack projects that I was really proud of. And I felt about as ready as I would ever be to start applying for developer jobs.

I knew I was aiming for junior-level roles, so I tried to keep my expectations realistic. I applied for a mix of front-end, back-end, and full-stack positions, tailoring my resume and cover letter to each one. I also reached out to a few recruiters who specialized in entry-level tech roles and let them know I was on the job market.

All in all, I probably applied for around 50 positions over the course of a few months. I heard back from about 20% of them and landed interviews with six different companies. Out of those six, I made it to the final round with three and ultimately got one job offer.

The company that hired me was a small startup building a mobile app for local event discovery. They were looking for a junior full-stack engineer to help build out the web-based admin dashboard and analytics tools. It was a great fit because the role would allow me to use the skills I had developed in JavaScript, React, Node, and MongoDB. And I would have the opportunity to work closely with a small, collaborative team and learn a ton in the process.

I was absolutely over the moon when I got the offer. It felt like all my hard work had finally paid off. And I was so excited to start this new chapter as a professional developer.

Early Career Growth

My first year as a full-stack software engineer was a whirlwind of learning and growth. I was constantly pushing myself out of my comfort zone and taking on new challenges. There was so much to learn, from the company‘s specific tech stack and coding style to common best practices like writing clean, modular, well-tested code.

One of the things I loved about working at a small startup was getting to wear a lot of different hats. In addition to writing code, I got to weigh in on architectural decisions, help manage the product roadmap, and work directly with stakeholders to gather requirements and demo new features. I felt like I was getting exposed to all aspects of the software development process and building a really strong foundation.

Some of my favorite projects from that first year include:

  • Building a mobile-friendly reports dashboard using React, Redux, and Chart.js to help business owners track key metrics and make data-driven decisions
  • Developing a Node.js API to power new features like real-time event streaming and personalized recommendations
  • Implementing an automated testing workflow using tools like Jest, Enzyme, and CircleCI to improve code quality and catch bugs before they made it to production
  • Collaborating with the design team to create a design system and component library to streamline development and maintain a consistent UI

Each new project pushed me to level up my skills in different areas. And seeing the positive impact my work had on the product and the business was incredibly fulfilling.

Specialization and Continued Growth

After a couple of years working as a full-stack generalist, I started to develop areas of particular interest and expertise. I found myself especially drawn to the world of front-end development and UI engineering. I loved the challenge of building beautiful, intuitive user interfaces and thinking through the ideal user experience.

So I started to focus my energy on deepening my front-end skills. I read books and blog posts on design, user experience, and accessibility. I experimented with new technologies like TypeScript, GraphQL, and CSS-in-JS libraries. And I began to specialize more in front-end roles and projects both at work and in my side projects.

One of my most ambitious undertakings was building a Chrome extension for visualizing and debugging React component hierarchies. It was a great opportunity for me to dive deep into the React ecosystem and learn more about developer tooling and browser extensions. I open-sourced the project on GitHub and even gave a talk about it at a local React meetup. It was really fulfilling to share my work with the community and get positive feedback from other developers.

As I continued to grow and specialize, I also became more focused on the specific types of companies and products I wanted to work on. I realized that I was most motivated and engaged when working on products that had a positive social impact. So I started seeking out mission-driven companies working in areas like education, sustainability, and healthcare.

That search led me to my current role as a senior front-end engineer at a company building software to help schools and districts support student mental health and well-being. It‘s incredibly fulfilling to know that the code I write has the potential to make a real difference in students‘ lives. And I get to work with an amazing team of developers who are passionate about combining technology and social impact.

In my day-to-day work, I spend a lot of time collaborating with product managers and designers to plan out new features and improvements to our UI. I work closely with other members of the front-end team to review code, discuss architectural decisions, and mentor junior developers. And I‘m always looking for opportunities to innovate and push our front-end tooling and processes forward.

Some of the things I‘m particularly proud of from my time here so far include:

  • Leading the transition from a legacy PHP monolith to a modern, component-based architecture using React and TypeScript
  • Establishing a design system and component library to improve development velocity and UI consistency across our products
  • Implementing end-to-end testing using Cypress to catch regressions and ensure a high-quality, reliable user experience
  • Advocating for accessibility and spearheading efforts to improve our products‘ usability for users of all abilities

I wake up every day excited to solve new challenges and keep pushing myself to learn and grow as a developer and a person.

Reflections and Advice

Looking back on my journey from marketing to full-stack development to specializing as a front-end engineer, I‘m amazed at how far I‘ve come. Five years ago, I never would have dreamed that I‘d be where I am today. It took a lot of hard work, persistence, and patience. But it was hands down one of the best decisions I‘ve ever made.

For anyone out there considering a similar career change, here are a few key pieces of advice I‘d offer based on my experience:

  1. Start small, but start now. You don‘t have to go all-in right away. Begin with small, consistent steps to build your skills and your confidence. The most important thing is to get started.

  2. Embrace the struggle. Learning to code is challenging, especially in the beginning. You will get stuck. You will feel overwhelmed at times. That‘s totally normal. The key is to keep showing up and pushing through even when it feels hard.

  3. Build a strong foundation. While it can be tempting to jump straight into flashy frameworks and cutting-edge technologies, make sure you have a solid grasp on the fundamentals first. Having a deep understanding of core programming concepts will serve you well no matter what specific tools you end up using.

  4. Focus on problem-solving skills. At the end of the day, programming is all about problem-solving. The languages and frameworks will change, but the ability to break down complex problems and develop efficient, effective solutions is what will make you a successful developer over the long term.

  5. Never stop learning. The tech world moves fast, and there will always be new skills and technologies to learn. Make continuous learning a priority throughout your career. Attend conferences and meetups, read blogs and books, take on side projects to explore new areas. Staying curious and keeping your skills fresh will help you stay competitive and engaged.

  6. Remember your unique value. As someone coming from a non-traditional background, it can be easy to feel like an outsider in the tech world. But don‘t underestimate the value of your unique perspectives and experiences. Your background gives you different insights and approaches that can be a huge asset on any development team.

Making a major career transition is never easy. It takes a lot of courage, hard work, and persistence. But if you‘re feeling stuck and dreaming of a more fulfilling path, know that it is absolutely possible to build the career of your dreams. With the right mindset, a commitment to continuous learning, and a willingness to embrace the challenges along the way, you can absolutely make it happen.

Just look at me. If an English major turned marketer can become a successful full-stack software engineer, I have no doubt that you can too. So start small, stay curious, and never stop learning and growing. Your dream career in tech is within reach. You‘ve got this.

Similar Posts