Don't Be a One Trick Pony

From Programmer 97-things

Jump to: navigation, search

If you only know $LANG and work on operating system $OS then here are some suggestions on how to get out of the rut and expand your repertoire to increase your marketability.

  • If your company is a $LANG-only shop, and anything else treated like the plague, then you could scratch your itch in the open source world. There are many projects to choose from and they use a variety of technologies, languages, and development tools which are sure to include what you are looking for. Most projects are meritocratic and don't care about your creed, country, color, or corporate background. What matters is the quality of your contribution. You could start by submitting patches and work at your own pace to earn karma.
  • Even though your company's products are written only in $LANG for reasons that are beyond your control, it may not necessarily apply to the test code. If your product exposes itself over the network you could write your test clients in a language other than $LANG. Also most VMs support several scripting languages which allows processes to be driven and tested locally. Java can be tested with Scala, Groovy, JRuby, JPython, etc. and C# can be tested with F#, IronRuby, IronPython, etc.
  • Even a mundane task can be turned into an interesting opportunity to learn. The Wide Finder project is an example of exploring how efficiently you can parse a log file using different languages. If you are collecting test results by hand and graphing them using Excel, how about writing a program in your desired language to collect, parse, and graph the results? This increases your productivity as it automates repetitive tasks and you learn something else in the process as well.
  • You could leverage multiple partitions or VMs to run a freely available OS on your home PC to expand your Unix skills.
  • If your employment contract prohibits you from contributing to open source, and you are stuck with doing grunt work with $LANG, have a look at project Euler. There's a series of mathematical problems organized in to different skill levels. You can try your hand at solving those problems in any languages you are interested in learning.
  • Traditionally books have been an excellent source for learning new stuff. If you are not the type to read books, there are a growing number of podcasts, videos, and interactive tutorials that explain technologies and languages.
  • If you are stuck while learning the ropes of a particular language or technology, the chances are that somebody else has already run into the same problem, so google your question. It's also a good idea to join a mailing list for the language or technology you are interested in. You don't need to rely on your organization or your colleagues.
  • Functional programming is not just for Lisp, Haskell, or Erlang programmers. If you learn the concepts you can apply them in Python, Ruby, or even in C++ to arrive at some elegant solutions.

It is your responsibility to improve your skills and marketability. Don't wait for your company or your manager to prod you to try your hand at learning new things. If you have a solid foundation in programming and technology, you can easily transfer these skills into the next language you learn or next technology you use.

by Rajith Attapattu

This work is licensed under a Creative Commons Attribution 3

Personal tools