Lately last year (2014) I decided I wanted to change part of my life.
I realized that a lot of my time was spent commuting, that my job wasn’t exciting me very much and that I wanted to be able to stay with my family when they needed it.
After this thought I understood that the best way to turn this situation around was to find a different job.
I was already familiar with the idea of working remotely (mostly thanks to the Basecamp book, REMOTE).
It was something that fascinated me and I wanted to start doing that.
I was already organized and focused on tasks, therefore taking the remote step would be effortless.
The remote thing was something very popular in some companies and I already knew some I would’ve liked to be in, some really good companies, like Automattic (the ones behind WordPress).
From 0 to Interview
I prepared a good cover letter and sent my email to the Automattic Jobs page.
My best curriculum was my product, Haptime.in, a time tracker I personally built and use that only has paying clients.
It took months before getting a response, and I started losing the hope in that, but it happened and I got contacted and Interviewed.
Then, after that, I did a small programming task to share my skills and approach to problems and usability.
(note: the task was in a language I didn’t know, but this doesn’t change my conclusions)
After committing my last line of code, a few days later, I discovered that I failed the interview because of some errors in the code?
The errors were difficult to find, but truly crucial because there were security issue connected with the app.
I know by myself how important security is, and I always enforce that daily, but still I didn’t notice those errors.
I began thinking that I wasn’t so good, I considered myself a good developer but this failure was something I didn’t take into account.
There were also some errors I didn’t really found.
My contact told me that there still were some security issues I didn’t discovered even after being informed of the problem.
I kept searching.
It took weeks to find every single bug, every single security issue, but in the end (I hope) i got the majority of them.
I didn’t do it because of the interview, I was doing it for myself, because I wanted to understand what were the patterns that my eyes wasn’t trained to see and search for.
Yes, it was a new language, but basic application security is everywhere the same, so the same principles applies.
The lesson learned
What I understood is that my personal goal was too low.
I wasn’t aiming at my best, and the results followed naturally.
I still consider myself a good developer but now I know that I must strive for a better result, I must challenge myself daily and contribute to the community.
This contribution part was something I realized in the last few days, and it all began with a simple question
How can I prove my skills?
Haptime is still a good as an introductory talk, but when we need to talk about programming, how can I prove my skills?
There was only one answer: contribution to public opensource projects.
This is intimidating as hell to me, because I know that there are lots of programmer that beat me in every possible way, but this is also one of the best reason to do it.
Sharing to open source project will force you to write better code
When you’re the only one (or with a few people) reading the code an error or two won’t make a difference.
If you name a variable in a bad way, no one will care.
But what if you have some really skilled people checking your pull request? Will you still be making that code?
I don’t think so.
That’s why in my 2015 goals I decided to put 3 things
- Contributing to opensource projects
- Sharing what I learn
- Learning new languages
These are my personal goals, because I realized that I must aim higher for myself, to improve, to move forward, to be worthy and have all the necessary skill to write a pull request that will get noticed and loved.
You can do it too
I know that everyone has a job and that we don’t have time, but what if this is the foundation of your future?
Yes, we have a job now, but we shouldn’t settle for this.
We should always aim for a better development as much as we love and desire better products.
Because, as developers, the better products will come from us too.