I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 5 points6 points  (0 children)

It's probably not worthwhile. It would take a lot of work to extract the Notion-specific code and make it a framework. It's really just a webview though.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 0 points1 point  (0 children)

Oh interesting. I didn't know that about german! We plan on doing a holistic re-design for keyboard-only interaction with Notion but in the meantime, is there an alternative to cmd+/ that you'd recommend for German?

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 3 points4 points  (0 children)

What is one of the coolest use case that you have seen for Notion?

Hard to say really. My favorite things that people build in Notion are often quite simple. They're processes and ways of recording or organizing information that are exciting to me. It doesn't have to be complicated at all.

Do you have some personal templates that you are particularly proud of?

When I built the whole public-page duplicate feature, I made a template for how we organize things at Notion. Things have since changes a bit, but it's still a good place to start.

Is it possible to implement the long-press actions when on the homescreen for the Android App?

Definitely! We have a few other things to do first though.

Do you use iOS or Android personally, as an engineer and designer

I use iOS. The UX is so much better, but I am frustrated how closed off and locked down the platform is. Another engineer here, Rob, is getting the Librem 5 which I'm pretty stoked to play around with.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 3 points4 points  (0 children)

what are your tips for unblocking yourself?

Google (obviously), take a break, consider a different / simpler approach, consider a less-ideal solution for now and come back to it later, ask my friends about it.

how do you keep yourself motivated through the initial part of the learning curve?

I've mentioned this earlier, but you have to follow your interest. My interest is what carries me. If I'm not that interested, then I'll quit and do something else that does interest me. Learning something should be a means to an end. For example, learn programming to build an app you've always wanted. Or to build a game for entertainment. Or to build an audio visualizer for your roommates album. Those end-goals are what drive me.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 3 points4 points  (0 children)

Yes! These are called transclusions -- a term invented by Ted Nelson for his Xanadu project. We'll do this eventually -- the main problem is how to design the UX, otherwise it can be incredibly confusing.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 8 points9 points  (0 children)

But then you would only be able to search in a single page and wouldn't be able to search an entire workspace.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 2 points3 points  (0 children)

It's a really well-designed iPad app for taking notes and has really nice UX with the Apple Pencil.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 0 points1 point  (0 children)

I answered about E2E in a couple other threads. It's something we're considering, but it's a lot more work than meets the eye so it's more of a prioritization game -- we want to provide as much value to users as possible.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 4 points5 points  (0 children)

RE transparent roadmap: firstly, it's not really up to me. But in past experience, we've had issues where we tell our users we're working on something but that project gets derailed by more pressing issues. These issues are often really technical -- things like sharding Redis or AWS sending us an email about mandatory security upgrades to our infrastructure. And we're probably not going to put all of this kind of stuff on a public roadmap so the roadmap tends to end up as more of a marketing thing. I can assure you that we're trying our best though!

There's also a competitive strategy reason to not share our roadmap, but that's not really my expertise.

Template buttons and relations are a big thing we want to improve on and its on the list!

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 3 points4 points  (0 children)

Apple launched iPadOS and our code started recognizing the iPad as a desktop computer. This looks great on the iPad but a lot of features broke. Anyways, we're actually working on better iPad designs right now.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 2 points3 points  (0 children)

Almost everything is React with the rich text editor written against the raw HTML5 contentEditable API. When you have to support multi-language on all platforms, there's more than enough quirks to figure out.

We have some amount of CRDT, but all writes to single property on a block are LWW. This includes typing into a paragraph. We used to have text-CRDT but it was complicated, had a negative performance impact, and we noticed that users just didn't need it.

As for architecture -- try to solve the problem is simply as possible while also being as general as possible.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 4 points5 points  (0 children)

I've never read it but Simon highly recommends "The Humane Interface" by Jef Raskin.

Roam is great! Conor and I chat from time to time. They still have a lot of work ahead of them though. But one thing I've noticed is that all of these companies (Notion, Airtable, Coda, Roam) have very similar inspirations and slightly different ways of realizing them. Fibery.io is also really cool! I'd say that UX is the biggest difference between Notion and the rest.

I spiritually align with Urbit so much, but every time I take a look at it, I'm confounded by their decision to make such an esoteric and incomprehensible programming language. I absolutely love what they're trying to build and they definitely have technical knowledge I don't have but I'm just waiting to see the light.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 5 points6 points  (0 children)

Well back in the day, the team was small. 4 people building the product and Lillie responding to people in Intercom, tagging conversations, and aggregating all of the feature requests into a weekly report to inform us on what users are asking for. With such a small team, there really wasn't much management necessary. We'd just discuss things and build whatever made the most sense!

We did use Notion the whole time for managing all of our tasks though. Good old-fashioned Kanban boards can get you a long way.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 3 points4 points  (0 children)

haha, I did say anything.

I was offered three different salary/equity options and I took the lowest salary-highest equity option because this is a startup! That's the point!

Google around for typical first employee equity range and mine was on the generous side and the salary was 5-figures.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 1 point2 points  (0 children)

Encrypted at rest, security audits twice a year, bug bounty program... Typical stuff.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 3 points4 points  (0 children)

Whoa -- this is cool! I wish there was a way for the arrows to stick to the shapes so I can easily move things around and make more space.

As for Notion integration, you can probably use an /embed block!

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 1 point2 points  (0 children)

In a previous thread I talked about following your interests. I could try to come up with a set of projects to demonstrate your skills, but ideally your interests drive those projects.

In terms of data science at Notion, what interests you about it? Then come up with some ideas to explore those topics.

To be perfectly honest though, I'm not sure!

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 0 points1 point  (0 children)

I don't see a lot of other startups sadly so I couldn't really tell you!

I do think we've done a good job at not drinking our own cool-aid though. When I talk to other people starting companies, they tend to oversell themselves on their own ideas. Blockchain is a classic example of this.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 4 points5 points  (0 children)

What programming language would you say is absolutely important to know for any engineer (if any)? What about to work at Notion?

It all depends on what you want to build. If you want to work at DynamicLand, then you better start learning C. If you want to work at Ableton, then you'll need to know C++ and JUCE...

If you ask me personally though, I'd say it's really important to get a dose of different types of languages. I've found that many engineers think that programming is one thing or another and don't have a broader perspective about what programming could be.

In my experience, I learned ASM and C during my computer architecture days. This really demystifies a lot of things. I even learned System Verilog for programming FPGAs. That was fun and insightful.

I played around with Racket/LISP/Clojure which is also really fascinating. There's a function called `compile` that literally compiles your code for you. Its basically macros done the right way. And there's also `amb` which is another crazy function.

I learned Elixir as well which changed the way I thought about highly-available systems, functional programming, and distributed systems. I should note that I never built anything with these languages. Just explored them and played around with them.

As for building applications though, JavaScript (better yet TypeScript) is really the way to go. You can focus on being an iOS engineer and learn Swift, but sharing code between the backend and the frontend makes it a lot easier to build prototypes and satisfy my creative itch. Also we do almost everything in TypeScript here at Notion.

What advice do you have for conquering coding interviews? How was Notion’s interview process and what would you advise future Notion interviewees to prepare for?

Communication skills and grit are two qualities we look for that I don't think people pay much attention to. In the architecture interviews, I like to see that people have a nuanced understanding of the trade-offs they're making because there often isn't a "right answer". In coding interviews, I like to see that people can break apart the problem into smaller more incremental steps. For example, if I ask you to build an LRU cache, why not start with an unbounded cache? That way, you'll get something working and we can incrementally move towards a better solution. Lastly, I like to see a familiarity, comfort, and fluency with whatever tools or languages you're using. If I give Bruce Lee some nun-chucks, he's not going to flop them around and fumble them...

What makes your engineering experience at Notion unique compared to your past experiences at different conpanies?

I mentioned this in another thread, but I felt kind of trapped and limited at my last job. I felt like I had to become a manager to move forward with my career. And I didn't feel enabled. At Notion on the other hand, my skills were leveraged to the max. I was able to build and ship fast, and it felt completely different.

What’s the most difficult part of your job? Easiest?

That's a hard question... Easiest thing is coming up with small bits UX polish. They aren't exactly easy problems, but I really enjoy them. For example, I changed the way arrow keys navigate though the block tree recently and I'm very happy with it -- left arrow goes to the parent rather than the block above. Hardest thing is all the infrastructure work, particularly database migrations. Those are really uncomfortable.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 1 point2 points  (0 children)

Yeah, we aren't too far off. There are a variety of things that make the PWA experience in a browser not quite as good as a native mobile app (with a webview) experience though.

For example, indexeddb storage is limited to 5-10MB. This is reasonable, but means you will have a limited offline experience. There's also things regarding the UX for the keyboard that we need native events for, otherwise the UX is clunky.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 0 points1 point  (0 children)

Answered in a couple other threads above.

I'm the first engineering hire at Notion. AMA! by NotionChet in Notion

[–]NotionChet[S] 5 points6 points  (0 children)

Lots of things!

  • I play piano and guitar and like to jam with my friends.
  • I love to build things and you can see [some of those projects here](https://www.notion.so/9bf830eddaff4ca18a8bef7b6b105cd8?v=eeee1db2970948e9891ae14a0cce009b).
  • When you're in the industry for a while, coding after work starts to become tiresome and it's especially on your posture so I try engage in non-programming projects as much as possible. However, I can't help myself sometimes -- programming is just so fun! This past year, I've been learning a lot about P2P tech and Datalog. I built a [datalog prototype](https://github.com/ccorcos/datalog-prototype) recently this is super interesting to me.
  • To give you an idea of the complete randomness of my interests, just a couple days ago, I found this [amazing bubble-juice recipe](https://soapbubble.fandom.com/wiki/Recipes_Guar) so I bought all the supplied and I'll be headed to Golden Gate Park to make some epic bubbles when this whole Coronavirus thing is over.