Focus on one thing

Most of this is just me restating what is probably common sense to most people but I struggle with this and it’s my blog so I’m going to write it anyway.

Trying to launch my own product using a tech stack that I’m not super familiar with (Rails) has led me to the following conclusion:

  1. The best way to learn a new technology is use it to solve a simple problem or a problem you already know how to solve
  2. The best way to solve a complex problem is to use technology you’re already familiar with

Again……common sense to some but I think it needs to be restated because some people struggle with it. This is strictly from an efficiency point of view, it’s a LOT more efficient to focus on learning one thing at a time instead of multiple.

I’m not saying it’s not possible to learn both at the same time it’s just not very efficient. In developing my own site I find myself thrashing about with some Rails aspect I’m not familiar with, and a couple hours later asking myself what I’ve accomplished (hint: it’s not getting my site done). My goal is to launch my site but instead at times I’m learning Rails.

Some technologies though are worth the double learning curve (complex problem and new tech) because as you get better you’ll outpace where you would have been without it. This is how I feel about Rails. For now I’m sticking with it, but it’s painful to get a couple hours of work done and really have nothing (UI-wise) to show for it.

If Your Goal is to Learn A New Tech (Efficiently)

Simple Problem and You Know How to Solve Simple Problem Complex Problem but You Know How To Solve Complex Problem

This is why Katas are so important (IMO). Our local Clean Coders user groups Cincy Clean Coders and Dayton Clean Coders do a good job picking simple problems (Katas) and providing an environment where people can experiment and pick up a skill (TDD, a new language, new framework, not using the mouse, etc). They do a good job because they’re focused!

If Your Goal is to Solve a Problem (Efficiently)

Tech You Know Tech You Don’t Know But Is Built For the Problem Tech You Don’t Know

If you’re trying to solve a really complex multi-threaded problem then it’s probably not a good time to pick up a new technology stack unless that new stack is specifically designed to solve the problem (Erlang, etc.). If you have to constantly break your train of thought to google how to do xyz you’ll be a LOT less efficient at solving the problem at hand. When you’re familiar with a language/framework and can “think in it” solutions tend to flow a lot faster and there’s a lot less friction between your brain and your fingers.

One Comment

  1. Steve August 6, 2013 11:27 am Reply

    Good post!

    It’s not until I’m really immersed and solving ‘real problems’ in a language do I actually feel I learn the language.

    I should add as well that I find writing the language how it’s intended is important (ie. learning idiomatic ruby)

    Good post, I tend to hop sometimes and find that although I get a good overview of a language, I start floundering around when I need to solve real problems in it :)

Leave a Reply to Steve Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>