I don't think there is a single authoritative definition of what exactly an "IDE" is. Wikipedia itself says:
The boundary between an IDE and other parts of the broader software development environment is not well-defined
The things out there that brand themselves as "IDE"s are all unique in their feature sets, designs, and goals. But there is some consensus that generally, an "IDE" typically provides text editing, build automation, and debugging facilities.
VS Code obviously provides text editing. As for everything else, in general, VS Code is designed for extensibility. VS Code itself implements the common user interface models, logic, and views for those extension-oriented features, and provides an extension API for extensions to provide implementations of / integrations for "integrated development" facilities through. Extensibility is one of VS Code's core design goals- to the extent (🥁) that you may very commonly see feature-request issue tickets raised to the main VS Code GitHub repo where a maintainer (politely) declines the feature-request, suggesting instead for it to be implemented through an extension.
Extensions can provide:
- Language support, which includes
- Syntax highlighting
- Suggestions ("intelligent code completion")
- Problem diagnostics
- Formatting
- Code folding
- Code actions such as refactorings and linting
- etc.
- Task support (which can include build automation)
- Debugging support
See the following documentation pages if you want more details:
Extensions can contribute a lot more than that. They can contribute basic/extended source control management integration (there's a builtin Git support extension, and many other ones extending its functionality, such as Gitlens). They can contribute colour themes, keybinding sets, and with custom webviews, you can build your own custom UI sections. The list really goes on.
Some of those development-tooling-support extensions come built in and don't need to be manually installed- such as the builtin TypeScript language support extension.
A lot of other editors are also extensible like VS Code is- to varying degrees, and for varying components and with varying designs. But I think many people with a more traditional idea of what an "IDE" is will think of something that is targeting a specific development ecosystem / programming language, and so don't require you to install extra bits ("extensions", "plugins", "addons"- whatever they call them) for "basic development facilities". Ex. Visual Studio, or IDEs from the Jetbrains family (which have a different model, being individually distributed, but based on the same core), both of which are also extensible, in different ways.
I don't think VS Code's own maintainers really explicitly call it an "IDE". Actually, here, they write this:
Visual Studio Code is a streamlined code editor with support for development operations like debugging, task running, and version control. It aims to provide just the tools a developer needs for a quick code-build-debug cycle and leaves more complex workflows to fuller featured IDEs, such as Visual Studio IDE.
Due to the design for extensibility, in a weird way, I guess you could think of VS Code more like a shell built specifically for housing IDE components inside itself, with some that already live there by default. But I'm lazy and just call it an IDE, or "extensible IDE".
Here's a miscellaneous list of links to various peoples' definitions of what an "IDE" is (I swear many of these must be copying their basic definition from some common source...):
As for the people who say that new programmers should use a "real IDE" instead of VS Code, I can see where they're coming from. They really mean well, have their own ideas of what a valuable or useful way to learn programming tooling are, and just want to help a newbie. Though I don't agree with all the things they say, there is usually a significant aspect of objective truth to the things they say. I think all code editing technologies have their strengths and weaknesses. I just am more familiar with those of VS Code and have learned to work with it.