I think it's more of a sign of a good engineer. I know a number of engineers that are good and don't really work with the terminal. On the other hand, every engineer I've worked with who was a 'terminal guy' was great. I think being good with the terminal is a signal that the person is willing to 'dig in' and understand stuff at a lower level.
I taught myself assembly language from a book on a 286, I cracked games with SoftICE as a teenager, tried out every Linux distribution in the 90s, and have been developing software professionally for 2 decades. I prefer Cursor.
Am I an outlier or do you just judge people for weird reasons? I’ve never seen an IDE person judge a terminal person, it’s always the other way around - what’s up with that?
Someone instructing AI through the terminal is a bit like an office worker with a tool belt. I don't think you can say anything about their coding ability until they are coding without AI. Even if thats in notepad.
I actually never mentioned anything about actually using the AI tools integrated into Cursor in my post.
I think I'd generalize my post more to say the more often somebody reaches for the terminal, in my anecdotal experience the more proficient they tend to be.
Totally disagree. I find people still using cursor or other IDE centric flows want to review the code and be more interactive. Claude Code and Codex push agent autonomy and speed. Sorry but they go off the rails too much.
why do annoying engineers have such a weird fetish/superiority complex about the terminal. Its an inherently inferior UI. Theres absolutely nothing you can do in a terminal that you cant do in a GUI, and every TUI is just jumping through insane hoops to support functionality thats trivial in a GUI.
Why on earth would you want to look at a code diff in a terminal? Why on earth would you want to use weird bespoke keyboard shortcuts to navigate sub-agents in a TUI session. Why on earth would i not want the ability to open/edit a file manually in the tool im using to write code.
Anything you do in the terminal can trivially be scripted (automated). It's a self reinforcing loop of making life easier. After many years of working in the terminal, and making little scripts, my workflow is extremely fast, comfortable, and customized to me. You can do some of this via GUI tools, but terminal makes customization easy. Also, using keyboard shortcuts is just vastly superior to using the mouse, you can't convince me otherwise.
> Why on earth would i not want the ability to open/edit a file manually in the tool im using to write code.
I don't know what you mean by this. You can open any file in neovim at any time without leaving the program.
Being familiar with the terminal also makes building CI for the team trivial because I'm already familiar with how all the commands work in the CLI. I'm basically the goto 'devops' guy because I'm one of the few people who actually knows how to work in a Unix terminal.
I will say, TUI is not the same as CLI. I don't find a meaningful difference between a TUI and a GUI other than being able to use tmux or something for window management. I prefer gui tools for database management, querying, git diffs, email, all kinds of stuff.
As for the superiority complex. I've got no judgement on people who prefer the GUI. I have many excellent coworkers who primarily use GUI tools. Having said that, every engineer I've met that works primarily in the terminal has been great. It's a very strong signal of technical competence in my opinion, but terminal familiarity being a signal of competence, in no way makes GUI usage a signal of incompetence.
Like any other computer UI: Terminal-based programs (whether ultimately windowed in a GUI or not) didn't start off being familiar. But for those who use them, they eventually become familiar.
And that familiarity transfers between different systems. Windows, Mac, Linux, whatever: The flow of any particular terminal-based program is the same everywhere that it can be used.
It's tidy, and light. It's also network-transparent, and things like ssh keep it secure. Multi-user support is the norm instead of the exception on systems where terminals are common. It doesn't interrupt anyone else's work like something like using Anydesk to access some GUI desktop somewhere else can.
The keyboard shortcuts are annoying at first, but they're faster than mousing around in a GUI -- and once learned, they're approximately impossible to forget.
(You're free to hate terminals if you wish. I don't care if you justify it; I'm not your boss.)
As someone who has spent the last 10+ years working in Tmux - but is entirely comfortable on Mac, Windows and Linux desktop environments - here are the key reasons why the terminal experience is superior for me.
- I work a lot with data - and streaming data through text tools is twitch fast. If someone has a question about data - before anybody else can log in to their superset, or analytics database, and try and work through the SQL queries or charts to get the answer - I've already jammed the data through awk and got an answer.
- As an SRE - I work with a lot of systems that have pretty rich APIs - so being able to send a request, get the answer back in json, dump it into jq, select the parts I care about - maybe -c to compress it and ripgrep a subset out - is just fast.
- I work in a lot of contexts with a lot of different systems, datacenters, applications - tmux lets me keep all of them cleanly organized in a separate windows and subpanes. I'll have 15-20 windows open per week, and maybe a 5-6 panes in each- keeping 100+ different contexts (and scroll backs, bash history) - all nicely organized is really useful.
- I'm also a systems guy - and there is no other way to dig into a system but the terminal - netstat, ps, dmesg, /proc - these are all components that have only one credible path to investigation and discovery. If you aren't super comfortable in the terminal - zero way to learn about this stuff.
- Working remotely - means ssh. So - once again - terminal.
The Focus on the terminal is that it's the best tool (and in some cases the only tool) for so many of these tasks - and by performing these tasks a lot - you learn about systems - so the people who spend a lot of time in the terminal tend to know a lot more about systems than people who don't.
Absolutely nothing? That's certainly not true. My experience is that those who grew up learning the command line are so familiar with it that they excel at navigating those bespoke keystrokes more quickly than any GUI user who has to scroll, point, and click. Add to that features like command history and autocomplete, and shell users are often far more productive than GUI users.
The thing you can do in the terminal that you can't do in a GUI, is glue together over 50 years of useful tools, no matter where you got them from or if the authors have ever heard of each other.
If your workflow fits entirely within a single app's GUI, then yeah, the terminal version of that app is not going to be as useful. But if that app doesn't exist yet, you can put together an 80% version of it for 20% of the work.
Historically, it's also a lot more resistant to rot. Brian Kernighan isn't going to start charging a subscription fee for AWK - and if he did, there are many forks and similar tools.
And, addressing a specific point - why would I want to view a code diff in a terminal? Sure, 'diff old.txt new.txt' is probably less useful than popping it open in a nice GUI with highlighting. But "diff old.txt new.txt | grep '^+'" will only show me added lines, or "| less" and type "/foobar" to jump to all mentions of foobar.
And this is like, the least you can do - the stuff you learn in the second class of "Using the Terminal 101". You can easily use this with git, as a building block to make a quick script to graph the number of changes over time in your repo. Yes, there's probably a GUI somewhere in your workflow that can show this (maybe you click around in Github to find it). But, maybe you also want to just filter that to changes in a specific module in the codebase, or an author, or quantify what module changed the most each month. If you've learnt the building blocks, the scriptability of the terminal lets you put that together quickly.
Yah this judgment and arrogance is so annoying in tech. And worse it stops us from learning. Some of the best lessons of my career were when a new developer asked a question often taken for granted or we implemented a design pattern to make coding more approachable.
Honestly the TUI in most of these coding agents is so fancy I have trouble thinking of them as "terminal". I use Pi Coding Agent and the fact that it's terminal means it's easy to run inside something properly sandboxed in a YOLO mode using normal bash commands instead of relying on individually sandboxed tools.
Once I got the tmux settings for proper scrolling and whatnot it feels fine. Honestly the TUI of tmux is the one that really enrages me - so much complexity for just "I want to switch terminals on my remote".
why do annoying engineers has such a weird fetish/superiority complex about the terminal. Its an inherently inferior UI. Theres absolutely nothing you can do in a terminal that you cant do in a GUI, and every TUI is just jumping through insane hoops to support functionality thats trivial in a GUI. And guess what, you can just open a terminal in cursor! who knew!?
Why on earth would you want to look at a code diff in a terminal? Why on earth would you want to use weird bespoke keyboard shortcuts to navigate sub-agents in a TUI session.
Why should others spend their valuable time helping you? Especially when you insult the people you want to answer you "fetish/superiority complex" just demonstrates your own prejudice.
Personally I ask AI for a summary of positions, and prompt to provide some good articles on a subject - ideally articles from supporters of either side.
I actually was a Cursor advocate / CC hater (go back in my comment history), and now I use only TUI coding harnesses.
To start a big part is just the efficacy of them, which comes down to the model and the harness logic itself. CC is good, it's sub-agents, loops, background jobs / agents, skills/hooks/etc have typically been pretty far ahead though others are constantly catching up.
But you're sort of missing something. I use iTerm, so to me it's not the TUI itself, it's iTerm. And while it's imperfect, what I get is this:
I can open and close sessions nearly instantly and tile and window and tab them as flexibly as I want, plus it's a system I'm familiar with in terms of shortcuts etc. Has my configured theme, fonts, etc all set up. Every GUI app is different, every TUI app has half of the UI already incredibly familiar to me, it's not "just text", it's iTerm.
That also means they all are the same - I run Codex and Claude and pi side by side, and i switch between them with no overhead and minimal mental model shift. Sure, different harness does suck but that's the same issue with GUI just with an additional new layer to learn.
Smaller thing is because it's all text, there's no limits on my ability to copy things out. And it's a really fast text renderer that can render tens of thousands of rows efficiently. Many GUIs have various dialogs, unselectable areas, virtualization, or just slow past a point. I trust my terminal scales.
Opposite. The weakest engineers trust CC or codex, stopped reviewing the code and push slop PRs. Those still acting in the loop move faster with better architecture and coding patterns and aren't losing their skills.
I don’t think mapping tooling to ability makes sense here, particularly when the “advanced” tools here just abstract more away, though I agree that Cursor is terrible. So many useless windows.
I know this is not always true. But the same people who like cursor still are the same people who are less familiar with the terminal.
And I don't know what it is but it feels the less familiar you are with a terminal, the less skilled you tend to be.
Definitely not a 100% case. But has been common in my experience
I think it's more of a sign of a good engineer. I know a number of engineers that are good and don't really work with the terminal. On the other hand, every engineer I've worked with who was a 'terminal guy' was great. I think being good with the terminal is a signal that the person is willing to 'dig in' and understand stuff at a lower level.
[dead]
I taught myself assembly language from a book on a 286, I cracked games with SoftICE as a teenager, tried out every Linux distribution in the 90s, and have been developing software professionally for 2 decades. I prefer Cursor.
Am I an outlier or do you just judge people for weird reasons? I’ve never seen an IDE person judge a terminal person, it’s always the other way around - what’s up with that?
Never said I was judging, just making an observation. And to answer - yes by book you would be an outlier.
Its just an anecdotal experience.
Someone instructing AI through the terminal is a bit like an office worker with a tool belt. I don't think you can say anything about their coding ability until they are coding without AI. Even if thats in notepad.
I actually never mentioned anything about actually using the AI tools integrated into Cursor in my post.
I think I'd generalize my post more to say the more often somebody reaches for the terminal, in my anecdotal experience the more proficient they tend to be.
Touche )))
Totally disagree. I find people still using cursor or other IDE centric flows want to review the code and be more interactive. Claude Code and Codex push agent autonomy and speed. Sorry but they go off the rails too much.
Cursor has a terminal based app that’s just as good as any of the other mainstream ones…
I know, I actually use it pretty often at work. I agree that its pretty on par with the others.
why do annoying engineers have such a weird fetish/superiority complex about the terminal. Its an inherently inferior UI. Theres absolutely nothing you can do in a terminal that you cant do in a GUI, and every TUI is just jumping through insane hoops to support functionality thats trivial in a GUI.
Why on earth would you want to look at a code diff in a terminal? Why on earth would you want to use weird bespoke keyboard shortcuts to navigate sub-agents in a TUI session. Why on earth would i not want the ability to open/edit a file manually in the tool im using to write code.
can someone please explain this to me?
Anything you do in the terminal can trivially be scripted (automated). It's a self reinforcing loop of making life easier. After many years of working in the terminal, and making little scripts, my workflow is extremely fast, comfortable, and customized to me. You can do some of this via GUI tools, but terminal makes customization easy. Also, using keyboard shortcuts is just vastly superior to using the mouse, you can't convince me otherwise.
> Why on earth would i not want the ability to open/edit a file manually in the tool im using to write code.
I don't know what you mean by this. You can open any file in neovim at any time without leaving the program.
Being familiar with the terminal also makes building CI for the team trivial because I'm already familiar with how all the commands work in the CLI. I'm basically the goto 'devops' guy because I'm one of the few people who actually knows how to work in a Unix terminal.
I will say, TUI is not the same as CLI. I don't find a meaningful difference between a TUI and a GUI other than being able to use tmux or something for window management. I prefer gui tools for database management, querying, git diffs, email, all kinds of stuff.
As for the superiority complex. I've got no judgement on people who prefer the GUI. I have many excellent coworkers who primarily use GUI tools. Having said that, every engineer I've met that works primarily in the terminal has been great. It's a very strong signal of technical competence in my opinion, but terminal familiarity being a signal of competence, in no way makes GUI usage a signal of incompetence.
Like any other computer UI: Terminal-based programs (whether ultimately windowed in a GUI or not) didn't start off being familiar. But for those who use them, they eventually become familiar.
And that familiarity transfers between different systems. Windows, Mac, Linux, whatever: The flow of any particular terminal-based program is the same everywhere that it can be used.
It's tidy, and light. It's also network-transparent, and things like ssh keep it secure. Multi-user support is the norm instead of the exception on systems where terminals are common. It doesn't interrupt anyone else's work like something like using Anydesk to access some GUI desktop somewhere else can.
The keyboard shortcuts are annoying at first, but they're faster than mousing around in a GUI -- and once learned, they're approximately impossible to forget.
(You're free to hate terminals if you wish. I don't care if you justify it; I'm not your boss.)
As someone who has spent the last 10+ years working in Tmux - but is entirely comfortable on Mac, Windows and Linux desktop environments - here are the key reasons why the terminal experience is superior for me.
- I work a lot with data - and streaming data through text tools is twitch fast. If someone has a question about data - before anybody else can log in to their superset, or analytics database, and try and work through the SQL queries or charts to get the answer - I've already jammed the data through awk and got an answer.
- As an SRE - I work with a lot of systems that have pretty rich APIs - so being able to send a request, get the answer back in json, dump it into jq, select the parts I care about - maybe -c to compress it and ripgrep a subset out - is just fast.
- I work in a lot of contexts with a lot of different systems, datacenters, applications - tmux lets me keep all of them cleanly organized in a separate windows and subpanes. I'll have 15-20 windows open per week, and maybe a 5-6 panes in each- keeping 100+ different contexts (and scroll backs, bash history) - all nicely organized is really useful.
- I'm also a systems guy - and there is no other way to dig into a system but the terminal - netstat, ps, dmesg, /proc - these are all components that have only one credible path to investigation and discovery. If you aren't super comfortable in the terminal - zero way to learn about this stuff.
- Working remotely - means ssh. So - once again - terminal.
The Focus on the terminal is that it's the best tool (and in some cases the only tool) for so many of these tasks - and by performing these tasks a lot - you learn about systems - so the people who spend a lot of time in the terminal tend to know a lot more about systems than people who don't.
Fundamentally you are right, problem is that most UI applications in general have garbage tier UX and/or are a buggy mess.
Absolutely nothing? That's certainly not true. My experience is that those who grew up learning the command line are so familiar with it that they excel at navigating those bespoke keystrokes more quickly than any GUI user who has to scroll, point, and click. Add to that features like command history and autocomplete, and shell users are often far more productive than GUI users.
The thing you can do in the terminal that you can't do in a GUI, is glue together over 50 years of useful tools, no matter where you got them from or if the authors have ever heard of each other.
If your workflow fits entirely within a single app's GUI, then yeah, the terminal version of that app is not going to be as useful. But if that app doesn't exist yet, you can put together an 80% version of it for 20% of the work.
Historically, it's also a lot more resistant to rot. Brian Kernighan isn't going to start charging a subscription fee for AWK - and if he did, there are many forks and similar tools.
And, addressing a specific point - why would I want to view a code diff in a terminal? Sure, 'diff old.txt new.txt' is probably less useful than popping it open in a nice GUI with highlighting. But "diff old.txt new.txt | grep '^+'" will only show me added lines, or "| less" and type "/foobar" to jump to all mentions of foobar.
And this is like, the least you can do - the stuff you learn in the second class of "Using the Terminal 101". You can easily use this with git, as a building block to make a quick script to graph the number of changes over time in your repo. Yes, there's probably a GUI somewhere in your workflow that can show this (maybe you click around in Github to find it). But, maybe you also want to just filter that to changes in a specific module in the codebase, or an author, or quantify what module changed the most each month. If you've learnt the building blocks, the scriptability of the terminal lets you put that together quickly.
Different strokes for different folks, but unfortunately they take their opinions and preferences as a sign that others are inferior.
Yah this judgment and arrogance is so annoying in tech. And worse it stops us from learning. Some of the best lessons of my career were when a new developer asked a question often taken for granted or we implemented a design pattern to make coding more approachable.
Honestly the TUI in most of these coding agents is so fancy I have trouble thinking of them as "terminal". I use Pi Coding Agent and the fact that it's terminal means it's easy to run inside something properly sandboxed in a YOLO mode using normal bash commands instead of relying on individually sandboxed tools.
Once I got the tmux settings for proper scrolling and whatnot it feels fine. Honestly the TUI of tmux is the one that really enrages me - so much complexity for just "I want to switch terminals on my remote".
Zellij is a pretty good tmux alternative, with a UI that feels a lot friendlier.
why do annoying engineers has such a weird fetish/superiority complex about the terminal. Its an inherently inferior UI. Theres absolutely nothing you can do in a terminal that you cant do in a GUI, and every TUI is just jumping through insane hoops to support functionality thats trivial in a GUI. And guess what, you can just open a terminal in cursor! who knew!?
Why on earth would you want to look at a code diff in a terminal? Why on earth would you want to use weird bespoke keyboard shortcuts to navigate sub-agents in a TUI session.
can someone please explain this to me?
I am not one of them but quite a few programmers prefer not having to use the mouse at all when working.
The terminal is an old but astonishingly powerful user interface that is still evolving.
Good terminals can be very snappy and configurable in ways that most GUI are not.
There is also arguably an aesthetic/fetishism appeal to it.
I've worked in the terminal at some point of my career, as there was not many other choices, and I understand how someone can get really used to it.
Speed and scriptability
What's a polite way to suggest you ask AI first?
Why should others spend their valuable time helping you? Especially when you insult the people you want to answer you "fetish/superiority complex" just demonstrates your own prejudice.
Personally I ask AI for a summary of positions, and prompt to provide some good articles on a subject - ideally articles from supporters of either side.
id prefer a human to explain it to me
I actually was a Cursor advocate / CC hater (go back in my comment history), and now I use only TUI coding harnesses.
To start a big part is just the efficacy of them, which comes down to the model and the harness logic itself. CC is good, it's sub-agents, loops, background jobs / agents, skills/hooks/etc have typically been pretty far ahead though others are constantly catching up.
But you're sort of missing something. I use iTerm, so to me it's not the TUI itself, it's iTerm. And while it's imperfect, what I get is this:
I can open and close sessions nearly instantly and tile and window and tab them as flexibly as I want, plus it's a system I'm familiar with in terms of shortcuts etc. Has my configured theme, fonts, etc all set up. Every GUI app is different, every TUI app has half of the UI already incredibly familiar to me, it's not "just text", it's iTerm.
That also means they all are the same - I run Codex and Claude and pi side by side, and i switch between them with no overhead and minimal mental model shift. Sure, different harness does suck but that's the same issue with GUI just with an additional new layer to learn.
Smaller thing is because it's all text, there's no limits on my ability to copy things out. And it's a really fast text renderer that can render tens of thousands of rows efficiently. Many GUIs have various dialogs, unselectable areas, virtualization, or just slow past a point. I trust my terminal scales.
Just a few reasons.
Opposite. The weakest engineers trust CC or codex, stopped reviewing the code and push slop PRs. Those still acting in the loop move faster with better architecture and coding patterns and aren't losing their skills.
I don’t think mapping tooling to ability makes sense here, particularly when the “advanced” tools here just abstract more away, though I agree that Cursor is terrible. So many useless windows.
I hate to be the one to break it to you but the weakest engineers are going to be producing just as much value