In this Thread: people telling you how IDEs suck then proceed telling you how to turn their terminal based text editor into an IDE
Programming
All things programming and coding related. Subcommunity of Technology.
This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.
There's a learning experience to it though. When coding in intellij I'm just using writing some java without deep understanding how the build system works ans what's done underneath. Setting up some nvim with lsp forces you to focus more on the whole process so I'd say it can be beneficial
I started as a sysadmin in 1995 and started programming not long after that. I spent most my time in a shell and vim, started writing python all in vim. Then I took on a project that was a graphical application for windows and OS X. It was a rewrite of a windows visual basic app that we did not have the source for, so now good opportunity to write a multi platform application.
I wrote that program in python/pyQt3. Started on linux (which it also ran on) decided to look at IDE's to help with pyQt I found Eric3. It made writing the first app and many after a lot easier.
So moved on from there a few years later and I use Jetbrains Pycharm commercial if I am writing anything bigger then a quick script I will do it in Pycharm.
Some of the things I like in Pycharm.
- really good vim emulation
- the linter finds code problems very well
- completion is great
- debugger is fantastic I rarely use a print to debug but it still happens
- Increase's productivity, hard to see at first.
I strongly recommend looking at IDE's start with Kdev and see where it goes also try the trial version of Jetbrains Clion. https://www.jetbrains.com/clion/
It feels like a lot of extra work to learn an IDE but it pays in productivity. Watch some videos on Clion.
A good IDE takes the basics and supercharges them.
Navigation along with block expand/collapse, make reading code much easier, they allow you to focus on what really matters.
Syntax highlighting, inspections, and formatting allow you to focus on what you write and not if you missed a semicolon.
Visual debugging is so much better that you just have to try it once, no debate.
Run configurations, especially for tests, are a nice treat if you running multiple apps/different configurations.
While there are many benefits to using an IDE, you have to keep in mind that they are not an one for all solution. Sometimes it's better to open a terminal.
Also, they are great as long as they assist your flow and not disturb it, you will need to spend time to figure out the configuration that works for you. I have been changing IDE configurationd since 2012 when I first used eclipse.
For my money: yes, you should use an IDE or something like one, but not because you're "missing out" - rather, because a plain text editor will limit your progress.
There are (still!) people around who think it's some sort of badge of honour to only use text editors, but in reality, this means they miss the syntax errors and typoes that we all make because we are human, and end up wasting hours looking for them when an IDE would let them see them.
You wouldn't turn up at a cookery school saying "I'm still a beginner, so I'm only going to use this pair of scissors" - specialised knives and utensils are part of the chef's toolkit, and becoming a better chef is just as much about learning to use them effectively as it is about memorising recipes. It's the same with programming.
I stick with vim for years out of that sort of badge of honor. Now I use vscode and nobody is taking it from me.
You can do almost anything in vim or emacs, but I can do it faster in vscode. It's a really fantastic tool and it's completely free.
I stick with vim because every time I try to use vscode, I get so bogged down trying to set things up and figure out how to use it that I end up just being like, "eh, fuck it - I'll do this later."
Some younger admins and engineers look upon me with awe, but really I'm just secretly a really lazy bastard. I don't even pack plugins into vim anymore to make my life easier. Just plain old vanilla vim.
Do you use the vim plugin for VSC to keep your speedy navigation? I miss things like "select up to the next quote" but I'm not enough of a vim user to make the switch myself.
Step by step debugging is very enlightening when it comes to inspecting execution. If your current setup doesn’t include that, I’d strongly suggest to revise it.
Interesting question. Personally, I started with a text editor transitioned to vim, then to VSCode and now I've settled on a customised neovim install.
I'm a believer of PDE, that is personal development environment. It's a concept one of the Devs of Neovim TJDeVries talks about.
In essence it's the idea of building your development environment how you want it. Personally, Neovim allows me to do this. For example, I have a VSCode style debugger, incredibly fast searching with ripgrep, vim keyboard shortcuts and uses the same language servers as jetbrains products.
Here's a link to his full conversation on the topic: https://youtu.be/QMVIJhC9Veg
Stay awesome!
Can you elaborate on your debugger?
I've been trying to switch to neovim, and I've got a pretty decent setup with treesitter and also lspconfig. My search and debugger are still non-existent and I'm not sure what is best.
I write python and c/c++ (for MCUs) at work, and I'm curious what the state of integration with potential debuggers is.
I've been doing development in many languages over the years, including C++, Java, Python, and Go. i do everything from the command line: tmux for multi-tasking, vim for editing, the specific compiler and other language tools, makefiles, grep, etc. I am plenty productive, and I find the speed and generality of the tools I use make up for the features an IDE might have out-of-the-box and that I have to either take a couple more steps to accomplish or write some kind of script to help with. Basically "the command line is my IDE". Also nice to not be dependent upon a windowing/desktop environment to get stuff done. Nice and portable and lightweight on dependencies.