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.
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.
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.
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.
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.
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.
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.
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!
Phil
Trying another totally new thing, writing up an answer to a question I get, publicly (but anonymously).
— Phil Eaton (@phil_eaton) January 2, 2023
Kind of scary to do so but my rule in general is that you get more discussion and help when you do stuff in the open!
Send me your letters!https://t.co/zzhiPRHswL pic.twitter.com/SV4mKaAvQC