It’s now been over 3.5 months since Cultured Codes first “State of Sync” post. This was meant to be the first in a series of posts explaining why the long awaited OTA sync was taking much longer than anyone first thought.
In that time, they wrote one more post 3 weeks after that and then nothing. In that last post, they even hinted at more details starting to trickle out, but so far nothing has been released. Cultured Code is now almost 3 years behind their biggest competitor in terms of OTA syncing, despite a few years head start. It’s now an official meme, complete with it’s own site.
There have been countless articles, tweets and blog posts asking just what is taking so long. Cultured Code is losing customers by the day as people get tired of waiting for the syncing equivalent of Duke Nukem Forever. With each month, the assurances that salvation is coming sound more and more like the pleading to give them more time.
When ( or if? ) Cultured Code eventually launches, their margin for error is so razor thin that any issues that come up ( and, as someone who’s shipped software for 12+ years, they will come up ) will be met with a resounding “THIS is what we’ve been waiting for?”. That will be followed by the last remaining believers limping over to their competitors, hat-in-hand & apologetic for staying with them for so long. Keep in mind that at that point, the majority of these users will be the ones that stuck with them through all of the delays. The faithfuls. Lose them and you’re really in trouble.
To say they have put all of their eggs in one basket is an understatement.
The worst part is that Cultured Code knows all of this. It will permeate every stand up meeting, every iteration retrospective and every bug report or feature request. The fear of launching too soon will give way to the fear of launching too late. It will calcify their team and make them unable to make an changes or improvements for fear of pushing things out more. It’s also forcing people to work on stuff ( code, bugs, documentation, etc… ) that is possibly months old. Bugs found today in code written a month ago are very, very difficult to track down. When everything is fresh in your mind, you solve problems quicker. When things go stale, the cost of changes goes way, way up. Everyone on the team will tense up, not just engineering, until there is some sort of cathartic release.
Also, god forbid something major comes along that threatens to screw up the release in a big, big way. Performance / scaling issues, architecture bugs or something else. Once you’re in the position Cultured Code is in, you HAVE to launch, even if what you’re launching sucks. Scrapping it, saying you made a mistake and you’re starting over is the same ( maybe worse ) than launching and bombing, so why not take the chance? This is how hacked up solutions of all sorts have made it live in applications around the world ( of course, I know from experience ).
Cultured Code has put themselves into a progressively worse position. As time has gone one, they’ve gone from needing their syncing solution to be a solid double to requiring that it’s a grand slam just to justify the past few years of excuses.
This, in a nutshell, is the problem with holding back until things are perfect. OTA Syncing by Cultured Code is, by far, not the first project to be in this position and it won’t be the last. The real answer isn’t to get better predicting what you need, thinking really hard about what the best solution is or to get more A-players.
It’s to get better a working in small units.
With small, chunks of work, you get something out the door quicker. You get it off your plate entirely and can move onto the next project, even if it’s within some larger project scope. Best of all, you get feedback quicker. You get to test your hypothesis quicker to see if you were right or wrong.
Update: Cultured Code times their 3rd blog post about sync perfectly with my post. Not only is the timeframe for the beta of JUST the mac-to-mac syncing more than a month out, but they’re removing the legacy Bonjour syncing.