Future of Coding - Blurring the Line Between User and Programmer: Lane Shackleton

Episode Date: August 15, 2019

"The world's been divided into people who can make software, and the people who use software all day, and basically we think that that paradigm is not a good one. It feels kind of broken," says Lane S...hackleton, Head of Product at Coda, where they are building a new kind of document that blurs the line between users and programmers.  A Coda document starts out looking like a familiar online document, a lot like Google Docs. There's a blinking cursor, you can bold and italicize text, add images, and collaboratively edit it alongside others. But a Coda table is much more powerful than a traditional table that you'd find in a typical word processor. Like a spreadsheet, the a Coda table allows you to create complex relationship between pieces of data via a formula language. Upon closer examination, the Coda table is more structured than spreadsheets and more closely resembles a friendly relational database, like Airtable. If you're familiar with Notion, another augmented document medium, this all may sound familiar. Coda differentiates itself in a few ways. For one, it allows users to build complex (but no-code) trigger-based workflows from within the tool, such as when a table is modified or a button is pressed. For another, Coda really sells itself as an app-builder, in that teams can use Coda documents on their phones as native mobile apps. For example, a bike shop can have its employees easily swipe and snap a photo of inventory directly into a Coda table simply by creating a photo column in that table. Coda takes care of converting that column into an interface that automatically pulls up the camera on mobile. Coda was inspired by the founders' experience at YouTube, where the company "ran on spreadsheets," but now they dream of building a medium that fundamentally changes how people see themselves, as creators instead of merely as consumers, and reshapes the way teams, communities, and even families collaborate and function. It's a big vision, and Coda has a long way to go. This episode was sponsored by Replit. The transcript can be found here: https://futureofcoding.org/episodes/041#transcriptSupport us on Patreon: https://www.patreon.com/futureofcodingSee omnystudio.com/listener for privacy information.

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to the Future of Coding. This is Steve Krause. Today on the podcast we have Lane Shackleton who is the head of product at Coda. It's coda.io which is a new future of programming type tool that I imagine many of you have seen or heard about. It's a lot like Notion, if you've played with or seen Notion. It was announced that they raised money, these two former YouTube executives, maybe around three years ago, and then we didn't hear much from them until earlier this year when they came out of stealth mode or private beta and they launched more publicly. So now you can go on coda.io and play around with the tool yourself. And like Notion or Google Docs or Microsoft Word, the tool starts out as a document, but then you can add in
Starting point is 00:00:58 databases, formulas, kind of like Excel, and even kind of scripty things based on triggers and resultant actions you want to have happen. And as you'll hear later in this conversation, they have a really ambitious vision, much more ambitious than I would have thought based on playing around with the product. But, you know, it's early days. And so that's why we had these conversations, because Lane detailed how they see this product as really blurring that line that a lot of us want to blur between people who make software
Starting point is 00:01:29 and people who use software. And they even one day see this product being useful for creating products, not just as a tool internally for teams to use for documentation and managing processes, like internally for a team. They see that it could be something for documentation and managing processes. Like internally for a team. They see that it could be something for creating external products too. But I don't want to steal his interesting tidbits too much.
Starting point is 00:01:55 So I will leave the rest of the explanation of what Coda is now and what it might be soon in the future to Lane. Before I do, I just have a quick message from our sponsor. Repl.it is an online REPL for over 30 languages. It started out as a code playground, but now it scales up to a full development environment where you can do everything from deploying web servers to training ML models, all driven by the REPL. They're a small startup in San Francisco, but they reach millions of programmers, students,
Starting point is 00:02:24 and teachers all over the world. They're looking for hackers interested in the future of coding and making software tools more accessible and enjoyable. So email jobs at repl.it if you're interested in learning more. Great, and without any further ado, I bring you Lane Shackleton. Welcome, Lane. Hi, Steve. Hi, yeah, thanks for making the time. Glad to be here.
Starting point is 00:02:47 So I would like to start with a bit of your background because most of the guests in this podcast I think are pretty technical and I think you come from more of a product background. Is that right? Yeah, that's right. I'm probably a bit unlike some of your other guests. I don't have a long history of programming languages necessarily. I guess my background really quickly is I studied sciences and anthropology in school. I actually didn't start my career in tech, started as a mountain guide up in Alaska
Starting point is 00:03:19 and back in 2005 drove my car across the country to Silicon Valley. There were basically two hot companies at that time, VMware and Google. I started at Google in a customer-facing role. And that was a really good introduction to how to make customers happy and learn how to balance really fast people's emotions with solutions to their problems. In a lot of cases, these were business owners who were using Google tools to grow their businesses.
Starting point is 00:03:59 And then later, kind of got to be a little bit more technical, built some internal tools for support teams, moved over to product, was really fortunate to be part of a lot of the early monetization efforts at YouTube, launching things like skip buttons on ads on YouTube that eventually kind of went from zero customers to a whole bunch of customers and a whole bunch of revenue. I guess overall my kind of journey to Coda though, Shashir, who's the CEO here, was starting
Starting point is 00:04:35 this company after he left YouTube and kind of kept showing me demos. And I got really kind of enamored with the problem space, mostly because I have a really, I guess, a deep empathy for people with the experience of knowing what they want to build and not being able to make it with software. I feel like I recall this very vividly from being inside of Google, where you have really amazing engineers, and I myself had ideas on what I wanted to make, from being inside of Google where you have really amazing engineers. And, you know, I myself, like, had ideas on what I wanted to make, but sometimes was unable to make those things.
Starting point is 00:05:17 Yeah, and since then I've just been, like, really sort of enamored with the space and been since inspired by a bunch of stuff that's probably closer to home for your listeners and you, you know, a lot of Brett Victor's work. Recently, we've been pretty inspired by Nardi's work and her book, Small Matter Programming. Also, things like Clayton Christensen and Jobs Be Done Framework. So to me, Coda is sort of like this, you know, relating it to my background. It's this way to kind of help people who are smart and capable, just the same way that I felt. So that's a little bit of my background. Happy to dig into any of that. Yeah. Yeah, it makes a lot of sense that this would be a very meaningful product for you, given your background. Particularly, I see the relevance of how your first role at Google, working with business owners, I feel like it definitely makes sense how this is kind of a similar power tool to help people with their businesses.
Starting point is 00:06:23 Yeah, absolutely. I mean, a lot of those, those folks were, you know, small and medium sized businesses. Um, and, uh, if you go look behind the scenes of many small and medium sized businesses, you see that there's a lot of tools that are kind of packed together. Um, uh, and, uh, you know, the, the businesses often have to, to create their own tools because they can't buy really expensive software. So there are a lot of parallels there.
Starting point is 00:06:51 So I think now would be a good time to do a quick two-minute pitch for Coda, like what it is and what's the promise for it. Why would people use it? Yeah, it kind of depends on who you're talking to, but I think we generally say it's a new type of document that combines the best of docs, spreadsheets, and applications. And that's maybe like the one-liner. Sure. I'd be curious to go into the different audiences.
Starting point is 00:07:18 Maybe you could pick two or three audiences and tell me how you tailor the pitch for each of them. That'd be interesting. Yeah, Yeah. Um, so I think if I'm, I'm talking to someone who doesn't know much about, um, tech or software, um, I think I often like to frame it sort of at like 50,000 feet. Um, you know, basically the world's been divided and the people who can make software and the people who use software all day. Um, and, and basically we, we think that that paradigm is not a good one. It feels kind of broken because there are lots of, you know, smart and knowledgeable people out there who don't know how to write code and shouldn't have to to make tools to solve their problems.
Starting point is 00:08:01 And so the sort of, you know, 50,000 foot, 30,000 foot thesis is that, you know, we basically just need to give people the right tools to unlock that creativity and a lot of the domain expertise that's out there. And in terms of like the product itself, if I were to, you know, be kind of demoing it to someone or showing it to someone, you know, I'd probably start by showing them that it's just a dock surface. So, you know, blinking cursor in a toolbar and something that can kind of grow with the evolution of, you know, an individual's, you know, project or a family's, you know, trip or a team's evolution, you know, starting up, kicking off, all the way to tracking a bunch of tasks, all the way sort of through the life cycle of something. So that's maybe the 30,000-foot view.
Starting point is 00:08:57 In terms of specific audiences, you know, if I were to go pitch a you know product manager in silicon valley that's a that's an easy one because i have a lot of background in that area um uh you know i definitely know this this very well having right you know writing specs and designs and stuff back at youtube and google um and i think the main observation i'd start with with someone like that is oftentimes you outgrow and have to move around your tool set and so you know if you if you take someone like that they might start with writing an idea and a doc and then eventually that becomes a set of you know structured data things things that they have to do, a set of tasks. And then there's a workflow around those tasks. And then they need to do things like launch that thing.
Starting point is 00:09:57 So oftentimes that's four or five tools with someone like a product manager and with coda the idea is that really the tool can evolve with those needs you know you can add multiple sections inside of one document one for your you know high-level goals and then that's you know right next to all the tasks that the engineer is working on and so there's this nice sort of all-in-one-place aspect of it for someone who's usually used to traversing a bunch of different tools. Yeah, I don't know if that answers your question. Oh, yeah, it definitely does.
Starting point is 00:10:41 There are a few different directions I want to go in at once, but one of the last things you said struck me the all in one place aspect of it because I definitely see how that's a really powerful there's a lot of powerful synergies of having an integrated experience
Starting point is 00:10:58 especially for people who aren't familiar with programming but even for people who are it's nice to have an integrated experience. But then it kind of, I don't know if you're familiar with the Unix philosophy, but there's this other philosophy of having a bunch of small things
Starting point is 00:11:14 that do one job and do it really well that you can kind of use all together. So, yeah. Yeah, I mean, that actually reminds me of the Rich Hickey talk, simple versus easy. I mean, I think inside the document itself, we actually think a lot about those atomic units, so, and how they compose on each other. So I think the idea of something being sort of simple and single-purpose maybe I'll use an
Starting point is 00:11:47 example from our our document so inside the document you can create a button and that button you know basically does one thing you you you press a button and and it takes an action like adding a row or refreshing data or something like that. But buttons can obviously be composed in meaningful ways with other things to do things like take an action outside of the document. So if you want to send a text message or a Slack message or something like that, you're sort of taking two hopefully simple parts, you know, a formula that takes an action outside of the document, like send a Slack message,
Starting point is 00:12:32 and we're powering that button with that formula. And so that's maybe a pretty involved answer, or maybe an involved example. There are probably ones that are simpler kind of to your question. But I think in many ways we look at the parts inside of the document as those building blocks that makers and people who need to build tools can compose um and less less of a um you know we have the answer this is the this is the single um way to do project management or this is the single way to do crm um the idea is that you can kind of take these
Starting point is 00:13:19 simple parts and build them up interesting yeah yeah i see I see what you mean. So within the tool, you give them a bunch of simple, independent or orthogonal Legos and they can make their own system. But the tool itself, I guess, needs to have a lot of those Legos in order for it to be competitive against a single-purpose CRM
Starting point is 00:13:41 versus a single-purpose spreadsheet system used in combination? Maybe. You know, I think one piece of this is that you have to have, you can't have too many kind of Legos on the table or it becomes difficult to understand which, you know, which Legos you should use when. So I think we think pretty carefully about each of those building blocks that we add. And if, you know, I think oftentimes if you decompose apps, like take a CRM for example, what you really have is sort of a database layer, which we have in our tables.
Starting point is 00:14:28 You have kind of a logic layer, which you can build up through automations and formulas. And then you have kind of a presentation layer. And that presentation layer allows you to do things like add new candidates or add new sales companies to that CRM. And each of those, I guess, with C really only three, you know, in that case, three or four things that you need to understand in terms of the building blocks that make up something like that. And obviously there are things that CRMs do that are quite powerful. But interestingly, I think when you compose things like formulas and buttons or formulas and tables, you can get pretty close. You mentioned in a prior conversation that one of the main inspirations from Coda came from yours and the founder's work at YouTube, where the company was run in a collection of
Starting point is 00:15:42 mostly spreadsheets. Is that an accurate way to explain it? Yeah. Yeah, it's kind of a fun story. So, you know, I worked with Shashir, who's one of the founders at YouTube, and Alex, one of the other founders, also worked there. Shashir ran product and design, and I helped lead some of our monetization efforts there.
Starting point is 00:16:05 Thinking about YouTube as an example, and and i helped lead some of our monetization efforts there um thinking about youtube as an example i think is is um is interesting i mean in in many businesses like when you when you look at the software that they're buying they uh you know they're buying all these vertical apps but oftentimes when you just say, hey, pull open your laptop and show me how you're running the business, oftentimes they've been exporting to a spreadsheet and manipulating that data. And that's certainly the case at YouTube. Despite having amazing engineers capable of building all types of different tools, you know, the leaders of that business chose to run on spreadsheets.
Starting point is 00:16:50 And I think the main, I mean, a few different reasons. One is, and I think this is really common, it basically enabled the team to flex like a specific perspective on how a process should run so that they weren't confined to like a specific tools way of doing things so like a few examples you know you want to run a calibration process across a thousand people you want to do comp planning across a thousand people you want to run like a OKR process for all your teams oftentimes we had a perspective on how those things should get done. And so instead of having some engineer change a frontend or change, you know, add columns to a database at our request, it's much easier to just build those things up out of a spreadsheet. So it's one of those, I think a good example of having
Starting point is 00:17:48 an opinion on how something should run. So the team basically picks up the flexible tool that everyone could access. It's as simple as hitting the share button on a spreadsheet to give people access to your tool. A lot of that I think served as inspiration for some of the things that you see in Coda. So, yeah, why is it, do you think that spreadsheets have been so successful as opposed to like docs?
Starting point is 00:18:16 Like, why wasn't things being run like in a Google doc, for example? Yeah, great question. I mean, I guess I would start by saying spreadsheets are completely amazing. Like we have a lot of folks inside the company that are wizards when it comes to spreadsheets. And I think one of the main reasons to answer your question
Starting point is 00:18:41 is that it's a very flexible thinking surface. You know, it has this kind of open grid that makes it feel like anything is possible. That comes with some positive and negative consequences later, but I think as a starting point it's quite approachable in that way. You don't really have to know anything about formulas. You don't really have to know anything about kind of the deeper parts of a spreadsheet to get started. And for the most part, it's, you know, it's based on a very, a pattern of direct manipulation. You know, you kind of highlight what you want to highlight. You touch what you want to touch.
Starting point is 00:19:27 And for the most part, you get what you expect. So I think that's part of the reason. I think the other part is that spreadsheets in their kind of upper reaches with a really flexible formula language that kind of interestingly started for accountants has grown into something that you can actually do a lot with. And I'm sure you've seen some of the crazy spreadsheets that people build.
Starting point is 00:20:07 So I don't have to go too far into that. But eventually, I think what happened is that it kind of became a tool of choice for everyone with a computer and an obvious starting point for things that were going to include, you know, numbers or calculations or, you know, basically a place where you could drop a bunch of information in and then add some structure to it. Whereas I think that historically, to go back to your question, docs haven't always been a great place to add that structure. And by structure, I mean even the most simple things like having a task with a status or really, really basic things.
Starting point is 00:20:58 The tables inside of Docs historically have been more layout-based. And so it's less of a space that can kind of grow with your idea. Yeah, I see what you're saying. Well, spreadsheets are also kind of like almost superficial in a way that like Airtable is kind of innovated in making it not. And you guys also, it's more like the table is kind of innovated in making it not and you guys also um you it's more like the table is the data and then you have also a presentation layer as well but you guys make like a clear
Starting point is 00:21:31 distinction when like a google doc is uh it feels like it's it's less semantic it's some in some ways yeah yeah so it seems like we're in a bit of a renaissance of like the next version of spreadsheets. There's it seems like Airtable and then there was also Fieldbook, which I don't think is anymore. And then Notion recently added a kind of a data spreadsheet model. And then you guys, why do you think now is kind of the time for everyone to be rethinking the future of docs and spreadsheets? Yeah, that's a great question. I, you know, I guess the first thing we're saying is like we're big fans of anyone trying to make it easy for, you know, makers build build what they need I think this is this is a really positive step forward for a lot of people who are you know subject
Starting point is 00:22:31 matter experts and knowledge workers in terms of why why we're seeing it now that's a that's a good question. I think in many ways, like, what you see is people starting to kind of take back control of the tools that they use. And this isn't necessarily a new phenomenon, but, or at least like in the last few years, but, you know, just if you look at like the IT purchasing process, it used to be that people would, you know, there would be one person who oversaw it and they would have to, you know, sort of procure software in a, in a, in a way that they distribute it to everybody inside of a company. And I think in the last few years, you've seen a lot of like bottoms up growth of some of these tools like Slack and others where people are sort of having an opinion and choosing
Starting point is 00:23:37 the tool that they wanted and then bringing that to their business or to their families or whatever. I mean, I think it's hard to look past some of the other big innovations that got us here. So bringing something like a spreadsheet from your machine to the cloud was a big one. It made it possible for this to be a truly collaborative surface. And I think that was a big step. And then to kind of go beyond that, I think everyone kind of has their own take on what it is and what it should be.
Starting point is 00:24:20 I kind of like to think about it as they're kind of like three big buckets in the landscape. You have people that are starting with a doc or a doc or a wiki like environment, which I think Notion started with. You have the table, which obviously Airtable has done a great job with. And then you also have this kind of bucket of apps, you know, everything from like small niche apps to big things like Salesforce. And so we end up competing
Starting point is 00:24:54 or we end up kind of in the space of all three of these tools, depending on how the user chooses to use Coda and what they're trying to do. So, some people use this just as a simple document surface. It's interesting, we were pulling some stats the other day and it looks like about half of our documents are basically used without a table.
Starting point is 00:25:20 So, people really kind of just leaning into the document with multiple sections to structure kind of prose and written text. That seems surprising to me. Why aren't these people using Google Docs? In theory, I would expect Google Docs to be more full-featured as a document than Coda. Yeah. Yeah, that's a good question. I mean, Google Docs is certainly, and Word, are certainly very mature document surfaces. You can do all types of formatting, you can do things that I think you would need to if you were printing regularly, if you're writing a novel, things like that. But I think the reality is that a lot of the prose that's written nowadays is written sort of for collaboration. It's written to send out to a team. It's written as a plan or a goal or a spec or something like that.
Starting point is 00:26:20 And so some of the more mature features of something like docs become a little less important in that world and i mean to to kind of go directly at the question i think one of the reasons that people pick us up is because um you know i love the like alan k quote of simple things are simple and complex things are possible um i think you know in our case the simple things are simple and complex things are possible. I think in our case, the simple things should be simple. You should be able to just start with some prose or an idea and write some text. And then you should also be able to sort of grow and evolve that. And I think that more and more people are choosing alternatives to things like Google Docs because I think in some senses you you end up outgrowing
Starting point is 00:27:13 just in the life cycle of like one project or one you know family trip or one whatever it is you end up kind of outgrowing the capabilities and migrating to a spreadsheet or using what we really commonly see in businesses when we first talk to them is this like um this combination of docs and spreadsheets where you have like docs that are pointers to spreadsheets and and back and forth um which i've i've like definitely lived through that world and it's um uh i think there's there's probably a better way so that makes sense it i find it um i guess it's impressive um that you're able to sell the vision of like even though you only need a doc right now like you know start with us because we'll grow with you because i feel like most of your value add and like the the exciting features you bring to the table, they might not
Starting point is 00:28:05 get to them until like they've already written a couple of docs. So that's what I'm impressed by. Yeah. Yeah. I mean, I think one, one thing that goes a long way in that respect is just having a template gallery that has lots and lots of examples of things that our makers have built and like submitted to us or templates that we've made for them. So it kind of cues you into the fact that, like, oh, this later can have a table of tasks that I can use to track things. But right now, you know, all I have in my head is an idea. So you kind of, I hope that our users glean that from seeing a lot of the examples that we put out.
Starting point is 00:28:50 Yeah, that makes a lot of sense. So, based on the conversation we've had so far, I get the feeling that this is a tool that is very easy to sell to a product manager. But I'd also be curious to hear what other sorts of initial users you're targeting now. Of course, it's a very general purpose tool. Everyone uses spreadsheets, so in theory, everyone would use this. But are you focusing on some initial people? Another thing I'll add to the question is it sounds like you're focused on companies and teams collaborating as opposed to more individual use. Would that also be accurate?
Starting point is 00:29:33 Yeah, so definitely, like you said, it's a very horizontal tool. So it's always kind of challenging to define a specific target. But we do see a lot of success in teams. And I think that that just comes back to the fact that it's a document surface, it's collaborative, you can see the avatars and the people that you're working with in there, and they can collaborate in real time. I also think that we have a fairly deeply held belief that these makers can kind of come from anywhere. So I think we're careful not to label or categorize people too much. And I think we've been inspired in part by Jobs to be Done and Clayton Christensen's work there. I guess, so just some other examples to make it more tangible. Maybe, so just to interrupt, can you talk more about Jobs to be
Starting point is 00:30:25 Done? I haven't heard of that. Yeah. So I guess the general thesis behind Jobs to be Done is users hire or people hire products in their daily lives to solve specific jobs. Um, and, uh, that's sort of in contrast to, uh, you know, this set of demographics will buy this product, um, sort of causally because of their demographic. Um, and kind of the classic example that he uses is, uh, a fun one. It's, it's the milkshake analogy. I don't know if you heard this. No. So I think they were doing, I may butcher this story, but I'll recount it as best I can from memory. So basically they were doing some research for, I think it was like McDonald's or something.
Starting point is 00:31:17 And they were trying to figure out why people were buying milkshakes at, you know, between like 7 and 9 a.m. And this is sort of confusing everybody. And what they figured out was that people were buying these to take on their commute. And so he uses this analogy of jobs and commuting with the milkshake. Basically, the job or the task that a user or person needs an answer for is something to keep them occupied on their commute. And they could solve this with like, you know, a banana, but that's only like two minutes on a 30 minute commute. And they could solve this with like a glass of water, but that's kind of boring. Nowadays, people probably use like podcasts on their phones
Starting point is 00:32:17 to keep them entertained. But the general idea is that... Like right now. Someone's listening right now. This is a job being done. But the general idea is that a milkshake solves this job really well because it's sort of this slow burn of happiness to the person who's commuting. It takes them 20 minutes to drink this milkshake. And so this sort of presents as a nice metaphor for other instances where people have like a very specific job or a very specific task. And it's sort of unimportant what their demographic is. And what's more important is that they have a specific job to solve. Yeah. Cool, thanks. And just to remind you where you were going before I interrupted you, you were maybe going to give some examples of specific people and the problems they're using Coda to solve.
Starting point is 00:33:15 Yeah. Yeah, so on kind of like what you might call like consumer side, I think we have people doing everything from organizing trips to planning weddings to splitting expenses with their friends. Actually, more recently, some of our community has been really into building games. So people sort of go all over the map
Starting point is 00:33:44 on that side of the house. In terms of businesses and teams, I think, you know, obviously engineering teams, design teams, product teams, salespeople, recruiting teams, those are sort of to name the like laundry list. Just to like maybe dig into one of those for a second. It's kind of a story that I really like. So one of the first times I feel like I realized we were kind of onto something was when I sat down a few years ago now with a 23-year-old recruiter and um like he he started the conversation by saying uh i'm not a spreadsheet person i don't know how to code um and i was like it's okay um let's let's let's see what you you know what you need to do um and and i kind of like watched and
Starting point is 00:34:40 helped him build a tool for his team to track at the time this was engineering candidates. And it's, you know, the tool is basically like an editable database with a bunch of views for each person and like a few controls like select lists where you could kind of like let people filter. And interestingly, you know, I guess there's a few interesting parts to me about this example. One is almost three years later, they're using the same tool. So it was custom and sticky for their team. And I guess more personally, the neat part for me was watching him roll out this tool and the sense of pride that he had in rolling out this tool and and like the sense of pride that he had and rolling
Starting point is 00:35:25 out this tool and Clayton Christensen again talks about how every great product has kind of like a social functional and emotional aspect and this was it was really neat to see sort of like the pride emotion of him making software for the first time like really really presenting a tool that he had made. And then sort of the social aspect of his team really feeling like, oh, this person's capable and really valued and contributing to our team. And so I think that, you know, when we do our jobs right, that's the result, right? Like people feel like they can take their subject matter expertise or domain expertise and present it to their teams
Starting point is 00:36:11 and build, you know, what feel like perfectly customized tools to that group of people. And actually to maybe take that example a step further, what's really interesting to me is like, you know,, to maybe take that, that example a step further, what's really interesting to me is like, you know, in a traditional software model, what would have happened when that team evolved? So like that team ended up going from, you know, like five people to 20 people over the last three years, um, is like that, what would have happened is like, they would have had
Starting point is 00:36:41 to go back to, if that tool was built, you know, in code, like they would have had to go back to, if that tool was built in code, they would have had to go back to some engineer and ask for changes continuously. And instead, they were able to actually change that tool themselves as the team evolved. And so there's a really concrete sense of agency that I think is quite powerful when we do it right. Yeah, that sounds like a really obvious value proposition, like, you know, impress your coworkers with your superpowers. Yeah, I and I think many engineers feel like feel like you know we feel that sort of pride all the time it's like a lot of what drives us um so it's cool that you get to democratize that like i built a thing that you can all use and you'll think of me fondly while you use it yeah and and i think you know i think there's something really impactful about having someone, like, think about themselves differently in that way.
Starting point is 00:37:50 You know, think, oh, I'm just as capable as other people at making things again. The analogy I like to use is, you know, when you ask a group of, like, four-year-olds, you know who's an artist like everybody raises their hand um but then like you know you get the same group at like you know 40 and like zero people raise their hand and and i feel like in in general like the artist has kind of been beaten beaten out of people when it comes to to like software and tools and so I, and so far as we can like reinvigorate that, that, that makes me happy. So do you find that the story you told of someone starting this new system from scratch and growing over time to being central to the business, that that's kind of more the approach? Or do you also find people migrating existing spreadsheets or CRM systems into Coda?
Starting point is 00:38:45 What's like the breakdown? I don't know if you have the number than that. What's like the breakdown of from starting from scratch and growing or migrating into it? Yeah, I mean interestingly that process was, I think if I recall correctly, that process was run out of like a custom tool or like a, a like kind of a niche vertical tool that then they realized that that tool kind of didn't fit them. And so they ended up migrating that into a spreadsheet and then from a spreadsheet into, into Coda. So in terms of the numbers and where we see migration
Starting point is 00:39:24 from it's, it's really all over the map. There's no simple statement to make there. We see people migrating from docs. We see people migrating from project management tools of all kinds, vertical apps like little mini CRM systems, specific recruiting recruiting tools and a lot of spreadsheets. And are you, I don't, I don't exactly know how to ask this question in a precise way, but I guess how often are people customizing things versus just using them, like customizing them once, customizing things, like, I wouldn't be all that surprised if people customized things, like, kind of once a year and then maybe made a few tweaks here and there, but mostly we're just using it as an app or app slash spreadsheet.
Starting point is 00:40:13 Yeah, that's a good question. I mean, I think this is sort of worth pointing out that it depends on the type of doc that you're talking about. So, you know, as I was mentioning before, half of our active docs don't don't have tables and so in that sense like they they're constantly being customized because like people are writing meeting notes or people are you know writing uh ideas or designs or whatever um but but sort of maybe more to your question for for like more involved more involved docs that might wholesale replace another system or a workflow that the team previously had, oftentimes what we see is this pattern of two or three makers kind of co-creating the tool for their team. And this, like, makes sense, you know, given a role, like, you know, something that's probably familiar to your listeners is, like, if it's a product team, like, the product manager and the engineering lead
Starting point is 00:41:14 or the product manager and the design lead are kind of, like, building the ideal workflow for their team. And that's basically a general setup process process and so the doc kind of goes through like lots of iterations in that that early phase and then like you said it may get used for a period of time and then some something changes right the project like winds down or the team grows and the effort like expands considerably and then you go through like another iteration of that that building process to use like a real example um there's a customer a set of set of folks at uber that used us to to
Starting point is 00:42:03 redesign the driver app it was kind of like the largest redesign of the driver Uber that used us to redesign the driver app. It was kind of like the largest redesign of the driver app that Uber has done. And that followed a very similar pattern. Like, you had really two people setting up a construct for, like, hundreds of engineers to go work. And so, you know, for a week, they were kind of building out the perfect system that's actually in our template gallery, kind of in that top row, if you're curious. They were kind of like building up this perfect system so that like all these teams that are distributed all over the world could then, you know, enter their information about like how that project is going and kind of break apart this massive project into, to like, you know, coherent parts. And then, and then they kind of like let, you know, hundreds of engineers, hundreds of people loose on that tool.
Starting point is 00:42:57 And then over the life cycle of the project, they ended up building out, you know, other aspects of it later. So, so sort of like at the midway point, they built this really neat pie chart, which is basically a progress of how close they are to code complete. And that became the thing that they started every meeting with. It was like, how close are we to actually shipping this thing? And that's kind of what i mean by like this this i this is ideally a tool that can
Starting point is 00:43:27 evolve with the life cycle of you know a really small project or a really small set of tracking requirements to um to something like very very large um and even within that project kind of evolve with it yeah and so i'd be curious to know like what what sort of agency people like uh have like down farther down the food chain like if certain engineers you know wanted to customize things um like do they have the permission to do that and how do they make sure they're not like stepping on other people's toes or like messing with other integrations that are core yeah yeah it's definitely, it's a tough question when you're organizing like hundreds of people.
Starting point is 00:44:09 It's almost like the flexibility of the tool is working against you here because like there's certain things that you want to have be like, no, no, these are like rigid that like we're kind of top down deciding for you as the organizers. And then, but you know, we also want to give you flexibility
Starting point is 00:44:24 on things we don't care about. Right, right. Yeah, there's probably a couple things to say about that question. Maybe the first is that because it's a document, you have what you're used to seeing in documents, which is some basic set of permissions. So you can give people view-only access.
Starting point is 00:44:44 You can give people comment- know, view only access, you can give people comment only access or edit access. And, you know, so in this case, like for the executive team, I think they only gave you access because like they didn't want executives going in there and changing a bunch of things. But to your question on kind of like further down the chain and, you know, if I'm an engineering manager in Dublin, what does it look like to change this tool? One of the things that we see really commonly is people creating kind of their perfect view of a set of data. So in this case, you know, you might have one, one like Uber like task table, or like one, one features table or something like that. And, and then an individual team goes in and creates a section. And that section is sort of, they title it like, this is our section as the, you know, design team or something like that and they all they're doing is like creating a filtered view of that larger data set but kind of importantly
Starting point is 00:45:52 it's all the same data set right so it's kind of right through from that view to the the core table and back and so the the part you know if you were to ask the folks from Uber, I think that they have said to us, this is sort of the central piece of this. There's one source of truth for all of this data, and yet I can have as many different views of that data as I want, and I can add controls on top of that to do additional filters, and I can add buttons to make it easy for people who are just contributors to that document to come in um and and add a new feature or whatever it is
Starting point is 00:46:33 so like a quick quick idea um let's say so we have a single source of truth for features for the whole uber company and then we're in dublin we have a filtered view for just the the features we're responsible for and let's say for whatever reason we want to add a column to because we care about some extra piece of metadata on features that isn't in the source of truth table yeah um i guess the question is two part one could if we added a column would it like accidentally like would we kind of unintentionally add a column to the whole table and then people at HQ would get upset at us? And then the second question is, is there a way to add that attribute in a way that doesn't, other people don't even see it? Yeah, this is a very deep question, but I'll do my best to kind of summarize a few parts of this. So I guess to maybe start from the concrete,
Starting point is 00:47:28 in this case, like one of the first things that the designers of this document did was go off and get all the trackers that each team wanted to use. And so there was a common understanding of like which columns are important. And interestingly, like the alternative that they were looking at was like you know literally dozens and dozens of spreadsheets
Starting point is 00:47:50 and all of those spreadsheets like had slightly different column names but effectively representing the same thing right and so there's sort of like one obvious win for them as the designers of this tool that i now like don't have to reconcile all these like different you know slightly different names that represent the same thing across all these things so as the as the designers of the the tool for 300 you know plus people what they did was they did like the column reconciliation if you will um and and like agreed upon that. Sort of down a level from that,
Starting point is 00:48:31 like let's say that they still missed that column for the person in Dublin. That person, you know, if they have edit access to the document can certainly add that column. And it turns out that that's actually really important and useful too, because like they may want to branch some variant of that features table in a way that's, like, helpful for them. And so as long as they're not, quote, like, polluting the other views by, like, forcing that column to be added everywhere and all the other views then that mostly gets out of the way for everybody else at certain points I think
Starting point is 00:49:10 folks are finding the tool very useful and adding lots of columns and so I think that there is this question around like oh is there a different level of permissions here where we can say you, people should only be able to add rows and edit rows, but not, you know, change, change the columns or like, you know, the formulas and some of the existing columns and stuff like that. And that's, that's something that we're certainly thinking, thinking about and have been prototyping some answers to. But, but, but at its core, I think, you know, in a place like Uber, that's super collaborative and trusts, you know, trusts people to do the right thing, the ability to add columns as that engineering manager allows you to evolve the tool in a way that's helpful to you, right? And ultimately, that's probably a good thing.
Starting point is 00:50:00 Yeah, that makes a lot of sense and then if we wanted to do it it occurs to me that the Dublin team could create a new table that just references the old table and then has as many columns as we want Yeah, that's right if it actually became if it was materially different
Starting point is 00:50:19 in its data structure or it sort of felt divergent enough from that first features table or or it was um it sort of felt divergent enough from that like first features table or whatever it was um that's right they they could also create a table and then you know look up from the other table yeah cool yeah um so you the the tagline seems to be docs as powerful as an app is that right or not am i did i miss say it uh no that's right i mean the i think the thesis is that you can build a doc as powerful as an app um and so uh you know we haven't really talked talked much about mobile but um we've spent a bunch of time on mobile um making sure that it actually felt up.
Starting point is 00:51:07 I think we've been saying this phrase for a while, and before we launched mobile, people would sort of hold up their phones and say, oh, you mean like this, this mobile app on my phone? And we'd kind of say, yeah, eventually. And nowadays, we can kind of more confidently say, yes, it's something that feels just like an app on your phone. And there's a couple, I'm happy to go into it, there's a couple things that we do to make that feel like an app.
Starting point is 00:51:37 Yeah, how'd you pull that one off? Yeah, we're really kind of just getting started on pulling it off, I would say. But our first version of it does a couple of things. I mean, I think the first thing that's probably noticeable is we take the section list that's you can add effectively multiple pages or multiple different spaces to the same document. And so what we do is we take that section list and then we flip it and make it feel like native navigation on iOS and Android. And that kind of gives you the sense right away that you're in an app. And so you put it at the bottom? Is that where you put it? That's right.
Starting point is 00:52:30 Yeah, like on iOS, it's just a little tab bar on the bottom. And where is it in Android? I don't even know where Android is. I have navigation and I have an Android phone. Yeah, in Android, it's sort of similar. Oh, okay. Yeah, and then there's some material design choices that were in the midst of finishing, but sort of generally the same principle. So yeah, that's sort of like the first noticeable thing is that you get this experience of like, oh, I opened this up.
Starting point is 00:53:01 I opened one of these docs, and it feels kind of application-like because the navigation feels native to the platform. I guess some of the other things that we do that are noticeable. So one interaction that feels very kind of app-like is in tables. When you have buttons, and especially multiple buttons, we allow you to kind of like, first of all, we create a card that is a nice sort of clean summary of that row.
Starting point is 00:53:35 And then we allow you to like swipe the card, you know, interaction, most people are probably familiar with from stuff like Gmail, where you can swipe to archive. But in our case, maybe to use a customer example, we have a customer who built an inventory tracker to track bikes from a bike shop. And the realities of being in a bike shop all day is that you're not behind a computer all the time.
Starting point is 00:54:09 And this particular set of people were like out in the field. And so they were kind of constantly on their mobile device. And, you know, if you want to like check in or check out a bike or say like this bike needs repair, on desktop, there are kind of like three buttons. And this is also in the template gallery if you want to go look at how this works. But on desktop, this is kind of like three buttons that say like check in, check out, and needs repair.
Starting point is 00:54:34 And on mobile, when you pull up like that same list of bikes, you get like a nice little picture of that bike and some of the details about the bike and its status, and then you can kind of like swipe to take those actions. And that feels sort of native app-like. And interestingly, like as a person who created that dock and configured that dock, is like you don't really have to do anything.
Starting point is 00:54:59 We just take those actions from buttons and transform them to those swipe actions on mobile so it's yeah so so swipe right is one of the buttons swipe left is the other and what's the third button um we actually we split this the swipe right right now it's only swipe right um we split it into kind of like three actions if you've seen i think this is also a fairly common pattern but you you swipe and then you kind of get like three options yep and've seen i think this is also a fairly common pattern but you you swipe and then you kind of get like three options yeah and you press one yeah yeah yeah okay yeah cool um yeah so that's that's i guess that's a couple ways that we've done done so far have a bunch of
Starting point is 00:55:36 other ideas um i guess one of the other ones that people have really started latching on to recently is like you know imagine you're you're doing that same inventory um tracking and you want to take a picture of every bike um so you can kind of like just be out in the field and take a picture of the part that needs repair or whatever and upload it directly to that row um from the phone's camera um so you have like a sort of nice entry point to native things that you're used to doing on your phone all the time. A camera, a image column. That's right.
Starting point is 00:56:09 Like presents itself as a camera button and you can either upload or take a photo. That's right. Yeah. Oh, I see. There are all these little clever things you can do that just like automatically behind the scenes adapt the interface to mobile. Yeah, that's right. That's right. Yeah, that's right. That's right. Yeah, exactly. And I mean, that's sort of like the fundamental premise here is that like, you shouldn't have to be an app designer app developer
Starting point is 00:56:30 type person. You know, we we do most of that automatically for you. You know, we switch the tabs for you, we we switch buttons for you, we we take abstractions like the image column and do that for you. So I'd be curious to hear a bit about where code is going, like the fuller vision. So right now I get the impression that it's an internal tools product. Like we spoke about before, you have to have a certain amount of trust with the people you share edit access with. They're like on your team.
Starting point is 00:57:03 They're not going to be nefarious agents. And it feels kind of like like google docs or like spreadsheets you know like use it with your friends and your co-workers do you ever see it as being you say the word app do you ever see it as being something that like a company would make as an external app that you know like sell things on it or or have external users? Yeah. Absolutely. I mean, I'll get back to the full vision piece in a second, but just to answer your latter question. I mean, we ran, recently we ran a kind of contest called MakerFest with Product Hunt.
Starting point is 00:57:41 And the idea behind that was to to get people building app like things um and you can see i mean there's just a crazy array of things that of very application like concepts that people built um on that and that you know those are sort of purpose built to be um external in the sense that like they those people weren't building it for their internal company and in many cases like they were they were an individual person with no with no company or you know doing it on the side so for sure we're already starting to see this pattern of people you know building tools for other people. Could you give me an example of something?
Starting point is 00:58:30 Yeah, yeah. Probably like the, let's see, let me see what the most interesting examples are. I guess like a couple of the examples that were interesting to me. First, you know, people building, like, very basic kind of, like, things that are first instances if you were to, like, pick up a programming language. So, it might build, like, a to-do list or something like that. And then, you know, to take it a step further because we have things like a now formula and, and you can write, you know, complex functions. People started building, you know, Pomodoro style techniques where I can like start a timer and, and, and like time my to-do list all the way to some fairly crazy games people built. More recently, someone kind of had four buttons that control like up, down, left, and right, where you can kind of like walk
Starting point is 00:59:36 a rectangle around. And like some of these examples start to feel very much like apps that people want other people to use. And right now, I think we still have a lot of work to do on the publishing side of this. How do we make it easy for those people to take one of those concepts and really publish it broadly. We're starting from a nice foundation in the sense that sharing a document is really easy. You hit the Share button, and then you decide who should have access to it. But there's probably a lot more that we can do.
Starting point is 01:00:22 I know that there's a bunch more things that we can do to make it easy to take one of these app-like concepts and distribute it more broadly. I think the other interesting thing is when you start to have derivative work, and we see this in the template gallery a lot, where someone will take a template, to use a simple example, like my to- do list is in there. They'll take a simple example like that, and then they'll sort of build upon it. And then they'll like resubmit it to us. And they'll say like, Oh, this is like a variant of that. So you kind of get this
Starting point is 01:00:57 like interesting branching effect of being able to have someone else's perspective layered on to other people's. Do you have a story for managing variants and merging things that are kind of similar together? Yeah, so we've thought about this a bit, and we have some prototypes. We don't have a perfect answer for it right now, but it's certainly something that we're thinking about. In many ways, like you, the merging the variants sometimes feels unnecessary because like someone has taken kind of a different perspective on it.
Starting point is 01:01:40 And what we want to see is kind of the breadth of these different perspectives so eventually when you're you know searching in the template gallery or you're searching for a solution really you can you can sort of see all the permutations and and get to you know play with each of them and then decide which variant kind of works for you um so in some sense like we we could go solve that problem um we have some ideas of of how we might do it um but you know it probably starts with kind of fundamentally questioning the problem that's that's an interesting point um so i think when I asked the question of the full vision
Starting point is 01:02:26 and for if you build externally facing tools, I thought that was the same question, but apparently there's a different, there's a distinction between that question and what's the full vision for Coda. Yeah. I mean, I guess like the full vision might be a little more kind of back to where we started.
Starting point is 01:02:45 I guess I kind of like to think about it in two ways. Like there's basically the kind of micro level, and there's sort of bubbling back up to the macro level. On the micro level, I personally really like to think about, like, the individual stories of, like, how we change people's lives and how we have the opportunity to make them feel, you know, different about themselves in a really positive way.
Starting point is 01:03:10 Taking like that domain expert, that subject matter expert and enabling them to actually build the tool that they need and like have a thinking surface that can evolve with their thought process like that on on an individual level i think is is is our our kind of core aim um and it's it's a little bit back to the story i was i was telling you about that that recruiter um like on an individual level um i mean i think if we bubble like all the way back up to the the macro level, I think we have a really unique opportunity to marry something that is really approachable, i.e.
Starting point is 01:03:52 a doc, with the power of application-like concepts. And the punchline there is that we can change how teams and communities and families can grow and evolve. And, you know, that I think is incredibly powerful if we can do that right. Actually, it makes me think a little bit of my oldest son. So I have a four-year-old who's finishing preschool at a Reggio Emilio school. Are you familiar with Reggio philosophy? I guess maybe just give us a brief overview.
Starting point is 01:04:36 Yeah. The basic idea behind Reggio is that kids' learning should be self-guided and rooted in, you know, experience and exploration. And kind of importantly, they're equal members to the broader community of adults and kids. And so a lot of like learning environments, teachers are viewed as like the ones that hold all the knowledge. And like they impart that knowledge to their students. But Reggio sort of like flips that um and i think that you know in a reggio philosophy like kids are meant to construct knowledge through exploration and observation and discussion um i don't know if you want to add anything anything to that based on your your knowledge of i i didn't actually quite realize that it was so, anyways, I knew that it was a very progressive feel to it, but that sounds very similar to my own educational philosophy.
Starting point is 01:05:35 So that's kind of interesting to find out. It sounds like very constructivist, like Seymour Papert. Exactly. Yeah, it's very constructivist. Yeah. Yeah. So like to make that kind of abstract concrete, like an example for my son is he's basically their class has been following this thread of an artist named Martin Puryear that they found like in the SF MoMA and like one of their early visits. And so like basically what started as an observation of this particular sculpture became like a six month kind of observation, exploration, discussion about like this artist's work and it kind of followed the kids' interests, which is kind of the important thing. And I think, you know, if I were to think about like the grand vision for Coda, I think that there are actually some
Starting point is 01:06:26 parallels here both like externally as a product and internally as a company. So, from an external kind of like product standpoint, you know, concretely in line with Reggie, we're kind of saying that the tool maker knows how this should work. Like the kid should be the guide, right? The maker, the subject matter expert can create and discover and like create knowledge.
Starting point is 01:06:54 And so concretely that means something like, you know, starting with the pros of an idea that grows and evolves and their kind of like knowledge evolves as they like structure data or like manipulate that data and and from kind of maybe from the other side I think you know as someone who's like building building a product and design team I think about it you know from a team standpoint and I think there are parallels as well namely that like we don't act like we have all the answers. We hire really smart and curious people, and we kind of treat everyone as equal members of that community.
Starting point is 01:07:34 And the idea is that they can observe our users and explore and discuss and kind of like learn together. And so the combination of those two, we think create, you know, the right conditions to make a great product. And so I think, you know, I think a lot of people identify with this idea, especially probably in your audience, identify with this idea that our tools have like failed, you know, some large class of people.
Starting point is 01:08:05 And so the way I personally like to think about, you know, the grand vision of Coda is, you know, we kind of need to do what Reggio does and flip the existing paradigm. You know, you shouldn't have to know what Docker and React are to make software. We think it can just start with a simple doc and people can sort of evolve their knowledge with it well said, I agree with you that it's a common feeling we all have that this should be the way the world is especially our virtual worlds, they're infinitely moldable and yet so many people can't mold them. Uh, so, but, but what well said, um,
Starting point is 01:08:47 so I, I, I feel like we could end there. That's like a, like a very high point to, to be like, okay, well,
Starting point is 01:08:53 get back to work. You know, that sounds useful. Um, but, but I, I also wanted to drill in, drill into a few,
Starting point is 01:09:03 uh, specific like product choices, particularly because that's what you work on, the product stuff. So I wanted to drill in there. So one of my personally favorite features is the formula bar in Coda. And there are a lot of things I like about it. For starters, it um very concrete uh where like if there if there's live data uh to be had it'll evaluate it with some live data like kind of pick
Starting point is 01:09:32 a good default so you can see what's going on immediately um or if there's like some evaluation to be had it'll like partially evaluate whatever can be partially evaluated which is also really cool um and then another thing i really like is that the the types of various like the structure of the data of various variables using expressions are are explained via um like an icon so like a calendar icon for times and yeah personal icon for for users and then where i think it gets really cool is um they're even subtle things like if you're dealing with a list um it'll kind of look like a list. It'll look like there are multiple things of that type.
Starting point is 01:10:10 And then also even more subtle, but I like it, if you have two things that have the same exact type, but they're from different instances, they're from different objects, they'll be colored differently. So I like it too. So anyways, I mostly just want to compliment you, but also I'd be curious to hear about how the product and design work went into that.
Starting point is 01:10:31 Yeah, I mean, I won't take credit for that. Back to the internal teams and creating kind of the right conditions for those types of things to happen. We had a formulas team that really obsessed over the details. And I'm, I'm happy to hear that you picked up on, I think you, you pretty much ticked the whole list.
Starting point is 01:10:52 So, so nice, nice, nice investigation. Yeah, we had a, we had a product and design engineering team that really obsessed over a lot of those details. And, and I, I guess I could go into a couple of them, but I think you did a great job of explaining. I think, you know, one of the ones that I was really excited to see was this, you know, this idea of like previewing or intermediate values.
Starting point is 01:11:18 And I think mostly because I often come at, you know, writing formulas and programming from a fairly naive standpoint. And so to me, it did a great job, as you identified, of kind of giving you a clear sense of where you were and the shape of the data that you were holding. So when you're holding an array, you can kind of see a comma-separated list in that intermediate value. And you kind of can make sense of what you might want to do next because you're seeing that intermediate value. And a lot of this work, I think, was inspired by some of Brett Victor's work. And just this idea
Starting point is 01:12:05 that you shouldn't have to play computer in your head. And so the formula space for us has always been pretty important because it's been, in many ways, the glue or the interface between the blocks. And so the things, an example of what you mentioned, you know, the type icons placed on the chip itself is a very specific decision because we saw users who are trying to make things like equivalency statements with types that were different and running into problems. And so we could, in many ways, preempt some of that confusion by showing, you know,
Starting point is 01:12:52 oh, these actually have two different icons. I wonder why that is. Let me go inspect some of these items to figure out why I might not be able to write equals here. So they're born both from sort of a philosophical viewpoint on you shouldn't have to play computer in your head and a very practical one, which we have lots and lots of users every day asking us questions on intercom, saying, why can't I write this formula?
Starting point is 01:13:26 And so we, you know, we try as best we can to marry the two. But yeah, major, major kudos to that team for really digging deep and chunking up what is a very difficult set of problems. So another thing that I noticed that I liked, but also thought was a curious choice was that you seem, especially in that, like the documentation of the tutorial videos to be pushing the dot operator instead of prefix based functions that people are used to from Excel. So like the dot operator, like it's kind of like method, like a method operator,. I think people see it a lot in Ruby, almost infixing. Why did you choose to kind of show people this new way of... Because I think both work in Coda as far as I saw it.
Starting point is 01:14:16 You can use the prefix function or you can use it infix with this dot operator. Why are you teaching people this new way of doing things? Yeah, that's right. That's a good observation. Basically, both should work. So I think the idea is that if you want to stick with your familiar pattern, you should be able to. That was a pretty intentional choice. I mean, I think when the team created the formula language and sort of the first formula builder years ago, they certainly questioned, like, the current method of prefix functions.
Starting point is 01:14:50 And I think that, you know, they have all kinds of challenges. So maybe I'll frame them as kind of the positives on the dot operator side. The main one, I think, is, or I guess there's probably two or three main benefits. The first one is readability. So you just have less characters to confront. And so there's a compactness argument to that readability. The other one is like, you just have less grammar. So you don't have to like, the thing that you're used to doing in Excel
Starting point is 01:15:27 or at least I am is like counting the parentheses at the end of a function and figuring out like you know sort of scope wise where I am the dot operator also allows you to chain functions which can be helpful in certain cases I think the main one that i like
Starting point is 01:15:45 and and you a little bit alluded to this um and in your uh observation on the formula builder but um it allows us to do some pretty elegant things with auto suggest um and projections so you know if i just type table so if i'm in the mindset of like, oh, yeah, what was that table called? It was called to do's. And I type, you know, to I get, you know, at the global document scope, I get a list of tables, I tab into that I hit dot. And now I have a list of all the columns. So I don really have to remember uh the shape of all those things um and um some of that's possible in in prefix uh in the prefix world but um i think we you know the combination of um improving that auto suggest um uh and and readability um make it
Starting point is 01:16:43 something that we want to push. Yeah, that's a really good point. I hadn't thought of the auto-suggest improvements. But that's great. Yeah, I think a lot of, I mean, the way that we view formula documentation is that auto-suggest should really be the formula documentation that you use as opposed to having to to having to like have two tabs open in your browser um so there's there's a bunch more we can do there i think
Starting point is 01:17:12 we do a decent job today i would agree i in my experience using coda uh i was very impressed with the the way the autocomplete worked and also the documentation in the formula builder was the same as the documentation. I didn't quite realize that for a bit. I opened up the documentation in a separate tab and I was like, oh, wait, it's the same. I can close this tab. It doesn't give me any extra information.
Starting point is 01:17:41 The only time that I actually used the separate tab of of things was when i tried a few autocomplete things for function to find functions and the ones that i was expecting to be there weren't there didn't do what i expected so i was like hmm like which one of these will do what i want i had to kind of like look through them all right so it's kind of hard to build around that yeah yeah it's a it's a nice way to kind of like discover the superset yeah and kind of like chunk them up into groups if you're looking at you know currency numbers or whatever yep yep exactly yeah yeah yeah because i can like ignore the currency ones like that's not what i'm trying to do right now i'm trying to do something with like grouping
Starting point is 01:18:21 you know whatever right right so um the way I just framed the question about the dot operator, I think was, I guess, kind of similar to the, sorry, the Rich Hickey talk that you brought up of simple made easy. It's a distinction I've actually been thinking a lot about in the last day or two because someone else told me that I need to rewatch it because the way I've been talking about it got a little bit blurry. And so the distinction between, I guess, the distinction I want to make now is kind of different than his distinction um the distinction between um like the dollar operator it seems definitely based on the way you described it and and in that context to be like the where like where you want to take people but potentially
Starting point is 01:19:13 it's less familiar and so you you have to you know decide if you want to just like go with what's familiar for people or give them the more powerful slash better slash simpler option in the long run and so i think that's like an interesting tension to look at and so yeah there are a few places in the tool where i feel like you potentially went with the easier route um or more familiar route you took you instead of the more powerful in the long run but also less familiar um i don't know if there are any places that come to mind immediately. I have a few if you want me to provide one. Yeah. Maybe I'll sit. I'll just say like one, one thing about that. And then I'd love to dig in wherever. I mean,
Starting point is 01:19:58 I think that we end up doing a lot of investigation on kind of like the familiar versus like what, what we think could be like the more powerful, the more kind of like the familiar versus like what, what we think could be like the more powerful, the more kind of like right model going forward. And, and like, there, there are big choices like that. So, you know, the first obvious big choice is like, instead of having, you know, a productivity kind of tool or like a, a tool for building other tools be like three or
Starting point is 01:20:26 four different tools like this is this is one tool um uh and that was sort of like different different than the familiar um all the way down to you know the the things that we're we're talking about now so i think in many ways like that's what we asked our product and design and engineering teams to do is, like, go look at this particular component. Go look at all of the jobs that it needs to serve for, like, a very horizontal set of users. Sort of try to distill it down to its essence of, like, what it's sort of functioning as, you know, is like a simple atomic, like single threaded thing. And then decide which direction we should head. So it's I think that's very that's like that's like part of our DNA as a company. And so far as anyone's interested in doing that on a regular basis you should you should come join us there were two that come to mind of instances that i'd be curious to hear more of the
Starting point is 01:21:31 the like calculus the internal calculus and why you went one direction instead of the other um so one one thing that made me laugh is um how you have uh buttons that often put can push other buttons that's like a core feature or core like interaction paradigm that that i saw people using and you talking about and so my first reaction to that was like i think i laughed because it's just like a funny idea of buttons pushing buttons yeah and then my second reaction was like oh like that like how clever you know people already know what buttons are they already know what pushing buttons are like it's so concrete like one button can go push pushing buttons but then when i was using it um it it's for some reason it just it didn't feel so elegant
Starting point is 01:22:15 or it didn't it it didn't feel as powerful as um i i think to be more concrete, I think what I was trying to do, maybe you can give a better example, is I wanted one button to change all things about all rows in a table. But the pattern to do that, at least when I tried to do it, seemed to be you have to create a column in that table and a button column in that table. And the button column of that table will actually mutate each row. And so you have one button press every button in a column in that table and a button column in that table, and the button column of that table will actually mutate each row. And so you have one button press every button in a column. Is that, did I forget something? No, no, that's right. I mean, I can give you like in practice why this ends up working quite well. Sure.
Starting point is 01:23:00 Like from a user perspective. So like a common thing that we see um people doing is uh with buttons is um sort of pairing this like this single unit of a button with um uh what behind the scenes is actually a function to call to call slack so like um concretely the case is, you know, I've got a, I've got like a list of things that like my team has to do. And I want to post an update, like individually to each of them to say like, hey, can you, can you come update this, this task? Like this is sort of a typical like project management, you know, thing that you have to do in a team. And the analog way of doing this is walking over to everybody's desk, but everyone's not in the same office.
Starting point is 01:23:51 And so the next way I can do this is copy paste from a browser, go over to Slack, write my message, paste the row in, and rinse and repeat this like 20 times. But interestingly, like what I end up doing is not necessarily like, I don't ping everybody all the time. I ping like some people some of the time. So like maybe there are three people
Starting point is 01:24:18 who have like outstanding stuff and they haven't updated that task in a while. When I have a column that is a button that sends a Slack message to that person, in practice, like, what we see is people, you know, sort of periodically hitting one, two, three, four of those buttons, right? Saying, like, oh, these three things need to be updated, but I don't want to ping everybody. And then you sort of, like, pair that with the the case of like, all right, it's like, you know, Monday morning and like, we need to develop a plan for the week. And so like, I'm going to hit the like Uber, you know, the Uber button, which is basically going to go,
Starting point is 01:24:53 go push all the buttons and like ping everybody. Um, so, so in practice, like, you know, it, it, it, it was interesting. It kind of felt funny to me at first but it ends up to solve the problem quite well um because you you sort of come at this idea from like two different places as a user um wanting to kind of you know in this simple example like wanting to ping everybody versus wanting to to sort of individually um uh update things. Yeah, yeah. I see that perspective. It starts very concrete. You build a function to just ping one user,
Starting point is 01:25:32 and then you abstract over that to all users. Exactly, exactly, yeah. Yeah, that makes a lot of sense. I guess, to be fair, where I was coming from is, like, what's familiar to me is being able to like speak more abstractly as a programmer. So I was, I was, you know, expecting to be able to, you know, just start from the abstract, but I was like, Oh no, wait, like I have to go and do this other thing that, that feels too too concrete or whatever.
Starting point is 01:26:00 But I guess that's just my bias and not actually inherent to the problem. Yeah. I mean, it's always like challenging sort of figuring out the right way to take a concept like that, that these should be atomic parts, um, uh, so that you can like understand them and reason about them individually. Like I don't, I don't actually have to understand the, um, you know, the, the broader button that pushes all the buttons. I can understand like the, the single button column. Cause that's what I ended up using in my view. Well, so I guess maybe what my criticism would probably be, or my question really, would be a column that's a button, like I think of that as being a function of type whatever the row is. So it's like a function that operates in a row. And so sometimes I would wanna use that row in a more like basically first class functions i
Starting point is 01:27:11 guess the thing that i felt myself wanting yeah but um so i don't do you plan to add like those sorts of those sorts of more superpowers but but are also like much harder for people to get their heads around? Yeah, I mean, some of that is actually happening kind of in the background. And I think there's a question of how much we end up exposing to users. And I think probably in the future, we'll continue to expose more and more. But I think right now, we want to make that as accessible as possible at the moment, but definitely have the option to change that in the future. So one other one to just run by you is
Starting point is 01:28:02 I was importing some data in coda from spotify i wanted to do some like analytics on yeah on like different things like that and um i found it to be very challenging to add the data i pulled into a table yeah i like had to do it i'd like yeah it was just what i really wanted was a function called table that would take a list and then like make a table right but i had to like imperatively add like create a table first and then like add things one by one yeah yeah absolutely this is um this is one that uh we're we're thinking a bunch about actually um right now and and have some prototypes. I mean, I think what you're basically seeing is like the underlying,
Starting point is 01:28:49 some of the underlying building blocks that we haven't created the right abstraction on top of to make it a bit easier to do. So I won't say exactly how we plan to do that, but it's something that we definitely have some really concrete ideas on how to solve. But I agree, like, you know, when we built PAX, that's, I guess, for your listeners, like PAX is sort of what you're leveraging when you use an integration. And PAX are basically a way to, pull data in from the outside world and push data out to the outside world.
Starting point is 01:29:29 And we've been talking about Slack and, in this case, like, Spotify. So, you know, interestingly, packs are basically, like, sort of have two parts. Like, there's an authentication side of this which is like it makes it possible for you to not understand like oauth to and and quickly auth into your spotify account um and then there's like a there's an execution side of this which is that spotify pack comes with a set of formulas um and a couple um buttons that are driven using those formulas. And so we kind of launched the primitive parts, but there are definitely rough edges, and especially this edge of I just want to sync a set of data
Starting point is 01:30:20 and I want to be able to declare that from a formula and have it kind of materialize um is something that you can't can't do yet but um definitely thinking about it yeah I see so right now you can kind of import data once but but the two-way sync thing isn't well the the um the the so like refresh actually works um and, and one way sync works in the sense that, um, uh, I can like take, take a row, you know, let's say, um, uh, take an individual song. Yeah. And, and have that like stay up to date and like continuously refresh the metadata about that.
Starting point is 01:31:02 Um, now if I want to like, kind of go the other way and like update the metadata about that. Now, if I want to go the other way and update the title of that song if I was the artist, not able to do pieces of that yet. But there are other examples where you can do one time updates. But the thing I think we're thinking about is how you do that continuously. Cool. Yeah. So I guess the last question I have for you, I feel like is,
Starting point is 01:31:34 I'm not exactly sure how to ask it. So here, I'll give it to you in two different ways, and you can take either or both. So I find that people, that vision you laid out of blowing the distinction between people who create software, people who use software, that's a fairly common vision for people who listen to this podcast. And I think some people come at it from academia and other people come at it from like the world of startups um and so a lot of the questions i ask you know or a lot of things you talk about you like even the formula bar for example um you kind of like iterated on it from like a startup product design perspective and you came up with something that's pretty great and and you and you ship it and On the other hand, people in academia think about problems from a more fundamental perspective, like a less practical perspective.
Starting point is 01:32:35 So I'd be interested to hear you talk a bit about the trade-offs and why you think that the... I guess the main question is, why are you confident that this will scale like the people in academia kind of have like you know they move slower but they kind of get their foundations right and people in startups move quicker but then the risk might be that you you kind of corner yourself in a box and and you don't actually build something that can be as flexible as you want or as easy to use as you want?
Starting point is 01:33:13 That's a good question. I mean, I think in a lot of ways we have to kind of a little bit fight the like mentality that I think a lot of startups have, which is, you know, just like rush something out the door or just um uh you know do exactly what the customer says um in this case um uh i think what you see you know hopefully what comes through in the tool is that there's actually quite a lot of kind of deep thoughtfulness that have gone into a lot of these choices um and uh and so i i don't i don't think that like we actually fall sort of squarely on on like one side of that dichotomy or the other necessarily i think that um you know we have uh folks you know maybe i'll cite we have we have folks from um uh bre lab, Michael Nagel, who's in this community and continuously pulling us into some of the research and grounding us in that way.
Starting point is 01:34:14 And I think the early team that built a lot of the foundation of the product, Alex and Shashir and Matt and Himanshu and Phil, like these, these guys have, have a very long history in, in the space of like, you know, programming and file systems and everything else. And so it, it, it was sort of atypical in that sense. Like we, we had a a long longer runway to get the foundations right um we actually spent like a few years in stealth um and that was you know iterating both on the ideas behind coda um and and kind of with a small set of customers so really trying to balance that dichotomy of like thoughtfulness um uh, uh, with the kind of practical.
Starting point is 01:35:06 I remember, um, hearing about Coda, like raising money four years ago and being like, Oh, that, that sounds neat. And then like two or three years later being like, okay, that, that probably never went anywhere. And then, and then a couple months ago being like, Oh, they're back. Glad we were able to pleasantly surprise you. Yeah, I think, you know, I guess the other thing I would say is it probably comes back to like the rituals of a team. You know, if I like looked inside of a team and looked at their rituals, I could probably get some understanding of like, you know, where they might fall in a dichotomy like this. So, you know, concretely, a researcher may spend a week or a set of years like thinking about the same problem. And for us, one kind of like fun ritual that we get to kind of step out of like the, you know, what can be a crazy day to day is we do code-a-thons or hack-a-thons basically every quarter or two.
Starting point is 01:36:10 And the idea is to like spend, spend two or three days and really get to like see the teams like crazy creativity applied to like some really tough problems. And, and a lot of times like the work that comes out of this is either inspired by research or, you know, folks like Brett Victor or, like, is very adjacent to it. And the fun thing is that you get to see it materialize, like, really quickly, or at least, like, an instantiation of it really quickly. So to give you a few concrete examples,
Starting point is 01:36:50 in the first hackathon several years ago, the team was really inspired by Brett Victor's dynamic drawings, and so they built a simple way to do geometric shapes like rectangles and circles in the formula language and then plot and draw those. And then the obvious next step is to like bind those shapes to actual data and a table. And like what you get is like a composition
Starting point is 01:37:14 that's sort of dynamic. And like at the time we like quickly applied that to we were tracking all our bugs in Coda. It was at the time it was called Krypton. And so we wanted to, like, we created a little status chart that was basically like rectangles drawn from the counts of bugs. Like another example is when we built, we built actions.
Starting point is 01:37:39 So, you know, we basically used actions and taking action is kind of like the basis behind what we talked about with, you know, buttons that take action and automations that take action in the world. So I think, like, to kind of tie it back to your question, like, we're fortunate to have a big base of users that have like really practical and important problems to solve every day. But at the same time we have like very concrete rituals to like step back and, and, and be creative and invent and, and, and make sure that we're, you know, applying the appropriate level of thoughtfulness to the problem space. Cool. Yeah. Sounds like getting some of the best of both worlds.
Starting point is 01:38:29 Yeah, hopefully. So I guess that's a good note to transition to my last kind of meta question, which is you alluded to that you're hiring. So you can talk a bit more about that and any other ways you want to suggest people reach out or get involved or any other links or places to mention. Now's the time for that. Sure. Thanks. Yeah, so I guess in terms of hiring, you know, we're always hiring engineers. We're also hiring kind of on the go-market side as well. And you can just go to kind of our jobs link in the footer
Starting point is 01:39:11 if you're interested there, feel free to like hit me up. And then in terms of other places to get involved, one really interesting place actually is our community is like very active. So community.coda.io. You can kind of see the range of things that people are building and showing off there. You can see the questions. And our team makes a big effort to stay very involved with the community.
Starting point is 01:39:41 And so that's another place. If you end up building something neat, submit it as a template. We usually work with people and really try to understand the problem that they're trying to solve and how we can get that out to more people. But yeah, we're definitely looking for people interested in this space
Starting point is 01:40:01 and I think we have a handful of people who are really steeped in, um, uh, probably what your audience, uh, uh, is, is doing and thinking. And, um, those, those people are really important to us. So, and so far as there are others that are interested and, um, want to contribute to a, to a sort of greater vision like this, uh, we'd love to talk to you. Cool. Well, thanks so much. This was a lot of fun. Yeah., we'd love to talk to you. Cool. Well, thanks so much. This was a lot of fun. Yeah, thank you.
Starting point is 01:40:29 This was awesome.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.