2016 is here!
Each year I conduct an annual review, counting successes and failures, looking forward to the future, both personal and professional. This year I'll be documenting the professional portion of this review here, as a time capsule of where I am today as a programmer.
Last Year (2015)
I Got Promoted
My biggest win was being promoted from apprentice to developer at Hashrocket. Being a Rocketeer was something I wanted, and worked hard to achieve. I was pushed by the program and myself to get to that level. I am thrilled to be a full-time team member.
The first lesson from my apprenticeship is that improving as a programmer is directly related to how deep you are willing to go to understand something. Let's say you are pair programming and your pair uses a method you've never seen before. Now, you have a choice: accept the solution and ship it, or pause and try to understand their code.
Finding a blog post or Stack Overflow explanation of the method is a start, an investment in yourself. Reading the online documentation is good; reading the source code is better. Source code can be confusing the farther down you go, but it's worth a shot.
Use that knowledge to explain the method back to your coworker, write a blog post, prepare a lightning talk, or answer a question online, and you're on the way to mastery. This is what defines great programmers.
The second lesson from my apprenticeship is don't give up. Everybody who has a job in this field was once a newbie, with no work experience. The most crucial step to getting others to believe in your skills is believing in yourself. I had moments as an apprentice where I questioned my abilities, but I kept going. I can't overstate how important it is to keep going during those moments of self-doubt. They are common for programmers of all abilities.
I Really Learned Ruby
When I started at Hashrocket, I thought I was pretty good at Ruby. I've learned that Ruby is a vast, complex language with many dusty edges. You can learn it fast and do some powerful things, but mastery takes years of hard work.
This year I read many books in the Ruby cannon, including Eloquent Ruby, Practical Object Oriented Design in Ruby, Refactoring Ruby, and Rails Antipatterns, while skimming at least a dozen more. I devoured the Ruby Koans, Railscasts, and Upcase's Ruby materials. It paid off, and I come to my work with a much deeper understanding of Ruby and the ecosystem.
I Open Sourced
This year I participated in 24 Pull Requests, and also pushed open source code to Github every day for 60 days. The latter experience could fill a blog post of its own.
I published my first Ruby gem this year, Remarkovable.
Many of my pull requests this year were for documentation, to projects including: Ember.js, the Ember.js website, Ruby, Rails, Pry, React.js, and Rust. I also had my first non-documentation PR this year to Rails, and another to The Silver Searcher.
As of this post, I have an open PR to Rails, which I doubt will get merged but was the catalyst for an interesting conversation among the Rails maintainers.
We Built TIL
This year we built and launched Today I Learned.
TIL was my apprentice project, a tool for me to hone my skills and prove myself to the team. I paired with developers across the company as well as interviewees, and learned a ton.
TIL has grown into a beast this year, with over 450 posts. Learning a little bit every day and trying to explain it in a transparent way is a wonderful tool. I find it invaluable for my own learning, and am gratified that many of my coworkers seem to agree.
During the launch of TIL I posted to it every day for 60 days (#60days60hacks), which was awesome but also exhausting.
This year I spoke at both of Hashrocket's Miniconfs, an internal conference we host in Florida. Public speaking is tough, and a crucial skill to hone as a consultant.
I started co-organizing and speaking at Vim Chicago this year, and running the @vimchi Twitter account. Meetups gave me my start and I am excited to help run one. I tried to attend many Meetups this year, and encourage others to join me.
I built a Stack Overflow profile this year, answering questions on my way to 500 Reputation points. The community on Stack Overflow is a mixed bag, but the general rigor keeps the answers of a high quality.
I wrote three blog posts for the Hashrocket Blog and more for this site. I also rewrote this blog to be responsive to mobile using Bootstrap.
I created Resources, a list of links that I have found meaningful. I find it incredible the power of a simple list to motivate me to pay closer attention to the resources around me.
For my personal learning, this year I got deeper into PostgreSQL, Go, and React.js. I improved at pair programming, building strong professional relationships, and working with clients. I replaced all the keys on my keyboard with blank ones and improved at touch typing.
Next Year (2016)
My major professional goal in 2016 is to become an expert at learning languages and frameworks. I aim to slash the time it takes me to pick up a new tool by gaining fluency in the full spectrum of major design patterns.
Ruby is not always the best tool for the job, yet it's the sharpest tool in my toolbox by far. I'd like to be able to look a problem and say: 'this should be written in Go', and then also be able to lead a team building that solution. This is the next level for me.
I will start by reading 7 More Languages in 7 Weeks with some peers at Hashrocket to practice rapidly picking up new ideas. After that I may read a book on language design on our office bookshelf. By February I will be diving into four technologies, representing areas I'm not too familiar with right now:
- Clojure (a functional language and a Lisp)
- Go (a lower-level language)
- React.js (a frontend framework)
- React Native (a mobile framework)
I have signed up for some Meetups, and have a queue of books and tutorials ready to go. By being a faster learner, I hope to be able to better serve my clients in a rapidly changing technological world.
Thank you to everybody who helped me this year, and thanks for reading this lengthy post. I recommend a review like this to anybody with wild aspirations; it's helped me clarify what I've done and where I'm headed, and maintain accountability. Look for posts in 2016 about Clojure, Go, React.js, React Native, and whatever else I decide to hack on this year.