Building an enterprise grade distributed service is like trying to fix and improve a car while driving it at high speed down the free-way. Engineering debt accumulates fast and engineers in the team yearn for the time to get to them. A common complaint is also that we need more time to tinker with cool features and tech to learn and experiment.
An approach many companies take is the big hackathon events. Even though they have their place, I think those are mostly for PR and getting eye candy. Which exec doesn’t want to show the world their company creates AI powered blockchain running on quantum computer in just a 3 day hackathon.
This is where CAYL comes in. CAYL or “Code As You Like” is named loosely on “go as you like” event I experienced as a school kid in India. In a lot of uniform based schools in Kolkata, it is common to have a go as you like day, where kids dress up however they want. The nearest western example is Halloween, but go as you like is not ghost themed, it does not have any theme. The sidebar pic is me dressed as a mummy as I was going to be a new daddy (this is from when I was in Adobe)
Even though we call it code as you like, it has evolved beyond coding. One of our extended Program Management team has also picked this up and call it the WAYL (Work as you like day). This is what we have set aside in our group calendar for this event.
There will be no scheduled work items and no SCRUM
We simply do stuff we want to do. Examples include but not limited to
- Solve a pet peeve (e.g. fix a bug that is not scheduled but you really want to get done)
- A cool feature
- Learn something related to the project that you always wanted to figure out (how do we use fluentd to process events, what is helm)
- Learn something technical (how does go channels work, go assembly code)
- Shadow someone from a sibling team and learn what they are working on
I would say we have had great success with it. We have had CAYL projects all over the spectrum
- Speed up build system and just make building easier
- ML Vision device that can tell you which bin trash needs to go in (e.g. if it is compostable)
- Better BVT system and cross porting it to work on our Macs
- Pet peeves like make function naming more uniform, remove TODO from code, spelling/grammar etc.
- Better logging and error handling
- Fix SQL resiliency issues
- Move some of our older custom management VMs move to AKS
- Bring in gomock, go vet, static checking
- 3D game where mommy penguin gets fish for her babies and learns to be optimal using machine learning
- Experiment with Prometheus
- A dev spent a day shadowing dev from another team to learn the cool tech they are using etc.