Jan 1, 2023

In response to a frontend developer asking about database development

Sometimes I get asked questions that would be more fun to answer in public. All letters are treated as anonymous unless permission is otherwise granted.

Responses are based on my experience and opinions.

Hey [Redacted]! It's nice to hear from you.

You write that you're a self-taught frontend developer who would like to be able to work on more complex systems like databases. You asked about my learning path (since my site mentions I started with jQuery and PHP).

First off, ambition/desire is a powerful thing! I was a manager for a while and I'd watch folks across all apparent experience and talent levels. When they said they wanted to do something I'd see it gnaw at them until they did it.

If there's something you want to do, you likely can do it. Or something close.

At least in this specific case, if you are a self-taught frontend developer who wants to end up hacking on databases, that's 100% doable over the course of time if you stick with it.

Database development

If your question was: "As an experienced developer, how do I get into or learn more about database development?", I'd just link you to the Getting started with database development page on /r/databasedevelopment that I put together with much help from Twitter friends.

Beyond frontend

But I'm interpreting your question as a little bit more than what that page has to offer. Many of the topics on that page might be a jump from what a frontend developer commonly experiences.

So other aspects of moving closer to something like hacking on databases might include switching to backend programming at work, or hacking on your own educational projects.

Ease of transfer

It's often easiest to transfer roles within the same company, as opposed to getting an entirely different job at a new company. There are some exceptions to that. It can sometimes be easier to join a small(er) company with the exact role you want.

But in general once you're inside a company you can tell your manager what you'd like to do in the future. You and your manager can find ways during your workday to get you closer to the goal. Maybe you'll take on small projects with another team. Or dedicate 20% of your time to another team. And so on.

Non-core development roles at database companies

One more approach to consider is that database companies are often SaaS companies. Or at least they need to build web management portals (hosted somewhere).

That means that database companies employ all the same positions as other software companies: designers, frontend developers, system administrators/devops, etc.

Working at a company that builds a software you'd like to hack on is great exposure, even if you aren't yet qualified for the exact work you want to do. Thankfully, over time you will likely have opportunities to transfer closer to the work you'd like to do.

In my case, my focus at TigerBeetle right now is not hacking on the core code of TigerBeetle. But I get to write about it and document it and test it and build language clients and talk with customers and work with our devs to explain it. It's an incredible learning experience.

Spirit of building

The last thing I want to mention is that (in my experience, anyway) it helps to develop a spirit of building things you don't understand. Write your own React clone, write your own HTTP server, write your own lisp interpreter, write your own compiler, write your own database.

I think I started doing this because I just didn't like black boxes. I didn't like when people spoke with hesitation on subjects when answers *could* be discovered. I wanted to know how stuff worked. Or know when further knowledge was truly undiscoverable or impractical.

I've been doing that for ~10 years now so it sort of gets easier over time, but the subject always changes. And I get to tackle harder problems each time.

Complexity in frontend development

By the way, you don't have to leave frontend development to work on complex systems. Think about Figma or Youtube or Discord or other complex web UIs. These UIs can often require the same kind of systems discipline as working on a database.

Good luck!

My path personally was a combination of moving over time to jobs closer to systems programming. In no particular order. From full stack, to frontend, to full stack, to backend, to building my own company, to whatever it is you can say I'm doing now. :) Switching between management, tech lead, and IC positions throughout. All the while I challenged myself by reading books and building projects from scratch to teach myself. And trying to join companies where I'd feel like an idiot, fueling my desire to learn and catch up.

You can do it! Stay in touch. And come hang out on Discord with other hackers if you want!