When IDEs first emerged in the world of web development, many developers proudly claimed that a simple text editor was all they needed. For them, saying "I'm using Notepad / VIM" became a badge of honor, symbolizing their minimalist approach.
Today, I sense a similar mindset among those who oppose AI assistants in software development. They tend to focus on the perceived limitations of these tools, often failing to see the bigger picture of how AI can enhance productivity. Instead, they quickly latch onto any shortcoming to justify their resistance, missing the potential long-term benefits.
> When IDEs first emerged in the world of web development, many developers proudly claimed that a simple text editor was all they needed. For them, saying "I'm using Notepad / VIM" became a badge of honor, symbolizing their minimalist approach.
Whenever some new technology is being sold, someone always tries to delegitimize any criticism by citing some superficially similar criticism of some past technology that was adopted. Or, fairly frequently, they just reflexively cite Socrates's/Plato's OG critique of writing.
> Today, I sense a similar mindset among those who oppose AI assistants in software development. They tend to focus on the perceived limitations of these tools, often failing to see the bigger picture of how AI can enhance productivity. Instead, they quickly latch onto any shortcoming to justify their resistance, missing the potential long-term benefits.
So your message is: "Who are you going to believe, the sales pitch or your own lying eyes? You should focus on selling yourself on the new thing."
I think you should listen to the criticism, and try to understand and empathize with it instead of trying to dismiss and disregard it. There's something there. Maybe the people who critique it are the careful and thoughtful developers, and the ones who sing its praises are the sloppy ones who aren't careful enough to see the problems or just don't care (e.g. the kind who see their job as closing tickets not writing working software)?
Maybe this thing will get adopted despite its shortcomings and change everything, like NFTs did, but that doesn't mean those shortcomings aren't important.
That's an interesting comparison because it seems to me that there are still a significant fraction of experienced developers using text editors like vi and sublime, without any apparent loss in productivity. Also, I use VS almost all the time but have had to learn how to bypass it when there are errors that aren't flagged up by its particular build process. I wonder if the same will apply in the case of AI assistants - they'll be great for more junior developers who will never need to learn good practises for refactoring, debugging etc... until suddenly they do. Not saying it's a bad thing, just that you may not need to worry too much about "losing out" if you're not on the hype train.
I think there might be a few things to consider here:
1. Is it without any loss in productivity? Or are they so productive/skilled that they can still outpace most other devs even without the IDE's additional functionality?
2. Is there a loss in productivity, and they just don't realize it? Just because they can still do a good enough job without an IDE doesn't necessarily mean that they couldn't do a better job as experienced IDE users.
This is similar to the arguments people make against using Rust. "I can code C just fine and never have any issues, I don't need Rust"
It's also similar to this Copilot discussion. The people who say "I don't see any benefit from LLMs when coding", could it be that they just... don't have enough experience using LLMs? We've -just- had that come up in HN[0], where everybody in the comments was showing how they got the answer just fine out of their LLM of choice, while the OP was all about how AI couldn't possibly understand that bit of code.
My intuitive understanding is that a lot of an IDE's functionality - e.g. running builds, common refactorings, or searching for instances of a class - can be performed at a similar speed by someone who has a toolset of commands and shortkeys at the tips of their fingers. And if you do grok those commands, you can probably do even more flexible things than your IDE will easily allow. I also find that using an IDE means you can easily forget about how e.g. config files factor into the build process, which can make it harder to on the fly diagnose certain kinds of issues that depend on configuration.
But I guess you're right that we can't trust word of mouth and don't know for sure until/unless we have an agreed measure of productivity and can run with/without or before/after type experiments.
> I also find that using an IDE means you can easily forget about how e.g. config files factor into the build process, which can make it harder to on the fly diagnose certain kinds of issues that depend on configuration.
This is a fact that needs more attention, and it's why I prefer to onboard people with setup documents they work through rather than a canned working development setup, even though the former takes "longer" to get people up and running. The long term benefits in forcing people to touch and familiarize themselves with as much as possible far outweigh any short-term time gain.
Give competent developers - i.e. people trained to solve optimization problems in their sleep - a metric to optimize for. Call it "productivity". See what happens.
For sure, productivity is easy to define loosely but extremely difficult to measure exactly. Thinking for two weeks and then making a one-line change might be more profitable than churning out any amount of high quality code.
Yes, Vim and Emacs have been "IDEs" in all but name for decades. They just do things in a slightly different way which is arguably less "integrated" and more "modular", but feature-wise it's pretty much identical, and has been for a long time.
>I wonder if the same will apply in the case of AI assistants - they'll be great for more junior developers who will never need to learn good
I can't think of a worse idea than giving copilot to a junior dev... I use chatgpt a lot, but I've got lots of experience. One has to understand how the big picture works very well to not find yourself led down the wrong path.
Most non-technical business stakeholders don't really understand what we do. You don't see shows about awesome devs doing awesome shit, like you do for lawyers, doctors, business people, etc. All they know about us is that we're nerds who work like two hours a day and can't be bothered to go into the office.
They do, however, understand ChatGPT and how it can be used to create whatever you want (see also: Eric Schmidt's missive to Stanford business undergrads that made the front page here some time back).
Given this, they are EXTREMELY incentivized to give/force upon ChatGPT to juniors. If they can give this to juniors and maintain feature velocity with an acceptable amount of quality degradation, then they can eventually move software development to lower-cost countries with weaker worker protections wholesale (and use good old fashioned protectionism to make sure that those countries don't try to steal our slice of the pie).
Quality issues can be fixed by expert consultants who know their shit, but that market won't be big enough for all of us.
> Most non-technical business stakeholders don't really understand what we do. You don't see shows about awesome devs doing awesome shit, like you do for lawyers, doctors, business people, etc. All they know about us is that we're nerds who work like two hours a day and can't be bothered to go into the office.
I was there when IDEs first started becoming popular amongst my cohort. Yes, there were people like that who prided themselves on their hard-earned skills.
But there's a key difference here.
I don't remember an IDE trying to autocomplete something which didn't exist. Similarly, an IDE never pointed me to documentation which it had just invented. If it had, I'd've been one of those people living out my days in Nano.
If my IDE autocomplete sometimes generated invalid syntax, I would throw that IDE in the trash and never do business with the people who made it ever again.
Writing the code is not where I spend most of my time: it's in planning, optimizing, and debugging. AI only helps modestly with the second and third of those right now, and it certainly doesn't need to be in my code editor to do that. In fact, I spent a lot of mental cycles when I tried copilot removing potential bugs it was hallucinating into the code in the first place.
IDEs made it easier to navigate a huge codebase with things like autocomplete and one-click refactor. This made it easier to make huge codebases that _require_ these QoL add-ons over time. I think this was a factor that made outsourcing software development (to countries with weak or non-existent worker rights) possible at scale.
In a similar vein, highly paid software engineers are using LLMs to generate more and more of the code they ship.
If highly paid SWEs can write code by shoveling a sentence into Copilot, _literally anyone can._
We seem hellbent on destroying our profession for the sake of "productivity" (i.e. using less of our brainpower to churn our features faster).
But what do I know? I'm just a simpleton that uses vim and writes code the old-fashioned way.
Exactly. As a solo entrepreneur, using ChatGPT to produce an acceptable MVP to test PMF makes all of the sense. People used to pay big money for that.
Whether you scale that strategy once your business becomes viable is dependent on whether you give a shit about software quality or not. That's the long-term concern I have with this flavor of AI.
I find IDEs add complexity to development, even today. They're very bad at hiding irrelevant information. There are so many buttons I've never used in Visual Studio that are always displayed, it makes it very visually cluttered and harder to find the buttons I actually need.
And configuring tools through IDEs is very opaque. How do I add a flag to the compiler command line in this IDE? Who knows. How do I change the CMake config? Maybe I can edit the CMakeLists directly, or maybe that will make the IDE blow up, so I have to use some arcane GUI built atop an already arcane text UI.
Plus, you can usually forget about scripting your workflow. Unless the exact workflow you need is built in to the IDE already, you'll be clicking the same sequence of buttons over and over ad infinitum. An IDE is one big complex tool in place of a handful of simpler composable tools, and the only way to extend an IDEs functionality is to make it more complex instead of adding another simple tool or composing existing tools in a different way.
AI is. a tool. a power tool for sure but ultimatly it multiplies what the developer brings to the table. I personally have found it of limited use outside a few situations such as knocking out a bunch of boilerplate.
That said, I would keeo this thing the hell away fro junior engineers and I wouldn't want a junior who has used AI his entire career anywhere near my codebase. AI is gasoline and without someone with experience behind the scenes, they are just going to be 10x faster at knocking out unmaintainable spagetti code.
When you run a saas company, code is only ONE factor among many you are maintaining. The other arguable more important one is the domain specific knowledge that exists in the heads of your talent. Give me the nerd that uses emacs with 5+ years of experience thinking though and solving problems without AI. I'll let him have copilot because he'll be the one writing and maintaining the code. More importantly, he'll have teh experience to know when copilot is leading him astray.
The biggest speed up was when I was refactoring some code and it “learned” the pattern I was moving to. It felt great!
. . . Except it got one so wrong I couldn’t trust it and had to be just a meticulous as I would’ve been in the first place, so that was a net loss of time.
As a solo full-stack developer with 20 years of experience in PHP, I’ve found that using Copilot for my latest project (Laraval app) boosts my productivity by at least 50%. The multi-line autocomplete often nails exactly what I’m trying to achieve. I can easily verify its accuracy as I've written the same code multiple times over the span of my career and it is way faster than typing the same lines.
In addition to Copilot, I frequently use ChatGPT to get quick answers or examples, even beyond Laravel's already excellent documentation. It’s also incredibly useful for quickly learning the basics of setting up the infrastructure for my projects, saving me time and effort in the process.
I am an also an experience developer on the Python side and find it to be the same. Its hard to quantify the amount of time but the autocomplete does a really great job most of the time.
What is it auto completing? Most of the common things I share between projects are in the form of libraries, there is really no need for ai auto complete. Don’t get me wrong, ai is incredibly useful, but more for understanding things than autocomplete.
It's auto completing everything. Not just words or lines, but multiple lines. And it is way faster to read and see if it's correct than to type it all yourself.
That’s what I’m struggling with. I might write a micro service over and over again with spring boot but they are all different. The frameworks take care of all the boiler plate already. Why are we having ai generate boiler plate ? It seems on the surface to be a bad practice or a code smell.
I'm very optimistic when it comes to AI. I use chatgpt all the time at work and for personal code, but copilot just feels much worse. Perhaps I just gotten used to prompting and guiding (and copy pasting code) to the model in a way that gives me exactly what I want. Would I love an Ide that automated it? Sure, but none does it well!
The single biggest use I've found for LLMs has been search or lookup functionality. Instead of a carefully crafted google search + "reddit" I can just ask a question and get a specific answer with references. Some times it's wrong, generally not.
Runner up is copilot integration in the IDE that I ask to transform data or reorganize lines of code. It's grunt work and having smart automation around it is helpful.
Anything requiring "thinking" generally falls over pretty quickly. For example I've found broader feature code generation has generally been crap or worse and often using APIs that just don't exist. Catch is that LLMs have been sold as thinking machines that will replace people and VCs have thrown all their money into that fire.
P.S. VIM has a growning following and vscode user counts are astronomical, so I'm not sure your point stands.
>
The single biggest use I've found for LLMs has been search or lookup functionality. Instead of a carefully crafted google search + "reddit" I can just ask a question and get a specific answer with references. Some times it's wrong, generally not.
This is the use case that I struggle with the most.
Let's say that I want to know how to reheat a baguette. If I throw that into ChatGPT, it will give me an answer based on...who actually knows? It could be from the set of responses it found most often in its training. It could be from reddit.
It could be mashing these up into something completely incorrect.
Perplexity and Kagi Assistant are better in that they give you some of the sources they used in generating an answer, but now we're back to a search engine with extra steps.
With a search engine, I can go through each source and know (a) that the answers aren't altered and (b) who wrote the answer and whether I should trust them.
To wit: I once used ChatGPT 4 to find me good restaurants in Houston based on /r/houston subreddit, with sources. (This is the best way to find new restaurants in my opinion.) It gave me five recommendations that (a) were not the best recs and (b) had fake Reddit URLs for sources.
Umm, hi? I still use emacs, and I'm one of the top developers in my field. Never figured out how one of those IDE would be more useful for what I do, which is to develop novel low-level algorithms.
Also, neither vim nor emacs are simple text editors.
Quite frankly, IDEs at the time were really bad. They were slow and clunky. Intellisense didn't always work. People who relied too much on IDEs didn't understand their project's build process and couldn't debug it. The code templating stuff spit out awful code.
I kept using Emacs for a long time because I was more productive with it. I had a lot of customizations and add-ons that made it a dream to browse the codebase and churn out good code.
I finally switched to VSCode some time after it was open sourced because the plugins for my languages had gotten really good, and emacs development felt like it had slowed down and everything was starting to get bitrotten.
I don’t know any web developer who have ever used vim. And the IDE alternatives were table generators which made the worst code ever by ignoring every CSS rule, so I don’t really understand your argument.
As for IDEs in general, they only propose functions that do exist.
Today, I sense a similar mindset among those who oppose AI assistants in software development. They tend to focus on the perceived limitations of these tools, often failing to see the bigger picture of how AI can enhance productivity. Instead, they quickly latch onto any shortcoming to justify their resistance, missing the potential long-term benefits.