Ten software lessons in 2014
Lesson 1 – Building a Rails API
In 2014, I built a backedn Rails 4.2 API using the rocket_pants gem and used another Rails application to view the API data. I learned to watch how many objects I was creating and how important it was to use performance monitoring tools like New Relic to ensure I was hitting ~200 millisecond response times to ensure a great user experience.
Lesson 2 – Vimgolf is great for teaching yourself vim one day at a time
I’ve been playing Vimgolf and learning a few vim tricks such as using gg to jump to the top of the file and Shift+G to jump to the bottom of the file.
Lesson 3 – Blogging is good for self-documenting
Blogging has been quite useful for documenting all the little tricks I’ve been using in my Rails applications, from testing elasticsearch with RSpec to saving nested attribute checkboxes with the cocoon gem.
Lesson 4 – You really learn by shipping applications that get used in production
Once you start getting customers telling you what’s broken and what can be improved, you get a bird’s eye view of not only how well you and the customer both understood the requirements and their translation into working software.
If you’ve been writing unmaintainable code, you’ll also experience the pain of trying to add new features quickly.
Lesson 5 – Portfolio applications (non-production) are great for testing new concepts
Portfolio applications are great for testing new ideas, but if they’re not being stress tested by actual users, you don’t get to the joy of writing performant code.
Lesson 6 – Sometimes big companies won’t take the risk of trying “new” technology
It could be because of tight deadlines or other developers aren’t comfortable with the latest stuff coming out. In that case, if you want to do it, hopefully you can find a good business case for it.
Lesson 7 – The only way to learn is to try
I really jumped into my first Rails application without knowing things like metaprogramming, SQL, and Vim. When I look back at how little I knew, I am sometimes amazed that anything got shipped!
Lesson 8 – The more I keep learning the more I realize how ignorant I am
When I look at what I consider are great programmers (Yehuda Katz, David Heinemeier Hansson, John Resig, and the list goes on…), I realize how little I know.
Lesson 9 – Logging is your best friend to ensure important data is not lost
Due to a tight shipping schedule, some controller parameter values were not being saved but I never realized it until the end user noticed it. Fortunately, we had been logging things with Papertrail, and so I was able to backfill the data.
Lesson 10 – Test Driven Development is your friend
Maybe experienced programmers like DHH (David H. Hansson) can get away without testing, but as I experienced in Lesson 9, a little testing would have ensured I didn’t have to manually backfill logged data into my Rails application database.