Update/Clarification (21th August 2021):
Disclaimer: I'm not against using IDE's in general.
Sometimes they provide valuable tools like refactoring / function rename,
which would simply be dumb to do manually.
I myself use IntelliJ, CLion and MySQL workbench almost everyday.
I'm simply listing Reasons for not using one ALL THE TIME FOR EVERYTHING.
And there are real benefits to not using them for some projects.
But there are situations where using an IDE would be the best decision, in my opinion.
IDE's (Integrated Development Environments) have become very popular. They enable very fast programming of Applications in statically typed languages which have support for Autocomplete. An example would be programming in Java with Intellij Idea. But there are a bunch of reasons for not using one. I met a friend recently who is programming C++, and he is just using a terminal text editor (Micro).
By not using an IDE, you have to remember the syntax of the language you are using, the subroutines from your own project and their arguments. You also remember (standard-)library subroutines better for your chose programming language.
When you have to manually find a file to change a subroutine implementation, or to refactor a subroutine, you will have good file names and a good directory structure. The Antipattern of the directory layout of your typical Java Enterprise Project is a Testament to this. (src/main/java/org/company/product/...)
With big projects, it might slow you down to have the IDE load the entire project before you can start working. Some Projects with 40000+ files might take >5 minutes to load.
This is almost always the result of bad language design and/or bad library design. An example is developing android apps in Java with Android studio. Here, you will be slowed down a great deal in order to program without Android Studio. There will be a steep learning curve.
Good Open Source Projects encourage people to clone, fork, and maybe even to contribute to a Project. People are able to directly edit files on github, if an IDE is not required and they know the language being used. Not requiring an IDE makes it easier for blind people, who might be using screenreaders to understand your project, and enables people without modern hardware (which might be unable/impractical to run an IDE) to work on your project.
Have you ever seen a Java Enterprise Project? Sometimes the Java classes in there have 20+ import statements, automatically generated by the IDE. Working in this style, with such long package names and lots of classes/namespaces eventually almost forces you to use an IDE because there is just so much, that it becomes impractical to remember.
Not having Autocomplete / Code Generation guides you naturally
to writing more compact and idiomatic Code in the Language of your Choice.
It helps you to learn language-specific features and syntactic sugar.
Consider
System.out.println("hello"); printf("hello");You see that in C, where using an IDE is uncommon, the languge/libraries/frameworks naturally becomes more easily readable and writable.
In Java, there is the Concept of Getters, Setters, toString, hashCode
and so on. These methods can be auto-generated by the IDE.
In practise, this leads to bloat. The IDE is simply compensating for
missing language features (built-in hashing of a composite data type, built-in string representation ).
"Make each program do one thing well". IDE's tend to do many things,
any many things poorly (Visual Studio Code's poor man's autocomplete for languages which really don't support it well is a prime example).
You can create a great development environment for your project
by using multiple tools, such as