My starting days in HappyPancake were quite intense and interesting, despite the fact that I could spend only 20 hours per week on the project. I learned a lot of things that would be be completely out of reach for a .NET developer within Microsoft OS. Here are some bullet-points:
- Google Hangouts work nicely for team collaboration and screen sharing.
- SyncSpace drawing app is probably the best collaborative white-board for a distributed team.
- Mindmups are great for collaborative and personal brain-storming.
- Erlang is a great language for building low-latency and CPU-efficient apps. It has some learning overhead for a .NET guy like me.
- Golang is a great language with good ecosystem and really good performance. If compared to erlang, golang has a lower learning overhead for a .NET guy.
Within these days we invested time in establishing high-level design guidelines for the system to be implemented. High-level goals were:
- Iterative development with emergent design (we don't know all the answers)
- Micro-services with support for experimentation and A/B testing (to get these answers and discard wrong assumptions)
- Base design evolution on reality and measuring it to validate assumptions
- Ubiquitous language for communication between services : HTTP with JSON/HTML
- Any language within the service (as long as it runs on Linux)
- Designing for a distributed team that wants to spend years learning things, experimenting and playing with cool tech.
Making this work requires a lot of responsibility and ownership, which have to be factored into the design, as well. We currently believe that Micro-Services approach with a bit of Programmer Anarchy might work well for our case, as a foundation for building things up.
For the upcoming week I plan to continue catching up with Golang
(currently reading through The Way To Go) and then start drafting a
prototype of low-latency Message Bus with Event Store capabilities and
FoundationDb backend (codename