Blog

The best way to fully immerse yourself in a new country and culture is to learn the language of the land. Many of us simply don't have the time to intensively learn a new language so here are tips to learn a new language in record time.

Four months later, our Kickstarter campaign was successfully funded, and we're just now meeting our first full class of students here in Medellín. We learned a lot along the way in pushing to crush our goal, and although the amount we raised is modest compared to some of the Kickstarter juggernauts who've brought in over $1M, I was surprised to learn when checking out Kickstarter's stats that our project is somewhere in the top 2-3% of projects all time and top 6-8% of successfully funded projects. So, obviously we landed on a formula that works, and I thought it would be useful to share our experience for anyone thinking about running a Kickstarter campaign. Below are my top takeaways from a successfully funded Kickstarter campaign.

Software Development Bootcamps are a relatively new phenomenon that have presented an educational model radically different from what students will encounter in a typical university setting. These programs are generally shorter than university degree programs by an order of magnitude, lasting just a few months rather than up to four or five years. They are able to do this by focusing participants on a narrow range of highly specialized skills in programming, in contrast to the broad liberal arts education presented during a Bachelor's degree. To be fully transparent, I am running a web development bootcamp program of my own, geared towards digital nomads in Medellín, Colombia. I wrote this based on my honest opinions and experiences, not as a shameless plug, and I am working hard on Destination: Dev because I believe in this educational model for the reasons I'll describe below.

Trade-Offs

To be sure, this new approach to education has its trade-offs, and has garnered its fair share of criticism. However, I believe that the criticism being leveled at bootcamps is primarily caused by unrealistic expectations held by some applicants, students, and employers - not by inherent flaws in the educational model. In many cases, these unrealistic expectations are created by misleading marketing on the part of the bootcamps themselves, with some promoting job-placement rates over 90% that are in the most generous view selective massaging of the data, and in the worst complete fabrications. Any bootcamp program that promises students jobs or touts strong industry contacts should be viewed with a healthy amount of skepticism. Additionally, many bootcamps barely screen their applicants at all, and admit many students who are attracted to the idea of being a developer, which looks great on paper given the opportunities for six-figure salaries, awesome amenities, and great work-life balance. The problem is, spending thousands of dollars and upending your life to pursue a new skill you've spent next to no time validating you have an interest in and aptitude for is clearly a risky proposition.

The author, dropping some knowledge

My Experience

Despite these concerns, I am a firm believer in the value of the educational model offered by coding bootcamps, and I think that they have the potential to have a positive impact on the education provided in more traditional institutions like colleges. I attended Dev Bootcamp in 2013, and it was one of the best decisions I've ever made. I was went from zero coding ability to full-time employment and a six-figure salary in a number of months. I have since been able to use the skills that I first developed in Dev Bootcamp to become a freelance digital nomad web developer and live a life I'm passionate about, traveling while coding and having the freedom to work on my own entrepreneurial projects simultaneously. While I definitely consider myself a coding bootcamp success story, the process was by no means easy. I had to work incredibly hard and hustle to get myself to the point where I was employable, and then had to spend years working even harder on the job to become first productive and then a true professional. But, based on my experience, I believe that anyone who is able to prove to themselves that they both enjoy programming and have the ability to learn and solve coding problems on their own can be successful post-bootcamp given enough determination and hard work. At the end of the day, it is up to you - not the bootcamp you're attending - to make sure you have what it takes to succeed.

From what I've seen, coding bootcamps that have generated a formula that allows the right students to learn successfully in an incredibly short amount of time and transition into new high-paying jobs with a similarly short turn-around all seem to exploit the following properties and circumstances:

Immersion

The first crucial ingredient that allows bootcamps to provide their students with substantially accelerated learning is immersion. Students will generally spend 40 hours a week in a structured classroom setting combined with, in the case of the most successful students, an equivalent time commitment outside of class studying, working on projects and problems, and discussing coding and technology with classmates. This means that after factoring in preparatory work, many students can expect to have put in close to 1000 hours of work learning programming in just a few months. For comparison's sake, let's take a look at the total amount of time spent learning and practicing during an undergraduate Computer Science program. Using UCLA's CS curriculum as a guide, students take around 20 quarter-long (10 week) CS courses to receive their degree. Let's be generous and say each class requires around 5 hours of lecture and 2 hours of homework/studying per week (my guess is this is a lot more than most students will actually do). This will add up to about 1400 hours over the course of 4 years - not all that much more than bootcamp students are getting in just 4 months or so. Additionally, not all hours are created equal, which brings me to my next point.

Lectures are boring

Hands-On Learning

All of the most successful coding bootcamps heavily stress hands-on learning, with students solving problems and building projects during the bulk of their time. In contrast, university CS students spend a lot more time in lecture. It's more-or-less common knowledge that people learn things by doing them - not by reading about them, listening to lectures about them, or watching other people do them. For a little external evidence on this, check here, or here. In the classical bootcamp model, students spend the vast majority of their time coding. Lectures are given as supplements to the actual work of coding, not as the main factor in the educational experience. Additionally, students spend time near the end of most bootcamps working on tangible, real-world software products - not just solving abstract algorithms. This brings me to the next important factor in the success of the bootcamp model:

Employable Skills

Bootcamps teach concepts, technologies, and skills that are directly applicable to the job market. When going over basic algorithm optimization or concepts in object-oriented programming, languages that are used in the job market like Ruby, JavaScript, or Python are leveraged in place of the C++ or Java that are more common in traditional programs. Furthermore, all of the best bootcamp programs have their students build multiple fully-functional web applications (or mobile apps in some cases). The barometer for success is having a tangible piece of software that works and is hosted on the internet for all to see - not solving problem sets or passing tests. Students are also exposed to supplementary technologies that are vital to success as a professional developer like Git, the Unix command line, and databases popular in industry like Postgres.

Approachable Technologies

I can already hear the cries from devotees of traditional CS education - "But you're training an entire generation of developers who don't know the fundamentals of programming!". "Languages like Ruby make things too easy, and you can't be a real developer without understanding low-level concepts like memory management and garbage collection". I agree that mastery of low-level concepts and the ability to program in a typed language are both pre-requisites for any serious senior engineer. However, I'd argue that they aren't that important for a junior engineer. I feel that traditional CS education has things backwards and can learn a few things from the progression of education in some of the other sciences.

Take Physics, for example. The first things taught in most physics classes are traditional Newtonian Mechanics and Kinematics. As students progress, they discover that the concepts they learned are not true representations of reality, but are actually approximations. Students then learn about how things really work with more advanced concepts like Quantum Mechanics and Relativity. I don't hear professional physicists complaining that their field is being overtaken by posers because high school students aren't learning these topics first. I feel the same thing should be true of Computer Science, and just because students start with approachable programming languages that abstract away low-level concepts doesn't mean that they can't go back and learn these things later. Starting with languages like Ruby and JavaScript makes junior developers more immediately productive on the job, makes learning more approachable, and makes the process more fun.

The Job Market

Of course, all of the educational innovations leveraged by bootcamps that I've discussed above would mean nothing without a thriving and growing job market for junior developers. Bootcamps really work because there is such a major shortage of software developers in the most important tech hubs like San Francisco, Los Angeles, and New York. Companies are willing to take on incredibly green bootcamp graduates with minimal skill-sets and train them up themselves because they have nowhere else to look for talent. Sure, if there is another bubble like the one that crashed the tech industry in the early 2000s, there will be no place for these bootcamp graduates to go. While I'm no economist, and even if I were you should probably take any prediction I might make about impending macroeconomic events with a massive grain of salt, I can speak to the current job market and say that things in the present don't look to be slowing down at all. There is massive demand for developers, and companies are still willing to take chances on motivated junior devs with the demonstrated ability to learn quickly. According to the 2016 Stack Overflow Developer Survey, bootcamp grads might actually be making more than their peers with traditional CS B.S. degrees. Also, even if you are incredibly unlucky and happen to take your bootcamp just before an economic downturn in the tech industry, the contraction in the job market that would follow would almost certainly be temporary. Software Engineering is one of the few fields that can be relied on to continue to experience substantial growth over the coming decades, as the software automation that this field propels will cause many other professions to shrink or disappear.

Cost

Participating in a coding bootcamp certainly requires a significant financial investment and is a major life decision. With an average tuition of $11,451, these programs are not cheap. However, compared to a college degree, graduate school, or many other professional training programs, the ROI here really is incredible. In case I didn't make myself clear enough earlier, let me reiterate: attending a coding bootcamp does not guarantee you a job as a developer, no matter what anyone tells you. That being said, if you have the ability and determination to learn the material and are willing to hustle, you will find a job within a few months of completing a program. With salaries for high-level bootcamp grads in San Francisco starting at over $100k, this investment can be recouped in very short order. Again, here there is no comparison to undergraduate or graduate degrees when it comes to cost. Many people come out of college or grad school in debt hundreds of thousands of dollars. This is not only from higher tuition costs, but also from living expenses incurred during school. If you reasonably set aside $5000 to support yourself while you attend a bootcamp and look for a job afterward, you probably have to multiply that by 10 for a 4-year degree. Also, this is not even taking into account the opportunity cost of the time you could spend working and earning while you are in school. Bootcamps present a fairly low opportunity cost compared to college given the disparity in time commitment.

When I set my sights on learning to code and becoming a professional software developer five years ago, there was one thing that I was seeking from the job above all else - freedom. When I graduated from college with a B.S. in Neuroscience, I knew next to nothing about software and had never written a line of code. I took a job working in a Neuroscience lab at UCSF hoping to prepare myself for a career in science or medicine. After a little more than a year of work down this path, I realized it wasn't for me. While I had tremendous respect for my colleagues and the work we were doing, I was being driven insane by the monotony of the daily work and, more importantly, my entire daily routine. I knew that I needed to find a job that would provide me with more intellectual engagement on a daily basis, and the flexibility and freedom to work for myself and work remotely.

Living in San Francisco, a career in software became appealing to me as it seemed to coincide perfectly with what I was looking for. I met a ton of recent coding bootcamp graduates around the city and saw that they were able to bring their own software creations to life all on their own and command impressive salaries after only a few short months of intense training. After trying my hand at coding and discovering that I actually enjoyed it, I dedicated the next few months to following this process and managed to land a job at a tech company in SF as a full-stack web developer. The job was great for awhile, as I was learning so many new things and working in a brand-new environment. But, after the pace of my learning began to slow and I got used to the new working environment, the same thirst for freedom that I felt before crept right back. I decided to hit the road and find work freelancing. For more than a year now I've been traveling the world while simultaneously freelancing and working on my own entrepreneurial projects, and I've never been happier. Here's why:

When I quit my job at the beginning of 2016 to hit the road and spend the next year living abroad, I wasn't sure what qualities were most important to look for in a semi-permanent location. I'd spent a fair amount of time abroad, but prior to venturing out at the beginning of last year my travel experiences were limited to vacations, a college study abroad program, and a few months spent working in Romania. I didn't have any experience living abroad full-time, and what I soon came to realize is that the qualities that make for a great tourist destination don't always intersect with those that make for an ideal place to set up shop long-term. I've spent time across North America, Europe, South America, and Asia, but when I landed in Medellín it didn't take me long to see that this city is uniquely well-suited for a digital nomad lifestyle. I haven't been everywhere, but I've yet to find a better city for a freelancing foreigner to live, work, and play anywhere in the world - and here's why: