Do I have to spin up a whole session of the IDE just to run my test suite? Do I have to dig through eleven nested GUI settings dialogues to find out what the command to build the damn project is, just so I can tweak a build parameter? Is there so much boilerplate or XML or whatever within the frameworks we're using that writing or changing code is impossible without automation? These are bad things.
An IDE can be a powerful abstraction, but when the underlying layer it's abstracting over becomes inaccessible, then all it's doing is adding more complexity by obscuring concrete details.
This. All day long.
I can edit, compile and install my kernel and all its drivers in a few command lines from shell, why more and more projects, most way simpler than a kernel, ask me to install for example VSC just to build them? Give me a Makefile and possibly enough instructions to integrate its options into the favorite IDE, but making the IDE a requirement, especially for small projects or those one simply wants to build and install, adds only more complexity.
In the java ecosystem at least, the answer is no. But in highly CI-based situations, the answer is still no, but you DO need the CI system to be up, and the only way to run a test at all is to just commit something and see the CI system run it, e.g. because the tests require a database engine that isn't installed on your development machine.
I'm not saying that's a good idea, just saying that I have seen that in real (as in, for pay and for real eyeballs) dev teams. I've never observed 'I only know how to run my tests inside the IDE'. IDEs (again, this is mostly speaking from the perspective of the java ecosystem) use build tools as project definitions, and those build tests all know how to run the test suite from the command line. `mvn test` is all you need to type.
> Do I have to dig through eleven nested GUI settings dialogues to find out what the command to build the damn project is, just so I can tweak a build parameter?
No, it's `mvn install` or `mvn build` or whatever take on 'build' you are looking for specifically.
If you ditch your IDE, __nothing__ whatsoever would change: Your build is _still_ based on a build tool. (it better be, in the sense that trying to run the build by hand or by patching a bunch of shell scripts together is almost 100% correlated with very low quality dev teams in my experience).
In other words...
what are you on about? IDEs don't abstract such details away to extreme degrees. In fact, insofar that they ever did (generally in GUI builders, which, what with the web and languages like java and Adobe Air and silverlight falling by the wayside in the past few years for front-end dev - are kinda dead), the new takes on such tools all very explicitly keep the whole 'actually this just edits a text file of some sort and this automated click-the-GUI-together tool is bending over backwards to ensure that the underlying file looks as close as possible to what you would write by hand.
IntelliJ even has tooling to get you started:
https://www.jetbrains.com/help/idea/convert-a-regular-projec...
It took a day or two to get kt over to Maven: basically create a Maven file, make sure everything were in the correct standard Java layout, then build and unzip the war file and compare it to the unzipped war file from the existing build process repeatedly while getting the last tweaks in place.
You nailed it in one — visual studio is exactly what I was complaining about.
> what are you on about?
This complaint is based on a .NET project I used to work on. I'm sure this isn't universally the case for everything .NET, but I had to work with one instance of visual studio open in the code repository and a second instance of visual studio open in the test repository. Everything we did was configured in and executed through VS. It was pretty nasty.
Isn't this the case with Android Studio? Is it even possible to do Android development without Android Studio?
Oh yes: https://www.lambdanative.org/
That said, it would be quite difficult to write anything substantial without Android Studio.
Can you say what language/platform you talk abojt here?
I currently work in Kotlin with IntelliJ where sadly the only working IDE is IntelliJ,but you can build it just fine and even fix bugs using whatever editor you want.
I also maintain a lot of React code, used to work on .Net Core and some plain old C# before Core, I've maintained Angular and before that Java, older Delphi versions and even PHP.
The only projects that had the problem you talk about were
- Visual Studio (not Visul Studio Code) projects from before .Net core
- and old Delphi projects.
That said, I'm kind of stuck with IntelliJ now because of Kotlin (which is an awesome language) but I miss NetBeans a lot and how it - instead of saving everything in its own configuration files - simply accepted Maven .pom files as configuration, meaning uncluttered repos and still having all config synced and up to date everywhere. (Maven is well though out so if you just accept the defaults the files are small and contain only the things they need to contain like name, namespace and version, dependencies and necessary configuration.)
I can happily say that this problem doesn't exist on the other platforms I deal with but I guess you already know :-)
Any decent IDE doesn't enforce such things, it is something questionable devs choose to incorporate. You may inadvertently do this if you don't know an IDE, and try to use excessive features available, but that's still on you for doing so. It shouldn't have been a decision made by someone lacking in knowledge/experience, whether a junior dev or a senior selecting an unknown tool without proper evaluation.
Or are you implying such features from IDEs can somehow be attained by non-IDE toolchains that don't also ingrain you in those toolchains to make use of said features?
how IDE "can" be an abstraction?
It's tool, it's wrapper (e.g button over commandline commands), but abstraction?
I do agree
There is a line between a tool:
A) that makes managing relevant information more efficient, while not hiding any of that information.
B) vs. a tool that hides some details, providing a tradeoff of higher productivity MOST of the time, but at the cost of requiring a fall back tool on other (rare?) occasions.
I would say, once a tool stops providing access to any (even rarely) relevant details, it has become an abstraction.
Specifically: "The best developers" indeed know how to work without an IDE. They also know 5 programming languages, 50 libraries, and know a whole bevy of esoteric randomness, such as difference between a Thompson-NFA style regex engine and the limitations thereof, or something like that.
There is no such thing as a 'the best developer' that doesn't know much. The 'knows many things and has lots of experience' is a tautologic argument.
In the mean time, bad programmers 'use an IDE a lot and are lost without it'. That's also tautologic.
In other words, your observation proves absolutely nothing, in regards to whether it is wise to use an IDE or not. You're not going to magically turn a bad programmer into a good one by uninstalling their IDE. You're not going to ensure a new programmer is going to turn into a good one if you advise them to forego an IDE, nor will you ruin a potentially good one if you install an IDE on their computer.
It says nothing.
The best swimmers can stay afloat with pounds and pounds of weight dragging the down; the worst swimmers will drown. Doesn't mean weighing you down makes you a better swimmer.
An excellent choice in analogies.
Yes, it does; but when you're trying to set a record swimming the English Channel, or escaping from a sinking ship you'd be an idiot to do it deliberately weighing yourself down with weights.
I suppose there's something to be said for both ways of doing things ultimately, depending on what situation you're in, and what your goal is.
...but unconditionally advising people to swim with weights, is simply bad advice.
Your training time to competition time is about 99:1 (on the high side for the competition time). The record attempts (or the emergencies) are a poor continuation of this analogy when it comes to programming.
> unconditionally advising people to swim with weights, is simply bad advice
So we should advise them to use floats instead, since it makes swimming so much easier?
Also, swimmers don't swim with weights to improve technique or strength. I'd expect it would result in unorthodox or worsened technique due to trying to swim around the artificial imbalance of the weights.
They use the aquatic analog to weights - disabling their arms or legs, drastically increasing drag (via multiple swimsuits, or suits with chute-like pockets), swimming against bungee cords.
Using or not using an IDE because good developers use but don’t need an IDE misses the point. It’s never the choice of tool, it’s knowing how to use it.
Also the problems is that most IDEs half ass their git client. When I was using Sourcetree, I rarely ever felt the need to go to the command line.
Wait, isn't this normal? I run "diff" and "git diff" all the time (I think I have those both set up to invoke colordiff, but it's still a command line program). Also vim -d.
Occasionally I browse diffs on Github or Bitbucket instead. I don't find it an improvement. I do favour editors over IDEs, but I don't think I'm an extremist on this one.
Maybe I'm old - my whole os/shell is my ide
People take pride in being less productive and making things harder than they need to be.
That absolutely necessitates understanding of the details of what's going on. You are literally building automation by using additional tooling. It doesn't build it for you.
Also screwing up a git repo, what does that even mean? A bad commit?
The Maven Project IS the configuration. Intellij is only a shortcut. It let's you access configurations via click rather than via a command line expression.
In the end if you want to create a Maven Project configuration or edit the configuration it's on you to do it. At most intellij will just generate boilerplate for you.
For example in CLion you can't create a new target from the IDE, you have to edit the cmake file.
> In order to even get the IDE working with a project you need to configure it to work.
Meaning you already have a Maven/SBT/Gradle project and need to get the IDE to work with it.
Why else would I come on here to make some claim that is false?
Sure, we can probably write code without an IDE but in what way does that mean I'm a better developer? I feel myself cringing whenever I hear that a developer is going to reach for TextEdit or Notepad++ to write code.
People are referring to SublimeText, Vim, Emacs, VSCode as Programming Text editors. VSCode is currently the most popular with vim as purist second and Emacs for "elite" hackers.
I would say VSCode is more in the code editor category, but as I said before the lines are blurring. With enough plugins and configuration even vim and emacs can straddle that line.
In general IDE's tend to have more features less bugs, and have all of these features out of the box.
A dev would require completely separate tools that provide that functionality to say otherwise.
"Best" is a marketing term. How do you mean it as it applies to software quality or productivity?
I'm trying to understand if you're serious, since the author (who notes "I myself use IntelliJ, CLion and MySQL workbench almost everyday") doesn't even seem to believe what he's writing.
Contrastingly, the worst, slowest developers I've worked with rely on their IDE without understanding what it's doing for them, and are helpless in new/unsupported situations. They also, 100% of the time, screw up their git repositories on a regular basis, and need someone who knows what they're doing to help them out, costing their colleagues time and frustration helping them when they won't help themselves.
Some people from the first group find they prefer not using an IDE. It's rather the opposite of laziness, it's choosing the workflow they find most productive, even if it differs from your preferred workflow.