Who are you and what are you doing?

My name is Álex González (@agonzalezro on twitter) and what I do in my day to day basis is programming in Go and RoR (mainly Go) plus some devops work.

I am currently working at Shopa which is "where shopping gets social, connecting retailers with customers through the power of recommendation" (see an article on Techcrunch about us) which mainly means that we give you money if you refer people to buy products that we have in catalog. It's quite cool that you can create and share your own collections though, if you are into the fashion world, you must try it. And if you are not, too.

What do you expect from a recent graduate to become a successful member of your team?

Mainly attitude. If you are a recent graduate I don't expect you to be a crack. I hate when somebody tries to show me that they know stuff about something that they really don't know. Don't be that person!

You will be at the beginning of your practical learning process and, as I said, your attitude is the most important.

Anyway, I know what this question is about and I will recommend you few things to check:

  • any kind of control version system, you can start with git. It's cool to name your projects: _final, _final_final, _final_v2_this_time_is_true; but trust me, it stops being fun with the time. I would like that somebody explained me that at the first year of the university.
  • learn some language that is not covered at the university. I am pretty sure that some of your teachers told you: if you know how to develop on X, you know how to develop on Y, but... this sentence have some caveats. My recommendations (not subjective at all) are Go and Python.
  • master your editor, whatever it is, this is not a war between vim and emacs.
  • do you know what is unit testing? You should start learning it and it will help you A LOT now and in the future.
  • we have ORMs that makes the data layers of your programs extremely simple, but knowing some SQL to understand what those ORMs do in the background would be helpful.
  • learning some NoSQL as well will be a good addition to your toolbox.
  • grab some Open Source project that you like and try to understand its internals. This will help you to get comfortable reading others people source code which is going to be extremely useful in the future.

I am pretty sure that I am missing some important point, the points I mentioned require quite a lot of time to master. If you finish them all, feel free to ask me where to do further.

How did you learn programming?

My dad had some Amstrad CPC magazines explaining the basics of Basic around the house so I got interested about knowing what were those weird characters in the magazine.

With the age of ~14(?) I made my first program. My father is an electrician and he had a book explaining the number of heaters needed by a house depending where they live, size of the house, etc... I made it with Basic by copy/pasting (back then, I didn't even know what a function was). When I finished it, I had the first bad experience with programming: I was a so-so result of what I achieved, but my father asked me "where are the icons?". So, in that exact point I realised that 1) UI is important & 2) nobody cares about the details of what you have done, they want the beautiful chassis and that it starts when you turn the key.