I’m Michael Duran, and my life’s journey has been quite the rollercoaster. It all started with a government job in Chicago after college, which I had to leave behind for my wife’s sake. This decision took us to Louisville, Kentucky, where I began working as an electrician. Then, a life-altering car accident shook things up and led me to where I am today: a largely self-taught software engineer at USAA, with some formal guidance. My story is all about resilience and chasing your dreams, no matter how unpredictable the road may be.
My Early Days in Chicago
A few years before I became a software engineer, I had a federal government job in an office in Chicago, IL. I landed the job right after college and was extremely excited that all my hard work had paid off. Going through four years of college was no easy task, and I felt like I had finally reached my goal. Best of all, I didn’t have to work at my part-time job anymore.
During college, I was a clerk at a gas station, working the third shift in a rough part of town. It was the only job I could find at the time that worked with my school schedule. The gas station had bulletproof glass windows, and we locked the doors after a certain time.
Two years into my position in the government, my wife and I had to move to Louisville, KY, at the last minute for her job. My job couldn’t transfer me to another office, so I resolved to quit. I was devastated to give up all I had worked for, but she meant the world to me.
After quitting, my father in-law asked me if I would be interested in working as an electrician temporarily. He had been in the trade for 30 years and knew a few people who could give me a job in Kentucky. I said yes to him and within a few weeks I started a new job.
A Twist of Fate
While working as an electrician, I often worked long hours and constantly felt tired. One day while driving home from work, I fell asleep at the wheel and went off-road. My car hit a tree stump and caused it to do several barrel rolls. I could see all the airbags go off, and glass shattering. At that moment, all I could think of was my wife and how severe my injuries would be. After a few seconds of my car rolling into the woods, it stopped. I frantically searched my body for cuts, broken bones, or any pain, but I was perfectly fine and able to get out of my car on my own. When the police arrived, they told me it was a miracle I had survived.
A few days after my accident, I developed back pain, which resulted in being laid off. My wife felt guilty about my injury because I had quit my previous job for her, and now I was unable to do electrical work. But I reassured her that I’d make the same choices all over again because I loved her.
New Beginnings at the Call Center
After the car accident, I applied for an office job and in December of 2019 I landed a position at a call center. The people were awesome, and I saw a lot of potential for career growth because they were a medium-sized company. A few months after being hired, I was promoted to lead a team of 14 people and handle all the technical aspects in our department.
After two months as a manager, I was temporarily laid off for a month due to COVID-19. During that layoff period, like many others, I began considering returning to school in order to get a more secure job. I explored tech careers because I was already heavily involved in tech-related tasks at work. I’ve always had an interest in tech and I even contemplated switching my major to computer science, but decided against it, feeling I was too far into my current degree program.
My Dive into Coding
When I came back after my layoff, my boss asked me what I wanted to do career-wise. I told him I wanted to be a software engineer because it was in high-demand and I wanted the challenge of learning programming. He told me to reach out to our internal staff of software engineers for guidance, which I did, and it turned out to be a great idea! I spent about a year learning web development from them while still managing my team.
Eventually, I decided the next step in my education was to enroll in a software engineering bootcamp. Since I didn’t have the schedule to attend a live one, I found a self-paced program.
The Ups and Downs of a Self-Taught Journey
I completed the bootcamp in just three months. Normally, students take six months, but I was determined to finish sooner so I could start applying for jobs. During those three months, I learned a variety of things and enjoyed every minute of it. After finishing my bootcamp, I decided to build some new projects so I could stand out from my peers. Some of the things I wanted to build were far more advanced, and I was unsure if I could piece together online resources to help me. At this point, the imposter syndrome kicked in. I’ll never forget the day it happened.
I was sitting at my desk, staring at my screen and wondering to myself, what have I gotten myself into? Am I a fraud for learning to code on my own instead of getting a computer science degree? How do I learn all these systems and advanced syntax concepts to build what I want to build? Surely all of this can’t be taught in college? I knew firsthand college doesn’t teach everything. I got up, walked to the window, and watched my son playing outside. I was afraid that my two-year-old son and wife would think I was a failure, and that made me sad, mad, and frustrated.
To make matters worse, I opened LinkedIn and immediately saw a post about bootcamp grads being fake software engineers because they didn’t have computer science under their belt. At that point, I turned off my computer and decided to take a break for at least a week to evaluate my life choices.
Seeking Hope and Finding Strength
During my break, I got back into video gaming to blow off some steam. One day while playing, I overheard my friend talk about his job as a software engineer at Comcast. I had just met him online a few months before, and I had never asked him about his personal life. People usually get online to forget about the real world, but on this random week, he decided to share because we were talking about video games and the software engineers behind them. He explained the complexities of coding and all the teams required to bring a piece of software into fruition.
So, I asked him what he thought about self-taught software engineers. To my pleasant surprise, he said he worked with a few at his company, and they were talented. Despite them not having a computer science degree, they knew a lot. He continued to say they were really eager to learn because they felt as if they constantly had to prove themselves for a lack of a formal degree. Overall, he admired them because it was no easy task to teach yourself to code or learn computer science theory.
I thanked him for his insight and told him I was a self-taught software engineer. He proceeded to test my knowledge and told me I was ready for an entry-level role. I was ecstatic to get that validation from him. He had a computer science degree and ten years of experience, so his opinion held a lot of weight. At that moment, I decided to start coding again.
The following week came, and the very first thing I did was look in the mirror and say to myself:
“If you fail to land any jobs, it is not the end of the world. You will get up and try again. Others have made it in your shoes, and so will you. You must persevere and show others that it can be done. You must do this not just for yourself and your family, but for those who will come after you chasing the same dream.”
I then spent the next six months building projects, studying LeetCode, asking questions on online forums, watching YouTube videos, buying Udemy courses, and talking to random software engineers on Discord or Slack. I also applied to 400 jobs and spent as much time on LinkedIn as I could between learning. After six months, I had learned a lot and built a huge network on LinkedIn. I was talking to recruiters every other day and had interviewed for several jobs. While waiting to hear back from some of the employers, intrusive thoughts crept into my head:
- Am I a fraud?
- Did I answer all their questions perfectly?
- Do I deserve to be a software engineer?
- Am I going to fail my wife and son?
- Will I be able to provide for my family?
- What did the employers think of me?
- Should I have just gone back to school to get a CS degree, even though I couldn’t afford it?
- Am I less prepared than a CS grad?
- Should I keep practicing LeetCode and working on projects?
- Should I give up on my dream?
After about a month of interviewing, I heard back from five companies who wanted to hire me. I screamed out of joy with each callback I got, and my confidence level went through the roof. All my hard work had finally paid off, and I was happy that these companies believed that I was qualified.
When it came down to deciding what company to go with, I considered whether it was on-site or remote. Three of them were on-site and out of state. Of the two that were remote, I decided to go with USAA because it had the largest potential for career growth.
Life at USAA and Beyond
Today, it’s been almost two years at USAA, and I have learned even more. I enjoy coming to work every day and taking on each day’s unique challenges. I primarily work on front-end development creating USAA’s web pages.
My journey at USAA has been a fun one. There are so many moving parts and things to learn. In order to stay up-to-date, I continued my research outside of work. This helps prepare me for anything USAA throws at me. Although this wasn’t required of my job, I love learning and being able to bring value to my team. In my research, I learned the career opportunities that would open up by learning back-end development. These skills, paired with my front-end development experience would allow me to be even more effective in my current role and work as a full-stack developer in the future.
At the beginning of 2023 I decided to attend a back-end software engineer bootcamp. I wanted to learn the things that computer science students were learning in school. Doing some research online, I came across Promineo Tech on LinkedIn, and to my surprise, Nick, the CEO, had worked for USAA. At that moment, I knew I needed to attend his school because his program could teach me what I wanted to know.
I completed the bootcamp in five months, and it was phenomenal. During the course I learned:
- Design Patterns
- Unit Testing
- Database Concepts
- Spring Boot
Upon graduation from Promineo Tech, I was ready to apply what I had learned. My job at work consists mainly of front-end development work, but I still found ways to bring my new skills into my daily work. When it came to creating scalable code, what I had learned at Promineo Teach about algorithms, unit testing, design patterns, and Java Collections came in handy. I was able to look at code differently and optimize in a way I never thought of before.
In computer science, there are topics such as data structures, algorithms, Big O’Notation, space complexity, and time complexity, that if you understand will help you build better software. Promineo Tech helped spark my interest in these topics and I’m glad it did because it helped me optimize my code at work and solve LeetCode challenges online.
Overall, Promineo Tech is a phenomenal school to attend if you want to start your career or upskill your current skills as a Software Engineer.
Final Thoughts and Reflection
Looking back at my journey and all the tribulations I had to overcome, it makes me proud to call myself a software engineer today. The only thing I would do differently, and would advise newcomers to do as soon as they can, is to learn data structures and algorithms early on. This will help you solve LeetCode questions when interviewing and boost your confidence level. After that, sign-up for a bootcamp so you have a support system and a structured curriculum. You can attempt to do it on your own, but I would advise against it because the internet has a lot of information that will overwhelm you and discourage you early on in your journey.
Words of Wisdom
“In the journey of life, when you face setbacks and challenges, remember that the road to success is often paved with determination and resilience. It’s not about avoiding failures, but about embracing them as valuable lessons. Never giving up isn’t just a choice; it’s a commitment to keep pushing forward, to rise stronger after each fall, and to turn every obstacle into a stepping stone towards your dreams. With unwavering persistence, you can turn adversity into opportunity and write a story of triumph that inspires not only you but everyone around you.”
Tips for aspiring self-taught software engineers:
- Decide early on whether front-end development or back-end development is right for you.
- If you choose the back-end, you’ll have more languages to choose from. Once you pick one, learn that language as best as you can then move into data structure and algorithms right after.
- After you feel somewhat confident in the above topics, sign up for a software development bootcamp and create your LinkedIn account.
- During your bootcamp find all the smart people you can and learn from them and add them on LinkedIn.
- If you are the smartest person in your group, then help teach others in order to reinforce your knowledge.
- After the bootcamp, go back to studying data structures and algorithms and start tackling LeetCode questions.
- Next, update your bootcamp projects with more features or make new projects from scratch.
- Log into LinkedIn every day and try to network for one hour. This is how you’ll land your first job.
- In addition to that, apply to any roles you come across on LinkedIn or another platform. (Pro tip: apply to local in-office jobs, as you will have less competition.)
- If you land an interview, show up even if you’re afraid. Prepare the best you can, do your research on the company, and ask your peers to help you prepare.
- If the interview doesn’t go as planned, that’s okay. Ask for feedback from the employer and you’ll do better in the next interview.
- After interviewing a few times, you won’t be afraid anymore.
- When you land a job, negotiate your salary. If you’re not sure how, there are some very nice recruiters on LinkedIn who are willing to help you. Some of them charge but many of them don’t.
Hopefully, I motivated you to follow your dream of becoming a software engineer. I welcome you to share your story with me and the self-taught software engineer community. I believe every story helps pave the way for another individual who is lost and afraid. So, let’s be their beacon of light as they travel down this foggy road.
Add Me On ➡ ️LinkedIn
Are you ready to embark on a coding journey that can transform your career and open up a world of opportunities? If you’re passionate about coding, I have an exciting recommendation for you!
Imagine a place where your passion for programming is not just encouraged but celebrated. Picture yourself surrounded by a community of like-minded individuals who share your love for technology. That place is Promineo Tech.
Whether you’re a beginner looking to learn the fundamentals of programming or an experienced developer aiming to take your skills to the next level, Promineo Tech has you covered. Their curriculum is designed to cater to all skill levels, ensuring that you receive the guidance and support you need at every step of your journey.
But Promineo Tech is not just about coding; it’s about community. You’ll join a diverse and supportive group of learners who are just as passionate as you are about technology. Collaborative projects, weekly one-on-one mentorship, and a vibrant alumni network will be at your fingertips, helping you grow both personally and professionally.
So, if you’re considering starting your coding journey today after reading my article, I welcome you to attend Promineo Tech. It’s a place where your love for technology will flourish, and your career prospects will soar. Don’t miss this chance to turn your passion into a rewarding career, join Promineo Tech and pave your way to success!