Time for another Spotlight! Today we’re talking to Jason Chen, Co-Founder of Slab…
Please tell us a little about Slab.
Slab is building an intuitive product to solve long term team knowledge. When a team is starting out everyone knows everything and knowledge sharing is mostly ad hoc and ephemeral. Once they grow to a certain size (remote teams experience this much sooner), a more deliberate and durable way to document and share knowledge is necessary. Slab is that solution in a simple and intuitive package with powerful search and organization with numerous integrations to connect all the team’s bodies of knowledge.
The company was started in 2017 and initially we spent several months in private beta building the product and iterating on user feedback. A few months ago we concluded the beta and started charging for the product. After hitting a revenue milestone recently we are now looking to add 3-4 great engineers to the team to accelerate our development and growth.
How did you discover Elixir?
I maintain an open source project called Quill and Chris McCord used it with Phoenix channels to build a demo collaborative editor. Having years of experience with Ruby on Rails and Node.js and its various web frameworks, I thought Phoenix and Elixir looked promising but I did not have a use case at the time. When I started Slab, I was unsatisfied enough with everything else to seriously evaluate Elixir and Phoenix, despite their relative nascency. It was time well very well spent.
What attracted you to Elixir the most, or what was the biggest advantage of Elixir that was most relevant to you and what you do?
Phoenix checked off a lot of boxes in that I was looking for an opinionated web framework (whose opinions happen to align with mine) with first class real-time support. The web was moving more logic towards the front end leaving just dumb data retrieval to the back end and Phoenix channels made it much easier and more natural to build fast and responsive user experiences.
But what sold me was after implementing Operational Transform with GenServers and comparing it my previous experiences in Node.js. The difference was night and day. Not only was it much easier to build and reason about with the guarantees Elixir and functional provided, but it was also much more reliable and scalable. Real-time collaboration was one of the hardest features I had previously built and maintained and OTP almost made it easy.
How big is your dev team?
We have a small team of three and are planning to grow to 6-7 in the next six months.
How many of your developers work with Elixir?
How did you train your developers?
In general developers learn by deliberate means in three main ways. The first is taking on tasks that have a good balance of being achievable but stretches one’s capabilities a little bit. This requires the team to good at scoping tasks and providing enough detail when creating an Issue. Then there is peer code review where your work is given a fresh pair of eyes and perspective and strengths and opportunities are highlighted. Finally the most hands on way to learn is pair programming with someone more experienced with the code or technology the learning is focused on.
Aside from this we expect and hire for people who are curious and intrinsically motivated to learn. People with these qualities over the years develop their own ways for learning (which we are also always curious to learn about) and we support them however we can — whether it’s purchasing books and training material or using our network to connect with experts on the subject.
What are your policies on remote work?
The core team is local but we have a flexible work from home policy. Given the nature of our product and our desire to access the best talent wherever they are, we are planning for a couple of next engineering hires to be fully remote.
What kind of Elixir related projects have you worked on?
Our main product Slab is on Elixir and Phoenix. It makes heavy use of real-time features such as Phoenix Channels, GraphQL subscriptions and real-time collaboration (like Google Docs) is powered by OTP/GenServer. We have also contributed a number of bug fixes to Elixir open source projects we rely on.
Were there any difficulties in transitioning to Elixir?
There is not a widely accepted path to optimizing the transition to Elixir yet. We often wondered if what we were doing was idiomatic or following best practices. We contracted some very experienced people in the Elixir community to tell us but in some cases there is not yet a prescription. This of course has the benefit of giving us and our experiences a voice in shaping such best practices.
Are there any architectures or methodologies in particular that you follow?
We have our own take on some combination of popular processes that work for us. We regularly have company retrospectives to figure out if we can benefit from any tweaks in the way we do things.
Which database systems do you use the most?
We use Postgres and it has been great for all our needs so far.
Which front end technologies do you use the most?
We use React, Apollo, and some Redux.
What was your primary language before you discovered Elixir?
How happy are you with your choice in using Elixir?
It has exceeded our expectations and we are very excited for Elixir’s future.
What would you say to other companies thinking about adopting Elixir?
The hype is real — definitely give it a serious look. Elixir/Phoenix will displace Ruby/Rails in a few years. We’re happy to be a resource if you want to chat email@example.com.
Thank you for chatting with us today! Is there anything else you’d like to share? Any plans? News? Tips?
We have recently hit a revenue milestone and are now expanding the core engineering team. If you want to work with Elixir in production along with other best of breed tools, come say hello at firstname.lastname@example.org or send us your application!
Thanks for maintaining quilljs! That’s a really neat project.
Thank you for the kind words! We’re hoping to be a positive participant to the Elixir open source community as well. So far it’s been bug fixes to a number of our Hex dependencies but we’re just getting started
Applied. You guys look interesting!
Applied as well. I like the idea of working in smaller dev teams!