I have been programming for a while already. Counting the time when I was studying, it has been over ten years already. If Peter Norvig is correct I should know by now what I am doing, although I often get the feeling I don't know anything.

In this time I have been in a number of companies, mostly focused on web programming. I started as a developer, focused on backend topics. At some point I became frustrated having to wait for somebody else to implement the layouts, so I ended up learning HTML and CSS past the random pixel assignment part. I guess that qualifies me as a Full Stack Developer.

At some point somebody thought it was a good idea to make me the technical lead of a SCRUM team. I quickly discovered that it is not the same doing something yourself than helping somebody figure it out himself. I learned, somewhat to my surprise, that I really enjoy doing that, and that the people I have coached did as well. At least they don't tend to run away screaming from me, which is, I think, a good thing. Another consequence of this switch is that I have done a lot of interviewing in the last years.

I have managed to work with plenty of technologies and tools. It took my a while to realize, though, that while solid tech and good foundations are important, they are not the only thing needed to deliver high quality software.

Technologies


Following the Pragmatic Programmer advice, I try to learn some new technology every year. My github account is full of small projects I have started to teach myself new things, such as this page itself. A list of them, in no particular order

Tools


I am a bit picky about the tools I use. Actually, I am very picky. I cannot remember how many times I did rewrite my shell config in the past. It is problematic for pair programming because I usually am the only one that can work at my computer.

Nowadays I try to at least outsource my configurations a bit, using some awesome community driven ones like Spacemacs and Oh My Zsh

spacemacs
zsh
git
tmux
Google Chrome
hammerspoon
Alfred