On Self-Teaching and Becoming a Developer
By: Leonard Soai-Van
Tags: Web Development, Bootcamp, Programming, The Odin Project, Self Teaching

Hey, my name’s Leo, and I’m currently one of the mods and contributors to The Odin Project (TOP), a free full-stack curriculum supported by a passionate open-source community.

In October of 2008, I landed my first web-development role. Prior to this, I had graduated with two Masters degrees in Counseling Psychology from an Ivy League institution (lolsob @ my student loans), working mainly in social services and advocacy. Now, I’m with a reputable, international company located right outside of Washington, D.C, where people love running, ride e-scooters in traffic like they aren’t going to die, and still think Chipotle is good food.

Don’t you put that evil on me.

I wanted to take a minute to share some thoughts I have about being self-taught. I can’t promise the insights will be revolutionary, but I hope it’ll clarify and add context to the ins-and-outs of that process. Let’s dive in.

Step back from the race

When I slowly realized that I might be able to take coding from a hobby to a possible career change, I spent some time looking for inspiration and seeing what the experiences of other folks might have been like. Unfortunately, the results were more anxiety-provoking than anything.

In my search, I found stories that recounted attaining success within time-frames that ranged from reasonable-ish (12 months) to outright blasphemy (3 months!), the latter most likely having traded their soul to some questionable entity.

If you’re like me, you might start telling yourself that you can do it, and you can do it fast. In fact, you’ve gotta go fast.

Stop. Turn around.

Oh god undo undo undo

The only thing these stories can definitively tell you is that getting a job as a self-taught web-developer is 100% possible. The rest is relative, subjective, and arbitrary.

The entire idea of becoming a developer in “X” amount of time is flawed. You become a web-developer the moment you start and commit to life-long learning. Sure, becoming gainfully employed as a web-developer might be a helpful goal, but it’s an artificial metric at best. There is no finish line with technology, programming, and web development, save for the heat death of the universe. You’ll end up tumbling if you think you can coast after getting that job.

So, don’t bite your knuckles if you can’t land a job within 3 months, or even a year. The deadline is less important than the learning. I’m no athlete, but I know that when I’m on an elliptical machine (I have bad knees, ok?), I suffer the most when I look at the time I have left on my god-forsaken workout.

I think that it’s more helpful to feed your curiosity for code.

Be curious

When I accepted my current position, my team leader at the time told me that they had done so partly because, as a self-taught developer, I had exhibited the ability to independently pursue and learn things that interested me.

As you go through your learning, you’ll often come up against topics and ideas are presented simply, but seem to be more complicated. Take note of them. Maybe you’re reading about a secondary topic that is “beyond the scope” of the primary topic. Maybe something appears too magical to be true. Keep a notebook of topics you want to dive deeper into. You aren’t responsible for the things you don’t know that you don’t know, but you are responsible for the things you know you don’t know know.

Now the hard part: cull that list. If you dive into every little rabbit-hole, you’ll never get anywhere. Knowledge gaps are okay. Even Dan Abramov admits to them, and to me that’s a relief. If you feel anxious about having to learn everything, take a humongous breath and let it out. Focus your time and energy for those moments you come across a topic that truly sparks joy and curiosity.

SQL does not spark joy

Lean into these curiosities when they come, and celebrate your advancements in learning. Do you finally understand what JavaScript callbacks are? Do you know how polymorphic associations work in Rails? Come share with us in TOP’s Discord server.

Remember, this was never a race to begin with. If nothing strikes you at the moment, write it down. SQL, algorithms and time complexity: you’ve got the basics (or not), it’s not immediately relevant, so maybe take a deeper look later? That’s totally fine. You’re not doing this because you have to. You’re doing this because you love challenges, you love art and creation, you love computers and the internet, and you want to Instagram a picture of your IDE and tell everyone you’re a coder.

You’ve opened your IDE at a coffee shop before, admit it.

Be consistent

Achivements require consistency, especially when you are self-taught. Plenty of people have the means to attend coding bootcamps where structure, guidance and mentorship come hand-in-hand with learning (though even that is debatable).

That wasn’t an option for me. I had too many financial obligations and no savings to live off of for however long these bootcamps require fulltime enrollment. Heck, I worked in social services. Even if I loved the work, my paychecks were a joke.

Exhibit A: Leo’s paychecks

Here’s the deal: if you want to be successful as a self-taught developer, in whatever way that means, you must be consistent. There is a huge, long-term difference between “I think I’ll do some coding today” and “I’m setting aside 1 hour to code today”. You want to be in the latter group.

TOP’s curriculum, for example, already provides much of the structure, but it is self-paced. You have to set the pace, and a good pace is any pace that is consistent. You aren’t binging one day, and skimming the next day. Balance your work and breaks. Use the Pomodoro technique. Counter-intuitively, I believe that being consistent also allows one to be more flexible. The habit of consistency means that you can get right back onto the horse if life happens and you need to step away for a bit.

Honor your curiosities. You deserve them, and you owe it to yourself to consistently pursue them.

Be helpful

Gatekeeping is a natural side-effect of being established, whether as an institution, an industry, or a community. That doesn’t mean you have to like it. I certainly don’t.

Programming can get so cerebral that it is easy for us to thinking highly of ourselves if only because we understand some topics better than others. We’re tempted to flex a little.

I’d like to suggest a different route: be ridiculously helpful.

Being helpful provides a tremendous learning opportunity. It’s an active way to engage and exercise your understanding of a topic. It might event open you up to corrections from others, too, and that’s valuable and okay. Remember, learning is continuous and life-long, so you’ll never get it right 100% of the time. But you can get better.

It’s truly a win-win situation.

Here’s the real-kicker: self-taught is more or less a lie, at least here at The Odin Project. TOP runs because of volunteer contributors and ridiculously helpful folks that make sure the students have a positive learning environment and experience. I would argue that half of TOP’s value comes from the community. I myself never felt that progressing through the curriculum was a solo effort, and I wouldn’t want you to feel that way either.

The more you come to understand, learn, and practice, I hope you’ll take a minute to help the ones that are in the position you were in, however long ago, trying to grok how a for loop works in JavaScript (true story, they are the reason I quit and took a 6 month hiatus), or struggling to understand flexbox. I think helping others learn is a great measure of success.

Wrapping up

Be curious. Be consistent. Be helpful. You’ll get to where you want to be.