Pulled in Different Directions

I often feel like I’m pulled apart by everything that’s going on :-) At least today the PremiumPlus upgrade deploy appeared to go completely smoothly. The test migration ran fine locally (with a copy of the production data). Given we can’t financially afford to completely replicate the production data on staging I took a risk and ran the migration directly on production. It all went fine, and I created tickets for removing the migration and old columns, updating the legacy Premium start dates and making the upgrade button look nicer. The real test will be when a user tries to upgrade, or we get a new sign up, or someone tries to change their credit card. All those cases are covered by feature tests that are green, but I won’t rest easy till a few transactions have gone through on the live servers.

We also managed to deploy a fix to manual updates of event hangout URLs. This is particularly important given that the Hangout API is no longer working, and so our hangouts cannot connect back to our server to provide an easily discoverable link into the hangouts. Unfortunately the manual updates only stay live for a couple of minutes at a time before resetting the event status. This feels like the resurgence of an earlier bug, and I’m torn between working on this and on rolling out payment functionality for some new premium plans.

At least yesterday, rather than burning time trying to take apart the Google Hangout API, I got the PremiumUpgrade feature out, and helped kick start the AsyncVoter project. I already had the sense that the Google Hangout API issue was something on the Google side and might not have a quick fix. This was clear from a YouTube product forum thread that Michael had found. The YouTube Live API support pages say that support is through StackOverflow, so I got a question posted, describing the precise details of our problem and linked in all the relevant resources. Over night I see new posts in the forum with one user having digged deeper into the APIs and coming up against walls it seems only Google engineers will be able to fix.

It’s a strange situation. Google might fix this tomorrow and we’ll be back to a stable setup, or that might just be it. It’s a bleed for us, because it means that for the most part all the repeating events that countdown on our homepage will not have the correct hangout links, unless I can fix the manual link update to work correctly, and educate all the Scrum masters to use it. At the moment we are all pasting our links manually into Slack. What we don’t have is numbers on how many people come in to hangouts through links posted to Slack, the Meetup group, and those coming in through the site itself. My sense is we do get some from all these sources. Regular members tend to come in through Slack (I think), but we’ve definitely met great people coming in through the site or the meetup group.

More frustratingly we also lose all our telemetry and Karma increments related to hangouts, because the Google Hangout plugin is not being loaded. With all due respect to everyone who worked on the code previously, the hangout/event_instance code is a gnarly mess. I would anticipate possibly a days work to fix the issue with the manual update, and several days work to clean things up into a state where things were maintainable. We could adapt to the new circumstances by ensuring that manually setting a hangout URL on the website would ping Slack and the meetup group, and reduce the admin load on the Scrum masters.

Maybe this is an opportunity in disguise? The problem with starting hangouts from the website is that it’s not easy for others to learn how to do this. FreeCodeCamp gets round issues like this by having well place animated gifs in their site that show people what to do. Another alternative is operating things purely in Slack — there are various integrations with Slack that allow you to start hangouts or other video conferencing tools with commands like /hangout. Frustratingly the hangout one does not support recordable hangouts on air. I’ve always felt that the recording of our Scrums and pairing sessions is an important part of AgileVentures’ commitment to “Open Development”; but the flip side is that some are intimidated by the recording. Then again, perhaps we get our positive community vibe from people realising they are always being live streamed around the world and so should be nice to each other. I’m not sure …

A serious challenge is that we have lots of legacy documentation in AgileVentures and in the “Agile Development using Ruby on Rails” MOOC that talks about things in terms of the event/hangout creation flow that worked in the past. We have lots of people who are familiar with that flow. Even if it’s not a novice friendly flow. We could keep approximately with the grain of that flow by having a manual update that pinged Slack/Meetup etc. and then it could even be extended to be started from Slack … a fair engineering effort, for what returns? It’s unclear.

I was pleased to kick off some mob programming on the NodeJS AsyncVoter project yesterday. The ability to run asynchronous votes on stories bugs and chores in Slack channels has something that starting hangouts through web pages does not; you can easily watch other people doing it, and learn the approximate process. Also, people don’t all have to be available at the same time, so there’s a lower barrier to entry. You don’t have to click a sign off on a warning saying “PEOPLE YOU DON’T KNOW WILL BE ABLE TO WATCH YOU!!!!!”

Almost immediately there are tides that try to make the AsyncVoter project more complex. Support multiple projects, support for a generic planning poker tool. I do feel strongly that the challenges we have with maintaining our current infrastructure arise from having tried to add too many features too fast. Moving forward we need simple tools that have a clear logic and set of domain entities at the centre. In order to survive money has to flow; I think I must prioritize releasing actual payment pages for the new Premium Mob and Premium F2F offerings. Beyond that I think we need to enable people to start voting on tickets with the minimum of effort and maximum of visibility. This is the stepping stone to them taking on a ticket and putting in a pull request. It’s through pull requests of code that all our members learn, and also how we fundamentally deliver value as an organisation.

Of course I have to go spend the morning with my accountant, but after that I can get back to being pulled in many different directions again :-)


Originally published at: http://nonprofits.agileventures.org/2016/10/26/pulled-in-different-directions/