Interview with
Gilad Navot

CPO, Swimm

Platform for continuous documentation.


What is Swimm? Why did you build it?

Today, sharing knowledge internally about code in an organization is not effective. It is limiting agility, ramp-up time, and eventually, development velocity. As long as humans write code, some of the knowledge will only live in their brains. Usually, it’s the most important piece of knowledge like data flow, a pattern, use cases that they know of, and the reasons behind their decisions, whereas comments and high-level docs usually explain how and what you did. They rarely talk about the why.

The core of Swimm is to enable you to add live code like snippets, tokens, file paths, etc., to documents within your repository. Coupling docs with code allows us to give you benefits that current documentation tools do not have.

First, we help you discover documents with our IDE plugins. While you write or read code, you will see the Swimm icon, which tells you that you have a rich text document about this piece of code.

Second, we help you sync those documents and keep them up to date. If you integrate Swimm into your CI, we check every PR and see if you’ve broken any documentation. If your change was meaningful, we will stop and say, "Hey, there's documentation about this part. Maybe you should review it." If it's not meaningful, like changing file names, moving code around, and even replacing whole chunks of code (we have a patented algorithm to detect that), we can Auto-sync it for you and say, "We’ve got you covered, your documents are up to date.”

Updating non-meaningful changes is also important because we’ve found that documentation often gets into this ‘ghost document state’ where they are still correct but do not reference the latest part of the code. Developers lose trust in the document even though parts are still relevant. Our Auto-sync capabilities help there.

We're also working on a way to support the methodology of how you write documentation and keep it as part of your development workflow. In general, we invented this concept called Continuous Documentation or code-coupled Continuous Documentation, which helps you add documentation as part of your workflow.

What does a "day in the life" look like for you?

The biggest change transitioning from a developer to a product leader was that, at first, I had an empty calendar and a huge list of tasks. But now I have a full calendar and an empty list of tasks. So, I try to spend the first half a day going over the current version, making sure everything is on schedule, and a bit of product inbound work. In the second part of the day, I usually do some founder-related activities, building the roadmap, watching user tests, reading the analytics - stuff like that.

What is the team structure around Swimm?

In the beginning, we didn't want to structure the teams around a specific technology or feature. But now, as the product has matured, we’ve restructured the company around these features. We have three squads. One is in charge of the editor experience – you can say that the Swimm editor is a product of its own. So we need a squad to keep it bug-free and up to date with the competition.

We have another squad that is in charge of IDE plugins. This area requires a lot of specific technical knowledge. We support VS Code and JetBrains. JetBrains plugins are written in Kotlin, and VS Code plugins in JavaScript. So we need an entire squad dedicated just for that.

And the third squad is in charge of our Auto-sync algorithm, the GitHub integration, and what we call the app envelope ( login mechanism, billing stuff, etc.).

How did you first get into software development?

As a kid, I had a ZX Spectrum, 8-bit. I mostly played, but I also wrote some lines in BASIC, which led me to learn how to program in school. But professionally, I started in the army. I was in the IDF Flight School, where I trained to be an officer in charge of a group of developers, writing courseware for flight cadets.

We wrote courseware about aerobatics, aerodynamics, how to start the engine of certain airplanes, and stuff like that. It was extremely interesting. We wrote the software using Lingo, which is quite an old language. It was created by Macromedia - later acquired by Adobe. I started developing in Java. It's a good language to start with because it's very strict, and then I slowly moved into the realm of JavaScript and Python - the more loosely coupled languages where you can just make mistakes. But in my opinion, you need to be a bit more senior to use them.

What is the most interesting development challenge you've faced working on Swimm?

The latest one was enhancing Mermaid. It is a JavaScript diagram syntax that we wanted to support. Imagine your diagrams that describe your architecture or a flow automatically changed when you change the architecture in the code. Embedding Swimm Tokens that are Auto-syncable in the Mermaid syntax, saving in Markdown, and rendering them correctly in GitHub preview - was a big challenge. But we did it. Now we support Mermaid, and I think it's a very big addition to our docs.

We faced another major development challenge in our quest to support the editor in multiple environments. We are now working on adding the ability to create and edit documents from within the IDE - giving you this full-blown rich text editor experience next to your code. This includes sharing code between all of those parts, Kotlin, JavaScript, and having the same editor so that if you fix a bug, it is fixed for all the environments.

What’s the most interesting tool/product you’ve been playing around with recently?

We're playing around with GPT-3 right now. There is a limit to the value GPT-3 can give to documentation because you can never deduce the why. The “why” is not in the code. You can get the smartest AI to write documentation about the code, but it will never know why you did that or why you chose this way.

Understanding the reasoning is very important, and the reasons only live inside the brain of the developer who just wrote the code. Where Swimm can really help is reducing the effort to write new documentation. Like a ghostwriter, we ask you the why, and Swimm takes care of the rest.

Describe your computer hardware setup

I take my laptop everywhere, so weight is very important for me. I use the Lenovo X1 Carbon Nano. It's under one kilo, and you don't really feel it in your backpack.

My phone is a Pixel 6. I always had a Pixel, even before it was called a Pixel. I also have a Pixel watch. I don't really need a smartwatch, but I got it anyway – it's an interesting piece of tech that I am not sure how to use yet.

I always use wireless keyboards, preferably Microsoft. I had to give up my DAS mechanical keyboard (with CHERRY MX keys) when my son was born, as it makes too much noise. And so I moved to something quieter.

Describe your software setup

OS: Windows

Browser: Chrome

Email: Gmail

Chat: Slack and Zoom

IDE: VS Code

Source control: Git and GitHub

Describe your desk setup

I lost my home office for a nursery. So, I work from the office most of the time. The most important part for me is not the chair, but the ability to connect with one cable to the docking station. So, I have a Dell monitor, 27 inch, which gives you a USB-C cable. You connect your laptop to it, and then it is charging. The camera, keyboard, mouse, headphones, network, and everything else connects with just one cable.

When coding

Daytime or nighttime? Day.

Tea or coffee? Coffee.

Silence or music? Music.

What non-tech activities do you like to do?

When I have the time, I go diving or skiing. I like these types of activities because you put effort into half a day, and then you can relax the second part of the day, and you don't blame yourself. You can enjoy the relaxation time because you earned it by doing some sport before.

Find out more

Swimm is a platform for continuous documentation. It was featured as an "Interesting Tool" in the Console newsletter on 19 Jan 2023. This interview was conducted on 16 Jan 2023.