What should I learn? Asking the right questions

So, if you’re about to invest a bunch of time and effort learning how to program, maybe you’ve been wondering: “What’s the best programming language?” If you’re a coding beginner asking that question, you’re asking the wrong question.

Bitmaker instructor and 20-year development veteran Fabio Gelsomini, has contributed this post to our blog about overcoming the ‘what technology’ hurdle.

There’s no shortage of strong opinions on what’s “best” – in smartphones, in life, and certainly in development. Given the number of technologies available to choose from, it’s easy to get overwhelmed. And there’s new technologies every day. The truth is, there has never been – and never will be – one technology that will be the best choice for every situation.

That’s right – there is no perfect technology to master. If you’re an aspiring professional, you should aim to become a good developer through tools that are most suited to your goal of learning, rather than getting tied down learning the nuances of tools that are narrowly focused.

Let’s Clear Up ‘Technology’

Before diving too deep, it’s important to understand two key terms. When we say technologies, we could be talking about:

  1. A Language
    Languages are at the core of programming, since they provide the syntax and grammar to provide instruction to a computer. You can use several languages together to help you reach particular goals.
    Ex. Ruby, JavaScript, or Python
  2. A Framework
    A framework provides some form of structure to help pre-wire various components together to achieve a larger goal faster. Since frameworks are written in (and use) a particular language, you’ll need to start by learning a language.
    Ex. Rails, React, or Django

Your goal: Learning!

Now that you have some terminology under your belt, a good start would be to set some learning goals. When you’re just getting started, your goal should be to become good at development, rather than getting tied down learning the nuances of specific tools.

Getting tied up in nuanced tools is a very common trap we see newbies fall into. Students hear about a trendy technology and end up learning techniques that are so specific to that technology that they have no idea how to translate principles to other projects. Often there are other tools available that may be better for the job.

Worse still, this approach will often result in hitting a career wall sooner rather than later. A good rule to have when thinking about new technologies is ask yourself: “Do I know what problem this technology is trying to solve or why it exists?”. If the answer is no - you’re probably not ready for it.

Flashy Usually Isn’t Practical

A great analogy that supports avoiding faddish tech is learning how to fly an airplane. A prospective pilot can visit any flight school in the world and likely have their training conducted in a 1970s Cessna. It’s not the sleek, modern machine you envision from Top Gun, but there are very good reasons why it’s used as a trainer and ends up being the world’s best selling airplane, even for experienced pilots.

The Cessna is controlled the same basic way that any larger, faster plane is controlled, serving as a stable platform to learn flying fundamentals that translate to any airplane: takeoffs, landings, banking, and so on. When pilots look into owning a plane, they often want something more complicated, though upon researching realize it’s unnecessary. A modern, more complex plane may impress people, but incurs higher maintenance costs and offers features that will likely go unused

Don’t Overthink It

Regardless of where your development journey takes you, just remember languages and frameworks will come and go. They always have, and always will. For us, teaching Ruby and Rails provides beginners a stable and well-used platform that focuses learners on the most-widely adopted design patterns. When it comes time to learn front-end interactivity, we teach JavaScript, since it’s a great use case for the technology.

In my career, I started in languages such as Perl, Java, or C++, and moved on to languages that were much better suited for web development such as PHP and JavaScript (among others) before long. Today I use a combination of technologies from Ruby, Rails, and PostgreSQL to JavaScript, Node.js and MongoDB based on the project’s goals. A good developer can pick up a new language or framework easily – you just need to learn the fundamentals well.

If the core concepts are taught well, it won’t matter what language and framework you learn. It’s just the first step everyone needs to take on the way to flying a jet!