front-end or back-end? not that i'm biased or anything...
26 Feb 2014I recently had an email from someone I'll be teaching at The Iron Yard in Atlanta who was interested in the difference between the Front-end Engineering course and the RubyOnRails course and which might be more suitable for him. He admitted he's more inclined towards UX1 and also plans to build his own applications from the ground-up. I was really stoked to talk about it because the decision between Rails and front-end is something that comes up a lot, especially with all the hot JS frameworks that help facilitate more completely javascript applications. Here's a slightly modified version of what I came up with and wrote back to him:
I guess the first thing to talk about is something others have probably already stated -- that learning back-end will give you a more comprehensive understanding of development. Yes and yes. So much goes into web applications that the front-end class only covers briefly (in comparison) but that we will cover in detail -- databases,2 integrating with external APIs, client-server interaction, things like Amazon Web Services,3 etc. You'll have an extremely solid understanding of how to architect software and how to think about the relationships between data, which will be invaluable for you as you begin to design (referring to designing how it works, not how it looks) and build your own applications from scratch.
Furthermore, it's important to realize that the Ruby course is not only about back-end (just as it's important to know that the front-end course does cover some server-side, back-endy material). We will delve into how to make your Rails app look and feel good using swish CSS and Javascript, and we will go over the basics of some of the major javascript frameworks and libraries that you'll come into contact with. While different Javascript frameworks are certainly becoming more popular, many applications that use them still rely on a back-end Rails api.4
Also, you will never be limited in the class - if you complete your daily homework assignment early, dig deeper or try to add some ballin' javascript feature. Code is literally your playground, so have fun with it and feel encouraged to explore other code interests, as long as you're meeting the class's requirements. My only caveat is that you will have a lot on your plate with just Ruby and daily exercises, and we will encourage you to explore deeper into the day's topics for fuller understanding and mastery before you toy with entirely new or different material.
Probably the biggest aim of the course, though, or of any course at TIY, isn't to teach you just Ruby/Rails. It's to teach you how to think about code, about full-stack software engineering, about problem-solving. If eventually you decide to do a full-stack javascript application, you will be able to take what you learn from the class and apply it to any javascript framework with a high level of understanding of every piece of the application. At the end of the day, it's not about a certain language or framework you learn, it's about how you learn to think and what you learn to think about.
Also, specifically for those interested in being a tech entrepreneur, Rails is fantastic framework to start with because of the ridiculously rapid and scalable prototyping it allows you to do. After this course you'll be able to spin up an MVP for your company in a matter of days.5 The importance of this from a start-up's perspective is huge. Most of the time and money that goes into app development isn't making the end-product that the user or client will experience, it's making all the versions that they will never see. You may think you know what you want your app to be, but you won't truly know until you've tried a bunch of things you learn that you don't want or that don't work. That fact that you, as your start-up's CTO or lead dev, will be able to rapidly iterate through this long, painful learning process on a familiar, scalable, flexible framework, will save your start-up oodles of dough and frustration. You won't have to contract more and more hours out to backend developers to figure all this out along with you, or to change features constantly as you see what works and what doesn't. You will be able to do it all yourself, and then have a solid blueprint of logic to pass along to front-enders (or do the front-end yourself) to make purty, or to mobile devs to re-package into an iPhone app.
So should you do Ruby or Front-end?7 Both are great courses and share the ultimate aim of making you a solid, flexible programmer and a relentless problem solver, not just of making you a baller Rails dev or a Javascript beast. All the Iron Yard Front-end, Rails, and iOS instructors are absolutely amazing and will do you no wrong. Think about your aims, and what you want to be able to build or help others build by the end of the course. And also remember that these courses are just your first dunk into programming and that they won't limit what direction you take afterward. If you do think you're more designer-minded or you really care about UI, or you just like making things move and sparkle,8 then maybe front-end is your thing to start with. If you're more entrepreneurially minded or getting down-and-dirty with data sounds at least somewhat mysterious and intriguing, maybe your intro to the world of software should be Ruby.9