What programming language should you learn?

When I started my career in programming, I was 10 years old and enrolled in a summer computer camp called ACE. I didn’t get to decide what to learn, I followed a strict curriculum: BASIC, Java, C++, with a little HMTL thrown in on the side.

If you’ve made the choice to become a programmer today, though, it seems like it would be so difficult to figure out where to get started…

And man, there are a lot of ways to go about figuring that out. If you search “What programming language should I learn,” you’ll probably find cool images like this one:

Image: http://carlcheo.com/startcoding

Or, you might come across people with very strong opinions like this one on why you should only start with JavaScript. There are also a lot lists, such as “The 9 Best Programming Languages to Learn in 2019,” or “Best Coding Languages to Learn in 2019” (hmmm… such similar titles!). You might even find a quiz!

All those things are going to pose a lot of questions to you about what kinds of projects you want to work on, what field you want to get into, or even how much money you want to make. And of course, those are all very important considerations to make.

I feel like one thing often gets lost, though, when thinking about real beginners: what kind of learner is he or she? How is a true beginner really supposed to know whether they want to get down into the mallocs and pointers with C or abstract everything away with Python and Ruby? Doesn’t it depend on how his or her brain works? I feel like it was good for me to work from the ground up, abstracting as we went, probably because I really like knowing the how and the why of things. Others probably don’t care about that and just want to get to the cutting edge as fast as possible.

I could be way off here, but there needs to be a better way for us to help programmers get started than just telling them what the “best languages” are. And I don’t know what the answer is here, or how to do this practically, I feel like we need to take a closer look at where a beginner is coming from, not just where he or she wants to go.

Sinatra Portfolio Project

After basing my first project on my love of Star Wars, I decided to base the second, the Sinatra project, on another thing close to my heart, my cats. My wife and I have two, Bronx and Coco Villanelle. They’re not related, but they act like young siblings—one moment, they’re cozying up to one another on the bed; the next, we’ll find them roughhousing like little wrestlers.

My wife and I travel quite a bit, so we often have to find temporary homes for Bronx and Coco Villanelle, and we use a service that schedules everything through phone calls and emails—a little outdated in today’s app-dominated world. With that in mind, I decided my project would be a pet-sitting scheduler app!


Ok, let’s take a look at what kind of models our app will have. First, we have to have Users, because, well, people have to be able to login and use the app! And I’m actually going to have to kinds of Users, Owners and Sitters. Here, I’ve made them subclasses of Users, because there’s a lot of functionality they share.

Next, we have Pets. Just as in the real world, a Pet belongs_to an Owner, and an Owner has_many Pets. I know some people have just one pet, but they’re really missing out.

And finally, we have Appointments. Representing scheduled pet-sitting sessions, an Appointment belongs_to both a Pet and a Sitter.