I believe once you have learnt one dynamic language and learnt the fundamentals you can learn any language. Think of it as learning to paint with one hand, and then learning again with the other. Or for a snowboarding analogy, learning to ride goofy and then learning switch or regular. 

There are only four things that are required. 

You can run the code

Code without the environment is just text files, if you were to open up the code in notepad and start to read, it wouldn't really make much sense until the code was run, and you can start to see how the various parts fit together. 

Therefore you are going to need a server and support for the dynamic language you wish to learn. A development environment should be configured to include all the tools you need to debug and step through the code as well. 

So what are you options: 

  • WAMP/ XAMP/ BAMF good for your first experiments with code, but at this stage this is seriously pre-school stuff 
  • Virtualbox/ vagrant the opposite end of the spectrum, big boy toys; highly configurable, when used in conjunction with puppet and ansible can help you to spin up perfect carbon copies; locally, staging or production. Warning it's heavy and will make your computer fan spin.
  • Docker lightweight and nimble will allow you spin up any environment (except Windows) and configure to your heart's content. Great for CI/ CD testing as well.
  • Hack you host machine, install the various libraries/ binaries; not so great when you bork your machine and have an important deadline to meet.

You can edit the code

Modern Integrated Development Environments (IDEs) are powerful tools, that can help you get up and running quickly. Not only do IDEs bring colour to your code, that draw your eye to variables, functions and control structures, but they can bring Intellisense too! 

Intellisense can document the wider code's in built features, via code prompts. In the same way It can also be used to document your own code. If you correctly provide code doc blocks the IDE can intelligently work with these and provide you with prompts; helpful suggestions as to what a method is expecting to accept. 

Want more understanding, you can click through and see the method and start to understand how the system fits together as a whole. This helps other developers understand and developer quicker. The article image, above, shows VS Code providing such helpful prompts and help.

IDE plugins can further help you write code. Lint plugins can analyze source code and identify potential issues, errors, and style inconsistencies. Code formatting plugins can ensure that your writing style is always on point and enforce common standards across a team of developers. Version control plugins lets you manage your code repository, highlight changes in your index, commit pull and merge code. Vulnerability plugins can for example check base docker images and inform you of recently discovered problems. 

You can debug the code

This is probably the most important step in your learning process, it's only when you step through you code, jump in and out of methods, functions or classes that you truly understand how things fit together. 

When you are really stuck understanding a problem, then debugging is your lifeline. You might think the result of a process is that the variable is set as `10` but only through checking each step you might find that variable is incorrectly set to `ten`.

I've worked for organisations, that developed their code base, paid little attention to documentation, or even retaining their original developers. 

You are left with a monolithic monster that only 1 or 2 people in the organisation can understand. When you are in this position, with new members of staff coming and going, the only option is to get up to speed with debugging, quickly.

The quicker you can train your staff to debug, the more productive they become.

You research the hell out of it

That's the end of the technical solutions that can help you get up to speed with new languages quickly, now it's down to your hard work, grit and determination. Sure you will hit bumps in the road, sure you will land face down in dirt. Pick yourself and try again. 

Remember you will need to: 

  • Read manuals, online help documentation  
  • Ask questions 
  • Watch online tutorials
  • Speak to colleagues

My next article Supporting a Classic ASP Application will detail how I used each of these steps to learn a dead language, Classic ASP. A legacy Microsoft product that was similar in approach to PHP4 and fore runner for .NET development.