VS code is awesome, sometimes too good. I used to writing pretty much everything from work to side projects, from Ruby to JavaScript exclusively using Vim. But I noticed that I’ve slowly transited using VS Code 90% of the time for the recent years.
It’s been great, it helped me caught lots of bugs because of the smart auto completion, it prevent me from writing so many typos because of the built in spell checking, plus TypeScript almost take over the entire front end development, you never need to worry about code formats, because every save will automatically convert your code into uniformed style through “prettier”. The code we wrote feels much more “safe” and “beautiful”. In other words, the code we wrote at least from visual perspective looks more like machine produced code.
The other day, because of VS Code crashes on my machine and refuse to re-opening. I opened the Elixir project using my old friend Vim. Prior to using Vim, I thought I would feel uneasy, cause all the assistant now is gone. But I immediately feels something so familiar before, I feels like I am start “thinking” again. I feels like I am in control.
The slogan of Copilot being just a “copilot” or assistant is an illusion in practice. Once you’ve been used to the assistant, you will never be able to truly in control. Every single step of design, every details, variables will be influenced by your assistant. On the positive side, you probably will never be able to coding “by yourself”, on the negative side, you would never truly feels the flow of coding. It’s like riding using with the learner’s wheels on, yes it’s riding, but no, you didn’t know what’s riding really feels.
Programming guru Charles Petzold once wrote about this topic in his essay Does Visual Studio Rot the Mind? back in 2005. One thing resinated me lot is the “IntelliSense” changes how we think:
But the implication here is staggering. To get IntelliSense to work right, not only must you code in a bottom-up structure, but within each method or property, you must also write you code linearly from beginning to end — just as if you were using that old DOS line editor, EDLIN. You must define all variables before you use them. No more skipping around in your code.
These intelligent tools are not neutral, they will find every opportunity to change the way how we code, or even worse, how we think.
We as programmers spent lots of time typing code facing the screen. Because we need to deliver that feature, because we need to cut the latency to half, because we need to increase the conversion to 40%. But there is another side of coding as well.
Creator of Redis once said:
Code is like a poem; it’s not just something we write to reach some practical result.
If you can, open Vim or other plain text editor someday, write some code. Hopefully you will find what you’ve been missing all this long.