If you think an IDE will somehow corrode your skills, then you might not survive the incoming army of AI agents that will make IDEs look like punch cards.
Your skill as a programmer/engineer should not depend on the intricacies of syntax and the setup of a prettier or linter library. Additionally, there is no reason not to use a GUI. Sublime Text was a good example of an IDE that is in between a full blown solution like VSCode and a bare bones terminal text editor. Why would you not want a UI to customize and have shortcuts such that you can just click once instead of typing on your keyboard like you are playing a professional game of StarCraft.
You should use whatever makes you productive. Programmers aren’t paid to hand write software, they’re paid for features. Creature comforts as the article calls them , like auto-refactoring and jump to definition, make writing features more efficient. These features are what I need graduate hires to understand and use, not necessarily ‘nuances’ as the article suggests. Once you understand the basics of programming, the language itself becomes less relevant. I’d hire a grad with solid IDE experience over one who is an expert at rust but absolutely insists they only write code in emacs.
By all means, if you’re most effective in emacs then please use it, but in all the places I’ve ever worked, emacs and vim have never been the tool of choice for anything beyond ‘I need this one line changed in this config file’, and there is a reason for that.
And if you need one line changed... Just use Nano... Does the job, is easy enough that you do not need to learn special things. Even presents some features like cut and paste and search there in default UI.
> And if you need one line changed... Just use Nano... Does the job, is easy enough that you do not need to learn special things. Even presents some features like cut and paste and search there in default UI.
(Neo)Vim has these too ;)
d# to cut # lines (or dd to cut one line)
p to paste below, P to paste above
/ to search (supports regex)
Also some bonuses like find and replace:
`:%s/old_thing/new_thing`
And going to a specific line:
#G (where # is line num.), alternatively gg to jump to the top of the document and G for the bottom.
For me it took a day or two to learn these basic keybinds, but now I much prefer it to nano as its significantly faster to navigate around even for quick edits.
Jumping on the bandwagon of this is a pretty ridiculous "article".
If the advice is "learn how things work before using some kind of automation" that's valid guidance but this article seems to assume using an IDE or something like that is a substitute for using your brain, which is pretty bogus. Not everyone who uses an IDE is doing it because they want fancy "code completion" or "AI-enabled write a for-loop for me".
I didn't get the hype around VSCode until I ended up working on a project where I was forced to use a Windows PC but the machines I was interacting with were Linux-hosts.
The "Remote SSH" capability wasn't just "slightly helpful" it was realistically the only way (along with VSCode IDE) to navigate a project that had thousands of files of proprietary, non-open source code (i.e. you couldn't use github or something "offline" to traverse the code base).
Remote SSH enabled me to go from hating life using grep / ripgrep and nano/vim/emacs to figuring out a crazy complex code base to being able to wrap my head around the design thanks to VSCode's "jump to definition" and other really helpful features.
I use VSCodium and open-source plug-ins now for personal work and I'm constantly finding new and useful features.
Addendum: If you work in languages like Python, the single-step and debug experience in VSCode (haven't tried it in VSCodium) is also really impressive. You're not using some strange Python IDE which has its own ideas about how do "single-step" and "watch variables".
Remote SSH is really the killer feature. It's like adding a GUI on top of the remotest machines. I've tried something like IntelliJ remote but it's much more unstable especially with lower internet bandwidth or RAM.
A cursory web search suggests that Visual Studio is the most popular IDE. The collective decisions of thousands of developers appears to contradict the article's recommendation of NeoVim / Emacs.
“Learning programming is hard enough that you should use every available tool to help you overcome the hurdles. Without help from IDEs, you might never discover an API or a have the time and energy to experiment with making your code better.”
There. Now you have two contrary opinions and can choose whichever you personally prefer until someone whips out some research papers.
My suggestion to students who want to hone their skills is to actually spend time programming with whatever tool they like. If, on the other hand, they want their skills to degrade -- perhaps they could instead try something like blogging and churning out think pieces.
> I recommend using NeoVim or Emacs, spending a little time setting up your own configuration, and getting to work. Leave behind the creature comforts.
Funny. After years of use, Emacs is my creature comfort!
Coding on paper should ever only be done as a pseudocode or paper prototyping exercise. There is value in the ability to think abstractly without an IDE prescribing structure for you, but there is zero practical value to testing a developer on whether he can write compiling code by hand on paper. We don't use punch cards anymore.
You can dig postholes with a spoon, and you'll develop some really great forearm strength from doing so, but I'll be over here using a postholer to put up 75 posts for every 1 of yours.
Maybe this is fine for uni or testing where you may be quizzed on syntax but really shouldn’t apply beyond that. Use the tools that make you efficient to deliver results.
It is a case of personal preference. Removing or having creature comforts like easy refactoring, being able to do code aware search like go to definition, etc won't make you a better or worse programmer.
It might make things more frustrating to get around. It might make you slower. Or for some people it might remove distractions instead.
Try both using more of a 'just a text editor', and full fat IDEs - and use what you prefer.
I think you should be capable of programming in notepad.exe. Not because it’s a test of skill or improves your understanding or whatever… but because the IDE shouldn’t be able to do anything you can’t do yourself (slowly). If you actually understand it well, the IDE is a boon, not a necessity.
The mistake with these kinds of articles is arguing that because you should be able to work without an IDE, then it’s best to work without an IDE — I don’t know where this leap of logic comes from, but afaict is never a good argument, and the HN counter arguments are just as uninteresting
I think the key piece in TFA is while starting out or otherwise learning.
I agree with that conditional. It's too easy to rely on tooling, and never really grasp certain concepts involved in what you are doing.
If you take AI for example, its solutions are generally not quite right. An experienced developer will know what's not right. A junior will spend more time slamming into walls and possibly never really understand if using AI and even per TFA, an IDE.
That's so incredibly stupid. VScode is not holding more your hands than neovim or Emacs, and it's much more efficient to focus on learning the language and the algorithm than struggling against your editoe
> I recommend using NeoVim or Emacs, spending a little time setting up your own configuration, and getting to work. Leave behind the creature comforts. Get used to nobody holding your hand.
Straight from the article. Vim is superior because it's harder to learn/use. Nothing original
Your skill as a programmer/engineer should not depend on the intricacies of syntax and the setup of a prettier or linter library. Additionally, there is no reason not to use a GUI. Sublime Text was a good example of an IDE that is in between a full blown solution like VSCode and a bare bones terminal text editor. Why would you not want a UI to customize and have shortcuts such that you can just click once instead of typing on your keyboard like you are playing a professional game of StarCraft.