Ever wanted to get to know some of the thoughts of a front-end developer? Here you get the chance. This is an interview I made with puppy-owner, motorcyclist, and very dedicated developer - Niklas Rasmusson.
Tell us a bit about yourself - who are you?
My name is Niklas Rasmusson, and I'm a front-end developer.
At what age did you start programming?
Quite late actually. I've always been interested in technology. But I used to be more of a consumer than a producer.
In high-school I did some stuff in Flash. But it was not before I was 21 years old that I started to program in any extent. The fact that I started programming at that age made me stressed out for years. To mitigate I did spend 2-4 hour of my free time a day to expand my skills. Learning programming concepts as model-view-controller, test driven development, and such. Concepts that was lacking from my education as it was design-centric rather than programmer-centric. I enjoy working with people I look up to, it makes me learn to be a better developer. I also like to share my knowledge and skills.
What are your passions, outside programming?
I like to ride my motorcycle. (Which I crashed, oops!) I also like to spend time with my girlfriend. We recently got a puppy!
And video games - a lot of video games. But it comes and goes.
What type of programs do you mostly write? At work and outside work.
At work it is always web. Mostly front-end, as I work as a front-end consultant. Some PHP, some Java, but mostly front-end. There is a high churn of frameworks in the world of front-end nowadays. And it takes a whole lot of energy to keep up. To keep up I read blogs and Reddit. Also some Twitter. I listen to podcasts while I commute. And about 1-2 times a year I attend conferences as Nordic.js.
I do not do coding very much outside work anymore. Mostly small things. It is hard to find the time and energy for larger projects.
At home I do some small experiment to test out new frameworks and languages. Recently I have checked out Python. I like it as it is a more versatile language than PHP, which is more bound to its roots in the web-world. I like to learn how to use new frameworks and tools. My goal is often to find tools to get a better workflow at work. Right now I'm creating a plugin for my editor. It is written in TypeScript which gives me a chance to test that out.
Which programming languages do you use?
Do you think that your way of thinking has changed in any way as a result of you having learnt programming?
It took me while to grasp this - but the main thing is to be able to break down problem into tiny pieces and then build your solution. This realization really changed my outlook to a lot of things.
For example: You have a door. How do you open the door? Well, you need a door, a handle. Perhaps the door is locked. This way of thinking really changed my perspective.
Do you have any advice for a person who want to become a software developer?
For me, at first I was a little bit too competitive. Perhaps the competitiveness was something that I picked up while doing sport.
The main thing is - you got to be humble. To be able to share your perspective to others. You must realize that you will not be able to solve a problem as good by your own as you can together with others. And again, this is a question of being able to stay humble.
You need to be thinking critical about yourself. I used to become angry when something I had coded did not work as intended. I thought I had done the right think. So, why did it not work! But even though I thought I had implemented the code correctly, the fault was in my code.
You should invest that extra time to get to understand what is really going on. It can be hard when you use a lot of frameworks. But you do not need to understand the complete implementation, but the concepts. Suffice to say, a 5-minute tutorial won't do.
Do you have any favourite programming languages?
I want to try some pure functional languages in the future, as Haskell. But I don't really have the time for the moment.
Python is nice, with its list comprehension and stuff.
Do you have any favourite programming tools?
I use a lot of tools. debuggex.com is nice for visualizing regexp. Of course, as a front-end-developer I use many different front-end building tools. They are always very helpful.
I like to customize my editors for maximum productivity. I used to use Sublime, but now I use VisualStudio Code. I fix the keybindings, plugins and such.
A editor plugin that saves you minutes, or even hours of your work can be very valuable.
And, of course, I use git.
Any pet peeves? For indentation, code structure, programming styles, programming languages, etc?
I do not like functions that do not return anything. It gives off a bad smell saying "oh my god, so many side effects!"
Your code get more easy to follow and test if you write mostly side effect free functions.
Earlier today one of my unit tests did fail in a strange way, and the root cause was a hidden state change in the mock-up code. This would not have happen if the mock-up code was conforming to the principle of immutability.
What kind of personality traits do you think is valuable for a programmer?
Think about your code as critically as you can.
You must have a technical interest.
You must be able to dig deep into a problem. You can not leave things to chance.
Is there any interesting project that you are a part of, and want to tell us about?
Not for the moment. I'm developing a slack-bot for me and my friends slack-channel called Ernst (after a Swedish TV personality). It has got a few nice features. It can spew Ernst-quotes. Give motivational speeches. I will try to implement some minigames into it.
Do you have any good advice, rule of thumb, adage, important principle, word of wisdom or simply an experience of yours to share with us?
The DRY (do not repeat yourself) and KISS (keep it simple, stupid) principles.
Do not nest code too deep. Avoid too many levels of if- and for-statements. Instead use functional methods: map, reduce, filter, etc.
And finally, keep your functions short.
I would like to thank Mr. Rasmusson for taking time from his busy schedule to do this interview. I know how hectic the life as a consultant can be at times.