2012-09-10

Learning 1 Thing Every Day

When I was 18 and a programmer in the USMC I decided the best way for me to become skilled was to learn one thing every day about programming in addition to my daily duties.   I recruited a colleague and each of us committed to learning and sharing our discoveries.

By learning I don't mean just reading about some feature or method, but instead studying it to the degree necessary to be able to easily apply it later.   Fitting this extra work into our schedules meant that most of these discoveries were fairly small.    But they accumulated and built upon one another very quickly.    Perhaps more importantly this strategy positively affected our daily outlook by helping us frame our day within an optimistic, learning context.

Decades later I'm a mid-career technologist who tends to neglect my technical skills while focusing on organization, communication, and resource issues necessary to get projects successfully deployed.  So, I've decided to resurrect this strategy to resharpen my skills and inject some more fun into my day.   I'm going to use this blog to help me track these items and summarize the impacts.



My first objective has been to improve my programming environment - and upgrade my vim skills in particular.   Vim is emerging as a reasonable IDE-alternative and frankly, my skills with it suck.   A first editor might be like a first love,  and my first editor was SPF on the mainframe.   It doesn't matter that it was primitive compared to vim, because I'll know it like the back of my hand - when I'm on my death bed.  Plus, we only had vi not vim on AIX so the sexy new stuff wasn't available anyway.   The bottom line is that I've never fully embraced vi even though I used it daily.  Instead I learned a minimal subset of commands and just used that - every day for the past ten years.   Fixing this was my first objective - since I could immediately benefit from productivity improvements.

While some days I found myself learning about other subjects, here's what I learned about vim in August:
  • More misc commands - more ways to navigate, search, etc
  • GVim - just vim with a little better desktop integration
  • Plug-in management using Pathogen - keeps all the plug-ins organized
  • Text Folding  - essential for efficient editing of large files
  • Remapping keys - all about convenience
  • Visual mode
  • Spell-checking
  • The NerdTree plug-in - provides filesystem navigation in a window
  • The SuperTabs plug-in - along with ctags & Omnicompletion provides tab completion and docstring viewing
  • The Tagbar plug-in - brings up a window with all your classes & functions
With these new features I'm also editing all my text notes in vim now.  The folding features in particular were critical to making that feel more like an outliner - my preferred note-keeping tool.   I've rejected a few plug-ins because I didn't care for their side-effects, but as I get more comfortable with what I have no I'll be adding more customizations in the future.

At this point I've still got a very long way to go before I'll consider myself truly competent with vim.   But - it's absolutely improved my productivity, I'm enjoying and having fun learning about it, and will continue to add some new skills every month.

No comments:

Post a Comment