RailsConf 2017 (Arizona) - Lessons Learned

With five other Wealthsimplers, I had the privilege of attending RailsConf 2017 in Phoenix, AZ, to learn about Rails, attend different technical and non-technical workshops and talks, and finally get to see a giant cactus in real life (that last one may have been a selfish reason to go). It was a great opportunity to represent Wealthsimple, meet other people from the Rails community, and come away with many lessons learned and exposure to cool technologies.

Team Wealthsimple - Left to Right: Dinah, John, Marco, Marek, Camila, and Peter

I’m quite new to Rails, only having had worked with it since joining Wealthsimple in January 2017. This was also my first ever RailsConf (first ever large developer conference as well)! It was a great introduction to the community, and a chance to see how Rails is used in the wild as well as in some "out of the box" applications. For those not familiar with RailsConf, it’s a 3-day conference with two keynote presentations a day, and many talks and workshops happening concurrently in between. I’m sure that other attendees came away with different lessons learned, but the message that resonated with me the most was:

Create an environment where excellence is the path of least resistance.

This was from the talk To Code is Human , but I found it to be a theme in many of the sessions I attended. In the Rough to Fine session that drew parallels between coding and woodworking, the theme was “Repeatability increases speed and consistency.” Creating a repeatable process, like creating a jig for the piece you want to cut, will ensure highly accurate cuts and allows you to produce many pieces quickly and accurately. In software, having a repeatable process for getting code to production allows you to go through the process faster over time. It also allows you to make small tweaks through A/B testing to see whether the change makes the process better or not.

In Managing Unmanageable Complexity, the speaker discussed how using checklists creates a repeatable process applicable to both airplane cockpits and to the operating room to decrease negative consequences by ensuring all steps and precautions are followed every time (recommended reading: The Checklist Manifesto). For example, when the B-17 bomber was first flown, the airplane crashed into the ground. The test pilots, despite being very experienced, couldn’t grasp the complexity of the cockpit instruments. A basic checklist of pre/post takeoff and pre/post landing items enabled all pilots to be able to fly the plane.

In software development, creating a checklist of items to do when reviewing a colleague's pull request and before pushing code to production, you ensure that:

  • Unit tests pass
  • Code styling is followed
  • It works in a staging environment
  • and so on...

every time a change gets made to the code base. Having a continuous integration service to automatically do this for you is even better. It reduces the manual work required to check boxes every time and it creates a highly repeatable process where good code is the path of least resistance.

TL;DR: Your work environment should be set up in a way where creating a quality output is as easy as possible - be it software development, a wood shop, or an airplane cockpit. Having a repeatable process that ensures your quality checks are done each time will reduce the number of issues in your final product.

Thank you to Wealthsimple for giving me the opportunity to attend RailsConf 2017! For those looking for the full list of videos of all the talks, they can be found here.