Books, bootcamps, MOOCs, and Nanodegrees
This is my learn-to-code story: a journey from MIT grad to Army officer to online education and “Nanodegrees” to startup ambitions.
In July of last year, I decided that I really wanted to buckle down and learn how to code. I wanted to develop the skills to build a startup. Seven months ago, I set that as my goal.
This article was originally published in Udacity’s Climb Higher Blog by Chris Morell as part of their Student Spotlight, in February 2015. Chris is an infinitely better writer than me and can jump tall buildings in single bounds. Udacity is a massive open online course (MOOC) provider, aiming to bring accessible, affordable, engaging, and highly effective higher education to the world.
Just a little background on me: I did my undergrad at MIT (miracles happen), and graduated (sometimes, miracles happen twice) in 2007 with a bachelor’s degree in mechanical engineering. But after that, I joined the Army and served for five years — so I guess you might say that my journey was unique!
When I returned from service, I took a position as the lead mechanical engineer of a robotics company. I was grateful for the opportunity, but I realized that it was not a path that was going to make me happy. With my newfound goal of getting a startup off the ground, I knew that I needed to learn the right development skills, and I openly embraced the online education movement. I’ve taken over 20 courses from MOOC providers Udacity, edX, and Coursera, and devoured content on Code School and Team Treehouse.
It hasn’t been all green pastures, and I’m going through a huge bout of uncertainty right now. This is my third career change: I joined the Army out of an engineering school, and did anything but engineering. I went into robotics after combat tours to Iraq and Afghanistan, where I did anything but robotics. And most recently, I decided to learn how to code and build a startup.
The difference now, though, is that I’m not at all concerned with whether I’ll stay interested in software and data science. Frankly, I love this stuff, and there’s no doubt in my mind that it’s my last career change. I do worry that I’m not cut out to be an entrepreneur, and unsure that I’ll be able to graduate some silly side project into a legitimate startup. But I know that I have to take this plunge to resolve that uncertainty: to have the market tell me if I can or can’t do it, rather than continue with regret and wonder.
Discovering the Nanodegree
I tried other online courses and the first three months of a coding bootcamp. I ended up leaving the bootcamp early — not because it wasn’t a great program (it was phenomenal), but it just wasn’t going at the pace I needed. So, I signed up for the Front End Web Developer and Data Analyst Nanodegree programs in December, and the Full Stack Web Developer Nanodegree in February.
Perhaps I’m the exception to the rule, as many of my Udacity classmates were/are looking for jobs. For me, it was all about building the right skills to create my own web applications. In essence, I was taking the Nanodegree programs full-time, where many of my classmates were doing the programs part-time in between their current jobs.
Although my undergrad experience at MIT was great, I definitely would have enrolled in the Computer Science program in retrospect. Udacity filled a very important gap for me because, at 29 years-old, I didn’t want to go back and do another four-year undergrad degree. I’m sure many other people out there can sympathize with that. Personally, Udacity was the best route to accomplish exactly what I wanted to do. What I liked about Udacity is that I could work at my own pace, at an extremely affordable $200/month.
Finding the Right Balance
It’s important to understand that I didn’t want to just learn how to code. I wanted (and still want) to establish a solid computer science foundation. If I simply wanted to learn syntax, I could have picked up a few programming books and went to town. The desire for me was to develop a really strong CS foundation.
Initially, I took a few online courses at edX: Intro to CS and Programming Using Python and Engineering Software as a Service. They gave me a solid theoretical background, but the open university classes weren’t the right balance of theory and application. I wasn’t confident that I could build a web application or a website. To address that, I attended a bootcamp, but found that it was taught at a slow pace, with little focus on theory.
One thing that I learned about programming theory has always stuck with me: once you understand data structures and algorithms, you could program anything and manipulate data, whether it were strings or Facebook posts. When I looked at the Udacity Nanodegree program, it was clear that there was a very strong combination of both theory and application; each course has a capstone project that offers the chance to apply learning to challenging, meaningful problems.
Learning by Doing
The project-focused structure of the Nanodegree was what really drew me in. While I thought that it was fantastic that Udacity helps students with job placement, I wasn’t quite as interested in that portion because I already knew the track that I wanted to be on — building a startup. I was mostly interested in learning how to build stuff and in finding the right balance between theory and application. Out of all the experiences I’ve had with furthering my education, the way the Nanodegree is structured is the most well thought out and well-balanced. You’re not just taught what to do; you’re taught how to think.
The difficulty ramp-up of the programs, especially for the Data Analyst Nanodegree, was right for me. By the second or third project, I was thinking, “Wow, this is some very cool stuff. I’ve learned the skills, and now I have to apply it on a blank slate.” That feeling came a bit later in the Front-End program, probably by the fifth project. I loved it when I was given a clean canvas to build on, with the liberty and freedom to create something like a single-page web app or plotting Meetup locations on a map. The feeling of creating something on the web and it actually working… that’s a good feeling.
There have definitely been challenges along the way. Debugging code has been frustrating, but it’s an important skill that Udacity has undoubtedly helped me to hone. I used to just re-compile or re-run faulty code, secretly hoping that it would work. Now, I’m a lot more methodical about it and first try to identify if a bug is from an unfamiliarity error or a logical error. If it’s from syntax, a framework, or best practices that I’m unfamiliar with, some Googling and Stack Overflow always does the trick. I have never had a problem that others haven’t had before. When I have trouble determining what to even search for, coming back to the basics is important. All programming can boil down to data structures (stuff) and algorithms (how we handle stuff). I try to break it down into those two primitives, think about it critically, and approach bugs the same way one does a problem with the scientific method.
Learning from others has also been instrumental. It’s worth mentioning that the community — specifically the forums — were awesome. Any time that I had a question, Udacity’s staff would respond within a day or two, or fellow students would chime in. I think MOOCs get a bad rap for their low retention rates, but I’m sure Udacity’s retention rates are much higher, given the way that the students and instructors interact with each other.
Even though I feel like I’m a unique case, I would definitely recommend the Nanodegree program to anyone who wants to work at their own pace. Because I’m not working full-time, I’m burning through opportunity cost every day; taking a year off is a big opportunity cost in terms of income. Being able to have complete control over my curriculum was awesome. I can crank through the material on my own schedule and make the most of it.
At edX or Coursera, most of the courses are in sync with university timelines, and the only way to maximize your learning is to take a lot of classes. I don’t know if that’s the best way to learn. If you’re taking five or six classes at a time, the switchover cost can be extremely high. And for bootcamps, it’s not very individualized — it’s “no coder left behind.” If you want to learn more and do more, you have to do it outside of class. For anyone with a technical background and a desire to drive their own learning experience, I would definitely recommend Udacity.
Thanks for reading…
Lastly, I just want to say that I think people are a lot more capable than they believe. I believe that what stops people is not a lack of some innate quality like intelligence or “knack for coding.” It’s willpower. I hate when someone gives up on a project because they say it’s too hard, or they’re not smart enough, or they simply can’t do it. Anything worth doing should be hard! People don’t become experts overnight, and I think that we too often compare our beginnings with others’ middles and ends. I firmly believe that you should never undertake a project or endeavor that you know for certain — from the start — that you can complete. You won’t take any risks, you won’t learn anything, and you won’t learn what your limits are.
If this story spoke to you, please recommend or share it so that others might benefit from reading it, too. I’d love to hear your stories or questions. I don’t bite (often), and you can reach out to me on Twitter: @allanbreyes. Cheers!