Or think of it another way, why are you only able to work in optimal environments, and is that the real benefit you provide? Are you going to get laid off if you aren't fully optimal? If you switched keyboard layouts would you lose this speed too? Can you afford to make ANY changes at all if this is your criteria?
After having to code about 80 java file application on a data center pull out crappy laptop screen with a jacket with just notepad and javac over a few days I just use the defaults on everything or settings that are one change away (like eclipse mode in intellij which is a meta setting like vim mode). Other than that I just adapt and never customize. This lets me use other people's computers easily, use many different OSes (I write software that enables the rest of my company so I write for what they use on what they use), and editors with little issue. I can also setup a computer in about 20 minutes. I find that the majority of my time these days is deciding what we should be doing and how. The time to write the actual code is pretty minimal.
So I ask again are you optimizing for the right thing here? Unless you are constantly re-enacting the scene from Swordfish I don't think you are.
PS: I'm pretty sure that Emacs must have a multi-cursor mode somewhere :)
of course it does.
in action: https://www.youtube.com/watch?v=jNa3axo40qM
There isn't one loss function for all people.
You've found joy in the narrative of "I just adapt and never customize ... [I can function well in my org] with little issue". Someone with a different set of constraints and preferences won't find that narrative as enjoyable.
It's about how I enjoy coding. Its my job but I love it. It's fun. Part of what makes it so enjoyable is the ergonomics. Ask any craftsman about their tools.
I learned a while back that I had to lean into those things and just get through the awkward if you wanted to keep learning.
I thrive when learning new skills and being "uncomfortable" and out of my element.
It's probably because I'm picking at rust for fun in my personal time that I don't want to deal with the uncomfortable parts. In my own time I coast and comfortably stroll through new problem spaces rather than get to that "my brain hurts" part that's all too familiar.
If rust + intellij was a work requirement I probably would just pick it up and discover that my brain can handle perfectly, two sets of bindings the way people claim to be able to do qwerty and Dvorak interchangeably.
I think this is why I bounced off of react 4 times before sticking, too many things to learn at once. Then again I bounced off of antlr 4 times and only really got it to stick because it was a work need, and antlr is the only new tool in that chain.
live edit someone else's project on your computer with your editor/keybindings/etc.
or you could switch to vscode for the times when you want/need to assist them.
i’m like 60% sure that this is why nixOS was born at all: some very dedicated emacs or vim user got so fed up with moving configs around that they built an entire package manager/distro/thing to solve their config issue for all time.
That's actually something that's a major hole for me; it would be like twice as useful if it did. But yeah, my solution is just: https://github.com/zenhack/vim-config
[1] https://github.com/VSCodeVim/Vim/commit/3158194561fa2fba921b...
in fact i'd extend that to bash as well. i only use very minimal configuration these days.
How did you become unable to do basic text editing without a specific editor setup? Why do people become so dependent on tools?
It's not like the difference in input speed is really meaningful; as you'll see someone point out in any discussion about this stuff, the bottleneck in programming is thinking.
But what I find will often happen is:
1. I settle on a course of action. 2. I go to actually do it. 3. The editor doesn't do what I expect, because it's not vim. 4. I am momentarily confused, and have to think for a minute about how to do what I want. 5. I lose my train of thought entirely. 6. Rinse, repeat.
So for me it's not so much about any specific thing the editor does to make me productive. I do have opinions about some things, but what's important is that it just fades into the background and lets me think about the problem I'm trying to solve.
Beyond just being "different," I tend to eschew IDEs for much the same reason -- while many of the advanced features seem useful, I find them too distracting to be worth the trouble. Just me and the code, please.
In the car shop world, impact wrenches are primarily used for the installation and removal of wheels on vehicles.
The impact wrench I started with had a single internal hammer- the thing that makes a click noise and applies torque. After a while of using it, I could hear when the wheel was seated correctly, and when it wasn't.
Later, that tool broke, and got replaced with a dual-hammer one- and all of a sudden, I couldn't hear-- feel-- when wheels were on right, and it took me a few vehicles to adjust to the new noise, weight, and feel of the tool. I got used to the new one eventually, but I still liked the noises that the original wrench made more.
Before I adjusted, I was unable to perform that part my job correctly because I didn't know exactly how to use the new thing that was identical in use-case to the old one.
My CAD program of choice doesn't have many keybinds stock- and so I've bound my own shortcuts to different things buried under various menus. I also have a Logitech G502, which has buttons on the sides of it, that I've also bound to some of the more-used, harder-to-get-to functions. It's much easier to open up the parameters table- which I use heavily to tweak designs I make. It's the way I like to do things, and that one bind on the side of my mouse saves me from rooting through menus all the time trying to find the same thing over and over again. I set up that bind almost two years ago, and I've been using it ever since.
When I got a new laptop recently, I had a hard time doing CAD until after I ported over all my keybinds and stuff.
Now to answer your question- because those of us who use powerful tools to build custom stuff also like to customize the tools we have for the task at hand. A developer who's used to their setup that they live with every day will undoubtedly have a hard time using the factory settings, and an even harder time working with someone else's bindings.
Why do people become so dependent on tools? Because we mold them to suit our desires, and they become an extension of who we are, and what we can do.
Relevant XKCD- https://xkcd.com/1205
Use CLion instead of IntelliJ. It has much better debugging support.
I've used both VSCode and CLion quite a bit for Rust, and I prefer CLion. It's got a much better understanding of the language.
IntelliJ also sucks for Ruby and Go compared to RubyMine and Goland. Even with the language plugins.
I can spend hours customizing the controls and UI but I still feel like someone handed me the keys to some old car made in a country that doesn't exist anymore.
This in part revealed to me the cost associated with all the editor customizations I make. Default settings are nice that way.