Talking ‘Bout Language

The majority of today was spent working on our new daily project — creating a complete JSON API — which I’ll plan on breaking down more in a future post. Instead, today I wanted to recap on the presentations and discussion we had around our final leg of the course — language specialization — which we’ll be starting next week.

We have three options to choose from for our final month (excluding ‘Career Services’) language focus— Java, Ruby, and React. As I’ve mentioned in a previous post, I’ve narrowed down my choices to include Ruby and React (with a strong leaning toward Ruby). To gear us up for the decision-making process, our instructors capped off today’s class with a breakdown of the languages — a bit of their history, where they’re used, and pros/cons.

A brief sum-up of from the conversation:

RUBY:

  • Developed by Yukihiro “Matz” Matsumoto
  • Created to be fun to work with and beautiful
  • Can be used to automate infrastructure
  • Contains meta-programming (basically allows you to write code that can write code)
  • Utilizes ‘Rails’, which is a very high-functioning database-driven, web-application framework that supports Ruby and contains a lot of tools designed for programming efficiency
  • Pros:
  • Fast at allowing for changes (doesn’t need to compile code beforehand)
  • It’s a scripting language (requires you to write less code)
  • Has a huge community that is active, welcoming, and supportive
  • Allows you to build things quickly
  • Good documentation and learning resources
  • Cons:
  • Hit it’s peak in popularity and is now in a sort of plateau point
  • Not necessarily the most immediately marketable in the job market
  • Not good with game or mobile app development
  • Not good at queuing systems and streaming data

REACT

  • A library (set of tools) of about 30 functions that work to enhance JavaScript
  • Developed by Facebook
  • It essentially serves one purpose — taking an object and translating to a view
  • It ONLY acts on the ‘View’ layer of the Model View Controller (no back-end)
  • Pros:
  • Fastest to change
  • Builds on all of the JavaScript fundamentals we have in place
  • Very popular (and maybe trendy?) technology right now
  • Offers great tools and can extremely enhance your front-end output
  • A lot of jobs in React at the moment
  • Cons:
  • Turbulent ecosystem (new libraries coming in to compete)
  • No back-end interaction
  • Very verbose

JAVA:

  • A mature, object-oriented language that has static types
  • It uses a compiler, which requires you to compile your code to another technology the machine can read (as oppose to Ruby which runs code during run-time)
  • It’s used a lot in Enterprise Software for larger companies/orgs/agencies (government, bank, etc.). Google and Apple both use Java as do many technologies working in the field of Artificial Intelligence
  • Pros:
  • A lot of good resources (especially resource books created for higher education and case studies of uses)
  • Endless job opportunities for good Java developers because of all the entities that utilize the program
  • Has amazing performance metrics using the compilers
  • Cons:
  • Most Java positions require you to have a more foundational understanding of algorithms and data structures, which can be more challenging for a Junior Developer without a Computer Science background
  • Extremely verbose
  • Time-consuming to change and observe code changes as you have to wait for all code to compile even for a small change

I still think I’m going to stick with my gut feeling on Ruby (though am not signed and committed quiteeeee yet). I’ve heard from so many folks who are super passionate about the language (including my two instructors) and stand by their declaration that learning Ruby sets you up to be a better programmer in every language moving forward. Have to make my final decision by Friday so will let you know what I decide then!

Song of the Day: “Coming Home” by Leon Bridges