Main image of article How Long Does It Take to Learn a New Skill?
When employers say they need specific skills, job seekers often reply that an experienced IT professional can learn a new language or technology quickly. But is that really the case? It may be if the skill in question is closely related to your experience, but if you’re looking to pick up a new language from scratch the challenge is much greater. There aren’t many programming languages general purpose enough so that when you learn one you may never need to pick up something else. I’m thinking of C# or Java. In my case, I learned Basic in 1976 and for the next five years didn’t need to learn another. I learned Pascal in 1978 but didn't use it until 1983. Then games computers came along in the early 80s and before I knew it, I'd picked up 6502 assembler and three years later Z80. Click here to find software engineering jobs. Through the 90s I learned and used Ada, C++ and C. Since 2000 I’ve used SQL, PHP, HTML, CSS, JavaScript, Java, C#, Go and Python. I've programmed professionally in all but the last two. I've dabbled with Objective-C but prefer Xamarin, which is C# for iPhone and Android. These days you can't be a software developer unless you know at least three languages or associated technologies. If you want to work in games you need C++ with DirectX or OpenGL and C#, Java or Objective-C for mobile. For Web development you need either Java, PHP or C#, together with HTML, CSS and JavaScript. For desktop development you'll need C# or Java, plus SQL. For systems programming you'll likely need C or C++ and maybe a little assembler. If you start with a simple procedural language like C or Basic, you’ll need object-oriented programming and knowledge of inheritance, encapsulation and polymorphism in order to learn another language. You can get that before or as you learn C++, Java or C#. However, you can do a lot of Python without knowing OOP, though it helps.

What’s the Best Way?

For me, the most effective way to learn is to convert an existing program into the new language. Nothing beats finding out how to do things yourself. These days, the Web makes things a lot easier. Sites like Stack Overflow have answers that turn roadblocks into gentle speed bumps. Your learning should include data structures built into the language or added on through libraries. In C you might use pointers, but in C#, Python or Java you get a much wider range of advanced data structures like ArrayLists, Hash Maps or Dictionaries. You should also learn how to manipulate strings and read from/write to text files. Do you know how to hold data in memory? Should you learn SQL or NoSQL databases? Does the new language support generics or templates? There's always more to learn and most programming languages grow more complicated with time. For instance, functional programming techniques such as LINQ in C# (and the equivalent in Java 8) let you write very understandable and elegant code, which always looks good on a resume. And what about threads and multithreading? Designing classes and complex data structures, and knowing how to make things perform faster? Writing relational database software means you’ll have to understand SQL. Yet another technology to learn!

Other Ways

There’s always book learning, but that can be hard or impossible for some. There are people who prefer to learn from video online courses. There are tons of options for that, such as the MOOCs from Coursera, edX or Udacity. I took a Coursera course and learned a large chunk of Python in just seven weeks part-time. I wouldn’t claim to be an expert, but the program gave me a fantastic grounding. Good as this approach is, however, classroom learning is probably the best way to go as you get structure and have answers on tap. However, it can be expensive unless you have a really great employer. This raises a question: How well do you need to know a language to count yourself as proficient enough to go for a job? Recruiters generally measure experience by the time you’ve spent programming during actual work. Gurus like Malcolm Gladwell consider 5,000 - 10,000 hours necessary to turn you into a master.

So How Long to Learn?

Understanding its syntax is the biggest part of learning a new language. For example, to develop iPhone or iPad apps in iOS, you have to understand iOS and what it takes to go from source code to a working application, or at least running on an Emulator. And, you’ll need to know how to set up development tools, a build machine, etc. It's all documented but you can expect to take a few hours, or maybe a day or two or longer, getting to grips with it. Rule of thumb: Unless you’re an absolute genius with an eidetic memory, in a weekend you'll just start to pick things up. A full week with tuition can give you a good understanding, but I believe three months to a year studying part-time and writing lots of code is what you’ll need to really know your way around.  Much depends on how similar the language is to the language(s) you already know. That’s enough reading. Now get to work!

Related Stories

Image: Dice