Tired of ads? Enjoy an ad-free experience by signing up.
  • Insights
    This article was written by a TIA community member. Insights pieces undergo the same rigorous editorial process that newsroom-produced articles have.
Ian Tan ยท ยท 4 min read

Coding bootcamps promise industry-ready engineers, but hereโ€™s the catch

coding

Photo credit: Unsplash.

The year 2016 was insane for the web development community. We saw a whole raft of technology making systems-level to browser-level software become stable enough for use in the real world. With that growth came an equally insane drive to hire more systems architects, database administrators, server programmers, and front-end specialists. But the statistics tell us theyโ€™re all still in short supply.

Coding bootcamps, typically four to 16 weeks of intensive coding, promise to turn complete novices into full-fledged, industry-ready engineers. For many recruiters and their talent-starved client companies, that sounds like a dreamโ€”a consistent pipeline of updated software developers ready to be deployed for existing projects at entry level, where, arguably, the shortage is most pronounced. With todayโ€™s frameworks and technology, itโ€™s certainly possible for a sufficiently intelligent novice to hack a working app together in a couple of weeks. After all, as a self-taught developer, I did the same before we had battery-included frameworks like Rails and Angular to help us along.

But is that really enough?

Peter Norvig once famously said it takes 10,000 hours to reach programming nirvana. Of course, one readily notices that 10,000 hours really is just an arbitrary number, plugged in to illustrate the point that competence is acquired with time and experience. Can competence, itself a nebulous term, be compressed into 10, 12, or even 16 short weeks? Software engineering is a complex field and itself a mere subset of the still more complicated science of computing.

Letโ€™s examine what the modern app requires in todayโ€™s market of super fast iteration cycles and their resulting feedback loops. Letโ€™s start from the bottom:

  1. Infrastructure (servers and databases): This is the โ€œmetalโ€ that all apps run on. One is required to be at least passably proficient with a Linux distribution (Ubuntu or a Red Hat derivative), SQL database administration and design, and one of HAProxy or Nginx (most of the time, both). As the product grows, one should have at least a working understanding of how to operate containers (LXC, Docker, Kubernetes, and Swarm) and their accompanying orchestration tools, a career path of its own.
  2. Security: A basic understanding of encryption standards and protocols, along with a grasp of iptables and firewalls, as well as the many networking fundamentals (subnets, networking interfaces, sockets, message queues, and centralized logging) required in the distributed age is required.
  3. Continuous integration: Not so long ago, it wasnโ€™t a crazy idea to run a production app without at least an out-of-the-box Jenkins installation unless you had a massive code base. In 2017, pushing code to a production branch without a solid build and automated testing pipeline would be considered insanity in the highest degree.
  4.  Back end application (provides an interface for front-end applications to interact with the database): Itโ€™s typically written in a general-purpose language like Java, Python, PHP, or Ruby and accompanied by a framework to help do away with the tedium of handling the request-response cycle and database queries by hand. REST is still the gold standard, but GraphQL is hot on its heels.
  5. Front-end client: The user-facing part of the app thatโ€™s written in JavaScript, but possibly with one of the wildly different frameworks currently available to the modern front end engineer. De jour frameworks and libraries include Angular, React (and cousins Vue, Inferno, and Preact), Ember, and Polymer, each with its own set of quirks and gotchas.

I think itโ€™s basically impossible for any person to absorb this much information in a couple of weeks or months. Implementation, even of an MVP of any one of these five big umbrellas, takes experience. The best way to learn is to get stuck, seek help (seeking out the advice of a more skilled engineer, research in both academic resources and the more common StackOverflow, etc.), and then solve oneโ€™s own problem. It isnโ€™t possible to obtain this experience by following a preset syllabus, no matter how well-designed it may be. Further, these five areas of expertise flagrantly ignore the most important of all: the first principles of computing and systems design.

Because no two problems a software engineer faces in his or her career will ever be exactly alike, he or she cannot possibly rely on a couple of canned responses, ready to be deployed on-demand. This requires the engineer to understand the big picture; in other words, how computers (or in this case the web) really work. It demands an almost intuitive understanding of the webโ€™s protocols (HTTP, request-response cycles), algorithms, and data structures (yes, calling Array.prototype.forEach() is not always good enough, and Objects do not solve all your problems), and most importantly, the challenges of deploying computer programs at scale.

For me, software engineering is a form of craftsmanship. It is quite unlike a white-collar profession, where an intimate but ultimately theoretical knowledge of human anatomy or the laws of intellectual property might reinforce the practitionerโ€™s divine status. The most respected in the software engineering industry have earned their stripes the hard way: by creating, failing, refining, then creating again in an endless pursuit of the holy grail.

Speaking to myself as much as I am to those just getting started in the field, I say, let us not forget what we are and what we aim to do. We are makers, builders, and dreamersโ€”artisans in the purest sense of the word.

Everyone has to start somewhere and a boot camp is a good starting point. Consider all the alternatives, and if you decide that a boot camp is the best for you, pursue it. But if youโ€™re looking to go from zero to 100 in 16 weeks, I would like to remind you that Drake was only exaggerating, as rappers do.

You wonโ€™t be able to take on an existing valuable project and grok the code base in two days. Your senior developers will have to hold your hand or youโ€™ll have to fumble around until you, at some point, get the hang of it, or go back to looking for a new job. But with enough persistence and determination, you will get thereโ€”boot camp or not.

Editing by Charmaine de Lazo

Stay ahead in Asiaโ€™s tech landscape

You've reached your 2 free content limit for the month. Sign up for free to read the full story.

๐Ÿ„ For casual readers / ๐Ÿ‘ถ Free

Basic

US$0

Free forever

Get instant access to this article and more every month

0 premium content

Unlimited news briefs

5

5 articles

Ad-free reading experience

Just US$0 per day

โŒ›Sign up in 20s. No payment details needed.

๐Ÿ“– For learners / ๐Ÿ‘ Starter

Lite

US$4.92/month

Billed annually at US$59/year

Get instant access to this article and more every month

4

4 premium content

Unlimited news briefs & articles

Ad-free reading experience

Just US$0.17 per day

Cancel anytime

Our subscriber community includes professionals from these companies:

Stay updated on the go with our mobile app.

Get latest insights with smoother, more personalized experience through TIA mobile app.

TIA Writer

Ian Tan

Product Engineer | Recovering founder | Passionate about coaching, entrepreneurship and technology