Many of us programmers have a curious personality. New things are like a toy box to us: we just have to open it and explore. However, daily life is not always like that. Instead of looking for new things we can end up repeating routines. When I noticed that I was getting into a rut, I started to fight against it by actively developing myself.
As application developers, we are above all professionals at problem solving. The journey to leave the comfort zone began with the realisation that it's 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 of challenging 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 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 share 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 to know which programming language to learn and where to start. The change can feel overwhelming. However, it's comforting to know that all the basic issues do not change. In just the same way as when learning spoken languages, being able to speak another language is useful when learning a new one, even though the grammar and words are different. 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.
Based on my own experience, I'd say it's 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