For students starting out at Launch School — particularly those with no prior web development experience — this is a common question. While projects in the early courses are actually quite impressive, they only execute in the terminal, something many outside of the programming world know only as the scary black screen that hackers use in movies. For those of us who are new to the field, this feels light years away from a flashy website — both aesthetically and architecturally, as many of us are pretty clueless as to how writing pure Ruby that executes in a terminal could ever translate to deploying a usable website.
Worse, the trend of bootcamps and project-based training programs, where people seem to be launching “real” websites in days or weeks, can make the slow path to mastery feel, well, slow — even for the most ardent believers. So it’s as much a question of when can we do this, as it is a question of why aren’t we able to make websites earlier in the course. Often it’s a point of contention amongst family and friends, who question why it is taking us so much longer than other programs for us to be able to produce something “real.” And as a newbie, there’s not always an easily to articulate answer.
In my opinion, the question itself conceals several distinct issues. Perhaps the easiest to address is the comparison with other programs: why does Launch School take longer than bootcamps to go “beyond the terminal”? Of course the answer is mastery, learning the fundamentals, etc. But even when we appreciate this, it can feel vague or trite. I’ve found I have the best luck when I explain via the analogy of learning new human language.
If you are planning on taking a 3 week vacation to France, you might opt to do a month-long language course that will teach you how to order food, ask for directions, and buy items at the local market. It is likely that in that amount of time, you could become quite proficient at those tasks — proficient enough to easily navigate all of the circumstances that you will encounter in that trip. But how would you actually asses your knowledge of French? Could you conjugate a verb? Could you organize a completely new sentence, based on an authentic understanding of the syntax? Might you unwittingly be conveying subtle things that you didn’t intend, by slight misuses of words or phrases? If you suddenly had an entirely new situation arise — say, you stumbled on a cobblestone street and needed to see a doctor, would you be able to simply look at a dictionary, learn a few new words and be able to successfully communicate your predicament? Would you be able to pick up a newspaper and understand what it said? Of course not. Fluency in a human language is complex — even if superficial memorization of some key phrases is fairly simple.
Well, the same is true for computer languages. Sure, if you want to, you can quickly find a how-to guide online that will walk you through setting up a simple website. But you won’t understand what you are doing. If it breaks, you won’t know how to fix it. That’s not to say you can’t learn those things, but it’s going to be a much longer, harder road to learn as you go — and potentially embarrassing and not especially great for your career if you are still learning fundamentals on the job. Just as being able to successfully order a baguette isn’t an indicator that you are fluent in French, being able to make a basic website isn’t necessarily an indicator that you are fluent in web development.
Moreover, if you have such a minimal handle on French, but decide mid-way through your trip that you would like to go to Italy as well, you’re going to be completely out of luck. Your limited knowledge of French isn’t likely to serve you any better than if you knew no French at all. For web developers, languages come and go — but they share a lot more in common than most human languages. If you only have a superficial understanding of one language, it isn’t going to help you much when the time comes to learn another — and that time will come if you intend to have a lengthy career in web development or programming. But if you have an authentic understanding of how computer languages work, if you understand how to “think” like a computer, you are already set up to succeed in adding new languages to your skill-set.
I’ve found this analogy, though imperfect, to be helpful in explaining to myself and others that, yes, some other schools do produce superficially impressive results more quickly, but for those of us who want a lengthy career in web development, that really isn’t the metric that we ought to be looking at. Additionally, by rushing the process, there is great risk of learning something incorrectly. If you begin writing code that you don’t actually understand, you are almost certainly going to — intentionally or not — draw some conclusions about what the code is doing, and those conclusions are likely to be incomplete, or altogether wrong. Redesigning incorrect mental models is significantly more difficult than constructing an accurate mental model in the first place; so it just doesn’t make sense to introduce more advanced topics until we have really got the mental framework to properly understand them. Thus, at Launch School, we don’t get to do a lot of the “exciting” things early in the curriculum because, while it might be exhilarating, it would actually be counterproductive.
The second complexity that is hidden in the “when can I make something real?” question is the stark difference between front end and back end web development. Few people outside of the programming world even realize this distinction exists, and almost everything that users experience in a meaningful way is purely front end code. People notice the colors and layout of a site, but the concepts of servers and databases are essentially meaningless to casual users. And none of these public perceptions are likely to change, even when you are a working developer.
Since Launch School’s focus is on back end web development, if that is the path that you wind up pursuing after graduating, when people ask about your job, it is likely you will get a lot of blank stares and awkward subject changes if you decide to go into any detail about a specific task you are working on at any given time.
I actually think this is something that we as an industry need to improve upon, because increased internet literacy will help people better understand some of the complex debates arising out out of new technology, rather than defaulting to some extremely vague notion of “the algorithm” when thinking about what they really want out of applications and websites. However, I confess, I have yet to master the art of having engaging and digestible explanations of what back end development really is.
Nevertheless, I think this is a relevant point to bring to the “when can I make something real” discussion, because it is important to bear in mind that even when we all (hopefully!) have successful careers, it is very possible our day-to-day work might not seem especially impressive to friends and family outside of the field, since it lacks the visual razzle-dazzle of front end work — so the idea of friends and family not fully appreciating what it is we’re doing is something that we need to learn to get used to.
The third big nuance raised by the “when can I make something real?” question is the hidden motivation for the question. We are so conditioned to think of things as having end-points — finishing a class, graduating from school, landing the job, etc. — and I think there is some sense that once we are able to make a real website, there will be some great “aha!” moment where we magically turn into “real” web developers. I think it stems from this desire for the comfort of finally feeling like we have attained full mastery— even though that’s clearly not how mastery and a lifelong growth approach works.
As someone who has passed the portion of the course where we can finally make something “real,” I can assure you, it only illuminates how much more there is to learn and grow. Of course it is satisfying, finally being able to makes something viewable in a browser, that others can see and interact with in a way that is comfortable and familiar to them. But it’s also so apparent that what we know is only the tip of the iceberg; there is so much more depth and complexity, even when we have reached this notable benchmark in our education. And the thing is, no matter how far we get in our career, this will always be true. This field is immense; no single person will ever know all there is to know, and there is a constant learning curve as languages and technology evolve. So the root feeling motivating the “when will I get to make something real?” question — the feeling that we don’t know as much as we wish we did — is a feeling we all need to get used to because it’s not going anywhere, at least as long as we continue down this path.
For those who have made it this far, thank you for trudging your way through my lengthy analysis of the title question. That was the long answer.
If you want the short answer, it’s RB175. You can make a “real” website in RB175 (at least with course numbers as they are now)…but I hope you found some value in the rest of my analysis!