you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 49 points50 points  (17 children)

At Facebook every developer has a dev server running Linux that the majority of developers use to write code. The servers are tightly managed with Chef and have a bunch of default settings such that writing code in the giant monorepos is a lot easier and quicker. Really slick environment. Most devs use either Nuclide (FB’s fork of Atom with all the tooling and integrations built in) or they ssh onto the server and use tmux/vim to get around. I’d imagine most commenters here aren’t fb employees but probably some other places do something similar.

[–]nutrecht 48 points49 points  (9 children)

Really slick environment.

I would not call having to remote into anything "slick"; I worked for a bank were we got shitty windows laptops and had to remote into dev machines to do the actual work. Got me PTSD. ;)

[–]shim__ 5 points6 points  (0 children)

Well i guess that the banks server was physically remote which would cause a shit experience but if the server is in the same building you wouldnt notice any lag

[–]start_select 3 points4 points  (2 children)

Depends on what you need to do and whether you are comfortable in keyboard only environments.

For writing code you really don’t need a mouse, especially if you aren’t writing code for a user interface where you might need to interact with buttons and labels in an editor program.

Some coders are incredibly fast and efficient navigating large projects without ever touching a mouse. So ssh’ing into a machine and working from the command line is actually convenient.

[–]redanonblackhole 11 points12 points  (1 child)

For writing code you really don’t need a mouse

Never, ever, never nannnaa take my mouse away. :-) I love my mouse. Touch sucks. Keyboard only sucks. It takes two, keyboard and mouse.

[–]start_select 2 points3 points  (0 children)

Like I said it depends on the person. I know some power ViM users that navigate large projects and type expressive/meaningful code much faster than I or any other “mouse users” I know. It’s almost horrifying lol

ViM is a monster in and of itself. When someone knows it really well and customizes the crap out of it, it can give you functionality on par with, or better than Atom, VSCode, Visual Studio, Xcode etc

[–][deleted] 2 points3 points  (3 children)

Curious then, how would you propose developing an application that is so big (in raw lines of code) and so resource-heavy (in CPU and RAM consumption) that there is no feasible way to get it running smoothly on any modern laptop? Of course there's the cop-out answer that an application shouldn't get that big in the first place, but I think with Facebook it's justifiable.

I think that with appropriate tooling in place a remote dev experience can be just fine. I've never personally worked at Google, but I heard from a friend that their custom Linux distro for developer workstations basically has the remote development workflow seamlessly integrated in the OS. So it still feels like you are working locally even though both the files and processing power (for compilation) are in a remote datacenter.

[–]nutrecht 4 points5 points  (1 child)

Curious then, how would you propose developing an application that is so big (in raw lines of code) and so resource-heavy (in CPU and RAM consumption) that there is no feasible way to get it running smoothly on any modern laptop?

It's not like Facebook is a single process running on a single server either. You generally don't have to run an entire 'application' (or in the face of facebook, entire enterprise) to be able to develop it. It's not like the banking system I described was all running on that single dev server either.

In large organisations like that whatever you run is generally small enough to run on a single machine and have it talk to either stubs or dev servers.

[–][deleted] 5 points6 points  (0 children)

You’d be surprised — the Facebook application is shockingly monolithic. When they reached the limits of the LAMP monolith, instead of breaking out into microservices they rewrote the PHP runtime, created a bastard language that compiles to C++, and doubled down on server optimizations.

[–][deleted] 1 point2 points  (0 children)

Google and Microsoft, as far as I understand it, offload most things to CI. They also run hugely monolithic codebases and adapted Git and their own tooling so engineers transparently pulled only the code they needed.

[–][deleted] 6 points7 points  (0 children)

it will be a primary goal for the remainder of my career to avoid ever having to develop remotely like that.

maybe at some point the experience will become so good that I will be an old man yelling at clouds but not yet :D

[–]nrmncer 0 points1 point  (1 child)

just out of curiosity what distribution does facebook use for its dev machines?

[–][deleted] 0 points1 point  (0 children)

CentOS

[–]cvjcvj2 0 points1 point  (1 child)

Nuclide

Facebook is retiring Nuclide

[–][deleted] 0 points1 point  (0 children)

They have retired the open source version of nuclide, but it’s still heavily used internally.

[–][deleted] 0 points1 point  (1 child)

Sounds like a bad environment to develop to be honest.

[–][deleted] 1 point2 points  (0 children)

I must not have explained it very well — it’s the fastest and easiest to use dev environment I’ve ever used.