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 an agile team. I quickly discovered that building things yourself is not the same as helping somebody else figure it out. I learned, somewhat to my surprise, that I really enjoy sharing ideas. According to their feedback, other developers have managed to learn something from me. At least they don't tend to run away screaming, which is, I think, a good thing.

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