The path less traveled to software engineering — journey of a self taught

Andy Ye
7 min readJan 6, 2022

I just landed my first ever position as a Software Engineer, hurrah! I ended up digging deep into the JavaScript world after getting my feet wet in Python having started on this journey about a year ago from the time of writing. Initially, I knew next to nothing about coding or computer science. I only recall faint memories of an intro C++ class that I took for fun in college (still not sure why I did this as a pre-med).

One of the beautiful things about self teaching is the flexibility. You can go at your own pace, you can learn whatever you want. If your goal is a job, assuming there is sufficient demand for your chosen language and framework(s) in the job market, anything is viable. There are a plethora of free resources online for every programming language and framework. I won’t be discussing that here. Instead, I want to highlight the difficulties and expectations of learning on your own by using my own experiences as a benchmark.

Before we start, let me address a couple things.

First and foremost, if your only motivation to become a software developer is money, my advice is to give up. I can’t deny that the pay is amazing, however if you dread learning, you will absolutely hate working at a job because — news flash — the learning never ends! That’s not to say that you need to fall deeply in love with coding at first sight because I certainly didn’t and still don’t. The questions that you should ask yourself are: Do you like solving logical puzzles? Can you and do you like breaking down complex problems into actionable steps?

Now, if you’ve determined that coding is compatible with you, the challenge is mustering up the motivation to learn on your own. No doubt it’s easier to stay committed if you invest money into a bootcamp because sunk cost fallacy is strong, but I digress. Rather, let’s explore motivation from a different perspective. In my opinion, motivation is cheap. As observed in the majority of the New Year Resolutioners that commit to exercising regularly and inevitably end up failing, it’s apparent to me that motivation quickly dwindles. What I recommend instead is that you build habits. Discipline yourself. Organize and plan out your days. Force yourself to get into a rhythm and soon it will feel more strange to not be learning or coding than the reverse.

Now with that out of the way, let me retell my year or so journey.

I started out looking for accredited courses and I turned to my alma mater, the University of Michigan. I found a cool, free sponsored curriculum that taught beginner to intermediate Python on Coursera and dove straight in. I really liked Dr. Chuck Severance’s instruction (he’s sorta famous?). Python was also easy to write and understand. I coded alongside the course, put in full time hours and finished after a month and a half. But then I hit the beginner to intermediate plateau. What do I do now? I heard about Django and attempted to learn it, only to bury myself in the phenomenon known as tutorial hell.

Now about 3 months in, I was feeling a little discouraged and so I acted on a Reddit netizen’s recommendation to try freecodecamp, which instead focused on web development. Right off the bat, I knew I preferred the JavaScript syntax. It was much more similar to C++ and the familiarity boosted my morale. I blitzed through this curriculum in another month and a half. Shortly after I finished, I felt a sense of déjà vu. Again, what do I do now? I felt like I learned even less this time since most of the lessons handheld me through the heavy use of an in-browser IDE. I was lost and burnt out, having spent almost 5 months now with nothing to show for it.

After taking a few weeks off, my breakthrough finally came. Again on Reddit, I saw someone’s overwhelmingly positive recommendation for this open source community of JS/web developers called The Odin Project. I joined and lurked in their discord, but, as I was still feeling weary, I put off starting because I didn’t want to go through yet another tutorial. It wasn’t long after that the spark I needed came, from a rather unexpected source. A friend shared a YouTube video with me of this guy named William Lin absolutely demolishing Google Kickstart.

William Lin is crazy

My jaw dropped. I thought, “WTF? There’s competitive programming? Wait, what? This guy isn’t even in college yet?!”

Now, when someone sees a genius, a person that is leagues better than them, naturally they might feel an inferiority complex and give up. But not me. My competitive side from sports and athletics refuses to be a loser. Watching this guy’s mastery of the craft is what I needed to whip my butt into shape. I took it as a personal challenge. If they can be that good without formal computer science study in college, why can’t I be half as competent?

Before starting Odin, I wrote down my game plan, my goals, and my current progress:

  • I wanted to stick with JavaScript and web development and I needed organized, structured guidance to rapidly progress
  • I wanted to break through the beginner plateau and tutorial hell and really understand programming, but I didn’t know what I lacked
  • I knew the basics of JavaScript and Python and can create simple projects

On the topic of figuring out what I lacked, the first lessons in Odin finally helped me piece it together. I was kind of surprised that it wasn’t JavaScript, CSS, or even HTML that was taught, but instead Git, Github and VSCode. I realized I didn’t feel like an actual programmer because I wasn’t actually going through the workflow or using the technology! I had so much fun pretending to be a professional by pushing remote apps to GitHub, making branches, clicking through merge and pull requests on GitHub (all requested and approved by me, of course heh) and using the command line interface.

That joy led me to sprint and then later fly through the curriculum. Almost everything about Odin simulated how an actual developer worked on a day-to-day basis. You have a question? Google it. Read Documentation. Read an article. Use StackOverflow. Loop until you get it. Projects were strategically placed after groups of lessons and encouraged you to be independent and creative, rather than coding along with an example like I did before. Because the community is open source, you could also view fellow student demos if you needed inspiration. This guidance, or rather lack thereof, is what I needed and because I was having so much fun, I low key got addicted. I channeled my medical school studying habits and put all of my time and energy into programming. I maximized my efficiency by using anti-procrastination techniques like Pomodoro. I tracked my time spent and some of my best days, or worst depending on how you view my life, I spent over 14 hours learning and coding that day. I kept this up for 5 months straight.

Along the way, I learned what competitive programming is really like by signing up for Leetcode and participating in contests. As the noobie that I was, I got absolutely crushed. Did that stop or demotivate me? No shot. It pushed me to try even harder and continue grinding algorithms and learning data structures.

Eventually, I psyched myself up to get over my impostor syndrome. Time to job hunt. One of the downsides of being a self taught is that it’s difficult to get your foot-in-the-door. You could be way better than traditional CS degree holders (which I personally don’t believe I am, not even close), but unless someone is willing to meet and assess you, no one will know how great you are. I initially didn’t network and just did a resume dump on as many job listings as I could daily without burning out. I got automatic rejections or no replies at all. When I switched my approach and tried to reach out to any human that would let me cold message them on LinkedIn at the company of interest, I gradually noticed a higher response rate. I took advantage of every opportunity to interview. I felt so grateful that people would spend time meeting and testing someone unproven like me. I refused to embarrass myself and waste precious engineering resources with them spending time to interview me, so I studied my butt off on system design and architecture and continued reinforcing my computer science knowledge.

That’s it! In the end, I was not only fortunate enough to receive one offer, but multiple. I am still in shock and so thankful that so many people believe in me.

If I had to give advice in hindsight, don’t be as insane as I was. Pace yourself. Also, don’t be afraid to ask questions. I actually never once asked for help even when I was stuck after researching on Google and Stackoverflow. Sometimes it’s just a small hang-up that prevents you from getting it and that’s the difference between spending 3 hours vs 15 minutes. Do your research, don’t depend on others, but don’t be afraid to ask for help.

Feel free to reach out to me on LinkedIn if you need any advice, have a comment on my journey or if you want to tell me about your own story.

Ciao!

--

--

Andy Ye

Software Engineer. MERN enthusiast. Python is cool too.