After 1.5 years of studying, doubt, and struggle, I finally became a software engineer! My original goal was to become one in 6 months, but that didn’t go as planned haha. I transferred roles within my company and am currently doing embedded software development.
Let’s rewind the clock though and start from the beginning because I want to share my journey with you. My hope is to provide you with some insight and motivation to becoming a software engineer. Buckle up because we’re about to take off.
MY BACKGROUND
Let’s start with my background. That will establish where I was prior and why I wanted to become a software engineer. If you’re coming from a similar background then great! If not, still great because establishing your baseline and why is key to building a solid foundation for your software career.
Where was I before this?
I was a mechanical engineer before my new role. I did my bachelors and masters in mechanical engineering. I barely had any professional software experience. Most of my experience came from personal projects and classwork. I took one C++ & MATLAB course in college.
Although I had a technical background to begin with, my reason for switching and the learning points from my journey are still very relatable to why you are looking to switch or become a software engineer. Speaking of which…
Why did I want to become a software engineer?
I wanted to know if it was something that I would enjoy more than my current job as a mechanical engineer. Before I made the choice to change careers, I was disliking my work as a mechanical engineer. I couldn’t find anything enjoyable with my work. I knew that my dislike wasn’t just because of the company mission or culture. A part of me also knew that if I didn’t try something new, my engineering career would go extinct.
If you’re considering changing careers, read this post!
Software engineering was also something that had always interested me since college. I never pursued that interest in college though because I really liked math and mechanical engineering was more math-heavy than computer science. Nonetheless, whenever I had the chance to code in class, I always found myself being more engaged in my homework compared to just solving equations.
What would it mean to me if I became one?
Aside from growing my engineering career field, becoming a software engineer would also become my proudest achievement of my life for several reasons. First, it would be a choice that I made by and for myself. It’s something that came out of a genuine interest rather than somebody else telling me to do it. Second, I didn’t have my parent’s help or an established curriculum telling me what to do. That extra level of independence and work would make the journey inevitably tougher but would make achieving my goal sweeter.
THE CODING JOURNEY
So what did I do to prepare myself for when the opportunity came about?
Took classes on Youtube, Udemy, and Udacity
I didn’t go through a bootcamp or back to a college to get a degree in computer science because I couldn’t afford it. I also didn’t have the time to go apply to them. So I just took classes through Youtube, Udemy, and Udacity. If you want free classes, Youtube is the perfect place for you to learn about coding. You have to pay money on Udemy & Udacity but they often have sales for their classes. They market the classes at really high prices but when they go on sale, the classes go on sale for 80-90% off. For example, my C++ class on Udemy costs $99.99. When it goes on sale, it’s 80% off…so when I got it on sale, I only paid $20 bucks for it! So much more affordable!
Coded up personal projects
I also worked on personal projects. Most of my projects came from personal interests like chess, volleyball, and rock climbing. For example, I developed a website for most famous beach volleyball heckles. It’s definitely not your common project you may find online for practice, but it definitely helps to work on something you’re interested in. I also want to point out that none of my projects were that complicated. Most of the projects are less than 100 lines of code and don’t use fancy algorithms.
If you have no idea what would be a good starting project, then finding a project online is a great place to start. It may not be interesting to you, but working on coding projects outside your job is the primary way to gain software experience.
Applied for jobs weekly
When I felt confident in myself to start applying for jobs, I was applying to at least 3-5 jobs every week. According to my email history, I started applying for jobs in the beginning of 2022, which was roughly 6 months after I started my career change pursuit. I applied to a little less than 100 jobs. While that may see like a lot or little to some people, I saw every application as a chance for either a new job or practice for the next interview. A common saying in job applying is “all you gotta do is just get 1”, which means all it takes to get a job is just 1 interview.
Practiced Leetcode almost daily
I practiced different DS&A (Data Structures & Algorithms) on Leetcode almost everyday because most of my friends in the tech industry have told me that most of the software engineering interviews they went through had at least one DS&A question to code for. So brushing up on your Leetcode will prepare you for those interviews that come unexpectedly.
Relied on friends for advice and encouragement
I was talking with friends almost every single week for advice and words of encouragement. If I hadn’t, I feel like I would still be looking for a software engineering job. When I talk about advice, it’s not just what kind of coding language to focus on. It’s also about how I should think and behave whenever I feel down or extremely unmotivated to study. There were definitely days where I was just wanted to give up because things were getting too hard or I was failing multiple interviews. Definitely have people who you can talk to when you struggle. It’ll help a lot!
LOOKING BACK…
So now that I am now a software engineer, is there anything I would’ve done better and differently on my journey? YES.
Have clear goals & set them as intentionally as possible
Whether it’s weekly or daily, set goals for yourself throughout your journey and set them as intentionally as possible. First, it’s important to have a goal. If you don’t have a goal, you won’t know if you’re making progress. And progress is key to building your confidence and motivation. A really good analogy I heard of is it’s like having a target for archery. If you have no target, then all you’re doing is launching arrows in some random direction. You don’t know if you’re becoming better with your aim. If you have a target, you’ll know where to aim and how good you’re aiming.
Something I wish I would’ve done better was setting my goals more intentionally. In the very beginning, I remember setting a goal of listening to C++ classes 30 minutes a day. That was super helpful in terms of developing discipline, but as I kept learning more and more, I felt like my goal of just studying XX amount per day wasn’t getting me to my goal of becoming a C++ expert as effectively anymore. I needed to focus my goals on developing competence in a specific topic like writing classes because I knew that would better develop my understanding of the C++ topic. Be intentional about your goals! It’ll make every step along the way more meaningful.
Find a job that you would want and work toward that
Find a job online that you know you want to do if you were the ideal candidate. The job application will have a description that tells you the necessary skills and responsibilities you need to learn and focus on. This will allow you to spend less time researching what skills you need and more on learning. But what if you don’t know what job you want specifically? Take a look around and see what the current job openings entail. Chances are you will find one that does peak your interest. Then work from there!
Network & network early
I got my job primarily through networking within my previous department, and that’s something I wish I would’ve done earlier. I generally don’t network because I find it daunting to talk to people about job opportunities. But here’s something to consider. The job market is really saturated with applicants. If you are just applying online, you are essentially relying on a computer to get you an interview, which may not know you as well as a person does. Networking not only puts a name to a face but really gives you more chances to get your name out there for more interviews.
Final thoughts and words of encouragement
If you’re trying to become a software engineer with no software experience, this will be a tough and long journey. There’s a lot to do and the path is never a straight line, but remember: you are not alone in this because there is somebody out there (like me) who went through this or is currently going through this. Knowing that somebody else is struggling to achieve the same goal can be encouraging. Focus on the process. Pursue the art of learning and discipline in developing your skills as a potential software engineer. Getting the job is a by product of your hard work and dedication.
Also, value consistency over intensity. That was probably the most difficult but also most helpful tip I got. If being consistent means you have to start out only studying 10 minutes a day, then start there and work you’re way up from there.
Lastly, I’m still learning how to code outside my job. After 2 months of working in my current role, I’ve realized that most of the code writing you do comes outside of work. Unless you are working at a start up where nothing is written, most of the technical software work has already been hashed out by somebody. More often than not, you are copying code or reviewing code. So keep on working on as many projects as you can.
I hope this helped! If there’s anything you want to ask or share for other readers, leave a comment.
As always,
Be Confident. Stay Curious.