A look inside Community Engineering at Hasura
When I was hired as a Community Engineer, I wasn’t fully sure what that meant and although I’ve started to understand – it does seem to mean wearing many different hats. Today I’ll talk about what it’s been like working as a Community Engineer at Hasura, including a bit about my weekly schedule, and the things we’re working on to support our community.
What is a Community Engineer?
I would say that a Community Engineer is someone primarily tasked with building, growing, and representing a community, typically a community of developers, and often concerning a product with open source components.
On any given day, I collaborate internally with colleagues from Engineering, Marketing, Support, and Documentation, and occasionally I’ll find myself pulled into meetings with members of our Executive team. Externally, I engage with our broader developer community interacting with members of our Discord, responding to threads on Reddit and Twitter, and trying to help people get the most out of using Hasura’s product.
One of the things I’ve noticed about this role is the quality when it comes to things internally facing vs. external things. When speaking with our community members it’s important to be a representative of the company, trying to help drive the product narrative on the front line and create excitement around updates and new releases. When speaking to colleagues it’s important to be a representative of the community, because a lot of my job is working on behalf of our community members internally behind the scenes. It’s kind of like living a double life. When I talk with the community, I represent the company, but when I talk to the company, I represent the community.
When a member of our community tells me they really need a specific feature, I respond, “I can’t make promises about our roadmap, but that’s an interesting idea and I’ve heard this request a few times now, and I’ll definitely take it back to our team.” That’s what I say. But behind the scenes, there’s a good chance I’m on their side, and I’m probably adding a tally mark next to the requested feature and planning to use this as further leverage in advancing internal arguments for that feature.
It’s unproductive and harmful to the community if I respond with “I totally agree, it sucks we don’t have that feature, everybody and their brother is asking for it, and even worse, I can’t say when or even if we will add that feature!” It is totally productive to send an internal message in our Slack that says: “I’ve had a handful of people tell me they really need a feature and I agree that it’s something we should consider. People have said: insert nasty things people said to try to convince me this feature is important. Do we think this will ever be on the roadmap? What should I say when people ask about this again in the future?”
A big part of the job is cutting through the noise and relaying the feedback bi-directionally.
One of my favorite parts of the job is when I get to relay positive feedback, in either direction. I love telling colleagues that people are saying we smashed it out of the park on a feature and everyone loves it almost as much as I love telling community members their much-coveted feature just got merged.
The hardest part of my job is relaying negative feedback. It can be frustrating to explain to our community that some requested feature isn’t going to happen, which sometimes feels like I’m letting people down, but not every feature can or should make it onto the roadmap. It can be a bit scary to relay negative feedback internally. It’s not fun to be the person saying, “I know we all worked really hard on this new feature, but people I’m talking with are saying they don’t like it or find it confusing.”
The ultimate goal of community engineering is to help build a self-sustaining community. An active and vibrant community doesn’t appear overnight and takes maintenance and hard work. When people see an active community surrounding a product, it’s much easier to adopt the product. It gives people faith that they’ll get questions answered and accomplish what they need to, and if they have problems some people can help.
This is especially true for companies with an open source version of their product like we have at Hasura. Since so many people are using our free and open source version of the product, we get more questions flooding our forums. It’s super helpful when one of our community members picks a question off before any of our staff even has a chance to see it. The more engaged and active our community is, the fewer resources it requires to maintain the community.
What are some things Hasura is working on to support its community?
The DX trials
I’ve recently started working on something we’re calling the DX trials, in which I schedule 1-1 sessions with community members and work with them to go through our getting started docs and get their opinions and feedback. This is an opportunity for you to have your voice heard and try out our new Hasura DDN in a 1-1 session with me. Feel free to schedule here. (Please sign up for one! 🙏)
Monthly Community Calls
Every month we host a call – come and check it out here! You can learn about what we’re working on and all the latest features, with the ability to ask questions in the chat and interact with our team. It’s a great way to stay connected.
Hasura Discord support bot
One of my prior projects was to build a support bot that uses RAG to tackle incoming forum questions, and it’s had a decent success rate. It’s not perfect and many questions still require a human in the loop, but it can quickly answer questions clearly covered somewhere in the docs, which is a high enough number of questions to make a difference!
Hasura data connectors
I’ve built a handful of data connectors myself, but our entire team is working on building additional data connectors to any data source you could think of! This isn’t just for our community, but for anyone using Hasura and for ourselves. We’re on a mission to JOIN all the things. See all available connectors here.
Weekly office hours
Each week we host office hours, so if you think there is more we should be doing or want to chat about things, please join our Discord and come hang out! I’m always happy to help.
Local development in Hasura v3
The new experience has arrived and has a slick new code-first feel. I’m constantly trying to ensure we don’t ever leave behind our community members who care about being able to self-host things because before I worked here I was one of those people! Learn more in this blog.
Day in the life of a Community Engineer at Hasura
A lot of my day-to-day is unstructured and gets split up into blocks of time where I tend to focus on different projects or initiatives. However, there are always a few activities on my weekly schedule.
Monday
Each Monday starts with a 1-1 with my manager. We catch up and discuss our plans for the week, and also get a chance to chat a bit about our weekends and touch base on our initiatives. This helps set the stage for the week and helps ensure we stay on the same page regarding the work we are doing.
Monday’s are CommonRoom days, and every Monday is spent almost entirely focused on our forums. We use a software called CommonRoom to track all kinds of activities and mentions of our company across the web. I specifically focus on Community Responsiveness. A dashboard shows me every single message in our Discord server and every Reddit thread mentioning our company that has no replies.
Every day I watch our Discord, checking it the way most people check Slack. I’ll ban spam users and answer anything that can be answered in under 10 minutes. Anything that takes more time either gets answered by a community member or someone else on our staff or will be answered by me the following Monday. I’ll go through each thread, one by one, and reply or at the very least start tugging on threads in Slack to find answers. I try not to reply until I have something substantive.
Some things I simply mark as not needing a reply, but most of my time is spent on obscure questions in the help-forums. I often spend a lot of time on Monday, either in Docker or our Cloud Console, first trying to replicate the situation one of our users found themselves stuck in, and then trying to find a solution for them. Most of the time the entire day is spent responding to forums, and this often means answering the same questions week after week! (Folks, for the sake of all who help answer questions on forums, please use the forum search before posting a question!)
Tuesday
Every Tuesday I run an hour-long office hours event on our Discord server. This is a free-form event where people can come and talk about what they’re building, ask questions, or get help with a problem. Lots of database indexes have been added in this event causing massive speed-ups to queries! I typically look forward to this event when I know people will show up, and often people planning to stop in will let me know in advance. Some of my colleagues frequently show up, which is also a chance to catch up with folks on weeks when attendance is light.
Every other Tuesday I author an email that’s sent to subscribed users interested in the latest product updates and useful links for more information. Technically, the email-writing starts the prior Thursday as I have to reach out to people within the company to find out what updates are worthy of sharing. Typically, this takes a few days of async communication to get the information and then get it prepped and ready to send.
This Tuesday, I was working on updating some Hasura NDC connectors I’d built in previous projects. Personally, I love it when I get a chance to write code and I had a lot of fun building the Qdrant, Turso, and DuckDB connectors, so the rest of my Tuesday was spent making some necessary updates to them and writing technical documentation.
Wednesday
I normally don’t have many recurring meetings on Wednesdays. As mentioned earlier in this blog, this Wednesday I was working on updating the documentation in a Discord bot I built that tries to use our documentation and ChatGPT to answer questions in our help-forums. If you’re curious, part of that project was to write a blog post about it, which you can read here.
These updates didn’t take too long and after that, the rest of the day was spent doing some data engineering for the latest project I’m helping work on, which is an AI project involving using Hasura’s underlying metadata to try to let you “talk” to your database! The existing metadata was a big blob of JSON, and we needed a way to query it in a structured manner. So I spun up a PostgreSQL database and went about flattening and transforming the data from unstructured into something structured and ETL’d it into PostgreSQL courtesy of some pretty nasty hack-n-slash Python scripts.
Thursday
One thing I do every other Thursday is start collecting the updates to share the following Tuesday in our biweekly email chain. This includes looking for RFCs, new features that have been merged, or sharing information about upcoming events like our monthly Community Call.
Thursday is another day that mostly depends on the project/initiative I’m working on. Today, that meant writing this blog post about what it’s like to be a Community Engineer at Hasura! This is what I’ve spent a good portion of the day on, but I also did a 1-1 with one of our community members where we worked through our new getting started docs and I was able to collect their feedback and opinions to relay back to the team, so that broke my day up a bit.
Friday
Every Friday I generally write a social media post for the following Monday. My nerdy developer thoughts about things, like using AI to write SQL resonate with our developer audience. Normally this means making a post about whatever project I’m working on, but it's a bit of a new development so I’m still figuring it out.
Outside of that, I typically like to get a jumpstart on CommonRoom on Fridays, at least looking through the questions that will be answered. A part of the Discord bot that I built forwards help-forum questions directly into an internal Slack channel, so I’ll often send out pings to colleagues who might be able to help answer questions I can’t find answers to.
Outside of that, it’s another day of activities and projects. In my experience, a lot of the job is fast-paced and ever-changing.
New projects constantly come up, and they’re often specific to what our community seems most interested in. I’m always working to find things that community members might find interesting or useful when it comes to using our product. And I’m happy to have found a job that lets me do so many different things and be involved in so many different places.
Come join us for Hasura weekly office hours every Tuesday at 10:00 am PT on our Discord channel. We’d love to see you there!