I have been a Java developer for the past 5 years and working in a single stack has its own merits and drawbacks. We will be an expert in the language and platform but we would never reason about the way it is. I joined Thoughtworks some 6 months back and everything got changed. The way I think about languages, devops, testing, TDD, Agile.
Suddenly I was exposed to ROR, R, ReactJS, Shell Script, NodeJS, Scala, Chef, Ansible and I was shaken at first by the amount of learning curve needed sans this Agile, TDD practice (it is a separate story). Each and every platform comes with its own set of tools for Testing, packaging and deploying them. To be frank, I have never read like this before, even at college times and still am trying to catch up with the things. So I thought I could write down the list of things that I need to do to juggle with these languages,
- Write about the technologies, toolset, idiomatic way of doing things in it and write it a lot (github.io, medium). Because its very difficult to keep all these things in mind.
- Compare the languages and always try to reason the feature available in it.
- Get familiarised with the best tool set available for the language and learn the shortcuts in it. I became JetBrains fan so RubyMine for ROR, Intellij for Java, Webstorm for Node. Mostly the shortcuts would be the same and it helps a lot in reading the source code of larger projects.
- Unit testing. I feel this is the best way to develop in a language which we are not comfortable with. Reason is, we ll be tackling the problem in isolation and can easily dig deeper through the api or method. Also its easier to get the result without thinking about other bigger integration issues.
- Look into lot of open source projects and try contributing to them and its a good way to learn the best practices in the language
- Also the basic but important one is we should be able to setup the things in local and try running it successfully. It gives more confidence and can learn easily by debugging the code.
- Lots of learning materials are available online, both free and paid ones (few are worth spending). I subscribed to codeschool, reactforbeginners (by wesbos), egghead.io, the pragmatic studio. These are very helpful in knowing the basics of the language in short span.
- Watching tech talks and conf videos like reactjs conf, gradle summit, chef summit and many which are in youtube are very helpful.
- Subscribing to the newsletter is also good as the latest information will be given to our inbox and we can read when we get some free time. DZone, thegeekstuff, reactnewsletter are the few that comes to my mind right now.
Hopefully I had curated the list of things to do when being a polyglot programmer and still not diluting the focus on core.