Learning Organically

Posted by Eric Goodenough on January 27, 2011

So as developers and designers we are constantly pushing ourselves to hone our skills and learn new techniques or technologies. A fair amount of learning is done on the job, but most times we practice these new skills in our free time.  Staying up to date and honing our skills on relevant technologies is what makes the distinction between successful developers/designers and the ones whose skills stagnate.  When hired, we are expected to execute fast and correctly, not experiment with edge technologies and implementations.rubygems

My personality type and hunger for knowledge have lead me down the path of learning organically. For instance, on the two projects I am currently working on, I kept getting frustrated with the lack of access to a htaccess file on Heroku. For both of these projects I wanted to password protect the staging and production sites while in development. Don’t get me wrong, I am loving Heroku. But if you guess, stumble upon or happen to know the URL, its completely unprotected. This poses problems for ‘top secret’ projects. So I started thinking, maybe we could build an add-on that serves a proxy and has basic http authentication.  Joshua, my main Rails developer, pointed out that this is simple enough to implement in a Rails app, that a proxy is not really necessary.  But will anyone (including me) implement it on every project?

Solution – build a simple gem that implements basic auth and pulls the config from a YAML file.

Sounds easy – if you know how to write gems. I didn’t. So, the learning began. After several failed attempts, lots of advice from Josh and a hundred google searches – I finally figured it out.  I learned how Rails uses gems to extend classes, include modules and load YAML files.  All in all I learned a lot and developed a resource I can easily use on future projects.  This is a no-frills gem, pretty basic, but very useful.  Next I’m going to work on creating a generator for the YAML file and adding tests.

I think the best products and tools are always developed organically.  If your company needs a tool, try to build it and learn as you go.  Make the mistakes on your own pet projects, not only will you gain valuable skills for future projects but you might even learn something about yourself in the process.

Get my gem on github: https://github.com/fourfour/gatekeeper