Many of us programmers have a curious personality deep inside. New things are like a toy box to us that we have to open and explore. However, daily life is not always like that. Instead of looking for new things we can end up repeating routines even when there is a need to leap outside our comfort zone. When I notice that I am getting into a rut, I start to fight against it by actively developing myself.
When I surprise myself to find I am out of my comfort zone, I notice that it had arisen over time as if on its own. It was easy to work with familiar issues, but at the same time the work had become boring. Coding was routine, and didn’t provide enough of a challenge.
As application developers, we are above all professionals at problem solving. The journey to leave the comfort zone began with the realisation that it is useful to think about solving problems from the perspective of problem solving. Could something be done better?
Learning new things is inspiring
Familiarising yourself with new programming languages is one good way to challenge yourself. You can compare it with travelling and learning about new cultures. When, for example, I moved to Norway, I missed the fields I was used to seeing when filling in my tax return, but at the same time I was asked whether I had owned a power plant during the previous year. Perplexing, but interesting.
With a new language, you cannot solve old problems in the same way as before. When you have to think about how things would be different, you notice lots of new ways to do familiar things. The joy of success strengthens self-confidence and inspires you to develop a solution.
Old-new functional programming - dare to try it
Programming languages change all the time. For example in the past few years, interest in functional programming that dates from the ‘60s has brought a breath of fresh air to other programming languages. The basic idea of functional programming is essentially simple: programming is carried out by defining a group of functions and the structure of the program is a group of mathematical statements.
Ideally, the functions operate alone on the data that is entered into them, and generate a result just on the basis of this data; no ifs or buts. If the function plus adds two numbers together, then the result of the statement plus(1, 2) is always 3.
I inherited a phobia about mathematics from my school-days and I know that there are many that shared that fate. Functional programming can sound very abstract to the ear. However, there is no need to fear mathematics. The trick behind functional programming is that when we are developing an application, we can be sure of how it will work and can certify that it does work too.
Towards new languages
At the beginning it can seem difficult, for example, to know what programming language to learn and where to start. It feels that change is just constant. However, it is comforting to know that all the basic issues do not change. In just the same way as when learning spoken languages; even though the grammar and words are different, being able to speak another language is useful when learning a new one. I believe that during the next ten years, we will certainly see a lot of different ways to develop applications, but most probably we will still use the sorting algorithms invented 60 years ago.
From my own experience, my hint would be that it is worth starting with simple things when learning a new programming language, even if you are an experienced programmer. This could be, for example, converting data from the interface of some service you use into a form that is useful for you. I have listed below some programming languages that I think are interesting as well as websites that have tasks you can start to solve.
Programming languages that are worth getting to know:
- If you are a front-end developer, and you are familiar with React and Redux, try the Elm programming language; you can even try this in a browser.
- On the .NET side there is F#, with which you can integrate C#/ into other .NET projects.
- There is also the very popular Clojure that is related to these and works with Java on JVM and can be used to develop both back-end and front-end applications.
- I cannot recommend Python or Lua too highly.
Interesting problems to be solved:
- Project Euler - mathematics related challenges
- Rosalind - challenges related to bio-informatics
- Code Abbey - challenges related to computer science
Project Euler: https://projecteuler.net
Code Abbey: http://www.codeabbey.com
Written by Stefan Rimaila