front-end or back-end? not that i'm biased or anything...

26 Feb 2014

I 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

1 Although I thought I was not inclined towards anything computery at all until I gave it a shot and turned into a code addict.
2 Which are my guilty pleasure.
3 It's one of my goals to at least touch on AWS basics because so many apps and companies use it, but I recognize the depth of our coverage on this topic will really be determined by time and interest.
4 Why? Because Rails is baller. If you don't believe any of what I'm saying here, just google "why is rails so popular" and learn, young grasshopper. Obviously, every language or framework has strengths and limitations -- and we will certainly discuss those in the class-- but Rails is quite often a good choice for web apps.
5 Unless it's just a massive piece of software. Or you and your cofounders have a falling out. Or your test-users hate your product. Or you're inundated with freelance work that keeps you from spending any time on your own app. Or you get distracted by gifs of cats.6
6 Not speaking from experience, obviously. Ahem.
7 Ruby, obviously.
8 Which are all things you can still do with a RubyOnRails application, mind you. And I don't mean that to downplay the value of front-enders or their interests at all, or make the focus of the front-end class seem superficial, because it's definitely not. You can build amazing client-side apps in the front-end course, they just carry a different weight and have different uses.
9 Except your intro should definitely always be Ruby.

Slán go fóill,
Shelby at 17:30