👋 Welcome to this issue of RM-RF, where you get to hear about crazy dev war stories from inspiring tech leaders.
This time I interviewed Jonathan Alzetta, CTO of Wooclap. Wooclap is a collaborative platform for classes, conferences and training sessions, used by 1M+ teachers and trainers worldwide. From the early university days to scaling-up, Jonathan had an eventful tech ride. Read on for exciting anecdotes!
🕰 For how long have you been working at Wooclap?
It’s a long story that started right after my cofounder and I graduated from École Polytechnique in 2013. By then we were organising study sessions and catch-up lessons with junior undergrads - it was our first project in the education space and we got along well together (note: it’s also a suggestion from Hubspot CTO that you should try small-scale/time-scoped ventures as junior cofounders to test your relationship 🎓).
I had studied nuclear physics and also took interest in computer science. Turns out, the latter was easier to practice on my own than the former 😅. So I ended up taking a job as a developer.
With Seb, we then took part in Start.LAB and launched the first iteration of Wooclap to enable live polls in classrooms. The first app was called DYHAQ = Do You Have Any Questions? It took off a bit and morphed into a company that I joined full-time in 2015!
🏉 How big is your team today?
Today we’re a team of 60 people at Wooclap, with 21 people in the tech team, including data scientists, product managers and product designers. We’re loosely organised into squads:
On the core product of Wooclap, the squad is self-supporting with a full-time PM and designer;
On growth, several team members of the business and tech teams assemble to tackle specific initiatives;
Data scientists either focus on pure data projects or get staffed on other squads depending on their needs.
A bit over a year and a half ago, we were still only 20 in the whole company. Covid has drastically increased the share of distance learning and hence the need for our solution. This is especially relevant for teachers who lack direct feedback during their online courses. And with the progressive return to in-person classes, Wooclap still remains important for teachers to empower them to interact with their students. This gives us great business opportunities, along with tech scaling challenges.
🛠 Describe your tech stack in a nutshell?
We’ve got 2 products with similar stacks:
Wooclap is our core product for interactive classes. It’s based on Node + Express with MongoDB and React with Styled Components. It’s a pure web app even though it’s often used on smartphones: we wanted to remove any friction that could occur from asking participants to install apps on their devices.
Wooflash is our more recent product for spaced repetition flash cards (note: Jonathan even taught himself Japanese characters using this method 🎌!). It includes a bit of Apollo / GraphQL and uses Postgres instead of MongoDB.
Both products run on AWS infra. Our data stack leverages R, Shiny and a bit of Python.
🐛 What is the most elusive bug you and your team ever had to fix?
We’ve got 2 of them which are still out in the wild because they’re hard to catch and repro - they're pretty uncommon 👹.
Wooclap includes ordering logic to sequence questions and events in the app through drag-and-drop. We sometimes run into duplicate indices which screw up the ordering, due to race conditions we still haven’t completely figured out (note: if you ever built an app with kanban-like behaviour, you probably came across that problem too - this excellent article goes in great depth about handling user-defined ordering in your data model).
And then we’ve got the Microsoft black box problem with our PowerPoint integration used by teachers (to embed our poll results). The inner workings of PPT are so unpredictable across versions - a real debugging nightmare. This sometimes leads to our charts not being displayed due to sizing issues, or presenter view and audience view being inverted due to a bug in PowerPoint itself 🤯.
Fortunately both of these situations are well contained even if they episodically pop up anew.
😱 What is the most stressful tech situation you ever faced?
This was around 6 years ago, in the early days of Wooclap when we used to be on-site to provide our services during conferences and other events.
We managed to sell to the organisers of a conference with 1,000 attendees - a number of concurrent users we’d never faced before. Already in the prep phase for the event, we got very custom feature requests that we had to implement in a rush. We nevertheless managed to land these in time. What happened however is that during the event, the speaker messed up the script and gave the wrong Wooclap instructions to attendees. This led them to all use the “take a selfie” feature at once, which completely crippled the wi-fi bandwidth of the venue. The connection hung out for 5 minutes till the organisers managed to phone their internet provider and temporarily boost bandwidth. This is something we’d never expected in our preparatory drills. Fortunately, the rest of the event went along smoothly.
Another related horror story happened when we ran a “competition-mode event” on Wooclap which had participants race to submit their responses first, with live scores displayed. It turned out to be a big initial mess with race conditions all around and inconsistent scoring displayed to all 🤭. This led us to drastically improve our real-time handling capabilities to reach sub-10ms latencies. We found out for example that socket.io doesn’t scale well to 1,000+ connections, and eventually decided to work with a specialised solution (Ably, similar to Pusher).
✌ What's your best piece of learning on these topics?
Along the way we’ve learned a lot about ensuring stability in environments we don’t totally control: events, classrooms, the Microsoft tools… This has made us more aware of potential issues upfront and increased our resiliency in face of these.
⭐ Finally, are you hiring any developers these days?
We're always on the lookout for aspiring talents to join the Wooteam. Right now, we're looking for security engineers and developers (frontend & backend), based either in Paris, Brussels or remote.
Thanks a ton to Jonathan for this interview 🙏. Wooclap is a beautiful Belgian success story with an inspiring mission, kudos to them 👍 If you’d like to work with Jonathan, join Wooclap’s team here. See you in our next issue of RM-RF with Antoine Louiset from Yousign.
Hope you continue the series, Thomas!
Hope you continue the series, Thomas!