Skip to content

Focus on Programming

Sometimes I have trouble focussing on a single project. I then justify my behaviour with stuff like “Der Weg ist das Ziel” (the way is the goal). I just like programming. So I investigate as much as I can during my spare time in my quest to find the best tools of my trade. Over the years I have looked into all kinds of programming languages, but the only ones I actually wrote programs in with some sense of certainty are, in descending order of subjective familarity/frequency of use over the years, PHP, (Type|Java|Coffee|Action)Script, Java, C#, C/C++, Python, Java, Delphi, HLSL, Scala, Haskell, Clojure, x86 Assembly (MASM/NASM), Pascal, Go, Ruby and Bash.

There are lot more that I just spend some time in tutorials with, such as F#, Boo, Smalltalk, Common Lisp & Scheme, Ceylon, Objective C, Erlang, Groovy, Lua, ML, OCaml, Dart, Kotlin and Rust. And I’m not going to even get started with domain- and program-specific languages and variations like C-Script, Mathematica, Matlab, R, JavaFX Script, Processing, and so on.

The sheer number of different programming languages out there is mind boggling. Some are more similar to each other, some entirely different. After seeing so much you get the feeling that once you saw one, you’ve seen them all. Knowing the general concepts and theory behind programming (which I spend some quality time with in the library when I wrote my Master Thesis about functional programming), you can learn all languages easily enough, given the time. But syntax isn’t everything. Getting to know the different ecosystems with their tools, libraries, and best practises takes a lot of time and more knowledge than anyone could store in their short-time memory at any given time.

Being able to pick up and understand code in different languages is awesome. But as my patience is getting smaller and smaller productivity is increasingly important to me. To be able to really just knock out an idea in short hours, I don’t want to rely on looking up documentation on every other occasion. Mastering few languages, even if they may not be the best tool for the job or don’t offer the newest trending features inspired by languages that we already had in the 60s and 70s, for me that’s the key to achieving a good “flow”. Getting to a level where you can just seamlessly transform your ideas into code without thinking too much about the techniques or libraries you are using is one of those things that makes programming fun. Maybe even more than being able to play around with new concepts and toys.

I hope I will never grow tired of learning new things and I want to always keep being open-minded. But right now it’s time for me to focus on a few languages that I can use to cover a wide area of problems and be as productive as possible. I’m not sure what languages these will be, they have and probably will change over the years. For me it used to be Java and PHP. But nowadays I’m spending more time than ever in plain JavaScript and Python. In a distant past I almost exclusively programmed in C++.

If I had to choose three languages right now to stick with and master over the next years, I’d go with C++ for systems programming, Python for server-side web programming, and JavaScript for client-side scripting. They are probably not the best tools, certainly not for every job. I can see Ruby ahead of Python in several scenarious, just as there are great alternatives to JavaScript such as ClojureScript or TypeScript. But these are the languages that I feel I could master and which are suitable to cover nearly any use case in their respective domains. If I were to choose one more just for fun, I’d probably go with a LISP.

2 replies »

  1. Yes I suffer from the ‘jack of all trades, master of none’ problem. So much to do, so little time – I have a hard drive full of half finished projects. I have recently decided to become a master of one: Javascript. You can use it to write apps for any mobile device (check out Phonegap), write games for any computer platform or any mobile device (check out Unity) and, of course, it is the De-Facto client side scripting language for the web.
    Mike Smith Icode4u

    • You’re right. You can just do about anything with JavaScript nowadays, thanks to V8, node & co. So I aggree it’s a good choice.

      But another reason I’d choose JavaScript over the host of “compiles to JavaScript” languages is tool support right now. Live Editing your scripts directly in the browser with Chrome Developer tools for example is pretty awesome. I tried to achieve similar things with ClojureScript and its browser REPL, but it just doesn’t work that well (yet). Also the “long” compile times I experienced with some of the others were just unacceptable.

      Finally, I have high hopes for ECMAScript 6. 🙂

Leave a Reply to icode4unet Cancel 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 )

Facebook photo

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

Connecting to %s

My Del.icio.us

%d bloggers like this: