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?
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 think being good with the terminal is a signal that the person is willing to 'dig in' and understand stuff at a lower level.
You know what else is a good sign of them willing to dig in and understand stuff at a lower level ? If they dig in and understan stuff at a lower level. Let's judge people on what matters - the actual work and value they bring. Not status symbols like their IDE of choice or how fast they type into the keyboard.
Yes, that's why I said 'signal' and not 'sole metric used to determine worth'. Devs get so touchy about this subject. I didn't say being good with the terminal is all that matters, it's just an extra piece of information.
I’m very comfortable with the terminal, but let’s be honest. It’s not very good at certain apps. For example, copy/pasting long bits of code or strings into and out of Claude code is highly annoying. Line breaks in weird spots, because of the terminal, for example.
Anyways, I use cursor for a number of reasons:
1. I still want very quick access to the code in the editor. So I want the IDE.
2. Generally solid defaults. Auto-compaction, plan mode, etc, all work pretty well.
3. When I switched back to it from Claude code, it was genuinely faster at running Opus than Claude code. Claude code was grinding to a fucking halt every two minutes.
4. So annoying to search and view your chat history in Claude code. I’m a visual person. I also want all my repos loaded into a big workspace. Cursor also does that great out of the box.
5. I don’t have time to redo my terminal setup again to optimize it for Claude.
Tbh, I’m not aware of much that Claude code does that you can’t also do in cursor. At the end of the day, the agent loop and tools are not that different, and the model is identical.
The tool you use to prompt it is not the hard part. I just work faster when I have everything easily accessible in one spot, which was easier for me to accomplish with cursor than Claude. I found it just got out of my way.
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.
This. I hate VSCode as an IDE and is the reason why I have not used Cursor. I wish Jetbrains actually had some brains to build a better coding agent inside their IDEs (which I think are one of the best out there), but for now Im stuck with codex/cc + Jetbrains IDE
IDE ships it's own compiler, debugger, usually some sort of container/container orchestrator and database tool. I.e. the things that separate hobby projects from production ones. VSCode has these things but they're extensions, not build into the editor
I am not trying to be pedantic, I am really just curious because I’ve never heard someone saying something like vscode isn’t an IDE. I am mostly curious because those of us that write languages like Ruby or python with no compiler that typically debug in the terminal or repl feel like we have an IDE and refer to it as such.
I also think your characterization about hobby/production fall short. My fastAPI and rails codebases anre definitely not a hobby.
Thanks for clarifying though. Interesting to hear your perspective.
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.
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.
It's a terminal emulator with a command prompt that also gives you access to LLMs. But the interesting bit for people who work on a lot of machines is that this also works when you ssh to any remote machine.
So you can bring your agents to any remote system, it even works somewhat well for network devices.
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.
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.
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.
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.)
I did a lot of automation at my last job, which was closer to engineering in the classical sense than engineering in the software sense. The automation mostly amounted to web scraping and interacting with local systems, with a generous amount of logic in between. The largest roadblock wasn't the scraping or the logic, it was the inbuilt assumption of the local programs that there would be an ape with a mouse and keyboard driving the interaction. Outputs that could have been text needed to be copied to and read from the clipboard, or exported as a spreadsheet. Inputs that could have been text were only accepted in spreadsheet form. Pixels needed to be read from the screen to tell when one step was complete and the next could begin. Mouse clicks and keystrokes sent to and fro when it all could have been a series of commands. I cannot count how many written processes and procedures existed could have been a bash simple bash script.
I'm not arguing that these programs should not have a GUI, for that was the simplest way to use them, but the lack of command line functionality places a hard limit on the productivity of an organization, and ensures that the only progress on that front comes at the expensive of exceedingly limited developer time.
"But nobody knows how to use a terminal anymore," I hear you say. Well of course they don't, nobody under 35 without a background in programming has ever had cause to use one. We made everything so simple that nobody ever has to learn anything. That isn't to say that people cannot learn, just they have been robbed of the natural opportunity to do so. Otherwise intelligent people never progress beyond the manual step-by-step interaction that passes for "using a computer" today.
A computer is a tool in much the same way that the a machine shop is a tool: it is a tool that can build other tools. The role of software developers should not just be to build simple tools that can do one task in isolation, it should be to build tools that less technical people can use to build the tools they find themselves in need of. GUI-only programs are simply not fit for that purpose because they lack composability of simpler terminal-based programs.
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.
Terminal/CLI is superior if you know what you want to accomplish. There is no faster way of doing stuff on a computer if you know what you’re doing and having tab completion and knowing all the incantations.
GUI is superior when you have to figure out what to do and what needs to be done. GIT branches state checking, finding out a switch to enable a feature so much easier in graphical interfaces.
I find that what you call „annoying engineers” are just people who have their tools and use them efficiently … but once they have to step out of their path they become annoying or even obnoxious.
The opposite is random person who expects everything to be easy and available in less than 3 clicks — well good luck engineering an interface for complex system that does that, not everything is Facebook, there are systems where you need to spend time wrapping your head around.
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".
With the one caveat that it does not (yet) support copy/paste buffers or copying from the scroll back buffer. It’s also adamant that you use a mouse to select/copy - anything more complex and you need to pipe everything into neovim (or whatever text editor you use) and do your work there. I love zellij - it feels like the future - but hard to give up keyboard based select/copy and pulling from my scrollback.
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.
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.
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.
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