I love my 3 monitor setup. In 20 years of coding, I finally reached peak productivity in my workspace. No switching between windows, ease of throwing a window aside for monitoring, laying out information and tools side to side. It’s incredible once you readjust your habits and learn to use that new space. I compare it to having a large, wide desk when you’re working on something. Who wouldn’t want that?
I was one of the people who worked on 15” retina MBP everywhere, even in the office where I had 30” on my desk, to not have to readjust and keep optimal habits for the screen size. Now I simply refuse to work on a laptop at all, it feels like being trapped into a tiny box and I get literally claustrophobic :)
> I compare it to having a large, wide desk when you’re working on something. Who wouldn’t want that?
I have used between 1-3 monitors over the last decade, and there sure are advantages to having 3 for certain tasks. However, I noticed that having multiple monitors resulted in me having a dedicated screen for email (usually the smallest, my laptop screen). This decreased my productivity.
Perhaps not everyone has this weak spot, but for me using multiple monitors has a downside from an attention/focus perspective.
Coronavirus has robbed me of one of my favorite productivity hacks, which is coding on old Thinkpad with 4:3 ratio display, at a coffeeshop or library with Internet turned off. No distractions, no multitasking, just pure focus on a problem.
My friend, when I moved into my new apartment I went without WiFi for 2 years and did nothing but code on my T43. In that time I managed to rewrite (a variant of) Age of Empires 2.
IMHO, two monitors is an amazing upgrade. One screen for code, another for reference material or for the app being debugged. Better than one huge screen in many cases, as it’s two 16:10 spaces that you can maximize things to.
But with a 3rd monitor, you’re well into diminishing returns, it may even end up being a distraction if it becomes a Slack/Mail/web screen.
> I noticed that having multiple monitors resulted in me having a dedicated screen for email (usually the smallest, my laptop screen)
I'm currently using two external monitors, with my laptop docked and closed. I find the "dedicated screen for <distraction>" was a problem for me when I had my laptop screen open, because it's a different size/resolution/position than my actual monitors. On the other hand, I never have that problem with my dedicated monitors - in my mind they're a part of the same "workspace" because they're the same size, resolution, and positioned together - so I could see myself going to 3 desktop monitors one day.
I have two monitors right now and wish I had a third. One for code, one for documentation, and one for running whatever I'm working on (website, android emulator, etc). Currently I have the code monitor vertical and swap between workspaces on the horizontal monitor for the running thing and documentation.
I've solved this problem by having my email client (actually it's Slack in my case, but the same principle) and terminal share a screen. This works pretty well because I rarely want to use my terminal and chat at the same time.
I understand this and I don't want to argue against anyone's preferences. You know what's best for you.
I'm just pushing back against these out of touch fads. Most developers worldwide don't have a three-monitor setup. There is no proven correlation between quality software and 4K displays or mechanical keyboards (to name other fads). More importantly, the best devs I've known -- people I admire -- used tiny laptops with tiny displays, and shrugged when offered even a single external monitor; it just wasn't a big deal for them.
Mechanical keyboards don't make you a better coder.
But the only thing that will is writing lots of code -- over years and decades. And about 12 years ago, I started running into this anti-feature of human physiology known as "aging". And whereas in my think-I'm-so-l33t 20s I could bang out code on crappy desktop and laptop keyboards, by my 30s they were turning my hands into gnarled claws.
The remedy for this, for me, was a keyboard with Cherry MX switches. The crisp feedback let me know when a stroke was registered, so I unconsciously pressed each key less hard and was able to type faster with less pain.
Yeah, I wouldn't say having a mechanical keyboard makes your code any higher quality - that'd be pretty silly.
I think in general the thought is, if you care enough about your craft that you seek out refined tools, that care will be reflected in higher-quality development. Whether that's true or not, I don't know, but I'm inclined to believe there's a correlation.
I mean, it would be weird to visit a professional carpenter's house and see Harbor Freight tools, right?
Thanks for the reply. I think there is little to no correlation, but like the opposite opinion, I've no proof other than the anecdotal: the best hackers I've known didn't care about these things.
Other bizarre opinions I've read from Atwood and his followers: that you should be an excellent typist (this is also related to owning a mechanical keyboard). No. Just no. Typing speed is not the bottleneck when writing software. The bottleneck is my brain. I've never seen a project fail because people typed too slowly.
I do think there's a "CrossFit" mentality among the typer-coders who swear by mechanicals and end up with wrist braces - a kind of "more is more" approach that drives them to write lots of code, put in lots of hours, memorize innumerable details, and min-max their output in Taylorist fashion. It's optimizing for reps, versus mobility, stability, flexibility.
I have let my WPM drop a fair bit over time. I'm still relatively young yet, but I see no reason to go fast when I realize that most of the typing amounts to disposable bullshit. It's better to spend time thinking and developing thought patterns, and then just type a little bit to jog your mind and clarify. I allow myself to write some cheap code, but the point of that is to sketch, and the sketch should be light and quick, for the same reason that artists will say to favor long, confident strokes instead of chicken-scratch markings.
My main gripe here is that as time has gone on, and I've racked up the RSI's, is that the brain-to-text latency has gone up notably.
This scares the shit out of me. I'm not in the older subset of programmers (<30 atm), and this has gotten to the point where the latency actually affects my workflow.
> Typing speed is not the bottleneck when writing software. The bottleneck is my brain.
I agree except with a caveat: the mechanical action of typing, formatting, refactoring, fixing typos and missing semicolons, and moving code around actually distracts the brain from the higher level task at hand. And when the brain is already the bottleneck, I don't want to make it worse by wasting brain cycles on mechanical drudgery.
As one might expect, I feel far more productive when I'm using languages and tools that require me to type less and refactor & re-edit code less. I think the language would matter less if I could just wish code onto the screen. Until then, learning to touch type (with as few errors as possible! not necessarily as fast as possible) and use editor features to make it more effortless is the next best thing.
It’s the opposite for me, having fewer monitors makes it harder to find a window. I have to go through alt-tabbing slowly to get to the one I’m after.
With three monitors, I know exactly where my windows are. If I have more than three windows that’s annoying, but I keep the extra ones on the middle monitor to simplify things.
I think the Python ethos applies directly to typing speed: "code is more often read than written".
I agree, if speed of your typing is your bottleneck in getting code written, perhaps you should be coding smarter not harder.
I think there is some wisdom that you should try to be a "good" typist, in that better typing skills reduce the risk of injury (RSI), but that's self-care/ergonomics, and while still very important, there are plenty of good software developers that hunt-and-pecked their way to an early retirement (and/or multiple carpal tunnel surgeries).
I've had a phase of getting mechanical keyboards, but I always found myself typing slower on them. The added travel time, even on the "low profile" mech keyboards was making me type slower. I am back to scissor switch and I couldn't be happier. Although I prefer the low profile keyboards in general. One of my favourite keyboards is the butterfly Macbook keyboard, but I know it has mixed opinions.
Typing speed is not the bottleneck when writing software. The bottleneck is my brain.
I see typing like the ability to do mental arithmetic: being able to do it well isn't the thing that's directly valuable, but it removes distraction from the activity that is valuable, and that ends up making it valuable as well.
Another way to look at it: the faster you think, the faster you need to type in order for it not to become the bottleneck (during the times where you're actually implementing an algorithm as opposed to designing it). Of course, that's not just a function of raw typing skill, but also of the tools you use and the verbosity of your programming language. (An amusing corollary of this is that for society at large, it's useful to have great hackers who are bad typists: they will be tempted to develop better tools from which the good typists can also benefit!)
I've never known a great developer who did hunt-and-peck typing though. I do know great developers who have their own typing system. They simply never bothered to learn the "proper" way to do ten finger typing, and that's fine (unless those typing systems are worse for RSI, which was the case for me personally).
I understand what you're saying, but that's simply not my experience (either with myself or observing others).
Note Atwood claims you must be an excellent typist, training yourself to become one. I find this fetishization of a mechanical skill bizarre. I'm not advocating clumsily struggling with the keyboard like an elderly person, but past the point of "I'm a decent typist", I find that's enough.
I find there's no correlation between the problem-solving ability needed to be a great software developer and being a fast typist of the sort Atwood et al advocate.
I file this under "weird things some programmers believe without evidence" ;)
Yeah, I think we agree on the excellent typist point. It needs to be fast enough, but I suspect what happens is that pretty much everybody using a computer sufficiently to become a great developer reaches "fast enough" naturally through implicit practice.
I agree, but would say that in real life most of the people I know who like mechanical keyboards like them for hand strain reasons. They find them more comfortable to work with. While the code written is the same on both, that things like 4k monitors (eye strain) and mechanical keyboards (hand strain) are better for the long term health of the programmer. I've not gotten on the 4K train, but do like having my keyboard for that reason.
Multiple monitors though is purely personal preference I think. While having the documentation on another screen is something I personally find useful, if anything it probably makes me lazier about trying to remember things.
I think it's valuable to be able to type effortlessly without having to think about it too hard. Typing is a distraction that takes brain power away from the important things.
Typing speed is probably not the bottleneck but I found that since I started touch typing I get a lot less headaches because I don't have to look up and down all the time.
Unlike carpentry, the quality of our tools (keyboard and monitor, specifically) don't affect the quality of our output.
I think in many cases, people hide the fact that they're not competent with high-cost professional tools, because laymen use it as a proxy for talent that they cannot evaluate.
I think that's also why many exceptional programmers just use a 5-year old laptop -- they don't need to compensate.
A day-trader having 12 monitors mounted on the wall doesn't make him profitable.
I still use my 11 year old Thinkpad together with my newer Thinkpad. I use both laptops alternately. My productivity does not increase when i use the newer one.
That's said my extra 20 inch monitor helps me to visualize.
I've seen plenty of professionals using Harbor Freight tools, usually not carpenters but the tile saws and wrenches seem popular for professional use.
The correlation seems more likely to me that if you can afford the fancy tools then you've already had some level of success. Though there are those new mechanics who bury themselves in a mountain of debt buying a whole chest full of Snap-On stuff...
A professional will eventually wear even the best tools. And since they use those tools every day, they can keep an eye on wear. So it's not that crazy for them to use relatively cheap stuff.
Plus, a tradesman will also sometimes lose tools, drop them in places they can't recover them from and so on.
On the other hand, the day I want to fix some issue at home, the last thing I want is the tool I use perhaps once a year to be an additional source of issue, because it involves a round trip to the store.
In the last few years they've addressed that. Their Chicago Electric tools should generally be avoided but the Vulcan line of welders and Bauer/Hercules hand tools are all perfectly serviceable for light/occasional use.
The issue with heavy use is not that they don't work but that they're heavier, less ergonomic, and less robust/repairable than the name brands; if you can afford the name brands and will be using the tool until it breaks, fixing it, and then using it more then you'll want to go with the name brands.
20 years ago when GeForce 2 MX appeared I switched to 2 monitors; in the next 6 months the software department (that was the name) switched to 2 monitors by contagion; I was in the infrastructure department, they just saw the benefits. Since then, I never worked with less than 2 monitors. I can use productively 3 if I have it, otherwise (and most of the time) I use 2.
I am not a good developer, it is not my job, but I started coding on a Commodore 64 in text mode, then I did Cobol and FoxPro for DOS on 80x25 screen with no problem. But when larger monitors appeared, I used it, when the possibility to use more than one monitor appeared, I used it. It is a case of technology helping you, not making you better but helping - I am more productive using 2 monitors than limiting to just one. Because of this, I use the laptop (1366x768 screen) only as a portable email tool, everything else is on a pair of 24" monitors, in the office or at home. Sometimes I pull a monitor from another desk (in the office) or other computer (at home) when I do specific work that benefits of 3 monitors, but it is not a matter of preference, just specific use cases where 3 is better than 2.
May favourite dev environment was a 7" Android 4 running Debian. I got plenty done with an external keyboard.
I bang away at my mba 13" 2013 these days and the only real gripe i have is the lack of delete & backspace keys combo: I've never gotten comfortable without it.
That said, the only reason i could possibly use more screen real estate is web debugging. But to me that's more of an indictment of the environment I'm "coding" in.
The only time ever needed two monitors was back writing 3d games on a 3dfx (before nvidia head hunted their engineers) and needed to debug something while running full screen.
While i understand this argumentation, to me, monitors, their size & their number have always been pretty much...meh. instead it's the quality of the monitor itself (refresh rates, contrast, brightness)
> ... the only real gripe i have is the lack of delete & backspace keys combo
I’m not sure I follow. Are you complaining about the lack of a dedicated Delete key on Macs, having to use only one key for both Backspace (Delete key) and Delete (Fn + Delete keys)?
That personally bothers me a lot, as does the lack of home and end keys. Yes I know there are key chords to accomplish the same function, but having a dedicated key as part of your workflow makes a big difference. Maybe if I worked on my Mac 100% of the time I wouldn’t mind, but I only use a Mac about 20% of the time and it is incredibly infuriating.
Agree with other commenter who said you know what's best for you. Good job on iterating toward an optimal setup!
But I will tell you why multi monitor setups aren't the best for me. It doesn't feel like having a nice big desk to work at; rather, it's like having a separate desk for each monitor, and I have to move from one to the other to use it. With more than one centered monitor, I have to move my head to look between them, or my entire body, so that I can face straight towards whichever monitor I'm currently looking at. I've tried going back to multi monitor setups many times and every time I get tired of it faster due to straining my neck, eyes, elbows and shoulders with all that turning-to.
For me, it's one very nice monitor, with my laptop plugged in in clamshell mode (although now I leave my rMBP cracked so I can use TouchID).
I've also been using a window manager (Moom) with hotkeys to be able to set up three vertical windows on my screen. That seems to be the sweet spot for me: I can have multiple different code editors, or editor+terminal+web, or throw in email/slack/whatever into the mix. (I can also split a vertical column to two windows to achieve a 2 row x 3 column layout, and lots of other layouts, 1x1 vert/hor, 2x2, centered small/large...) I feel like I've arrived where you're at, my perfect setup!
I also still enjoy the 13" rMBP screen, although I can't get to 3 columns, and lately the keyboard hurts my wrists after extended usage. I use a Kinesis Freestyle 2 with the monitor+rMBP which has been absolutely fantastic for typing ergonomics.
I don't want that. There was a time when I used multiple monitors, but I've found that just working on a laptop works better for me. It's less distracting, and I find switching between windows to be both faster and less disorienting than turning my head to look at another monitor.
I can definitely understand other people preferring multiple monitors, but not everyone has the same preferences.
I appreciate your favour. I am probably an exception, but i like to code on just a single 15 inch MacBook. I switch screens by pressing key combinations. I believe faster, but also more convenient than moving your head around constantly.
for me everything must be accessible by various key combos. once I have that working I hardly need to use the trackpad mouse anymore.
the truth is that most people in my team's work with dual or triple screens.
I have always used a single monitor and I am productive like crazy. I mainly need a code editor and terminal. Sometimes switch to a browser and back. And that's enough. More monitors doesn't automatically imply more productivity IMO. Maybe in some specific cases. You can't focus on all monitors simultaneously anyway.
I was one of the people who worked on 15” retina MBP everywhere, even in the office where I had 30” on my desk, to not have to readjust and keep optimal habits for the screen size. Now I simply refuse to work on a laptop at all, it feels like being trapped into a tiny box and I get literally claustrophobic :)