Tuesday, August 4, 2015

It's not ready yet ...

I first ran into this phrase while working on VIVO.  It's a frustrating phrase used to push back at
requests.
  • "Let's make an open source repository."
  • "Is your change up yet?"
  • "You should submit that to the project for others to use."
I thought it was just people new to open source.  People scared of submitting their code for possible judgement by a wider community.  I come from a "commit early, commit often, submit every day" philosophy.  My first programming position was pair programming, so though it was a single source I got used to talking about my decisions usually as I typed.

Recently, I heard this phrase come up again by someone who loves open source and uses many open source tools.  They wouldn't submit a tool to the team repository because it "wasn't ready".  It already had many useful things, however the individual wanted more features before giving it to everyone to use.  They were looking for perfection.

Perfection is in the eye of the beholder.  To me if it works, then it's perfect.  Build a feature, a method, anything you should release it to your team. Someone will find it useful, even if you don't think it will be.

This all comes from my pessimistic view of code, "it's all crap."  A co-worker and great friend told me this was too pessimistic a view.  Perhaps a better phrase is "Code is like a plant you nurture and grow.  Continue to nurture it with care and it will grow and get better.  Freeze it in time, like cutting a rose from the bush, and eventually it will wither and die."

We see it in our work all the time, today's great change is tomorrow's headache.  What worked well in the past, needs refactored in the future to expand its capability.  This isn't a bad thing, it's a great thing.  It means that code is a nearly living thing, constantly evolving.  Code that doesn't change and refactor dies as people move to better code bases.

How do we change this culture?  We have to change it in ourselves first.   Send our code up for review early, accept all criticism equally.  Change how we feel about others code.  Submit bug reports to software we use everyday.  Encourage our teams to submit early and give them positive and negative feedback and ask them questions.

  • "This is a great idea."
  • "I think you should do this instead."
  • "Why did you choose this method?"

After we change ourselves, perhaps we can change the system to accept "Nothing's perfect, it is good to be ok."