Q. Which language should I learn?

This post is part of a series of questions that have been asked at previous GDC Meet a Mentor events. For the complete list of questions please see this link

Q. Which language should I learn?

A. We are often asked this question so I decided to put it out to some of the brightest minds in London – the Software Craftsman community. Here are some of my favourite responses:

Sandro Mancuso – leader of the LSCC

“1. Choose something you enjoy: Traveling, sport, music, photography, games, whatever.
2. Choose a mainstream / popular language: Java, Ruby, Scala, Python, etc.
2.1. If you are 100% sure you want to be a developer and already know (well) a mainstream language, feel free to stretch yourself and choose whatever language you like.
3. Build an application (pet project).

Choosing something you like will make software development even more enjoyable and will help you to come up with ideas to keep you busy and excited. Choosing a mainstream or popular language will make your like easier when you get stuck and need to google or ask for help. Building a pet project will give you exposure to (almost) a full software development life cycle, that means, put ideas together, define requirements / features, usability (even if the client is another computer / system), the code itself, persistence (if any), deployment (or an executable), testing, configuration, etc.

The cool thing about a pet project is that you are your own boss and you decide how and what should be done next. And you don’t need to finish anything. You can just enjoy yourself.

That worked well for me when I started. I wrote the same application (pet project) in five different languages, making it better each time, in terms of code and features. At least, that’s what I like to think. :)”

Hari Kumar Singh

“If you are just getting started, I’d highly recommend Python (it’s not just a scripting language!  Many full executable, graphical programs have been written in it!).  It has an easy installer for windows (search for Active Python) so you can get started quickly and a very convenient command line environment for testing out little bits of code.  It’s also one of the most concise, elegant and well thought out languages I’ve ever seen and has many 3rd party libraries for everything from scientific stuff to audio/video manipulation to web and more.

With regards to the working world, I’d recommend these based on prevalent stereotypes:

Websites, especially blogs, media and non-corporate, open source stuff and web apps: PHP (mandatory, I’m afraid), and/or Python (my favourite, I wish it were more prevalent), Ruby (you’ll either love it or hate it, I’m told)

Corporate web, financial sector (web or otherwise): ASP.NET or Java (financial especially) (don’t like either of these personally!)

Software, especially games: C/C++.  Again Python and I guess Lua are making headway here.

Apple: Objective-C

Other mobile: Java

Keep in mind with the web, you’ll also need to understand HTML, CSS, and Javascript.  If you are doing anything serious, you’ll want to start with a framework like Django (python) or Symfony (PHP) which is a whole other can of worms! The web is the worst, IMHO, for the number of things you need to be aware of to be good.

Anyway, I’d recommend just getting started and learn from example and trial and error as much as from textbook.  Come up with a project and commit to complete it.  It will force you to learn things you might otherwise have missed.”

Miroslaw Sommer

“It depends on what you want to do. Do you want to become a very good programmer? Then start with more abstract languages like LISP or SCHEME. If you are really interested in some serious skills, include assembler – knowing how software ties to hardware on the opposite end of abstraction is very handy. Learn principles first and focus on how to make a solid program, rather than focusing on how to achieve a goal in a particular language. Then move on to a language of your choice, depending on the are of interest. Graphics and games? C++ and Python… Web? Start with XML and Java/C#, then expand to HTML and JavaScript…”

Samir Talwar

“”What languages should I learn?” is an interesting question. What I usually tell people is to learn one of each. There are various different types of languages, and once you know one of a certain type, you’ll be able to pick up the others easily.

Here’s some examples.

Imperative: C, BASIC
Object-oriented: Java, C#, C++
Functional: Haskell, OCaml, F#
Web: PHP, Ruby
Scripting: Bash, Python, Perl

You’ll have noticed that types do cross over, so some languages may have their fingers in more than one pie, but they all tend to aim for one or two. For example, I’ve listed Ruby under “Web”, but it’s quite functional, follows OO principles quite well and can be used for scripting. Python is the same. I’ve seen people write very imperative Java and very object-oriented C. Nevertheless, the styles taught in university and in books for these languages tend to follow the categorisation above.”

@RecWorks

This post is part of a series of questions that have been asked at previous GDC Meet a Mentor events. For the complete list of questions please see this link

The GDC Meet a Mentor events are being organised and run in association with the team at RecWorks Ltd. An IT recruitment consultancy aimed at spotting and developing technical talent with a focus in Java and Graduate developers.

One thought on “Q. Which language should I learn?

  1. […] Q. Which language should I learn? […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: