RubyConf Retrospective

Now just picture this hall littered with vendor’s, con goers and lots of signs, and that was the RubyConf hallway track.

I made it through my first technical conference. There was a lot more socializing, networking, and partying then I every thought there would be. These were 3 loooonnng days of non-stop learning, meeting incredible people and being a part of an awesome community that I didn’t even know existed 6 months ago. Man, it is amazing how much can change is such a short length of time.

It might take me awhile to recover from the conference, but I really can’t wait to see all of these folks again! Let’s break down what I was able to fit into 3 days:

Day 1
9:30 am Opening Keynote with Matz!
10:40 am The Games Developers Play Andy Croll
11:30 am Cats, The Musical! Algorithmic Song Meow-ification Beth Haubert
1:20 pm Ruby Family Feud
2:00 pm Unraveling the Masculinization of Technology Audrey Eschright
2:50 pm Uncoupling Systems Empowering Early-Career Developers Mercedes Bernard
4:00 pm Ruby-us Hagrid: Writing Harry Potter with Ruby Alex Peattie
4:50 pm Keynote with Bianca Escalante
6 pm Cohort Koala group outing to 85C. Bakery for egg tarts
7 pm Nationbuilder Vender Party

Day 2
9:30 am Keynote How to Build a Magical Living Room Saron Yitbarek
10:30 am Let’s subclass Hash – what’s the worst that could happen? Michael Herold
11:20 am Trash Talk: A Garbage Collection Choose-Your-Own-Adventure Colin Fulton
1:10 pm Live Mob Refactoring!
1:50 pm The Anatomy of a Ruby Gem: Going From Zero to Sharing Code Tony Drake
2:40 pm Reducing Enumerable – An Illustrated Adventure Brandon Weaver
3:50 pm Cache is King: Get the Most Bang for Your Buck From Ruby Molly Struve
4:40 pm The Case of the Missing Method — A Ruby Mystery Story Nadia Odunayo
5:30 pm Lightning Talks
7 pm Weedmaps Vender Party

Days 3
9:30 am Keynote Unlearing – the Challenge of Change Jessie Shternshus
10:30 pm Branch in Time Tekin Suleyman
11:20 am Cheating with Ruby Cameron Dutro
1 pm Taped a Greater Than Code podcast episode! Just wait for ep. 107
2:40 pm The New Design of Ruby’s Documentation ITOYANAGI Sakura
3:40 pm Q&A with Matz

Now these weren’t all the sessions by any stretch of the mind, but they were what I was able to hit.  Thank goodness everything is taped and will be up on Confreaks later this month, cause there were plenty of sessions that I missed that I can’t wait to see. Did I hit all my conference goals? No, but I do think I did learn a lot, got a feel for the community, and know some steps I want to go forward with my current Ruby learning.  I was able to learn more about ruby data structures, attending Brandon Weaver‘s Reducing Enumerable went into depth on enumerables’ many methods, and I learned about ghost meta classes in Nadia Odunayo‘s The Case of the Missing Method . I don’t think any talk in particular went into depth with Ruby design patterns, but I did get to hear Matz (Ruby’s creator) talk multiple times about where Ruby is going in the future (version 2.6 by Christmas) and his opinion on annotations (no). 

Would I go to the conference again? In a heartbeat, it is a community that I’m excited to be in and hopefully participate in by becoming a speaker myself (or even a guide in the fabulous scholarship program). The advice I would give to future RubyConf attendees, is bring an external battery, pace yourself (it’s taped, so you can always check out talks later, but you can’t necessarily talk to someone in person after the con) and don’t be afraid to introduce yourself to speakers and ask for a picture, that’s what #rubyfriends is for!

The Calm Before the Conf

I’m attending my first RubyConf tomorrow in L.A. This really is my first technical conference that I have ever attended. It is awesome that my employee is putting the time and money into growing me, and I really hope that I can use this as a learning experience, as well as growing my knowledge about the Ruby community. I was a Java engineer for 12 years, and maybe attended 1 or 2 meetups, for me there wasn’t that much community there, also I was encouraged to learn more but none of my employers ever sent me to a conference. In the 5 months that I have been a Ruby engineer, I have been encouraged so much more to reach out, and get connected. 

I did write some goals for the conference, and for me what I am going to try and take out of this is:

  1. Learn more about Ruby data structures.
  2. Attend a talk on Ruby design patterns
  3. Find an open source project to contribute to
  4. Learn more about Ruby testing philosophies and frameworks

With my own Ruby learning, I have started up Flawless Ruby offered Avid of Grimm of Ruby Tapas (which I am also planning on checking out). Wrapped up Practical Object-Oriented Design by Sandi Metz, which has kicked off my wanting to bone up further on Ruby design patterns. Also I am continuing on Learn Ruby the Hard Way, but feel kind of stalled in it. It is almost too basic for someone who comes from a development background. I like how he is trying to use route learning, to get you to really remember the code and lessons, but the pacing is pretty slow. Right now next on my reading list is The Ruby Way. I plan on digging into some Rails learning next, but I wanted to have my Ruby foundation solid first before diving into something else. Then after rails, I know my front end skill are in sore need of some help. I think I might just go with some basic JavaScript skill first and then maybe some Vue.  Any suggestions for where to start for increasing your front end knowledge when for back-end engineers?

Code Documentation – before, after, and during coding

Sometimes you just need to started on some design for work on a larger ticket or new feature, you want to get your thoughts down and maybe start plotting out a code flow or some potential classes but what app do you reach for?

So much of the time I reach for Google Docs, for my personal or professional work. It’s easy, automatically backs up your work, and makes it very simple to share the document or convert it to another format. Opening a Google Doc, and starting to type out some pseudo code can be frustrating with the automatic capitalization or the code just not displaying as you would like.  I have found the Code Blocks extension extremely awesome with that.  Putting in code next to text is a breeze with it.

Helpful tip – If you are using Google Docs you can change up your preference to not annoyingly capitalize the first letter in a sentence (which is rather annoying for your Ruby classes which like to start with a non-capitalized letter).

Sometimes you just want to work on a spike story or share research that you had to done on a particularly hard debugging process or obscure part of your application. For this type of information, I like the use Confluence, a GitHub readme, or even the GitHub pull request itself. Just depending on if it is something I am currently fixing (it will go in the GitHub PR, preferably with screenshots if it a UI type fix), research for tickets or design coming up (Confluence, so easy to share and searchable for other developers) or if it is something that is needed for the code itself, like metadata or installation information, a readme works well. As a developer, I am trying to improve my git commits and PR for future development and maintenance. I highly ecourage anyone working in Git to check out Tekin Süleyman’s awesome “A Branch in Time” talk. Also his blog post on creating useful git history has some great Git tips and tricks, and really makes you think about how your git comments today, and effect someones code tomorrow.

For UML and flow diagrams, LucidChart, is my current app of choice. It is an online diagramming tool that has a lot of flexibility on what you want to show. Coming up with your flow diagram isn’t too hard, just make use of the typical shapes and lines. For me drawing the lines for the code that is calling a self.method was the hardest, but LucidChart has some pretty good tutorials that can walk you through the process, and help you with all the keyboard shortcuts that make you work life happier.

For the documentation of the code itself, I love writing code that is self documenting. For years with writing Java, if your code needed to have comments above it so other developers could understand what it was doing, it was probably too complicated. Writing comments were not encouraged, and refactoring out methods, and patterns to be better descriptors were the norm. Now with Ruby and the software I develop on, there are more comments in the code base. There doesn’t seem to be any stigma with code comments. Sharing information on how to use a command object, or the usage of an API or providing context on a classes public contract all seem to be valid use cases for inline code comments. I am getting used to using comments effectively in Ruby, and the not bring over any Java stigmas that I might have carried over about comments.  I still do lean towards refactoring out code into smaller chunks with self descriptive method names, but do understand when code comments are helpful. All my method names tend to be more verbose, and I am still working on remembering to snake case everything.

There are so many different things that we have to document as developers that it is so important to figure out the best tools and applications that work for you. So, you as a developer, can document code effectively, efficiently and hopefully in a way that other people can find it and use it. Because the only thing worse than not documenting code is code documentation that isn’t used.