17 Feb 2013

The Value of Experienced Developers

I had the pleasure of talking today via Twitter and Skype with Wes Garrison, Founder of Databasically, one of the organizers of Ruby Midwest and all around nice guy. We met back at SteelCityRubyConf during the CodeRetreat and have been in intermittent Twitter contact since.

We talked about a project that I’m finalizing in order to pitch to my company. His feedback on the app, especially in pointing me directly to a solution for highlighting, reminded me that I need to spend more time with experienced developers. In those few minutes he pointed me to the tools that increased the value and utility of my product. Within minutes of getting off of Skype, I added the highlighting feature, tweaked the CSS, and a bit of the underlying Ruby. It’s a big improvement :).

After the Skype conversation ended, the conversation continued on Twitter with Wes pointing out that I should consider using the Decorator pattern in my Rails application. I remembered seeing Draper on Github and an hour later I had a working implementation that abstracted away some complexity from my views. Yet another point related to him having more experience than I.

I’m reminded how much easier it is to learn from people who have already walked a certain path and distilled the necessary knowledge, rather than re-inventing the wheel yourself. This isn’t to say that developers should rely on others for all their answers, but I’ve been 100% self sufficient with my trusty Google-based answers thus far. It’s time for me to better network and share knowledge.

To this end, I need to make time for remote pair programming. I met @JoelByler of LeanDog at a CodeRetreat in Cleveland earlier this year. We discussed remote pair programming for fun, but with household responsibilities, preparing a product to pitch, and longer than normal work hours it’s been tough to schedule.

But tough to schedule is no excuse. I’m getting more diligent about reducing my time consuming blog posts and external information and making a dedicated goal of increasing my productivity. Not hoaky productivity like you see blogged about on Lifehacker.com where you read about a million ways to improve productivity while accomplishing nothing in life. I’m talking serious productivity of cutting out unnecessary fluff time, idle web browsing, and conserving effort for producing things. Some of my current goals in this regard are another couple of web applications related to my industry, a series of webcasts, building a newsletter list of people interested in the theme of the screencasts and providing that set of readers with tailored articles. I’ll have a much easier time of this if my employer sees the value in the product I created and transitions me into a development role. That way the web apps can be developed during work time :) where they will also be consumed by my fellow teammates.

In closing, I’m working on things that I can control and appreciating good advice when I get it.

If you’re reading this in the Kansas City area and need help with tech stuff, Wes Garrison @ Databasically will solve your problems. Give him a ring.

If you’re in the Cleveland area or just want a good group of people to work with for your Rails application, get a hold of LeanDog. Joel Byler, Steve Jackson and the rest of the crew are a good group of folks.

22 Aug 2012

CodeRetreat @SteelCityRuby - Things I learned

I attended the CodeRetreat at @SteelCityRuby 2012 and this post is an abbreviated recap of my experience.

It was great! I had fun. There, I’ve thoroughly explained it. Go forth and try it out when CodeRetreat comes to a city near you.

Oh, you wanted more of an explanation? It was an event lasting from 8am to 5pm and it involved turning programming on its head. Corey Haines led the event with the space donated by 4Moms (thanks!!!).

We ran through a series of 45 min pair programming sessions interspersed with lecture sessions and short breaks. Each session was with a new random programming partner and had its own evil (but useful) coding constraints. Think of the constraints as a way to shake free many coding habits and relearn more maintainable patterns.

So what did I and others learn from this day of intense and fun coding? 1. Re-usable and easily modified code is worth its weight in rubies. 2. Think of the ways that constraints may change in the future, code to allow this (ie is true/false sufficient or should it be more than a binary choice?). 3. Tests are more than tests, they’re a roadmap for talking with fellow programmers on your team. 4. Communication is very important, sometimes more than programming skill when working as a pair. I found myself spending time and effort working on communicating well and understanding what my pair partner was envisioning. 5. Contemplate why you’re passing primitives as output from methods. Consider where passing an object could be better. 6. Short methods are maintainable methods, also helps with easier testing. 6b. The idea of a ‘screen-full of code’ being the max for a method came from our elder days when very few lines fit on a screen …. not from now with a 1080p screen with 9 pt font. 7. Possibly the most important learning of the day: Rubyists are very fun and supportive, even of newer programmers.

So think of a CodeRetreat as a sassy, challenging, sometimes infuriating exploration of ’the code less written’, with apologies to Robert Frost.

Give CodeRetreat a try when its in your area. I’ll be hitting up the next one that comes this way.

12 Aug 2012

CodeRetreat @SteelCityRuby: A Post Mortem

My head has finally stopped spinning from the CodeRetreat at this year’s Steel City Ruby Conference (2012), the fires are extinguished at work, and I’m ready to document the experience. I arrived as the first participant, not because I’m overachieving but because the Pittsburg taxi system is very irregular. I allowed the same time as the day before for a cabbie to pick me up, which was 30 minutes. Instead I was swooped up in 10 minutes and arrived nearly an hour early for the CodeRetreat at 4Mom’s office. The CodeRetreat was lead by the charismatic Corey Haines, the same bloke who set a wonderful tone on day one of @SteelCityRuby by emphasizing personal networking. In fact, the tone set by his keynote speech kept the conference largely free from individuals using their laptops during speeches! Quite a difference from other conference scenes that I’ve experienced :). But back to the point, the CodeRetreat was held in the offices of 4Moms and the food was sponsored by those fine folks. We started the day by pair programming Conway’s Game of Life using Test Driven Development. The first round lasted 45 min and we were then told that the specs had changed and to fix our code in another 10 min. Thankfully our code was relatively modular and the changes needed were minimal. We reviewed the amount of code revision needed to implement small requirement shifts and discussed how to build in flexibility and simplicity into the code.

Notes: Revelations: spending time learning social intricacies of collaborating