I remember seeing a SW project that could rip songs from vinyl albums. It worked by (very carefully) taking a photo-copy of the album, using image processing to read the wiggles that represent the sound on the tracks, then converting the wiggles into sound. The output was rubbish, but you could tell that it was meant to be music, and sometimes what the song was. Your approach reminded me of that - information is rather like energy, impossible to destroy, and can be translated into lots of different forms 😁😎
@@ContinuousDelivery I mean many low cost computers of the 70s and 80s used audio media for data storage. Literally the analog headphone and microphone jacks on a tape recorder.(and in a few cases read only vinyl records) the computer picked up the data similar to old analog-telephone modems.
Neovim user here. I've been a intellij fan for years before I (definitively?) switched to vim. I don't think editors are less featured than IDEs. (I can refactor and lint in vim thanks to language servers). I think the difference is that you have to build your editor if you want it to be like IDE. It comes with a lot of pain, but it's so great to have a tool you've spent years to sharp for your needs !
@@chrisrpg3913 it is less that it takes you years to get to a working solution and more that as you grow as a developer you can customize the workflow how you see fit without the tool getting in the way. And so after spending years honing your craft you have built up a set of tools to tackle tasks you commonly run into that may be unique to what you do.
@@chrisrpg3913 as we say in France "a good crafter knows his tools". The tool you build is the tool you really know how to use. I said it take years to sharp it. In reality you never finish to customize it.
Yes, it mostly comes down to: which has *better* plugins/ui for the task at hand. I can make vim to be an IDE (through plugins) and I can make an IDE use vim editing commands. I use both.
There are two issues involved i.e., Value and Mindset 1. Value Refactoring changed the debate for IDE vs Text. Refactoring made it worth to use IDEs Even before that , Microsoft IDEs have great intellisense and did the plumbing work for developers. 2. Mindset I used to think that the great developers don't use any crutches. "Pragmatic Programmer " changed my mindset. Difference between modern and prehistoric men are tools. There is no shame in using tools to give better deliveries. With Regards, Vikas
Emacs and lsp-protocol made refactoring much easier. And the magit-mode in Emacs is a single reason to use Emacs. And do you manage servers, then tramp-mode is a must, edit files (and local files as root) is so easy.
This subject gets more complicated every day. Text editors can now rival IDEs with things like the Language Server Protocol. The line between editor and IDE is blurry.
LSP doesn't come out of the box with vim, and even if some plugins automate the setup a lot, you still need to turn your vim into an IDE, and configure all the key bindings you want, set your preferences, fiddle with the python version used in the project so vim recognize it, etc, i do that and i'm happy it works, but it's certainly a bit more work to get there than with an IDE. And i've yet to find nearly as powerful refactoring tools in this situation as with say, PyCharm, sure, you can rename a thing (variable/class/method, maybe even module?), but that's about it regarding refactoring, and i've never been able to make rope/ropevim work for the more advanced things it promises for python.
@Marcelo Fernandes you are objectively wrong. Unless you think I am nobody. A text editor turbocharged with plugins is a lot more than a simple text editor. It becomes by all means a lean IDE, but an IDE at the end, because it "INTEGRATES" many features into an editor to help "DEVELOPERS" hence the acronym IDE.
My favorite I really like about neovim is how it subverts the distinction between IDE/text editor. Out of the box it's "just" a text editor. When I want an ide feature like error notifications for new language, I install a plugin (or two or three) + a language server (as neovim supports the protocol). So the only downside is time investing in configuration and dependency management. Personally, I enjoy that activity so the trade-off is clear.
Sounds a bit like using Gentoo. I’ve used and enjoyed it for a while because I wanted to learn more about inners of Linux, but I’ve moved on and wouldn’t consider going back unless there’s a *very* good and compelling reason.
@@MrQlife No, that's more like Arch. You have basic stuff and all you have to do is install what you want and configure it. Gentoo is more like suckless, you get nearly nothing and have to compile it yourself to get what you want.
I would say that when using a text editor, you're more likely to rely on CLI tools and this will certainly help you set up automation in CI/CD environments. Your IDE is usually using these CLI tools in the background as well, but might not expose all of its features out of the box. I do prefer an IDE but I also strongly recommend stepping out of the comfort of the GUI and familiarizing yourself with terminal tools. When I'm in an artisanal mood I do bust out vim to write my commit messages 😉
YES! There's no difference between clickin on external terminal window (or press Alt-tab) and launch a single-letter script/alias for compiling vs pressing Ctrl-Alt-X, K in the IDE for the same function. Align windows (editor, terminal et.) vs align IDE area sizes. Also windows may overlap, and active window may shade some of non-active ones for soms more extra space. Even I can open 2-3-x terminals, not only one.
Personally, I think that a developer that calls themselves an expert w/ X language, should know how to run X language raw in the terminal without an IDE. It generally leads to better project setup and if something breaks for some reason, they'll be more confident in fixing it. Swapping to and from new/old build tools and other improvements are also very easy to do. Now for non experts, mostly juniors, you can make an argument for not knowing the underlying apis and an argument for knowing them.
That's what Microsoft has been doing with its Visual Studio (not VSCode) products since 1998. Surely RAD tools make life easier but tend to alienate developers from customizing the pipelines.
@@ContinuousDelivery agreed its good to have some knowledge about working with CL. I think that many people don't need to go beyond a basic understanding of what is actually happening in the background in the same way software engineers aren't expected to understand more than basics of the way chips are manufactured.
We did long interviews with scientists and research software engineers on how they work, why they work that way and which tools they use and miss. They use Vi/Vim and Emacs for climate models. When working with Python some of them used IDEs (PyCharm) or Xcode. The main argument for Vi/Vim and Emacs was that they can edit code on HPC machines without the need to install an IDE there and export the display to their local workstation. They tried this. Modern IDEs are too slow to use via X11. However, Emacs and Vi can be used in a text terminal which always works. Most of the interviewees used Vim. While only a few used Emacs. In Emacs they used syntax highlighting and function lookups etc. as that "Editor" brings many IDE features with it. We will have a paper out on their domain and one on their processes (hopefully) this year.
One of the features of vscode that got me to switch to using it was that it can work with a client server model. However, The biggest advantage to me of VI is I can edit a text file over ssh on my phone relatively easily.
Though that kind of is an antipattern use-case in my opinion. You should track all code, experiment configurations and experiment results in version control and can then just execute the code using an automated runner, then read the report, change the code on your machine, push the new code or configuration and let the pipeline or runner do it's thing again. This way you (ideally) never have to ssh into any remote machines after setting them up and e.g. using clean docker builds, avoid errors introduced by using unclean environments. Sure sometimes it can save you a lot of time to ssh into a machine, but it should be a "I don't know how else to do this quickly" thing and not a standard way of work.
@@edwardallenthree I strive to be one though, almost done with my ML Masters, and I currently work on making these workflows and their benefits more accessible for pure academics with less software engineering experience.
I started with Java when it was in beta, and the entire API chart fit in a magazine centerfold. Who needs an IDE for that? 💁♀️ I was awfully, painfully, stupidly slow to recognize that what made sense in 1998 made no sense a decade on. I tried Intelli-J (skeptically) and was horrified to realize how much time I’d wasted over the years by underestimating the value of an IDE.
same to me, I was about to retire myself from coding but once stated to use IntelliJ as IDE, then I felt same. Now I can build even complex applications without blowing my mind :)
Java is so verbose, that even when I was more of a text-editor fanboy, I would've used an IDE for Java with no thought. Making so many files, and writing so much boilerplate code by hand would've pushed me to jump off of a cliff or something. Now, I mainly code in PHP. When I was on simpler projects years ago, things like Wordpress, using a text editor was actually ok. I don't like autocomplete, so using an IDE wouldn't've added much. However, nowadays, when I work on projects that are OOP and there's literally tens of thousands of files (of course, from the framework & other 3rd party modules), I would feel just as overwhelmed as I said for Java. Because now, when I follow some logic, I have to open up to 50 (yes, fifty) files. It would be insane to do that in a text editor, unless it would work exactly the same as in an IDE.
A bit of a different point of view from someone who prefers simpler editors (Sublime Text to be more specific) * Being in a role that makes it expected for me to not spend 100% of time in the code, I find fast startup very valuable. I really frequently need to get quick access to the code and check something. Waiting for an IDE to start up would frustrate me a lot. * Working with a lot of projects, I'd need multiple windows, one per project, with all IDEs I've used. With Sublime, I can simply drag my projects into one window. When I press ctrl+p, I can search them all at once, very quickly. * The lines between IDEs and text editors are blurred these days. "I need IDE's refactoring fetaure because I mould my code" is really not a good argument. Whatever feature you need from an IDE, there's probably a plugin in your text editor. * There's a cognitive overload when you first open an IDE with default layout and it throws all the features it has in your face. With text editors, you can start with the essentials and add bells and whistles as you discover you need them. Cannot be arsed to install a plugin? You probably don't really need the feature then. * Newbies who are told they need to use an IDE to be real programmers end up skipping or glossing over the essentials. They don't understand how git works or how their project depends on the file system. The git problem is especially severe as they have no awareness of a difference between real git commands and the buttons in their IDE. Some examples are "I used git shelve" and ours/theirs vs mine/theirs. Similarly, IDEs use git command in an opinionated way. Have you checked how IntelliJ uses git commands? Do you understand it? Are you ok with it? * Text editors (barring exotics like vim), use common shortcuts. ctrl+p works in text editors, in VS Code which is kinda halfway between the two, and in browser devtools which are neither. IDE vendors benefit from coming up with their own sets of keyboard shortcuts to lock you into their system (IntelliJ does this a lot) * The project setup magic drives me insane. Might not be common to all IDEs, but with most of them you can initialize a project and it magically creates a bunch of files. In a strict, stable world like Java that might be beneficial, but in a lot of other languages there many ways to do it, and the way the IDE does it might not be what I need. * Don't want to sound arrogant or anything, but I have powerful hardware and I still do notice the performance difference between text editors and IDEs even after startup. I do type and move around files faster than most, so it might be a subjective feeling. Maybe devs who are used to an IDE never notice the speed up? Why would they? They've never missed the performance in the first place. Background: Even though Sublime Text is my current choice, I've done a lot of soul searching over almost 20 years of software development (not always engineering :)). The ones I can remember are Eclipse, NetBeans, UltraEdit, Coda, VS Code, Atom, Webstorm.
@@netcrns Can you give me a single advantage... Name one thing vim can do that even an editor such as sublime cannot do a million times more practically with multicursor editing?
@@guidosalescalvano9862 I really don't think any of that matters. Typing speed is hardly a problem. For me, the biggest benefit is simple: it's funner. It turns code into a mini game. I think this has a benefit: even boring projects are fun, so I don't feel the need to find excitement in other ways (such as making questionable technical choices). Another is that vim is not just vim. ST is vim. Intellij is vim. VSCode is vim. All the editors you can name are vim, because pretty much every code editor or IDE has a vim plugin. Your keybindings are evergreen.
I think VS Code is a great “meet in the middle” option for these two. Technically it’s a text editor, but it does let you get some of the useful speed enhancements that an IDE offers.
I'm using emacs, and it's by far the best tool that I've ever used yet. I completely LOVE vim more than anything else (even emacs), but just the concept of having a lisp runtime optimized for text manipulation is just so powerful. I can make emacs do exactly what I want it to do. With evil-mode, I can have vim-like keybindings anywhere I want, not just while editing code. It's a trully beautiful experience.
Cult thing around using editors like vim was the most interesting part for me. I totally agree that this is some sort of status symbol for some people but I like things to get done and use IDEs far more often.
I used to be a fan of text editors. Particularly when the only IDE I had experience with was Eclipse (which broke whenever I squinted hard). Nowadays, I have my favourite IDE / text editor for each language that I write in
My experience is that it is the text editor users who are locked in by years of avoiding any other tool. Those worshiping at the alter of Emacs have usually so heavily customized the editor that they become a basket case if they cannot use their precious Emacs. It may be a particularly good hammer, but that still doesn't mean everything is a nail.
I don't agree with your conclusions, but I do appreciate well thought out and clearly communicated argument. Some things to think about here. #vimIsFaster. 😁
I don't like when an IDE or editor is forced on you. When I work with others, I don't care what tools they use, as long as they don't make the project depend on an IDE for configuration or building. If they want to generate a standard makefile from a configuration that is ok too, if there were changes needed I could ask them to implement them. My second strong opinion is that the IDE or editor may never lag when displaying text. I look at the monitor when I type and if there is a delay it is very disruptive, even a very slight delay like a few frame buffers on a TV that does "image enhancement". I also will not tell people what they should use, if they want to know my preferences that's fine but they need to find their own path. I must say, I was quite surprised that so many c++ programmers that you asked preferred text editors! I always thought programmers of object oriented languages preferred using an IDE, like Java programmers do. With Python I was not surprised it was a mix, python is widely adopted by people both doing low level programming close to hardware or high level programming in a cloud far far away. Those are my two cents, I enjoyed hearing your take on this, thank you!
(neo)vim already has every mentioned advantage of an IDE if you add plugins. Though for debugging I prefer vscode, because it is just easier to do with a mouse for hovering things and it just works for most tasks. Also the performance argument still matters. If your Android Studio/IDEA hoggs 3-4G of ram + you have a browser with dozens of tabs + 1-3 electron apps for messangers + you need a docker or maybe 2-3 virtual machines, etc. 32G of ram is not a default, so having your text editor consume 2-4 times less ram can be a big selling point for a person with 16G of ram on work laptop.
@@jon1867 I actually switched in the opposite direction (vscode -> nvim). vscode just became to laggy for me at some point as a main tool for writing code.
@@mesopotamianmessenger5830 That is the point - I did nothing new that I was not doing initially. And I also heard the same complaint from other people. My hypothesis is that it grew more complex with time by adding features at cost of performance, but I was not utilizing anything new, so for me, it became slower in exchange for nothing.
that´s why i bought a machine with decent specs, i need to run dockers with WSL on windows and i have always multiple tabs open ( i use firefox to save some ram, chrome is just a mess) and never had problems with my machine, its a I7 7º generation with 16gb of ram and it performs well, even when i need the android studio
A text editor works with files, while an IDE works with a project. If your're just editing a single file, like a script, a short presentation, or a CZcams comment; then it makes sense to use a text editor. But if it is a larger thing, then an IDE makes sense.
Today even VIM is not a "basic editor" anymore. Benefit of VIM/NeoVIM with plug-ins is that you can change it to match your current needs. Linting and LSP are available everywhere and almost all IDEs do work with them. Templates, etc. - you can do it with VIM/NeoVIM. Also, your VIM/NeoVIM setup will evolve and change together with your skills and needs, while no IDE will do it. IDE will be more and more "beefy", while you can always remove/disable things you don't need in VIM/NeoVIM. Customization is a power.
I used vim exclusively for almost a decade, the modal editing is what kept me for so long. I wouldn't mind expanding my configuration for additional languages as I went on... However, this maintenance and tinkering became too time consuming when I was sold out as contractor for many clients, all with different languages, versioncontrol, some monolith projects etc. These clients would often have base setups for common IDEs so that was way more productive to start. Now I just install a vim emulator in those IDEs. The cult of vi is everywhere. I could then strip down my vimrc to the basics to be close to defaults so that when I remote to machines that text editor is the same as I am used to.
Through LSP you can add a lot of IDE-ish features to Vim, but yes it is helpful also in other editors. Emacs has also LSP support and of course many modern editors and IDEs.
I find the tools analogy to be especially apt. I can use my electric drill or circular saw to accomplish the same jobs as (and often larger jobs than) a screwdriver or a hand saw, respectively. However, if I’m just looking to tighten a few screws or cut one small piece of wood, I don’t want to deal with power tools when my hand tools are more straightforward to deal with.
It's been a long time since I switched IDEs. I do remember though, that I had been a VisualAge and then Eclipse user for years, and that changing over to IntelliJ was painful at first. It's more than just knowing commands, it's more embedding yourself in its preferred way of doing things. Just like programming paradigms, environments have their own. Your point on firing up an editor quickly is very well taken. I think Jetbrains has recognized this and is bringing out some new hybrid product that is 'just' a text editor until you connect it to an IDE back end. I guess that's taking advantage of their really cool 'code with me' stuff. I remember what a game changer it felt like to use Turbo C. I've been an IDE fan ever since.
Wow this video is outdated. Have you ever heard of language server protocol? It's a neat little thing that VSCode introduced, and that supercharges tools usually referred to as text editors to have most of the neat stuff you called out as pros of IDEs. Code completion, code analysation, advanced refactoring, all included, as long as the language provides the proper language server functionality. If some language support is subpar these days I see the fault at the Languages maintainer. Yup. I'm not alone in that judgement, theres a reason every new language does have first party LSP support. The only thing where I have to agree with your judgment is in debugging. While it CAN get to the same levels as IDEs, it usually isn't, and kftne takes a lot of setup if possible at all. For some languages you can't possibly reach the same level. Anyways. My tool of choice is VSCode. Whatever you want to call it, it gets me most of what I want while not getting in my way like some IDEs tend to do - I don't need my IDE to rewrite my imports WITHOUT ASKING when I move a file, Jetbrains. VSCode with Typescript does it right, it offers is but asks for permission. And if I want my IDE to check my spelling I'll set it up, that should not be the default, I don't care to be pestered about a perfectly fine variable name that you false identified as something else.
@@SimGunther guy with a lot of controversial opinions that has a controversial opinion. What a stunner. I don't doubt his intelligence. He's a smart guy. But he regularly utterly fails to see the reason for other perspectives, and doesn't even try to understand them. I also have a lot of controversial opinions. And I actually agree with him on many of his opinions. But other than him I don't have a fan following that take my word for gospel, and while I'm certainly a bit sad about rhst honestly I'm also very glad about that, that's not good for you having long term good decision making.
@@9SMTM6 I don't doubt his intelligence either; it's his close minded nature that simultaneously makes me curious about older tech and not trust him as much because he wouldn't trust people outside his thinktank. Yes, LSPs are meh, but one of the worst things ever? Nah, that goes to existing web technologies and they're both popular enough that changing them is gonna hurt the userbase more than it would help even if it's actually the better solution for his problems.
As a beginner cobol developer, I truly understands what old ways are and how important they were 20 years ago. Tools that appear as archaic to us right now are still used in my field, although modern IDE exists and are the way to go. I can't even imagine having to debug/improve one of the 20.000 line program in a 32*70 character terminal screen.
I strongly prefer text editors. The reasons are customization, control, clarity and easier mix'n'matching of preferred tools. I usually use Vim, occasionally Sublime Text.
I think that's up to personal preference. I love the experience of writing code in emacs and vim, and I am much more productive in them than any other IDEs (even tough I really like the JetBrains ones) The reason is just that vim/emacs are very extensible text editors, and you can do pretty much anything that you would do in an IDE (and much more) - code completion, refactoring, running tests, git integration, etc etc - and the big difference in my opinion is that you can do all of that without ever touching your mouse, which is a big deal when your job is to write code almost all day long. The extensiblity aspect is true specially for emacs, which to be fair, is much more than a text editor. Hell, you can even play tetris inside emacs! But I do also understand that IDEs in general have a much more beginner friendly experience, which is a big factor of why they are so popular
IDE's are like bowling with the gutters up. If your aim sucks, it will not hurt your results, but it is also considered a handicap, since it prevents you from learning correctly for yourself. That is the danger of IDE's, getting lots of useful information, but not being certain as to the details of what is best to use, when, where and why. As someone else mentioned in the comments, the constant suggestions are a distraction that can deflate progress and momentum working through larger problems. One issue I take with IDE's is that if I am not familiar enough with a suggestion to think of it myself, should I really be using it or even taking the time to consider it? Likely not. Using a text editor, you learn very quickly how well you know a language and this can be advantageous to understanding your knowledge gaps and then pursuing them to shore them up.
My experiences are 180 flipped from Dave’s Vim has been astronomical better productivity wise over every IDE I’ve used. All the pros about IDEs described in the video I have in my Vim environments. True I had to build that myself but that is the kind of personality I am. Don’t let others’ biases influence your choice.
But.. if you had to build it yourself, doesn't that precisely mean whyt Dave said? That you had to make a greater investment to now do what a "regular" IDE does, thereby (taking all the required time into account) creating better code slower? There *was* a time cost to completely customize the editor which you would not have had to pay if you had used an IDE from the get-go. Don't get me wrong, I am not trying to say that you are wrong, but more that you are basically supporting the argument Dave makes instead of opposing it.
@@ponypapa6785 Well, Dave said in the video that he doesn't see the appeal of vim and that, to his knowledge, even experts in vim are not faster/more productive than folks using an IDE. So Devin chimed in to say that he IS more productive in vim than in an IDE.
For Vim, many IDEs have Vim modes either natively or through plugins. I usually use Vim mode in IDEs but sometimes use Vim itself for tiny changes where startup time is the issue as you mentioned. Personally, I’m faster in Vim emulation for editing than not using Vim mode. That speed difference doesn’t matter in the overall task of writing software, but sometimes we do things because it makes us feel better rather than it being actually measurably better. Vim taught me the value of taking the time to learn your tools, not moving hands away from home row, RISC like command designs (vim) versus CISC like designs (EMACS), etc… Since I have decades of Vim muscle memory, it’s the natural form of programming for me and makes me feel good. Given how much time we spend writing code, I think developers need to find those little productivity neutral things that make them happier.
I refactor my code too much while writing to use anything other than an IDE while coding a whole feature. If it is a small change though, I will do it in a text editor.
Largely this will be a matter of what the programmer is comfortable with and what languages are supported. Having used vim, vi, emacs, borland builder, VS, jetbrains etc. programming in intel x86 assembler, C, C++, C# and (wince) VB. I find the only time an IDE 'gets in the way' is when the IDE runs slow, or doesn't support a language you wish to use, or has issues compiling a particular language efficiently. For example VS pushes towards using VSC++ instead of pure C++, I find VSC++ typically ends up 4x more top heavy than say embercadero's compiled C++ solution doing the same thing. Even using another C++ compiler and a non-visual project, VS ends up taking longer and having a more inefficient binary. BUT, unless you are working at lower levels (and even then) an IDE allows for more efficient programming experience, which then you can run through the other compilers for the final binary.
I'm disappointed with this video since the main things you praise about IDEs (completion, navigation, compilation, and debugging) are also possible in text editors nowdays. The quote at 4:23 summarizes things perfectly: you can get everything an IDE provides if you spend enough time configuring it. I think customization is a plus, the time up front is a negative, and the ability to edit multiple languages with the same tool (almost unified experience) is a big plus. 5 years prior I'd say IDE > Text Editor, but today it's the opposite
What I like about your videos is that you are usually reasonable, and touch things that people discuss about with passion, not considering others points views.
One important point I feel is missed here is the ability to run in the terminal. I'm a sysadmin by trade and a programmer as a hobby, and I have to do a lot of editing while ssh'd in to a remote machine, so I need something that runs in the terminal. Granted I hear you can do that with vscode now, though I haven't tried it. Additionally, some peers of mine will use something like sshfs to mount the remote filesystem in their home directory, then open the files in their GUI editor. I suppose I continue using nvim because in the end, it's the same editor I've been using for over two decades now, old habits as they say. I encourage most beginners to use vscode. I think it's good we have options, and I don't think anyone should be shamed for their choice of text editor, IDE, or even emacs.
Sure, I think that is a reasonable justification. Part of my thing is to eliminate the need to hand-administer servers, but it is still sometimes useful to be able to deal with files in a terminal. So no argument from me there, though I am probably not really doing much programming at this point, maybe tweaking a script, but that barely counts.
I use neovim. It's buffers is killer feature for me. It allows to have only one window opened, so there is code and nothing more. For other things there are command mode, cli tools and plugins.
@@guidosalescalvano9862 buffers can load files in memory. File are loaded without using any window, split or tab. They don't pollute your view and can be very quickly re-displayed to the position you left it. Buffer is one of the features that makes vim so fluent.
Wow! I "discovered" neovim from reading this message and considering it (as a vim user). I simply adore that I can open a terminal in a split window out of the box, and am looking forward to exploring more of its features. Thank you!
For me, I mostly consider the immediate feedback about typos and such an annoying distraction. I have different modes of working on my code. When I'm working on the overal structure of the code (mode 1), or on the details of some complex bit of logic (mode 2) I do not want messages about trivial typos and syntax errors to interrupt my thought processes. I prefer fixing all of those in one run at the end by just running the compiler and fixing the errors it pops up one by one (mode 3).
We live in a world of never ending distractions. I completely agree, sometimes less is more. Also suggestions are not intelligent, just best guesses and you still need to know if a suggestion is even worth using or not. I find sticking to your realm of knowledge forces you to use what you know for certain. If you have needs beyond that, then you will be prompted to go fill any gaps.
It's 35 years since I wrote a thesis on programmer productivity. Workbench (now called IDE) concepts were just getting started, with clear productivity benifits. Then Java-related JIT compilers gave the ability to syntax check on the fly, and IDEs have never looked back. So what do I use? Emacs! Vi and Vim ... awful. My first code editor? 029 card punch and a hand punch.
This is a bit of shallow approach -- when talking as a person who knows the world of a certain language, an editor or an IDE is a preference each with advantages and disadvantages, yes.... but when talking of a person who is just starting out, and chose an IDE, more often than not they learn the IDE and not the language... I've consulted on projects where developers try to fix errors in their code by updating the IDE rather than investigate the actual error, on one hand years later and I'm still laughing, on the other hand having memory leaks in production code because "we did not update the IDE in time" is a very serious issue =)
I used to be one of those 'text editor only' coders. As you learn more, you learn that there's a place for each kind of tool. I still use vim for smal and quick little things, then there are all kinds of other IDEs for different kinds of projects (I.E. Visual studio, Visual studio code, eclipse and even the arduino IDE).
The biggest issue I see in this topic is "computer science" courses that start students in an IDE on day one and begin coding without any real understanding, just rote memorization of a recipe click A click B click C. The students can be a year in and still referring to the IDE as the language or as the compiler with no clue what the separate tools are that have been integrated. The real kicker is that text editing and manual compilation is most accessible with the hello world single file programs at the beginning and can greatly improve the students' understanding of the process and make a better foundation for later lessons that use an IDE. Once you move into complicated code bases it is very hard to go back and learn what it is actually happening below the abstraction. (I recommend kwrite text editor, great syntax highlighting and color-profile customizing is easy. It can also be switched to use vim commands and shortcuts if desired. )
DO NOT USE TEXT EDITOR FOR CODING. IDE plus CLI is what you NEED. And if you think text editor can do what IDE does, then do not call it text editor. I have used intellij, eclipse, vscode, vim, note++ ...etc. And I think intellj is outstanding IDE if you work on a complex apps. If you are a learner or work on a small app, you may like vscode as well. Intellj has some learning curves and yes i did watch hours of tutorials when I start using intellj. But now I can say that it saved me maybe 100s of hours. Refactoring, adding todo's in codes, abilty of custumizing ... and available countless plugins for your spesific apps. Yes I am a big fun of intellij :) Only donwside is that it uses too much resources so you should have a powerful machine. I was working on 4 projects at the same time and each was oppened on different intellj windows and running on different ports. My pc with 16GB ram was not enough and shut down intellij a few times right in the middle sayin no enough memory... so i upgraded to 32GB, now we are good :)
As a C++ programmer I cannot confirm the sentence "an IDE is as fast as a text editor" lots of pauses when something is updated in the background. Then, visual studio is only useful in combination with a plugin like reshaper (slow) and visual assist (not so slow). Comparing to my editor of my choice (sublime text 3), Vs is stone age slow. (But it still has the best debugger frontend I know of)
Its because you are using Visual Studio and not VSCode. Visual Studio is trash. VSCode is highly likely the best software / only really superb software to come out of Microsoft.
I am only at 3:12 but I am unsure where VSCode is on that spectrum as it cheks almost all the cases for an IDE but is called a text editor... I am looking forward to see if I will have an answer in this video ...
Basically at this point, all text editors have IDE features because of LSP's. I'ts like a server that runs on your computer, your text editor sends it your code, and it poops out information about your code. That's why all you need to do is install a plugin, then your entire editor now completely understands a language. LSP's don't actually care about the editor you are connecting to it with, they just contain information about the syntax and structure of the language. VSCode actually started LSP's
@@guidosalescalvano9862 Vscode seem to be a text editor to me. He has not a specific language as a target and still need some (minors) configurations to work with the language of your choice. Compared to an IDE it is more "configurable"
@@fabricehategekimana5350 If the definition of IDE is those 3 things (edit compile and debug) without configuration, than Vscode is a javascript/typescript IDE. Without configuration, vscode has the ability to detect npm scripts and run them. if you're using standard convention, npm start runs the project and so vscode can be instructed to run the project. To debug, its a bit more complicated due to the fact that nobody uses a standard configuration however, vscode does generate a default launch.json for nodejs and iirc it assumes cjs (or mjs, i forget). So if you're using a very basic setup, everything works out of the box. And with a complex setup e.g. react, it works out of the box minus debugging which requires a browser integration... which is something other editors also need. For a backend nodejs, you likely need a custom launch.json because nobody uses cjs anymore but could be updated to use something newer.
The one point I disagree with is starting with an IDE. I think beginners should learn to do it the hard way first. This is to prevent developers from using the IDE as a crutch where they simply learn to press the right button and hope for the best. I feel it’s incredibly important that developers know what the IDE is doing under the covers so that they know what to do when everything goes sideways. Ultimately, a good iDE is a “force multiplier”. It takes your talents / abilities and magnifies their effectiveness. For example, I spent a period of time in Java never having a compile error due to the support that the Netbeans IDE was able to offer under my highly structured coding tasks. Everyone should ultimately be using an IDE. But I’m not so sure that it’s the right place to start. (The corollary of a good IDE magnifying your abilities is that a bad IDE can lower your output. It can damage your projects, screw up source control, invade your build settings, etc. Please join a world of sanity by refusing to use Eclipse. For anything. Ever.)
I totally agree with you. In my school we had to use a basic text editor which did not even had syntax highlighting for the first 3 months. It was hard but it made me learn a lot aboit how to structure your code, how to make it more readable and (now 7 years later) sometimes I still think about that.
A good IDE (Integrated Development Environment) typically comes with way more and more advanced features than any text editor could dream of and, the most important, as the name itself describes it, it's all integrated out of the box and ready to start coding instead of spending hours or even days on setup time. For instance, Visual Studio Code is nice once you have everything set up, but doing it correctly with all necessary extensions and corresponding configuration is a pain in the ass. Not to mention when you find yourself dealing with breaking extension updates, conflicting extensions, etc. OTHO, with Visual Studio, you don't have to worry about any of that, or if so, it's minimal.
The main difficulty of switching between IDEs is that you have to learn new keyboard shortcuts. You can configure your new IDE to use your old shortcuts but sometimes features do differ between IDEs. That was my pain moving from Eclipse to IntelliJ. Refactoring support and debugging in IDEs are essential as much as ability to build and run your project without IDE from command line. I do like editors like vim to hack and experiment quickly without having to rebuild the whole application or container but once the code becomes more than page long I tend to move to IDE. For reading code IDE is also great cause navigation is much faster based on code understanding rather than text search.
In Vim once you learn to use C-P and C-N, you're pretty unlikely to do the typo in the first place. That said, the `Fraction` example is still a pretty good one.
I would give up any of my current and past editor/IDE (VSCode, Geany, Sublime, PSPad) for the singe feature of Multi Edit 4.0 ('90s, DOS): - Ctrl-L adds a page break charcter (comment it out, if the compiler does not like it) - I used to put one before each function - displayed as highlighted infinite series of hyphen (endless line made from '-' -s) - Ctrl-Up/Down jumps to the prev/next one
Why not both? Text editors, specifically shell editors for sure are and still will be needed in case of doing something on live environment, when there is no UI. I got your point that "servers should be automated", but 1) it's not always the case, 2) something needs to automate them and solve problems. Day-to-day programmer could use only IDE, but as a programmer/SRE/DevOps I just don't have such luxury.
One thing I didn’t hear in the video or see mentioned in the first few dozen comments is the learning curve. Becoming an efficient user of almost any tool requires practice and constant use. Over time, your keyboard shortcuts gets ingrained in your mind and becomes second nature. Changing to a completely different environment and becoming as productive again as with your favourite tool set is not that easy. Sure, you get more help with many tasks, but if that help interferes with your time-tested work flow and your keyboard shortcut proficiency, you are suddenly not running, but walking or even crawling. Granted, once you are over the threshold and become more familiar with the new environment, your productivity will go back up, but at least for me this rarely happens until it is time to move on to other things. Maybe I’m an old dog and it is hard to teach me to sit, but when I use my trusty old editor and a Unix command line environment and tool chain, I’m at my best. Parachute me into unfamiliar territory and I land running. Set me up with an unfamiliar IDE and I’m a fish on dry land. 🤷♂️
I've tended to favour the text editor in recent years, but I didn't start out that way. All of my early learning was on IDEs - to the degree that programming itself didn't seem possible without one of these behemoths. Of course, Microsoft is the classically frustrating example: Up until 2012, programming for Windows required a downpayment of what could easily be your monthly food budget. Text editors + compilers + build tools were a revelation! They simplified the equation. Reduced it to lowest terms. And for once, I could actually understand what was going on. No more builds that would fail on deployment, after testing and running perfectly well in the IDE. There was no help I didn't know I was getting. No invisible configuration settings. No sneaky tweaking of the classpath.
Is it really more configurable though? Every major IDE allows you to write plug-ins to do anything you could imagine. Sure, it's a pretty steep learning curve but the flexibility is there.
You may be able to add as much as you want to an ide, but you can't take much away from it, editors start from very little and you build up, you get the added customisation in between.
One thing that the text editor seems most vocal about is different input paradigms, like modal editing or keyboard-centric workflows, which can yield great improvements in speed, reduce context changes that disrupt concentration and (allegedly) can even help to reduce the risk of carpal tunnel syndrome by not having to move from keyboard to mouse every few seconds. The main idea here is that programmers don't write code all that often. Most of the time we edit code that's already there, so at least considering a different input paradigm that's geared towards that seems like a sane thing to do. VIMs "Normal Mode" won't let you type anything, but it'll let you move through code or run commands over said movements. Though arguing against IDEs for being slow and that "vim can do all that if you configure it too" doesn't seem reasonable either. I myself use appropriate IDE's with vim emulation everywhere(mostly VSCode and Jetbrains) and use vim when I have to work via SSH(though remote SSH on VSCode has been great too, sometimes better) or just want to quickly edit a config file.
I have multiple IDEs that I prefer for different programming languages. Visual Studio is my preferred general purpose IDE, whilst Eclipse is preferred for Java, Python and some other specific programming languages. This helps me avoid lock-in with any particular IDE as I use several on the regular. Of course I still have Notepad++ text editor for reading existing code or making tiny fixes when I can't be bothered to wait for the IDE to open.
My argument for why I use a text editor (vim/gvim) is a little different than any argument made in this video. It's that text editors can be small windows where an IDE tends to want to take up your whole screen. I like a windowed environment. I am also in a role where I could be in two to four different codebases in a given day. So, for me the startup cost of an IDE is a real cost.
Next episode: where to put opening curly brackets: at the end of the opening statement or on a separate line. I've never tried the second approach, but I fund it bad
ask Kevlin Henney about that, he hat a compelling argument for this decision =) And I found the second approach ridiculous before, now, after checking the arguments, I understand and see the value of doing it on a separate line. Stll not doing it myself on all projects - bt I do understand why it can be very useful =)
Actually, I often find the IDE features distracting - like dumb autocomplete suggestions or documentation popups. Then I have to A) find out how to disable or reduce those interventions, B) I have to find out how to call up that information when I do need it. Adding features to Emacs or Vim is, in a sense, the other way round: you add (and keep) only what proves helpful in the long run.
Whatever you choose to use, an IDE or a Code Editor or a Text Editor. Remember that the $EDITOR you use doesn't make you a worse or better developer. Theres some toxic people out there who say "Real programmers use IDEs". These people have insecurities and are only saying that to prop themselves up. (Those same people often also say "Scripting/Interpreted is not Real Programming" but can't define scripting properly without using the word programming or its synonyms.)
I will no longer use a text editor for any language that now requires an IDE to visual the type system of the language. That was the end of text editors for me! For example, as soon as auto in C++, or var in C#, etc permeate the code, you require an IDE or language aware editor to see the types of variables and so on. I remember initially being against auto, var etc because the types became hidden to the developer but now fully accept having lost that battle when lambdas, anonymous functions and so on were also introduced!
As you already said, you don't always get the choice. for scripting I use a text editor (bash, batch, powershell). For java, sql, pl/sql I prefer an IDE for the stated reasons. what I don't use much are the integrated wizards in an IDE. They start to make more problems with time, especially when they don't maintained well and the next generation wizards do things differently.
I think my design turns out worse when I use an IDE. For this reason, I use a text editor when I "own" the code of a project. But I use an IDE with unfamiliar languages, projects, or whenever I need to refactor. Currently I use emacs or intellij. With vim bindings for both. I'm probably faster with an IDE, but, I also tend to be the primary senior person on any given project. At that point it isn't just about my own personal productivity.
I respectfully disagree. I program a lot of C and have used Vim a lot (a text editor). While the IDEs are easier to start with, they often hide the basis of how your project is build and make isn't that hard to learn. The reason to use Vim or emacs for example is that it is your own tool, that you expand to what your needs are. Adding tools such as Cscope makes it extremely effective at diving around in bigger projects. Building your Vim or Emacs is something you do over time towards the needs you have. Calling gdb is pretty easy for most people. There are good IDEs out there, but it is hard to beat the customizability of Emacs and Vim. There is also the issue of not always having access to a gui interface, when running on industrial machines. In the end using Vim or Emacs allows you the freedom of choice and access to great plugins (or write your own). They become somewhat like IDEs themselves, and they are really independent on what your visual desktop environment is. If you are running MacOS or Linux using command line tools is more natural to you (as those are pretty good), while on Windows it is more IDEs that are king. Many IDEs often come with the tools you need for example for microcontroller programming. Eclipse is still used a lot, so it can be a good idea to learn a little about it, else VSCode is a good refreshing change to IDEs, as it has most features you need, a good community around it and is not a resource hog unlike Visual Studio.
Even though I am a native English speaker, an extension (LTeX) that I use for web content editing corrects my grammar, and spelling which I find invaluable in the Code IDE. I learned things from it.
Hi, I use text editors mainly to jot code ideas down without constant pop up distractions. The constant pop ups are really good at derailing my thought process. Once I get it to a point where I want to test it, then I copy it into an IDE for compile and debug. It’s also an excellent way to test my syntax recall. My mistakes are not automatically corrected, so I can see which areas I need to work on. I find first typing into a blank editor an excellent learning tool. Of course this effort makes sense only for long-term use scenarios. I also use text editors for a quick coding on my iPad Pro. Can’t run a large IDE from an iPad and don’t want to anyway. Sometime I run the code by copying it into a Google Colab jupyter notebook, and save a working version back to my Github repo.
I mainly use VS Code for complex projects and neovim (with spacevim installed) for smaller projects in easier languages. Having "mastered" vim i can jump around the code freely and faster than with the mouse. Of course most people will have problems with vim especially those that use vanilla vim out of the box and have problems learning vim. It's only natural that we prefer what is easier for ourselves and those preferences are different everywhere and usually change over the time. I cannot use Vim out of the box because the default configuration of Vim only has Syntax-highlighting and no autocomplete. Pairing it with a configuration pack like Spacevim it might come close to VS Code, with the biggest difference that Vim is made for Editing and VS Code has strengths with writing. And i know that my preferences will be a lot different for some. I learned programming on my own as a child around 10 years ago. At the beginning i used Eclipse and Visual Studio Community, until i recently found out for myself out that i really like compiling and running code directly from the terminal and that makes vim and vs code very attractive choice now. In my opinion everyone should use what they like most. (btw i also learned that the school system is very bad for people that already learned Computer Science on their own, because it is very hard not to write advanced code when being used to it for years)
I prefer IDEs for writing code in projects with more than a few small files for the navigation and refactoring, but I prefer executing build scripts from the terminal.
What ever editor/IDE I use, I want to have emacs key bindings. In macOS Firefox, macOS standard UI components, slack, mattermost , etc has basic emacs key bindings (Microsoft software doesn't have ... so one other reason those avoid those). So If IDE doesn't have (decent) emacs key bindings support, I don't use it.
I agree with the IDE over text editor concept. Like, why wouldn't you? I did chuckle when you talked about the emacs programmers alongside vim. I used to use XEmacs when all the other kids were using vi. They all thought I was an appliance operator. Btw, I'd consider XEmacs to be a rudimentary IDE. You can (ok could) compile, and launch gdb from within it.
I use IDE because I'm lazy and as I'm getting older (and learning more stuff), it's just easier for me to get the work done when it keeps an eye on the mess I call my code. I'm in no way an expert on use of it tho, I just know what I need to know and most of the time keep hidden everything I don't need until I need it (and when I don't I just hide it again). But I use nano when I'm having fun with scripts on a server. For me it's just about which tool helps me get things done faster at the time.
This is a good balanced video on the benefits of both. I prefer to use Vim but as a contractor, I'd say its almost impossible to use one IDE or text editor exclusively. The team, the product, the tech and even the culture, all influence the tools that we ultimately use to do our work. Again, good balanced video. Thanks for sharing.
The major downside of IDEs for me is that I find the help and suggestions it brings up when I am coding are distracting me from thinking about the code, often it is help that I don't need. However I use both IDEs and Vim and am happy with either. Vim is especially useful when I am marking students' code because I don't have problems with project set up or the time taken to load the project.
I'm happy with gedit :) I'm using it since I started real programming on Linux. I even enabled word completion about a year ago. At work I use an IDE, but the only features I really use are auto completion and smart renaming. But often the IDE does just it's own thing and not what I want. For example the auto completion sometimes autocompletes without me explicitly selecting an option.
I use the best from the two words: If I need something quick and dirty, or just fix some bug - text editing. If I need to thoroughly develop some functionality, or fix a complex bug, then IDE.
Thats exactly what I think: versatile Editors with plugins can grow to IDEs, which are more specialized programming environments than enriched text editors. For people who don't want & need to program professionally a children/school IDE might be ok. But for beginner with attempt of future professionals their learning curve & understanding should be improved they shoud know what a IDE does under the hood in the background when pressing a "Compile & RUN" button on a big & complex team software project. Starting doing everything once by hand on commandline tool chain & texteditor and after deep understanding what does what and what means what (error messages vs. warnings) then switching to nicer abstracting IDE is the good way, if the IDE fits for the project.
I kind of get why c++ developers would stick with their preferred text editors. I've been working on a c++ project for a few months now and I'm almost certain that c++ will never get an IDE that's as good as the ones for more recent languages, and the reason for that is c++'s unrestrained complexity. Whereas Java and C#, or hell, even Python and JavaScript IDEs provide me with suggestions that are 9/10 times right on the money, my c++ IDE repeatedly gives me wrong or unhelpful suggestions. Still, code navigation working half of the time is better than no code navigation... otherwise I'd have changed to a text editor out of frustration.
In my opinion, it is somehow absurd that we are still wrangling text in the 2020s to write software. When we reason about software, we don't _think_ about language keywords and syntax like curly braces, imports/using statements, etc. Yet it is still the very matter that software is made up of. When you talk about IDEs, in this day and age they are starting to resemble tools that function on that same higher level as we programmers are thinking about code. They allow us to manipulate the concepts of functions, parameters, classes, perhaps entire projects. Not just the syntax. Looking at it that way, text editors might resemble something like the stone age for software development, while IDEs are more like bronze age level tools. Imagine the year 2080, can you imagine you are using text at all to build software?
I always compare it to a trade. Carpenter bricklayer ect. If they would have the same mindset about tools it would be alot more expensive to build houses. That is how I veiw IDE's vs text editors. Why make a tool that you have to build and maintain for alot higher cost than it is to simple buy a license. A programmer in Denmark cost 100 euros per hour so if you use a week on making your text editor working it would cost 3700 euro to build and we havent even talked about maintance yet 😀 Pycharm professional cost 111 euro for individual and 300 euro for buiness so it really is about were you will put your(or the companies) time and money.
My personal take is that if you are learning, go with text editor. When you are working go with IDE. When you learn, you should take your time, you should learn sintax and make mistakes and learn from them. When you work, you should not be slowed by your tools.
I think that locking is why I'm still using Eclipse. I'm proficient in it and I would need to invest significant amount of time to move to another editor. But on other hand using VSCode is so refreshing when I recently work on infrastructure as a code project in terraform. Still I find using Eclipse shortcuts in VSCode and to my surprise I don't get expected result. But I think I'm close to reaching the point of switching
One more thing is that when you get your mind is used to VI keyboard commands it is very very hard to turn that off, almost impossible. Most IDEs do have a VI mode though which helps.
The power tools don't have to be the IDE. You could also add some plugins to most editors. And for more complex stuff, you could write shell scripts, which might be even more flexible, if you have special use cases. And even if something already exists in some IDE, writing a small shell script can be more efficient if you have some experience.
At 1:45 you pretty much explained why a text editor like vim is the superior choice. It is widely used and supported pretty much everywhere with vi. The need to be flexible and not have to relearn a tool puts you into an advantage to be able to shine in any environment. I have stuck with things like vim, bash, git, python and c++. And these skills can be pretty much what you need either in a Linux environment or Windows environment with git bash
The only reason that particular reason would make them superior is if you're joining a really shitty company, and in that case, you probably shouldn't bother joining them
I personally prefer ms paint as my primary IDE and taking photos of the code with my phone for source control
I remember seeing a SW project that could rip songs from vinyl albums. It worked by (very carefully) taking a photo-copy of the album, using image processing to read the wiggles that represent the sound on the tracks, then converting the wiggles into sound. The output was rubbish, but you could tell that it was meant to be music, and sometimes what the song was. Your approach reminded me of that - information is rather like energy, impossible to destroy, and can be translated into lots of different forms 😁😎
I absolutely believe You ! ))
This cat! 😂
😂
@@ContinuousDelivery I mean many low cost computers of the 70s and 80s used audio media for data storage. Literally the analog headphone and microphone jacks on a tape recorder.(and in a few cases read only vinyl records) the computer picked up the data similar to old analog-telephone modems.
Neovim user here. I've been a intellij fan for years before I (definitively?) switched to vim. I don't think editors are less featured than IDEs. (I can refactor and lint in vim thanks to language servers). I think the difference is that you have to build your editor if you want it to be like IDE. It comes with a lot of pain, but it's so great to have a tool you've spent years to sharp for your needs !
I simply can't see the beauty in spending years to sharp something
@@chrisrpg3913 it is less that it takes you years to get to a working solution and more that as you grow as a developer you can customize the workflow how you see fit without the tool getting in the way.
And so after spending years honing your craft you have built up a set of tools to tackle tasks you commonly run into that may be unique to what you do.
@@chrisrpg3913 as we say in France "a good crafter knows his tools". The tool you build is the tool you really know how to use. I said it take years to sharp it. In reality you never finish to customize it.
You can modify your IDE as well
Yes, it mostly comes down to: which has *better* plugins/ui for the task at hand. I can make vim to be an IDE (through plugins) and I can make an IDE use vim editing commands. I use both.
There are two issues involved i.e., Value and Mindset
1. Value
Refactoring changed the debate for IDE vs Text. Refactoring made it worth to use IDEs
Even before that , Microsoft IDEs have great intellisense and did the plumbing work for developers.
2. Mindset
I used to think that the great developers don't use any crutches.
"Pragmatic Programmer " changed my mindset. Difference between modern and prehistoric men are tools.
There is no shame in using tools to give better deliveries.
With Regards,
Vikas
Emacs and lsp-protocol made refactoring much easier.
And the magit-mode in Emacs is a single reason to use Emacs.
And do you manage servers, then tramp-mode is a must, edit files (and local files as root) is so easy.
This subject gets more complicated every day. Text editors can now rival IDEs with things like the Language Server Protocol. The line between editor and IDE is blurry.
LSP doesn't come out of the box with vim, and even if some plugins automate the setup a lot, you still need to turn your vim into an IDE, and configure all the key bindings you want, set your preferences, fiddle with the python version used in the project so vim recognize it, etc, i do that and i'm happy it works, but it's certainly a bit more work to get there than with an IDE. And i've yet to find nearly as powerful refactoring tools in this situation as with say, PyCharm, sure, you can rename a thing (variable/class/method, maybe even module?), but that's about it regarding refactoring, and i've never been able to make rope/ropevim work for the more advanced things it promises for python.
Then your text editor becomes an IDE. You can't call it a text editor any more when it does a lot more than a text editor. Enough said.
@Marcelo Fernandes you are objectively wrong. Unless you think I am nobody. A text editor turbocharged with plugins is a lot more than a simple text editor. It becomes by all means a lean IDE, but an IDE at the end, because it "INTEGRATES" many features into an editor to help "DEVELOPERS" hence the acronym IDE.
Text interpreter*
@@anticipayo IDE means integrated development enviroment, both emacs and vim has the capacity to become one with some configuration
My favorite I really like about neovim is how it subverts the distinction between IDE/text editor. Out of the box it's "just" a text editor. When I want an ide feature like error notifications for new language, I install a plugin (or two or three) + a language server (as neovim supports the protocol). So the only downside is time investing in configuration and dependency management. Personally, I enjoy that activity so the trade-off is clear.
Sounds a bit like using Gentoo. I’ve used and enjoyed it for a while because I wanted to learn more about inners of Linux, but I’ve moved on and wouldn’t consider going back unless there’s a *very* good and compelling reason.
@@MrQlife No, that's more like Arch. You have basic stuff and all you have to do is install what you want and configure it.
Gentoo is more like suckless, you get nearly nothing and have to compile it yourself to get what you want.
I would say that when using a text editor, you're more likely to rely on CLI tools and this will certainly help you set up automation in CI/CD environments. Your IDE is usually using these CLI tools in the background as well, but might not expose all of its features out of the box. I do prefer an IDE but I also strongly recommend stepping out of the comfort of the GUI and familiarizing yourself with terminal tools. When I'm in an artisanal mood I do bust out vim to write my commit messages 😉
YES! There's no difference between clickin on external terminal window (or press Alt-tab) and launch a single-letter script/alias for compiling vs pressing Ctrl-Alt-X, K in the IDE for the same function. Align windows (editor, terminal et.) vs align IDE area sizes. Also windows may overlap, and active window may shade some of non-active ones for soms more extra space. Even I can open 2-3-x terminals, not only one.
Personally, I think that a developer that calls themselves an expert w/ X language, should know how to run X language raw in the terminal without an IDE. It generally leads to better project setup and if something breaks for some reason, they'll be more confident in fixing it. Swapping to and from new/old build tools and other improvements are also very easy to do.
Now for non experts, mostly juniors, you can make an argument for not knowing the underlying apis and an argument for knowing them.
That's what Microsoft has been doing with its Visual Studio (not VSCode) products since 1998. Surely RAD tools make life easier but tend to alienate developers from customizing the pipelines.
I certainly agree that as a dev I think that you need some facility with the command line.
@@ContinuousDelivery agreed its good to have some knowledge about working with CL. I think that many people don't need to go beyond a basic understanding of what is actually happening in the background in the same way software engineers aren't expected to understand more than basics of the way chips are manufactured.
We did long interviews with scientists and research software engineers on how they work, why they work that way and which tools they use and miss. They use Vi/Vim and Emacs for climate models. When working with Python some of them used IDEs (PyCharm) or Xcode. The main argument for Vi/Vim and Emacs was that they can edit code on HPC machines without the need to install an IDE there and export the display to their local workstation. They tried this. Modern IDEs are too slow to use via X11. However, Emacs and Vi can be used in a text terminal which always works. Most of the interviewees used Vim. While only a few used Emacs. In Emacs they used syntax highlighting and function lookups etc. as that "Editor" brings many IDE features with it.
We will have a paper out on their domain and one on their processes (hopefully) this year.
This. If your code is stored, compiled and executed on remote machines you connect to via SSH, IDEs suddenly become somewhat of a pain to use.
One of the features of vscode that got me to switch to using it was that it can work with a client server model. However, The biggest advantage to me of VI is I can edit a text file over ssh on my phone relatively easily.
Though that kind of is an antipattern use-case in my opinion. You should track all code, experiment configurations and experiment results in version control and can then just execute the code using an automated runner, then read the report, change the code on your machine, push the new code or configuration and let the pipeline or runner do it's thing again.
This way you (ideally) never have to ssh into any remote machines after setting them up and e.g. using clean docker builds, avoid errors introduced by using unclean environments. Sure sometimes it can save you a lot of time to ssh into a machine, but it should be a "I don't know how else to do this quickly" thing and not a standard way of work.
@@THEMithrandir09 You aren't an academic...
@@edwardallenthree I strive to be one though, almost done with my ML Masters, and I currently work on making these workflows and their benefits more accessible for pure academics with less software engineering experience.
I started with Java when it was in beta, and the entire API chart fit in a magazine centerfold. Who needs an IDE for that? 💁♀️ I was awfully, painfully, stupidly slow to recognize that what made sense in 1998 made no sense a decade on. I tried Intelli-J (skeptically) and was horrified to realize how much time I’d wasted over the years by underestimating the value of an IDE.
same to me, I was about to retire myself from coding but once stated to use IntelliJ as IDE, then I felt same. Now I can build even complex applications without blowing my mind :)
Java is so verbose, that even when I was more of a text-editor fanboy, I would've used an IDE for Java with no thought. Making so many files, and writing so much boilerplate code by hand would've pushed me to jump off of a cliff or something.
Now, I mainly code in PHP. When I was on simpler projects years ago, things like Wordpress, using a text editor was actually ok. I don't like autocomplete, so using an IDE wouldn't've added much. However, nowadays, when I work on projects that are OOP and there's literally tens of thousands of files (of course, from the framework & other 3rd party modules), I would feel just as overwhelmed as I said for Java. Because now, when I follow some logic, I have to open up to 50 (yes, fifty) files. It would be insane to do that in a text editor, unless it would work exactly the same as in an IDE.
A bit of a different point of view from someone who prefers simpler editors (Sublime Text to be more specific)
* Being in a role that makes it expected for me to not spend 100% of time in the code, I find fast startup very valuable. I really frequently need to get quick access to the code and check something. Waiting for an IDE to start up would frustrate me a lot.
* Working with a lot of projects, I'd need multiple windows, one per project, with all IDEs I've used. With Sublime, I can simply drag my projects into one window. When I press ctrl+p, I can search them all at once, very quickly.
* The lines between IDEs and text editors are blurred these days. "I need IDE's refactoring fetaure because I mould my code" is really not a good argument. Whatever feature you need from an IDE, there's probably a plugin in your text editor.
* There's a cognitive overload when you first open an IDE with default layout and it throws all the features it has in your face. With text editors, you can start with the essentials and add bells and whistles as you discover you need them. Cannot be arsed to install a plugin? You probably don't really need the feature then.
* Newbies who are told they need to use an IDE to be real programmers end up skipping or glossing over the essentials. They don't understand how git works or how their project depends on the file system. The git problem is especially severe as they have no awareness of a difference between real git commands and the buttons in their IDE. Some examples are "I used git shelve" and ours/theirs vs mine/theirs. Similarly, IDEs use git command in an opinionated way. Have you checked how IntelliJ uses git commands? Do you understand it? Are you ok with it?
* Text editors (barring exotics like vim), use common shortcuts. ctrl+p works in text editors, in VS Code which is kinda halfway between the two, and in browser devtools which are neither. IDE vendors benefit from coming up with their own sets of keyboard shortcuts to lock you into their system (IntelliJ does this a lot)
* The project setup magic drives me insane. Might not be common to all IDEs, but with most of them you can initialize a project and it magically creates a bunch of files. In a strict, stable world like Java that might be beneficial, but in a lot of other languages there many ways to do it, and the way the IDE does it might not be what I need.
* Don't want to sound arrogant or anything, but I have powerful hardware and I still do notice the performance difference between text editors and IDEs even after startup. I do type and move around files faster than most, so it might be a subjective feeling. Maybe devs who are used to an IDE never notice the speed up? Why would they? They've never missed the performance in the first place.
Background: Even though Sublime Text is my current choice, I've done a lot of soul searching over almost 20 years of software development (not always engineering :)). The ones I can remember are Eclipse, NetBeans, UltraEdit, Coda, VS Code, Atom, Webstorm.
Vim is a fighting game with strings and special moves
wouldn't want it any other way
@@netcrns Can you give me a single advantage... Name one thing vim can do that even an editor such as sublime cannot do a million times more practically with multicursor editing?
@@guidosalescalvano9862 I really don't think any of that matters. Typing speed is hardly a problem.
For me, the biggest benefit is simple: it's funner. It turns code into a mini game. I think this has a benefit: even boring projects are fun, so I don't feel the need to find excitement in other ways (such as making questionable technical choices).
Another is that vim is not just vim. ST is vim. Intellij is vim. VSCode is vim. All the editors you can name are vim, because pretty much every code editor or IDE has a vim plugin. Your keybindings are evergreen.
I think VS Code is a great “meet in the middle” option for these two. Technically it’s a text editor, but it does let you get some of the useful speed enhancements that an IDE offers.
I'm using emacs, and it's by far the best tool that I've ever used yet. I completely LOVE vim more than anything else (even emacs), but just the concept of having a lisp runtime optimized for text manipulation is just so powerful. I can make emacs do exactly what I want it to do. With evil-mode, I can have vim-like keybindings anywhere I want, not just while editing code. It's a trully beautiful experience.
Cult thing around using editors like vim was the most interesting part for me. I totally agree that this is some sort of status symbol for some people but I like things to get done and use IDEs far more often.
I used to be a fan of text editors. Particularly when the only IDE I had experience with was Eclipse (which broke whenever I squinted hard). Nowadays, I have my favourite IDE / text editor for each language that I write in
Hey, what's your IDE for Typescript ? (if you code in typescript of course ^^)
@@Helvanic surely vs code. Microsoft ide surely will have first class support for a Microsoft programming language
My experience is that it is the text editor users who are locked in by years of avoiding any other tool. Those worshiping at the alter of Emacs have usually so heavily customized the editor that they become a basket case if they cannot use their precious Emacs. It may be a particularly good hammer, but that still doesn't mean everything is a nail.
I don't agree with your conclusions, but I do appreciate well thought out and clearly communicated argument. Some things to think about here.
#vimIsFaster. 😁
I don't like when an IDE or editor is forced on you. When I work with others, I don't care what tools they use, as long as they don't make the project depend on an IDE for configuration or building. If they want to generate a standard makefile from a configuration that is ok too, if there were changes needed I could ask them to implement them. My second strong opinion is that the IDE or editor may never lag when displaying text. I look at the monitor when I type and if there is a delay it is very disruptive, even a very slight delay like a few frame buffers on a TV that does "image enhancement". I also will not tell people what they should use, if they want to know my preferences that's fine but they need to find their own path.
I must say, I was quite surprised that so many c++ programmers that you asked preferred text editors! I always thought programmers of object oriented languages preferred using an IDE, like Java programmers do. With Python I was not surprised it was a mix, python is widely adopted by people both doing low level programming close to hardware or high level programming in a cloud far far away.
Those are my two cents, I enjoyed hearing your take on this, thank you!
(neo)vim already has every mentioned advantage of an IDE if you add plugins. Though for debugging I prefer vscode, because it is just easier to do with a mouse for hovering things and it just works for most tasks. Also the performance argument still matters. If your Android Studio/IDEA hoggs 3-4G of ram + you have a browser with dozens of tabs + 1-3 electron apps for messangers + you need a docker or maybe 2-3 virtual machines, etc. 32G of ram is not a default, so having your text editor consume 2-4 times less ram can be a big selling point for a person with 16G of ram on work laptop.
I switched from nvm to vscode too! I just love ctrl + shift + p (do literally anything)
@@jon1867 I actually switched in the opposite direction (vscode -> nvim). vscode just became to laggy for me at some point as a main tool for writing code.
@@user-ez3ei8cd5o You say it became laggy. This suggests it was acceptable at first. What did you do to it?
@@mesopotamianmessenger5830 That is the point - I did nothing new that I was not doing initially. And I also heard the same complaint from other people. My hypothesis is that it grew more complex with time by adding features at cost of performance, but I was not utilizing anything new, so for me, it became slower in exchange for nothing.
that´s why i bought a machine with decent specs, i need to run dockers with WSL on windows and i have always multiple tabs open ( i use firefox to save some ram, chrome is just a mess) and never had problems with my machine, its a I7 7º generation with 16gb of ram and it performs well, even when i need the android studio
A text editor works with files, while an IDE works with a project.
If your're just editing a single file, like a script, a short presentation, or a CZcams comment; then it makes sense to use a text editor. But if it is a larger thing, then an IDE makes sense.
Today even VIM is not a "basic editor" anymore. Benefit of VIM/NeoVIM with plug-ins is that you can change it to match your current needs. Linting and LSP are available everywhere and almost all IDEs do work with them. Templates, etc. - you can do it with VIM/NeoVIM.
Also, your VIM/NeoVIM setup will evolve and change together with your skills and needs, while no IDE will do it. IDE will be more and more "beefy", while you can always remove/disable things you don't need in VIM/NeoVIM.
Customization is a power.
I used vim exclusively for almost a decade, the modal editing is what kept me for so long. I wouldn't mind expanding my configuration for additional languages as I went on...
However, this maintenance and tinkering became too time consuming when I was sold out as contractor for many clients, all with different languages, versioncontrol, some monolith projects etc. These clients would often have base setups for common IDEs so that was way more productive to start.
Now I just install a vim emulator in those IDEs. The cult of vi is everywhere. I could then strip down my vimrc to the basics to be close to defaults so that when I remote to machines that text editor is the same as I am used to.
Nvim with lsp is all you need
don't forget telescope!
Hex editor is all you need.
Through LSP you can add a lot of IDE-ish features to Vim, but yes it is helpful also in other editors. Emacs has also LSP support and of course many modern editors and IDEs.
I find the tools analogy to be especially apt. I can use my electric drill or circular saw to accomplish the same jobs as (and often larger jobs than) a screwdriver or a hand saw, respectively. However, if I’m just looking to tighten a few screws or cut one small piece of wood, I don’t want to deal with power tools when my hand tools are more straightforward to deal with.
/me back in 2006, wrote enterprise test automation in vim, because _"IDE is only for developers, and you're a tester."_
The answer is, of course, neither an IDE or a text-editor, but Emacs :)
It's been a long time since I switched IDEs. I do remember though, that I had been a VisualAge and then Eclipse user for years, and that changing over to IntelliJ was painful at first. It's more than just knowing commands, it's more embedding yourself in its preferred way of doing things. Just like programming paradigms, environments have their own.
Your point on firing up an editor quickly is very well taken. I think Jetbrains has recognized this and is bringing out some new hybrid product that is 'just' a text editor until you connect it to an IDE back end. I guess that's taking advantage of their really cool 'code with me' stuff.
I remember what a game changer it felt like to use Turbo C. I've been an IDE fan ever since.
Wow this video is outdated.
Have you ever heard of language server protocol? It's a neat little thing that VSCode introduced, and that supercharges tools usually referred to as text editors to have most of the neat stuff you called out as pros of IDEs.
Code completion, code analysation, advanced refactoring, all included, as long as the language provides the proper language server functionality.
If some language support is subpar these days I see the fault at the Languages maintainer. Yup. I'm not alone in that judgement, theres a reason every new language does have first party LSP support.
The only thing where I have to agree with your judgment is in debugging. While it CAN get to the same levels as IDEs, it usually isn't, and kftne takes a lot of setup if possible at all. For some languages you can't possibly reach the same level.
Anyways. My tool of choice is VSCode. Whatever you want to call it, it gets me most of what I want while not getting in my way like some IDEs tend to do - I don't need my IDE to rewrite my imports WITHOUT ASKING when I move a file, Jetbrains. VSCode with Typescript does it right, it offers is but asks for permission. And if I want my IDE to check my spelling I'll set it up, that should not be the default, I don't care to be pestered about a perfectly fine variable name that you false identified as something else.
"LSPs are pretty much the worst thing ever"
- Jonathan Blow
@@SimGunther guy with a lot of controversial opinions that has a controversial opinion. What a stunner.
I don't doubt his intelligence. He's a smart guy. But he regularly utterly fails to see the reason for other perspectives, and doesn't even try to understand them.
I also have a lot of controversial opinions. And I actually agree with him on many of his opinions. But other than him I don't have a fan following that take my word for gospel, and while I'm certainly a bit sad about rhst honestly I'm also very glad about that, that's not good for you having long term good decision making.
@@9SMTM6 I don't doubt his intelligence either; it's his close minded nature that simultaneously makes me curious about older tech and not trust him as much because he wouldn't trust people outside his thinktank.
Yes, LSPs are meh, but one of the worst things ever? Nah, that goes to existing web technologies and they're both popular enough that changing them is gonna hurt the userbase more than it would help even if it's actually the better solution for his problems.
As a beginner cobol developer, I truly understands what old ways are and how important they were 20 years ago. Tools that appear as archaic to us right now are still used in my field, although modern IDE exists and are the way to go. I can't even imagine having to debug/improve one of the 20.000 line program in a 32*70 character terminal screen.
Try that with punched cards! I started coding COBOL using punched cards!
Dave has _the_ best t-shirts! As well as fantastic content
I strongly prefer text editors. The reasons are customization, control, clarity and easier mix'n'matching of preferred tools. I usually use Vim, occasionally Sublime Text.
I think that's up to personal preference. I love the experience of writing code in emacs and vim, and I am much more productive in them than any other IDEs (even tough I really like the JetBrains ones)
The reason is just that vim/emacs are very extensible text editors, and you can do pretty much anything that you would do in an IDE (and much more) - code completion, refactoring, running tests, git integration, etc etc - and the big difference in my opinion is that you can do all of that without ever touching your mouse, which is a big deal when your job is to write code almost all day long.
The extensiblity aspect is true specially for emacs, which to be fair, is much more than a text editor. Hell, you can even play tetris inside emacs!
But I do also understand that IDEs in general have a much more beginner friendly experience, which is a big factor of why they are so popular
IDE's are like bowling with the gutters up. If your aim sucks, it will not hurt your results, but it is also considered a handicap, since it prevents you from learning correctly for yourself.
That is the danger of IDE's, getting lots of useful information, but not being certain as to the details of what is best to use, when, where and why. As someone else mentioned in the comments, the constant suggestions are a distraction that can deflate progress and momentum working through larger problems.
One issue I take with IDE's is that if I am not familiar enough with a suggestion to think of it myself, should I really be using it or even taking the time to consider it? Likely not. Using a text editor, you learn very quickly how well you know a language and this can be advantageous to understanding your knowledge gaps and then pursuing them to shore them up.
I agree with everything you said, that's why I choose VIM as my IDE 😆
Yeah, I really don't understand people who use vim.
Youuuuuu? Heeeeeeeeeeere!!!
My experiences are 180 flipped from Dave’s Vim has been astronomical better productivity wise over every IDE I’ve used. All the pros about IDEs described in the video I have in my Vim environments. True I had to build that myself but that is the kind of personality I am. Don’t let others’ biases influence your choice.
But.. if you had to build it yourself, doesn't that precisely mean whyt Dave said? That you had to make a greater investment to now do what a "regular" IDE does, thereby (taking all the required time into account) creating better code slower? There *was* a time cost to completely customize the editor which you would not have had to pay if you had used an IDE from the get-go.
Don't get me wrong, I am not trying to say that you are wrong, but more that you are basically supporting the argument Dave makes instead of opposing it.
I completely agree with you, i too used to think that IDE's are the greatest think ever invented untill i tried vim
So you were astronomically more productive... does that include all the time you wasted building Vim into an IDE? Yeah, no.
@@ponypapa6785 Well, Dave said in the video that he doesn't see the appeal of vim and that, to his knowledge, even experts in vim are not faster/more productive than folks using an IDE. So Devin chimed in to say that he IS more productive in vim than in an IDE.
For Vim, many IDEs have Vim modes either natively or through plugins. I usually use Vim mode in IDEs but sometimes use Vim itself for tiny changes where startup time is the issue as you mentioned.
Personally, I’m faster in Vim emulation for editing than not using Vim mode. That speed difference doesn’t matter in the overall task of writing software, but sometimes we do things because it makes us feel better rather than it being actually measurably better.
Vim taught me the value of taking the time to learn your tools, not moving hands away from home row, RISC like command designs (vim) versus CISC like designs (EMACS), etc…
Since I have decades of Vim muscle memory, it’s the natural form of programming for me and makes me feel good.
Given how much time we spend writing code, I think developers need to find those little productivity neutral things that make them happier.
I refactor my code too much while writing to use anything other than an IDE while coding a whole feature. If it is a small change though, I will do it in a text editor.
I absolutely adore that pink panther shirt, such an underrepresented character
Largely this will be a matter of what the programmer is comfortable with and what languages are supported.
Having used vim, vi, emacs, borland builder, VS, jetbrains etc. programming in intel x86 assembler, C, C++, C# and (wince) VB. I find the only time an IDE 'gets in the way' is when the IDE runs slow, or doesn't support a language you wish to use, or has issues compiling a particular language efficiently.
For example VS pushes towards using VSC++ instead of pure C++, I find VSC++ typically ends up 4x more top heavy than say embercadero's compiled C++ solution doing the same thing. Even using another C++ compiler and a non-visual project, VS ends up taking longer and having a more inefficient binary.
BUT, unless you are working at lower levels (and even then) an IDE allows for more efficient programming experience, which then you can run through the other compilers for the final binary.
IDE helps to switch to new language more smoothly preventing a lot of mistakes and guiding how to write well formatted and well structured code
I'm disappointed with this video since the main things you praise about IDEs (completion, navigation, compilation, and debugging) are also possible in text editors nowdays. The quote at 4:23 summarizes things perfectly: you can get everything an IDE provides if you spend enough time configuring it.
I think customization is a plus, the time up front is a negative, and the ability to edit multiple languages with the same tool (almost unified experience) is a big plus.
5 years prior I'd say IDE > Text Editor, but today it's the opposite
You can customize an IDE.
What I like about your videos is that you are usually reasonable, and touch things that people discuss about with passion, not considering others points views.
One important point I feel is missed here is the ability to run in the terminal. I'm a sysadmin by trade and a programmer as a hobby, and I have to do a lot of editing while ssh'd in to a remote machine, so I need something that runs in the terminal. Granted I hear you can do that with vscode now, though I haven't tried it. Additionally, some peers of mine will use something like sshfs to mount the remote filesystem in their home directory, then open the files in their GUI editor.
I suppose I continue using nvim because in the end, it's the same editor I've been using for over two decades now, old habits as they say. I encourage most beginners to use vscode. I think it's good we have options, and I don't think anyone should be shamed for their choice of text editor, IDE, or even emacs.
Sure, I think that is a reasonable justification. Part of my thing is to eliminate the need to hand-administer servers, but it is still sometimes useful to be able to deal with files in a terminal. So no argument from me there, though I am probably not really doing much programming at this point, maybe tweaking a script, but that barely counts.
I use neovim. It's buffers is killer feature for me. It allows to have only one window opened, so there is code and nothing more. For other things there are command mode, cli tools and plugins.
Can you explain what problem buffers solve for you and how they solve that problem?
@@guidosalescalvano9862 buffers can load files in memory. File are loaded without using any window, split or tab. They don't pollute your view and can be very quickly re-displayed to the position you left it. Buffer is one of the features that makes vim so fluent.
Wow! I "discovered" neovim from reading this message and considering it (as a vim user). I simply adore that I can open a terminal in a split window out of the box, and am looking forward to exploring more of its features. Thank you!
For me, I mostly consider the immediate feedback about typos and such an annoying distraction. I have different modes of working on my code. When I'm working on the overal structure of the code (mode 1), or on the details of some complex bit of logic (mode 2) I do not want messages about trivial typos and syntax errors to interrupt my thought processes. I prefer fixing all of those in one run at the end by just running the compiler and fixing the errors it pops up one by one (mode 3).
We live in a world of never ending distractions. I completely agree, sometimes less is more.
Also suggestions are not intelligent, just best guesses and you still need to know if a suggestion is even worth using or not. I find sticking to your realm of knowledge forces you to use what you know for certain. If you have needs beyond that, then you will be prompted to go fill any gaps.
It's 35 years since I wrote a thesis on programmer productivity. Workbench (now called IDE) concepts were just getting started, with clear productivity benifits.
Then Java-related JIT compilers gave the ability to syntax check on the fly, and IDEs have never looked back.
So what do I use? Emacs!
Vi and Vim ... awful.
My first code editor? 029 card punch and a hand punch.
This is a bit of shallow approach -- when talking as a person who knows the world of a certain language, an editor or an IDE is a preference each with advantages and disadvantages, yes.... but when talking of a person who is just starting out, and chose an IDE, more often than not they learn the IDE and not the language...
I've consulted on projects where developers try to fix errors in their code by updating the IDE rather than investigate the actual error, on one hand years later and I'm still laughing, on the other hand having memory leaks in production code because "we did not update the IDE in time" is a very serious issue =)
I used to be one of those 'text editor only' coders. As you learn more, you learn that there's a place for each kind of tool. I still use vim for smal and quick little things, then there are all kinds of other IDEs for different kinds of projects (I.E. Visual studio, Visual studio code, eclipse and even the arduino IDE).
The biggest issue I see in this topic is "computer science" courses that start students in an IDE on day one and begin coding without any real understanding, just rote memorization of a recipe click A click B click C. The students can be a year in and still referring to the IDE as the language or as the compiler with no clue what the separate tools are that have been integrated.
The real kicker is that text editing and manual compilation is most accessible with the hello world single file programs at the beginning and can greatly improve the students' understanding of the process and make a better foundation for later lessons that use an IDE. Once you move into complicated code bases it is very hard to go back and learn what it is actually happening below the abstraction.
(I recommend kwrite text editor, great syntax highlighting and color-profile customizing is easy. It can also be switched to use vim commands and shortcuts if desired. )
DO NOT USE TEXT EDITOR FOR CODING. IDE plus CLI is what you NEED. And if you think text editor can do what IDE does, then do not call it text editor. I have used intellij, eclipse, vscode, vim, note++ ...etc. And I think intellj is outstanding IDE if you work on a complex apps. If you are a learner or work on a small app, you may like vscode as well. Intellj has some learning curves and yes i did watch hours of tutorials when I start using intellj. But now I can say that it saved me maybe 100s of hours. Refactoring, adding todo's in codes, abilty of custumizing ... and available countless plugins for your spesific apps. Yes I am a big fun of intellij :) Only donwside is that it uses too much resources so you should have a powerful machine. I was working on 4 projects at the same time and each was oppened on different intellj windows and running on different ports. My pc with 16GB ram was not enough and shut down intellij a few times right in the middle sayin no enough memory... so i upgraded to 32GB, now we are good :)
As a C++ programmer I cannot confirm the sentence "an IDE is as fast as a text editor" lots of pauses when something is updated in the background. Then, visual studio is only useful in combination with a plugin like reshaper (slow) and visual assist (not so slow). Comparing to my editor of my choice (sublime text 3), Vs is stone age slow. (But it still has the best debugger frontend I know of)
Its because you are using Visual Studio and not VSCode. Visual Studio is trash. VSCode is highly likely the best software / only really superb software to come out of Microsoft.
Is it weird that I primarily watch these videos to listen to Dave's voice now?
I am only at 3:12 but I am unsure where VSCode is on that spectrum as it cheks almost all the cases for an IDE but is called a text editor... I am looking forward to see if I will have an answer in this video ...
Basically at this point, all text editors have IDE features because of LSP's. I'ts like a server that runs on your computer, your text editor sends it your code, and it poops out information about your code. That's why all you need to do is install a plugin, then your entire editor now completely understands a language. LSP's don't actually care about the editor you are connecting to it with, they just contain information about the syntax and structure of the language.
VSCode actually started LSP's
VSCode is totally an IDE. And from what I heard of some of the best programmers I know, a great one.
@@guidosalescalvano9862 Vscode seem to be a text editor to me. He has not a specific language as a target and still need some (minors) configurations to work with the language of your choice. Compared to an IDE it is more "configurable"
@@fabricehategekimana5350 If the definition of IDE is those 3 things (edit compile and debug) without configuration, than Vscode is a javascript/typescript IDE.
Without configuration, vscode has the ability to detect npm scripts and run them. if you're using standard convention, npm start runs the project and so vscode can be instructed to run the project. To debug, its a bit more complicated due to the fact that nobody uses a standard configuration however, vscode does generate a default launch.json for nodejs and iirc it assumes cjs (or mjs, i forget). So if you're using a very basic setup, everything works out of the box. And with a complex setup e.g. react, it works out of the box minus debugging which requires a browser integration... which is something other editors also need. For a backend nodejs, you likely need a custom launch.json because nobody uses cjs anymore but could be updated to use something newer.
@@guidosalescalvano9862 They sound like great programmers.
The one point I disagree with is starting with an IDE. I think beginners should learn to do it the hard way first. This is to prevent developers from using the IDE as a crutch where they simply learn to press the right button and hope for the best. I feel it’s incredibly important that developers know what the IDE is doing under the covers so that they know what to do when everything goes sideways.
Ultimately, a good iDE is a “force multiplier”. It takes your talents / abilities and magnifies their effectiveness. For example, I spent a period of time in Java never having a compile error due to the support that the Netbeans IDE was able to offer under my highly structured coding tasks. Everyone should ultimately be using an IDE. But I’m not so sure that it’s the right place to start.
(The corollary of a good IDE magnifying your abilities is that a bad IDE can lower your output. It can damage your projects, screw up source control, invade your build settings, etc. Please join a world of sanity by refusing to use Eclipse. For anything. Ever.)
I totally agree with you.
In my school we had to use a basic text editor which did not even had syntax highlighting for the first 3 months.
It was hard but it made me learn a lot aboit how to structure your code, how to make it more readable and (now 7 years later) sometimes I still think about that.
A good IDE (Integrated Development Environment) typically comes with way more and more advanced features than any text editor could dream of and, the most important, as the name itself describes it, it's all integrated out of the box and ready to start coding instead of spending hours or even days on setup time. For instance, Visual Studio Code is nice once you have everything set up, but doing it correctly with all necessary extensions and corresponding configuration is a pain in the ass. Not to mention when you find yourself dealing with breaking extension updates, conflicting extensions, etc. OTHO, with Visual Studio, you don't have to worry about any of that, or if so, it's minimal.
The main difficulty of switching between IDEs is that you have to learn new keyboard shortcuts. You can configure your new IDE to use your old shortcuts but sometimes features do differ between IDEs. That was my pain moving from Eclipse to IntelliJ. Refactoring support and debugging in IDEs are essential as much as ability to build and run your project without IDE from command line. I do like editors like vim to hack and experiment quickly without having to rebuild the whole application or container but once the code becomes more than page long I tend to move to IDE. For reading code IDE is also great cause navigation is much faster based on code understanding rather than text search.
Keymap: am I a joke to you
I think it's a good idea to practice everything you do first in a text editor as a lot of the technical stuff that you should know is done by the IDE.
In Vim once you learn to use C-P and C-N, you're pretty unlikely to do the typo in the first place. That said, the `Fraction` example is still a pretty good one.
I would give up any of my current and past editor/IDE (VSCode, Geany, Sublime, PSPad) for the singe feature of Multi Edit 4.0 ('90s, DOS):
- Ctrl-L adds a page break charcter (comment it out, if the compiler does not like it)
- I used to put one before each function
- displayed as highlighted infinite series of hyphen (endless line made from '-' -s)
- Ctrl-Up/Down jumps to the prev/next one
Codes my own IDE's. Onto #3 on the PC, started on the Amiga in 68000.
Why not both? Text editors, specifically shell editors for sure are and still will be needed in case of doing something on live environment, when there is no UI. I got your point that "servers should be automated", but 1) it's not always the case, 2) something needs to automate them and solve problems. Day-to-day programmer could use only IDE, but as a programmer/SRE/DevOps I just don't have such luxury.
One thing I didn’t hear in the video or see mentioned in the first few dozen comments is the learning curve. Becoming an efficient user of almost any tool requires practice and constant use. Over time, your keyboard shortcuts gets ingrained in your mind and becomes second nature.
Changing to a completely different environment and becoming as productive again as with your favourite tool set is not that easy. Sure, you get more help with many tasks, but if that help interferes with your time-tested work flow and your keyboard shortcut proficiency, you are suddenly not running, but walking or even crawling.
Granted, once you are over the threshold and become more familiar with the new environment, your productivity will go back up, but at least for me this rarely happens until it is time to move on to other things. Maybe I’m an old dog and it is hard to teach me to sit, but when I use my trusty old editor and a Unix command line environment and tool chain, I’m at my best. Parachute me into unfamiliar territory and I land running. Set me up with an unfamiliar IDE and I’m a fish on dry land. 🤷♂️
I've tended to favour the text editor in recent years, but I didn't start out that way. All of my early learning was on IDEs - to the degree that programming itself didn't seem possible without one of these behemoths. Of course, Microsoft is the classically frustrating example: Up until 2012, programming for Windows required a downpayment of what could easily be your monthly food budget.
Text editors + compilers + build tools were a revelation! They simplified the equation. Reduced it to lowest terms. And for once, I could actually understand what was going on. No more builds that would fail on deployment, after testing and running perfectly well in the IDE. There was no help I didn't know I was getting. No invisible configuration settings. No sneaky tweaking of the classpath.
Well I use what is listed here under "editor" but I get all the features of an IDE including the slow startup. LSP really changed the landscape here.
Is it really more configurable though? Every major IDE allows you to write plug-ins to do anything you could imagine. Sure, it's a pretty steep learning curve but the flexibility is there.
You may be able to add as much as you want to an ide, but you can't take much away from it, editors start from very little and you build up, you get the added customisation in between.
I code using punched cards
One thing that the text editor seems most vocal about is different input paradigms, like modal editing or keyboard-centric workflows, which can yield great improvements in speed, reduce context changes that disrupt concentration and (allegedly) can even help to reduce the risk of carpal tunnel syndrome by not having to move from keyboard to mouse every few seconds.
The main idea here is that programmers don't write code all that often. Most of the time we edit code that's already there, so at least considering a different input paradigm that's geared towards that seems like a sane thing to do. VIMs "Normal Mode" won't let you type anything, but it'll let you move through code or run commands over said movements.
Though arguing against IDEs for being slow and that "vim can do all that if you configure it too" doesn't seem reasonable either. I myself use appropriate IDE's with vim emulation everywhere(mostly VSCode and Jetbrains) and use vim when I have to work via SSH(though remote SSH on VSCode has been great too, sometimes better) or just want to quickly edit a config file.
I have multiple IDEs that I prefer for different programming languages. Visual Studio is my preferred general purpose IDE, whilst Eclipse is preferred for Java, Python and some other specific programming languages. This helps me avoid lock-in with any particular IDE as I use several on the regular. Of course I still have Notepad++ text editor for reading existing code or making tiny fixes when I can't be bothered to wait for the IDE to open.
My argument for why I use a text editor (vim/gvim) is a little different than any argument made in this video. It's that text editors can be small windows where an IDE tends to want to take up your whole screen. I like a windowed environment.
I am also in a role where I could be in two to four different codebases in a given day. So, for me the startup cost of an IDE is a real cost.
Next episode: where to put opening curly brackets: at the end of the opening statement or on a separate line. I've never tried the second approach, but I fund it bad
Third option: Become a python developer and have no need for superfluous tokens 😜
ask Kevlin Henney about that, he hat a compelling argument for this decision =) And I found the second approach ridiculous before, now, after checking the arguments, I understand and see the value of doing it on a separate line.
Stll not doing it myself on all projects - bt I do understand why it can be very useful =)
@@ponypapa6785 I hate how it looks, but I can't deny that it has made my life easier in some places.
Actually, I often find the IDE features distracting - like dumb autocomplete suggestions or documentation popups. Then I have to A) find out how to disable or reduce those interventions, B) I have to find out how to call up that information when I do need it.
Adding features to Emacs or Vim is, in a sense, the other way round: you add (and keep) only what proves helpful in the long run.
Bash is the IDE, vim is the editor part of that IDE
Whatever you choose to use, an IDE or a Code Editor or a Text Editor. Remember that the $EDITOR you use doesn't make you a worse or better developer.
Theres some toxic people out there who say "Real programmers use IDEs". These people have insecurities and are only saying that to prop themselves up.
(Those same people often also say "Scripting/Interpreted is not Real Programming" but can't define scripting properly without using the word programming or its synonyms.)
I will no longer use a text editor for any language that now requires an IDE to visual the type system of the language. That was the end of text editors for me! For example, as soon as auto in C++, or var in C#, etc permeate the code, you require an IDE or language aware editor to see the types of variables and so on. I remember initially being against auto, var etc because the types became hidden to the developer but now fully accept having lost that battle when lambdas, anonymous functions and so on were also introduced!
in the olden times UNIX used to be called "an IDE"
As you already said, you don't always get the choice. for scripting I use a text editor (bash, batch, powershell). For java, sql, pl/sql I prefer an IDE for the stated reasons. what I don't use much are the integrated wizards in an IDE. They start to make more problems with time, especially when they don't maintained well and the next generation wizards do things differently.
I think my design turns out worse when I use an IDE. For this reason, I use a text editor when I "own" the code of a project. But I use an IDE with unfamiliar languages, projects, or whenever I need to refactor. Currently I use emacs or intellij. With vim bindings for both.
I'm probably faster with an IDE, but, I also tend to be the primary senior person on any given project. At that point it isn't just about my own personal productivity.
I respectfully disagree.
I program a lot of C and have used Vim a lot (a text editor). While the IDEs are easier to start with, they often hide the basis of how your project is build and make isn't that hard to learn. The reason to use Vim or emacs for example is that it is your own tool, that you expand to what your needs are. Adding tools such as Cscope makes it extremely effective at diving around in bigger projects. Building your Vim or Emacs is something you do over time towards the needs you have. Calling gdb is pretty easy for most people. There are good IDEs out there, but it is hard to beat the customizability of Emacs and Vim. There is also the issue of not always having access to a gui interface, when running on industrial machines.
In the end using Vim or Emacs allows you the freedom of choice and access to great plugins (or write your own). They become somewhat like IDEs themselves, and they are really independent on what your visual desktop environment is. If you are running MacOS or Linux using command line tools is more natural to you (as those are pretty good), while on Windows it is more IDEs that are king.
Many IDEs often come with the tools you need for example for microcontroller programming. Eclipse is still used a lot, so it can be a good idea to learn a little about it, else VSCode is a good refreshing change to IDEs, as it has most features you need, a good community around it and is not a resource hog unlike Visual Studio.
Even though I am a native English speaker, an extension (LTeX) that I use for web content editing corrects my grammar, and spelling which I find invaluable in the Code IDE. I learned things from it.
Hi, I use text editors mainly to jot code ideas down without constant pop up distractions. The constant pop ups are really good at derailing my thought process. Once I get it to a point where I want to test it, then I copy it into an IDE for compile and debug. It’s also an excellent way to test my syntax recall. My mistakes are not automatically corrected, so I can see which areas I need to work on. I find first typing into a blank editor an excellent learning tool. Of course this effort makes sense only for long-term use scenarios. I also use text editors for a quick coding on my iPad Pro. Can’t run a large IDE from an iPad and don’t want to anyway. Sometime I run the code by copying it into a Google Colab jupyter notebook, and save a working version back to my Github repo.
I mainly use VS Code for complex projects and neovim (with spacevim installed) for smaller projects in easier languages.
Having "mastered" vim i can jump around the code freely and faster than with the mouse.
Of course most people will have problems with vim especially those that use vanilla vim out of the box and have problems learning vim.
It's only natural that we prefer what is easier for ourselves and those preferences are different everywhere and usually change over the time.
I cannot use Vim out of the box because the default configuration of Vim only has Syntax-highlighting and no autocomplete.
Pairing it with a configuration pack like Spacevim it might come close to VS Code, with the biggest difference that Vim is made for Editing and VS Code has strengths with writing.
And i know that my preferences will be a lot different for some.
I learned programming on my own as a child around 10 years ago.
At the beginning i used Eclipse and Visual Studio Community,
until i recently found out for myself out that i really like compiling and running code directly from the terminal and that makes vim and vs code very attractive choice now.
In my opinion everyone should use what they like most.
(btw i also learned that the school system is very bad for people that already learned Computer Science on their own, because it is very hard not to write advanced code when being used to it for years)
I prefer IDEs for writing code in projects with more than a few small files for the navigation and refactoring, but I prefer executing build scripts from the terminal.
What ever editor/IDE I use, I want to have emacs key bindings.
In macOS Firefox, macOS standard UI components, slack, mattermost , etc has basic emacs key bindings (Microsoft software doesn't have ... so one other reason those avoid those).
So If IDE doesn't have (decent) emacs key bindings support, I don't use it.
I agree with the IDE over text editor concept. Like, why wouldn't you? I did chuckle when you talked about the emacs programmers alongside vim. I used to use XEmacs when all the other kids were using vi. They all thought I was an appliance operator. Btw, I'd consider XEmacs to be a rudimentary IDE. You can (ok could) compile, and launch gdb from within it.
I use IDE because I'm lazy and as I'm getting older (and learning more stuff), it's just easier for me to get the work done when it keeps an eye on the mess I call my code. I'm in no way an expert on use of it tho, I just know what I need to know and most of the time keep hidden everything I don't need until I need it (and when I don't I just hide it again). But I use nano when I'm having fun with scripts on a server. For me it's just about which tool helps me get things done faster at the time.
This is a good balanced video on the benefits of both. I prefer to use Vim but as a contractor, I'd say its almost impossible to use one IDE or text editor exclusively. The team, the product, the tech and even the culture, all influence the tools that we ultimately use to do our work. Again, good balanced video. Thanks for sharing.
The major downside of IDEs for me is that I find the help and suggestions it brings up when I am coding are distracting me from thinking about the code, often it is help that I don't need. However I use both IDEs and Vim and am happy with either. Vim is especially useful when I am marking students' code because I don't have problems with project set up or the time taken to load the project.
I'm happy with gedit :)
I'm using it since I started real programming on Linux.
I even enabled word completion about a year ago.
At work I use an IDE, but the only features I really use are auto completion and smart renaming.
But often the IDE does just it's own thing and not what I want. For example the auto completion sometimes autocompletes without me explicitly selecting an option.
I use intellij because I don't want to manage a bunch of plugins. VS Code is definitely improving faster though, so I'll likely switch at some point.
I use the best from the two words: If I need something quick and dirty, or just fix some bug - text editing. If I need to thoroughly develop some functionality, or fix a complex bug, then IDE.
Thats exactly what I think: versatile Editors with plugins can grow to IDEs, which are more specialized programming environments than enriched text editors. For people who don't want & need to program professionally a children/school IDE might be ok. But for beginner with attempt of future professionals their learning curve & understanding should be improved they shoud know what a IDE does under the hood in the background when pressing a "Compile & RUN" button on a big & complex team software project. Starting doing everything once by hand on commandline tool chain & texteditor and after deep understanding what does what and what means what (error messages vs. warnings) then switching to nicer abstracting IDE is the good way, if the IDE fits for the project.
I kind of get why c++ developers would stick with their preferred text editors.
I've been working on a c++ project for a few months now and I'm almost certain that c++ will never get an IDE that's as good as the ones for more recent languages, and the reason for that is c++'s unrestrained complexity.
Whereas Java and C#, or hell, even Python and JavaScript IDEs provide me with suggestions that are 9/10 times right on the money, my c++ IDE repeatedly gives me wrong or unhelpful suggestions.
Still, code navigation working half of the time is better than no code navigation... otherwise I'd have changed to a text editor out of frustration.
In my opinion, it is somehow absurd that we are still wrangling text in the 2020s to write software. When we reason about software, we don't _think_ about language keywords and syntax like curly braces, imports/using statements, etc. Yet it is still the very matter that software is made up of.
When you talk about IDEs, in this day and age they are starting to resemble tools that function on that same higher level as we programmers are thinking about code. They allow us to manipulate the concepts of functions, parameters, classes, perhaps entire projects. Not just the syntax. Looking at it that way, text editors might resemble something like the stone age for software development, while IDEs are more like bronze age level tools.
Imagine the year 2080, can you imagine you are using text at all to build software?
It's 2020 and we're still using words and not just emojis. We need to get with a times. /S
I always compare it to a trade. Carpenter bricklayer ect. If they would have the same mindset about tools it would be alot more expensive to build houses. That is how I veiw IDE's vs text editors. Why make a tool that you have to build and maintain for alot higher cost than it is to simple buy a license.
A programmer in Denmark cost 100 euros per hour so if you use a week on making your text editor working it would cost 3700 euro to build and we havent even talked about maintance yet 😀
Pycharm professional cost 111 euro for individual and 300 euro for buiness so it really is about were you will put your(or the companies) time and money.
My personal take is that if you are learning, go with text editor. When you are working go with IDE. When you learn, you should take your time, you should learn sintax and make mistakes and learn from them. When you work, you should not be slowed by your tools.
I think that locking is why I'm still using Eclipse. I'm proficient in it and I would need to invest significant amount of time to move to another editor. But on other hand using VSCode is so refreshing when I recently work on infrastructure as a code project in terraform. Still I find using Eclipse shortcuts in VSCode and to my surprise I don't get expected result.
But I think I'm close to reaching the point of switching
One more thing is that when you get your mind is used to VI keyboard commands it is very very hard to turn that off, almost impossible. Most IDEs do have a VI mode though which helps.
The power tools don't have to be the IDE.
You could also add some plugins to most editors.
And for more complex stuff, you could write shell scripts, which might be even more flexible, if you have special use cases.
And even if something already exists in some IDE, writing a small shell script can be more efficient if you have some experience.
At 1:45 you pretty much explained why a text editor like vim is the superior choice. It is widely used and supported pretty much everywhere with vi. The need to be flexible and not have to relearn a tool puts you into an advantage to be able to shine in any environment. I have stuck with things like vim, bash, git, python and c++. And these skills can be pretty much what you need either in a Linux environment or Windows environment with git bash
The only reason that particular reason would make them superior is if you're joining a really shitty company, and in that case, you probably shouldn't bother joining them
Why not use both? Especially for vim one can always find plugins that enable all its modes and shortcuts.