Wednesday, May 22, 2013

The Silver Pill

There is no silver bullet. What if there is a silver pill?

It is no single change that can rocket our productivity. It is a change in the rate of change.
There are two outputs of everything we write: some code, and a new version of ourselves. If we stop thinking of our product as the code, and focus also on improving ourselves with everything we write, then we increase our own productivity in all future code. Then our abilities grow with compound interest.

The other day, I asserted that our code should be concrete, because it is more clear and maintainable. Daniel Spiewak argued, abstract early! This policy has benefited him: once he has formed the abstraction, then the next time a seemingly disparate requirement comes up that he can boil down to the same abstraction, he can tell immediately and without experimentation what problems are inside. 
He was right, because what we do in ourselves is more valuable than what we do in the code. So what if that carefully abstracted code gets deleted two days later? The patterns created in the brain pay off for the rest of his life. And he can build to higher-level abstractions he'd never reach without that investment.

I've lived this payoff in another way: when I start a job, I'm less productive than other new developers are for 2-4 months. They want to jump right in and be productive. They're focused on their current code output. I want to understand the system, so I ask a ton of questions and dig around in the code to find the root cause of problems. This makes me slower at first, but by 6 months in, I'm one of the most productive people on the whole team, and still improving. The code we write pays off today, but learning pays off every day for the rest of our career.

It's the difference between building wheels, and building a machine that can make wheels. When we keep improving the builder of the machine, then production accelerates. From position to velocity to acceleration: raise the second derivative and the limit is infinity.

Trivial example: today, git merge came back with a pile of conflicts. I flipped through git documentation and asked a friend, learning about git's concepts of file status. This cost twenty minutes today, and it makes all future dealings with merge conflicts a bit easier. Now I know that git status -s will give me a grep-friendly summary.

Daniel is right -- spending time on code that never deploys to production is wasteful only if we learn nothing while writing it. The silver pill is: time spent coding is wasted if we learn nothing from it. The return value of our day is the self we become for the next day, while code is a handy side effect.

8 comments:

  1. Thanks to an wide variety of mobile cellphone programs and thinking processing, organizations can often find out out most of the facts they need, and handle their day, without ever discussing with the house organization office. truth about getting rid of cellulite

    ReplyDelete
  2. Boulder Electric Vehicle and a Precision customer, invented the electric service truck, and convinced Robichaud to test-drive the truck that he felt would be a perfect fit for the service industry because of the short routes service technicians drive daily. old school new body f4x

    ReplyDelete
  3. What other contractor can say they were involved in the design process of an all-electric service vehicle? Not many! Robichaud is a great example of a contractor on the cutting-edge of technology. He serves as an example to others to take a risk and test new technologies. If the technology works, and in this case it seems that it does, it’s a win for everyone. One neat thing about being the first company to purchase the trucks is that Robichaud is pretty much involved in any design changes that may be made to the vehicle. anonymous

    ReplyDelete
  4. Robichaud also hired Bella Energy of Louisville, Colo., to install solar panels on Precision headquarters to help recharge the batteries for eight hours at night after technicians drive them 120 miles during the day. leptin

    ReplyDelete
  5. In this live video interview with screencasting, I show a bit of functional programming style in Java 8. I also rant about whether math is necessary to be a good programmer, and predict how organizational structures are changing to support learning. Saran Wrap Weight Loss

    ReplyDelete
  6. This may sound a little different than the usual type of strategy for selling your home. Sell my house quick

    ReplyDelete
  7. Remove toys and games with distinct sides, cracking colour or other possible risks. Consider changing toys and games that cannot be set with new, more secure items. next page

    ReplyDelete
  8. The comparison given about two models are worthyful to read and understand diabetes protocol

    ReplyDelete