I’m considering a Software Engineer offer at Dropbox (still waiting on the numbers). I’d be joining a product team, not infrastructure. I’m wondering what the developer experience is like at Dropbox (like what it’s like writing and working with code). Like how are the tools (IDEs, code review, performance of them, etc) and how are the practices (testing frameworks, deployment, etc). I’ve heard that ~2016-2017 the tooling was pretty bad, but what is it like now? Particularly from current Dropbox people who came from places known for great developer experiences, like Facebook and Google. Appreciate any insight!
Tooling, deployments, cd/ci are all pretty solid tbh. Some things are suboptimal, but not a huge deal. Go and python are the best supported languages.
What would you say the suboptimal things are?
It's pretty standard mono-repo/bazel/remote dev box stuff if you've worked in that environment. Better than Google's but worse than most other places I've worked. The production environment is all over the place, we have a mix of monolith/micromonolith/microservices. That aspect is actively improving every day. You will not have the ability to spin up infrastructure (data stores/eventing/etc) yourself, either via engineer tooling or any self serve system. And the stuff you can ask someone else to spin up for you if basically non-existent: you can maybe convince someone to get you a memcached cluster, and there are a few of them available depending on what you're working on. Persistent data is stored in this completely insane homebrewed graph database built on top of mysql. The team that maintains it cannot fix bugs or add features right now because it turns out using a relational database as a key value store is bad so they are inventing their own distributed key value store to back it before the whole thing goes up in smoke. Our async stuff is all homebrewed and barely works. The team that maintains it is not willing to commit to a production friendly slo, so you are not supposed to put user facing into it. If you have a user facing async application or are responsible for maintaining one of the reams that already exist, you can just go fuck yourself. You may not switch over to aws lambda, or in fact any aws product, except when you can because whether we should be using aws for things is a multi year holy war at dropbox and the rules change a few times per year depending on who's winning. Our python codebase is entirely fucked, to the point that many grpc services are built not to deliver errors in key error conditions (such as "user can't do thing they're trying to do") because the most likely outcome of doing that is a 500 to user. Instead a lot of endpoints deliver status codes in the response, instead of the... Status code. File system has delivered a recommendation to the rest of the company that retry primitives should attempt to enumerate all the non retriable errors rather than the retriable ones like they do now. Dev tools does not have a clear recommendation for what your setup should look like, they just have a collection of tools that are "supported". Nobody knows what supported means though- they will not provide you support regardless of what happens. If you want to get an "advanced" use case like integrated debugging working, your best bet is to ask someone on your team who has figured it out.
Also maybe more generally, and please don't take offense to this, but epic systems is a tier lower than dropbox and the companies dropbox was aspiring to be like for most of its lifespan. What you're going to find is that the more they pay you the less thinking they want you to do. You'll work with a lot of people at dropbox (and the companies you work at after dropbox, if your trajectory continues) who not only don't see a problem with this stuff but don't spend any time thinking about it at all. You will have to cry yourself to sleep on your pile of money remembering fondly times in the past where your job was intellectually challenging.
I appreciate your very detailed answer. Are you still at Dropbox? And if you are, what makes you stay? It sounds like you have a lot of gripes about it. And what are better companies in your opinion, if you don’t mind me asking? I have a few competing offers (most notably Facebook), but I really like the Dropbox team and product that I’d join.
Things are great here. Plenty of interesting things to work on. Lots of attrition recently with virtual first and remote workforce but overall the company is still strong and healthy. What offer level did you get?
IC3. Can you tell me more about the tools you use? And what are the testing and performance standards like? (I’ve heard really good things about user experience standards)
Pays around 400k at IC3 in Engineering. Good tools. All Python and Go.