What’s the hardest problem in software?

P versus NP? I don’t think so. In my opinion, it is finding meaning and motivation (M&M). This problem is not specific to software.I believe we could have cured cancer, traveled to space, eradicated poverty and… solved P versus NP had we solved the M&M.

What do you think about interviews?

Let’s not kid ourselves, an interview is largely a lottery. I can ace all your questions but I am so demotivated and washed out, I’ll never really help you. I’ll do the minimum amount of work required and go home. Or maybe I fail the interview, but when given a chance, I will rise to the challenge and be your best employee. I can also be too nervous and fail even if I knew how to solve a problem or perhaps I can provide a brilliant solution but only because I just read about it. If you are trying to determine if I am a good cultural fit, then you are out of luck as well. We are engineers, not psychologists. Can professional psychologists even do it in 45 minutes? Can anyone?

How would you do the interview then?

I wish the interviews were a bit more bilateral and collaborative like asking a candidate to show his code in his favourite environment (OS, IDE, editor). Does he know how to use his tools? Is he passionate about his code? How does he work with it? Can he run his tests? Maybe he can teach me something. Maybe he can also look at my code and tell me something I can improve, maybe some useful refactoring. Maybe there is a bug in my code? How would he fix it? What is his favourite command line command? What is his favourite bug? How did he fix it? Maybe when he looks at your code, he would not want to work for you.

How do you define a great programmer?

A great programmer writes correct and efficient programs in timely manner.

What’s a single most important quality of a programmer?

The ability to focus and work hard (not to be confused with being busy).

Is there anything you wish programmers did more often?

I wish we thought about complexity more. We keep introducing new frameworks, libraries, use cases while not paying enough attention to the complexity they bring. Maybe we can validate email without using that buggy library? We could finally learn regular expressions. That quick check for null, or random if/else in a method, did we really fix the problem or make it more obscure? I wish we spent more time learning the basics of computer science including operating systems and compilers. Yes, it is true, most of us won’t be writing compilers or kernels, but so many problems have been solved there, the same problems we try to solve every day. And if a project gets complex enough, it almost always resembles a compiler or/and an operating system.

What do you think about coding styles?

I like code bases with different code styles. If I see some good ideas and tricks, I change my style accordingly. I don’t think it’s a good idea to force everyone to use a single style. Some people think that different styles make code harder to read and understand. I don’t think so. Bad names, verbose methods, unused code, outdated documentation, inconsistent formatting - this is what makes it harder. A single style won’t help with that.

What’s your favourite command line command?

Less (I use it to monitor logs). I also like to use

 eject /dev/sdb; udiskctl power-off -b /dev/sdb


to unmout and disconnect the usb or external hard-drive.

I like

– updating my working environment first thing in the morning (even before my coffee)
– uninterrupted deep work for many hours
– simplifying everything
– Mr. Robot
– passionate strong-opinionated people
– code reviews done from IDE
– linux and command line

I dislike

– inconsistent code style
– unused code
– verbose names
– code reviews done from the browser
– windows os
– todo’s and outdated documentation in the code
– recurrent meetings