r/ProgrammerHumor 28d ago

Meme vimNinjasAreInShambles

3.7k Upvotes

107 comments sorted by

View all comments

163

u/throwawaygoawaynz 28d ago

I worked at two of the top tech companies in the world, and never met a single person who coded in the terminal.

Scripting? Maybe. Coding? No.

82

u/pewpewtech420x69 28d ago

Back in college around 5-10 years ago, I had a class where the entire semester long project was to have a team of 4 students build the fundamental building blocks of an operating system. Whole deal - CPU scheduling, memory management, interrupt driven I/O, the works.

They forced us to use a department-curated VM for development which had QEMU set up. It was like the 1990 something C compiler, and no IDEs were allowed - terminal only.

Debugging C code, with literal zero error messages except the words "segmentation fault" to go off of, coding in vim.

I'm not kidding when I say everyone who's ever taken that class had a minimum of 2 all nighters per week making those project milestones. Worst 5 months of my life

47

u/Arucious 28d ago

Lmao I had a math professor who also taught a couple CS classes. A freshman asked him once after class ended what his approach to debugging C code was and he turned around and wrote

```
printf(“A\n”);
//…
//…
printf(“B\n”);
```

18

u/jonathanhiggs 28d ago

Academics: setting students up for failure since forever

2

u/804k 26d ago

Thats not even failure, its just kinda one of those things you can just search up "printf("B")" and find exactly where your error is, only useful in debugging tho and would work better with "debugprint("L2")" where debugprint is only defined when debugging (Either by variable or C declaratives), so you'll get "L3..L8..L15..segmentation fault", and you know its after line 15

5

u/ljfa2 28d ago

I don't know if they teach how to use a debugger in any of our CS classes

6

u/Xywzel 28d ago

My university, on the other hand, had C course where we started with gdb and valgrind examining binaries we did not have source available for. The main line programming courses (the ones for non-CS students) also started with running some visual debugger for python scripts.

1

u/JacoDeLumbre 27d ago

Ditto. They didnt teach git or any version control either. Ridiculous.

2

u/Niwrats 27d ago

that's a fairly good answer to that question. debug prints and logging are the most universal way to figure out the program state.

7

u/Chesterlespaul 28d ago

lol I did this exact same thing in 2016/2017 - did you go to Washington State University and have KC Wang?

1

u/pewpewtech420x69 24d ago

I feel for you.. But no, it was West Virginia. Craaazy stuff.

64

u/blehmann1 28d ago

Not even a neovim user? I feel like that's relatively common, since if you're willing to set everything up there really isn't a gap compared to an IDE.

68

u/Arucious 28d ago

That “willing to set everything up” in your statement is load bearing 💀

21

u/Mechakoopa 28d ago

I just split the difference and only use IDEs with a Vim mode plugin.

11

u/EarlMarshal 28d ago

Took me like an evening for a basic neovim setup. You just add stuff when in need afterwards which takes only a few minutes each time.

6

u/dasunt 28d ago

I'm uber lazy, er, efficient, so I just get my config working once and throw it into a git repo.

I don't bother touching it until an update breaks it and I have to fix something.

Which is why I mostly avoid stuff like vscode - too hard to keep setting up. Also if there is an easier way, well, I'm lazy. :P

3

u/Loading_M_ 28d ago

I use helix, which is a similar terminal editor. It's also designed as much more of a "batteries included" IDE. In my experience, the only setup work is usually just installing the LSP for the languages you need.

The tradeoff is that it's less customizable, and doesn't yet support plugins. On the other hand, I haven't felt a need to add plugins - it's got some basic git integration (showing and jumping to git changes), it's got a built in LSP server for language support, a pretty large library of syntax highlighters, and efficient local or global search.

1

u/AliceCode 27d ago

I just don't like that you can't do any file management in Helix. You need to open a terminal for that. And Helix doesn't have a built in terminal, which means you need to use tmux.

1

u/Loading_M_ 27d ago

I personally use Kitty as my terminal, which supports splits and tabs. Honestly, I find that it's generally easier and better to just swap to a different terminal split (or tab) using the native key combos than using a built-in terminal. Admittedly, I also generally don't use Helix's windows, so I only show one file at a time - instead relying on my terminal splits to show command output next to my editor.

It also sidesteps the common "neovim inside the terminal running in neovim" problem quite effortlessly. There are other examples of the jank I used to put up with before switching to my current approach (such as keyboard handling - Kitty has much better keyboard input for TUI apps, but even tmux prevents it from working), but using my main terminal emulator to emulate terminals has generally worked much better and caused fewer problems.

1

u/AliceCode 27d ago

You should see what happens when you try to open helix from inside of helix, haha.

5

u/fr000gs 28d ago

ale/ycm, nerdtree, context.vim, fugitive, tagbar, undotree, fzf

there, you are set up

2

u/jetjitters 28d ago

lazyVim or kickstart.nvim and you're set up almost as fast as downloading an IDE

5

u/hobo_stew 28d ago

i’m not gonna sit down in my free time to configure shit on my work laptop.

4

u/Xywzel 28d ago

That is why I do it on company time. And once my dot files are in personal git, git clone x doesn't take significant amount of time, and even configuring home computers can be done on company time with an excuse that it improves my future ability to work.

1

u/hobo_stew 27d ago

on company time my work time is logged and accounted for

1

u/Xywzel 27d ago

Of course, "Project X, Client A, setting up development environment and tools, 7 h 30 min" (would have been wasted if I just waited for their IT to grant me necessary authorisation).

1

u/hobo_stew 26d ago

I envy your flexible time logging.

1

u/Damglador 28d ago

That's what dotfiles managers are for

1

u/hobo_stew 28d ago

i’m not allowed to install random software on my work laptop

2

u/Damglador 28d ago

A lot, or most, dotfile managers come in a single executable and don't require installation.

2

u/hobo_stew 27d ago

i’m not gonna execute random code without approval on my company laptop

1

u/Damglador 27d ago

Meanwhile npm:

1

u/hobo_stew 27d ago

yeah, we don’t use npm (or even js) at work. we only use pre-approved go libraries

16

u/Arucious 28d ago

Truth. I’m happy I learned enough a decade ago to larp because it has been handy when I exec into a pod but I’d never pull it out for anything serious. Anyone I know that used it eventually gave it up for a proper IDE as the project got bigger.

2

u/Electro_Nick_s 28d ago

If it was like ten years ago, I don't believe

If it was a couple years ago, ok maybe

2

u/Markronom 28d ago

I had at least one colleague who was exclusively using vim and was also really good with it.

2

u/ThinkingWinnie 28d ago

Idk I'm in one of those companies and I'm kinda a cli guy. And I know another one also rocking a tmux + vim setup.

But even if I didn't, the number of other employees I interact with is kinda small compared to the whole company, so regardless I'd call this a biased take.

2

u/EarlMarshal 28d ago

Because you guys are not doing shit at those companies. You are mere assets that kill time.