The day you became a better developer

λuis Ramirez M
2 min readMar 14, 2017

--

I didn’t pass the phone interview. I was sad, frustrated and went full cognitive dissonance. I thought the interviewer was a jerk, he had his facts wrong and I did an amazing interview so they were going to call me. It didn’t happen.

After a couple of days of reiterating how it went, blow by blow, I realized that definitely I had made a fool of myself. It was basic object oriented programming questions and algorithms:

* what’s the difference between overloading vs overriding. I answered it with concepts exchanged.
* how can you transfor this list [“2”, “3”, “4”] into this [30, 41, 52]. I spent 15 minutes spinning my wheels.
* if you have 10 million numbers but you could only load 3 million in memory how could you find top 10 numbers?. I didn’t know how to even start.
* ok, how could you sort a list?. A day before I read sometimes they ask that so I answered, you use quick sort then he asked me to implement it. I totally forgot.

I felt like a total failure and a charlatan. How can you say you are a developer for the last 10 years and can’t even answer one of these questions?

Truth be told, most developers go winging it, why am I using this? what does it mean? who did this? is not something we all ask everyday. In Coders at Work [Siebel 2009] Guy Steele says that when the computer had 4,000 words of memory it was feasible for you to know everything about the machine, nowadays are you really going to know all the software that runs in your machine? are you going to do a core dump? I wouldn’t think so. But you should know a few concepts behind it.

The interesting thing about this company is they were not looking for an object oriented developer but for a functional programmer, their rationalization I suppose is that if you grasp the OO concepts you will have a good start at functional programming. If you don’t, well, you probably can’t evolve to lambda.

That was the day I became a better developer, I realized that no matter how many years you’ve worked and you’ve delivered software, you can fail. You must try to keep learning new technologies but you better learn what you use everyday. I started asking more myself, why am I using an interface?, what is really dependency injection? How does my machine know what ip is the address for this website?

Since that day I devoted myself to functional programming, it has became part of my identity.

You might like to work with me because I started writing in medium too.

Written originally here.

--

--

λuis Ramirez M

Cyclist and Coffee enthusiast. Writes Scala and Clojure. Church of #emacs https://www.bajoneando.com/