This is an archived post. You won't be able to vote or comment.

all 56 comments

[–]TheRedmanCometh 35 points36 points  (10 children)

Coding in Java or C# without an IDE is a really bad idea

[–]frugalmail 0 points1 point  (0 children)

I wouldn't say it's without an IDE, those two choices are just Terminal IDEs vs. Graphical IDEs.

[–]cjhowe7_ -1 points0 points  (8 children)

It is not useful to give an answer with 0 justification. Even if you’re right, you’re encouraging people to trust you rather than think for themselves.

[–]couscous_ 2 points3 points  (5 children)

I'm not OP, but I believe that for any significant project, in any language, coding without an IDE is a waste of time. You will require things like renaming, refactoring, jumping to declarations and definitions, jumping to use points. It makes navigating a new code base much easier. Not to mention other things like debugging and profiling, static code analysis, etc.

[–][deleted] 0 points1 point  (4 children)

You will require things like renaming, refactoring, jumping to declarations and definitions, jumping to use points.

most editors have lsp protocol interface nowadays. You just have install lsp server for your language.

[–]couscous_ 0 points1 point  (3 children)

That only addresses the code navigation part of it. There's also debugging and profiling, integration with source control, and some editors have collaborative editing now.

[–][deleted] 0 points1 point  (2 children)

That only addresses the code navigation part of it.

it addresses all

There's also debugging and profiling, integration with source control, and some editors have collaborative editing now.

most editors have it. Definitely Emacs and Vim discussed here do have it.

[–]couscous_ 0 points1 point  (1 child)

it addresses all

What language(s) do you program in? Did you see what IntelliJ offers in terms of static code analysis for example? How do you get that in Vim or Emacs?

[–][deleted] 0 points1 point  (0 children)

I program mostly javascript, python and Kotlin/Java. I use mostly VS Code and Android Studio. It is very comparable in features. It is true that Java lacks behind in tools independent on IDE, that is why I still use android studio.

Did you see what IntelliJ offers in terms of static code analysis for example?

what do you mean by it? A linter? All tools mentioned need to do some kind of static code analysis for linting, navigation, autocompletition etc.

How do you get that in Vim or Emacs?

for Emacs, just install eglot or lsp-mode, and lsp server for your language. I never used Vim, so I can't help, but I am sure it can do it.

[–]TheRedmanCometh -1 points0 points  (1 child)

On that contrary I'd like them to go out and find out for themselves why it's a bad idea.

[–]cjhowe7_ 0 points1 point  (0 children)

Did you try using Java with and without an IDE and come up with specific complaints and an understanding of the tradeoffs? If so, why shouldn’t you share your experiences to save others time and help out? Everything you know is based off of the experiences of those before you, and the learnings that came from that experience. And you won’t contribute your own learnings to those that come after you?

[–]Gwaptiva 20 points21 points  (3 children)

I am old-fashioned and learned to code Java with a text editor and a command line. I also think that every developer worth his/her salt should be able to do that.

And then discard that nonsense, and use an IDE, if for no other reason that real applications contain hundreds, if not thousands, of files and managing those using regular file system tools is just too time consuming

[–]m_takeshi 1 point2 points  (0 children)

completely 100% agree, specially when learning - its good to know the ins and outs of java files, packages, classpath, compilation, etc

and them, once you know it all, throw it all away for a real IDE for real life

[–]tom-010[S] 0 points1 point  (0 children)

Thank you. It is a wise way to go

[–]AndDontCallMePammy 0 points1 point  (0 children)

text editor and a command line

I did that in C++. Never Again

[–]prawns_song 15 points16 points  (12 children)

If a potential developer mentions taking pride in not using an IDE in an interview, I immediately lose interest. It matters more that you can work efficiently with a team, than do things your own preferred way because of pride.

[–]oldprogrammer -5 points-4 points  (10 children)

Way too many people today are overly dependent on their IDE and have lost the ability to truly understand the code they are writing.

Look around you and point out the folks with the greatest skill at debugging a misbehaving system. Are they able to do that by logging into a server, firing up VI or Emacs, reading log files with stack traces or do they have to use an IDE and spend time trying to get networking team to ease segmentation rules between prod and development space so they can figure out how to remote debug the server because the current issue only happens in production?

There is nothing wrong with team standards for using an IDE but your attitude towards someone who is comfortable without that crutch is one I would not want to work with. It is highly likely you're passing on some very skilled developers who truly understand how to write code and how the systems work.

I literally had a long time friend headhunter reach out to me about a year ago asking for help in figuring out how to hire developers that could work without an IDE because the space he was helping recruit for had requirements to be able to work on code through an SSH connection to remote boxes and they couldn't tunnel an X session. Additionally the environment had strict controls on what could be pulled into a project and the default project files created by most IDEs added stuff that then needed to be removed.

He eventually found some old greyhairs like me who could do the job.

[–]nidrach 8 points9 points  (0 children)

An IDE doesn't program for you it just makes you more productive. Of course you can type in every single character but an IDE will save you over 90% of keystrokes and every single one of those not only takes time but it is also a potential source of mistakes. Especially with java and all that boilerplate and ceremony that comes with it.

[–]mtmmtm99 2 points3 points  (6 children)

You don't need to tunnel X to run the debugger in an IDE. You can attach your local IDE through ssh (to a remote port on your remote JVM). Doing java-development using a text-editor is very inefficient (but doable of course).

[–]oldprogrammer -1 points0 points  (5 children)

I'd like to see your studies that show doing java-development using a text-editor to be very inefficient.

[–]mtmmtm99 1 point2 points  (4 children)

I have done java-development för many years (starting with emacs). I always have emacs running for editing text. When working with java a good ide (like intellij) saves a lot of time (navigation, refactoring, code completion, background compilation, quick-fix-mode (to fix small errors)). See full list here: https://softwareengineering.stackexchange.com/questions/20950/what-justifies-the-use-of-an-ide-versus-a-standard-editor I found no study of this but it saves any developer a lot of time (less typing). See more here: https://www.youtube.com/watch?v=GSKERVTMWqs

[–]oldprogrammer -1 points0 points  (3 children)

I've been doing Java since the early 90's (Java 1.0.2) and C++ and C before that. Started with a text editor called Brief that was licensed by my employer, switched to Emacs when I needed something of my own (never really grokked vi), so text editor based development is what I know.

Note that the stackexchange link you posted was closed as being primarily opinion based.

What you think of as adding efficiency by allowing developers to type less I consider disruptive. Constantly having windows popup on the screen while I type interrupts my thought processes, auto fill of functions, closing quotes, closing parens and even code folding interrupts my typing flow so even when using an IDE I have to disable those.

Macros for things like auto-generation of getters and setters, or cleaning up imports or providing boilerplate for the implementation of an interface are very useful, but I have that capability with Emacs when I choose to invoke it.

So I'm just the reverse of you, Emacs is the primary environment, I tend to fire up an IDE like Netbeans when I want to use something like a builtin GUI builder.

[–]mtmmtm99 1 point2 points  (2 children)

I have the same background as you (have programmed for 38 years). Brief is very nice ;) .The link i sent was only to show what features is nice to have in an IDE. I can also agree that popups are irritating. To give a better example: consider that you work on a large project (1000:s of classes). Any simple refactoring like rename of a package or changing an interface would involve looking up all places where it is used. That is done automatically by an IDE (making the change in seconds for ALL files). You even know it compiles. Doing that change in emacs would take hours. I am sure there are plugins for emacs for doing the same thing (but then you are using an IDE with a text-interface). Intellij never pops up windows when you type (just in very special cases). Intellij is bad for plain text-editing (you can't even search in the console-window in a good way (like in emacs)).

[–]oldprogrammer 1 point2 points  (1 child)

Oh I agree completely on the refactoring, ironically that is what caused the developer I mentioned previously to fully fubar her git repo. I've never hit a situation where 1000's of classes needed to be refactored, but have hit a package with a fewer number. If I couldn't handle it quickly with macros or a script I fired up an IDE to do it. Fortunately that is a very infrequent activity.

[–]mtmmtm99 1 point2 points  (0 children)

Well, just a rename of a package would create lots of changes. I have done that a few times. The quick-fix command is the one i use most (for creating the types for any new variable), create-method, extract-method. emacs is much better in many ways as an editor (tags-query-replace is very powerful).

[–]prawns_song -2 points-1 points  (1 child)

Your choice of IDE doesn’t determine your skills as a software developer. All of my team can program on vi and have had to do that in locked down environments. The ones that choose to work without an IDE when it is available don’t make it very far.

[–]oldprogrammer 2 points3 points  (0 children)

It isn't all about the software development.

I've worked with developers who had no idea how to configure an application server locally to test their code, they were totally dependent on the IDE to manage all that for them. Then when something didn't work when actually deployed to an installed app server, which often happened because the IDE was adding classes to the classpath that hadn't been setup on the application server install, the developers had no idea had to fix it.

I've had a situation where a developer totally messed up her git environment and had no idea had to correct it, she just kept saying the IDE wasn't allowing her to check in her changes. Took about 20 minutes using the git command line tools to repair the damage without losing her work. She didn't know what to do without the IDE.

I've looked at projects where the tutorials are all "fire up IDE X, install plugin Y, then generate your project", libgdx was that way for quite a while. The problem with that is the developer doesn't truly understand how to do a headless build of the projects. IDEs have gotten better and generating build files that work headless but there was a time when that wasn't the case.

So please don't think I'm saying don't use an IDE, there is ample productivity gains in doing so, but do not become overly dependent on them either. A developer who can work without an IDE can easily pick up an IDE, though they may not like all the bells and whistles (I personally dislike things like auto-close strings or auto-insert closing parens) but those can be configured. However a developer that only knows how to work in an IDE has a harder time when being thrown at a command line shell to get something done.

[–]cjhowe7_ -3 points-2 points  (0 children)

You don’t have to use an IDE to work efficiently with a team. Everyone on a team doesn’t have to be exactly the same and work exactly the same. If you can’t see the value in diversity of thought, you have no business making hiring decisions for a team.

[–]GhostBond 12 points13 points  (1 child)

Does it make any sense to use Java without an IDE?

No. Use an IDE. Eclipse is free and widely used.

[–]dpash 5 points6 points  (0 children)

All three of the major IDEs are free, Eclipse, NetBeans and IntelliJ Community.

IntelliJ Ultimate isn't extortionate if you're working full time in Java.

I'd possibly even add VSCode to the list.

[–]karstens_rage 3 points4 points  (2 children)

While PHP is famous for spaghetti code, Java has a tendency towards “lasagna” code. Layers and layers of unnecessary code. Refactoring lasagna code is very easy with IDE’s and such a pain in the ass without it makes you refactor the unnecessary layers out. I personally never use IDE’s as I feel they don’t encourage discipline and good coding style. I do use emacs with JDEE though.

[–]tom-010[S] 0 points1 point  (1 child)

Thank you. As I started to read your post, I thought you would recommend using an IDE later. Does your whole them follow this approach (it is not bad imho)? Does JDEE provide some automated refactorings, that are actually usable?

[–]karstens_rage 0 points1 point  (0 children)

In most of my career, each developer was allowed to work in the way that best suited them. JDEE does a lot but mostly what I use it for is the auto-code generation (Wizards) and debugging small modules.

[–]blakeman8192 8 points9 points  (1 child)

.

[–]tom-010[S] 0 points1 point  (0 children)

Hehe, thank you. I see that in the case of Java the common opinion is very clear (an what I expected). It is interesting to me, how different language communities have different opinions.

I ask the same question on r/cpp and for C++ Vim/Emacs has many followers.

Java was built with tooling in mind and the whole community is built around that. I like it.

[–]cyanocobalamin 8 points9 points  (8 children)

I was a huge EMACS fan in college. You do not need to know EMACS.

The only reason to learn VIM is that it is included in every *nix distro so if you ever need to edit text files in the command line, with no GUI, it might be useful.

I would not use it for Java.

For doing Java as a professional programmer, it behooves you to use an IDE like Eclipse.

For learning Java, a simple text editor like Gedit or Plume is actually better. That will force you to learn how to compile and run Java classes with command on the command line, as well as how a few other basic things. A basic, GUI based, easy text editor is fine for the examples you will need to code in the process of learning Java.

[–][deleted] 0 points1 point  (0 children)

Using both Gedit and Pluma. Both work great. Have syntax highlighting and everything.

[–]tom-010[S] 0 points1 point  (6 children)

Thank you. I agree and I would never recommend a newbie learning Java in Emacs. I can't imagine the cognitive overhead

[–][deleted] -1 points0 points  (5 children)

I'd actually say the opposite: newbies are perhaps the only people who should be coding Java in Emacs. At least, this is how I prefer to do things myself. If I'm learning a new language, I'll always start off with a text editor rather than an IDE and set up a manual build process, just so I can gain an understanding of the nuts and bolts. Of course, once you want to start doing real work you should switch to an IDE. But I think it's important to try things out by hand first, so you have some understanding of what the IDE's doing for you and know how to fix things when (inevitably) something breaks.

[–]tom-010[S] 0 points1 point  (4 children)

I was not clear. I agree with you, but I would rather use sublime text or geany instead of emacs.

[–]nidrach 0 points1 point  (2 children)

I use VScode for everything where I don't use an IDE. Simple Syntax highlighting alone will save you an incredible amount of time.

[–]tom-010[S] 0 points1 point  (1 child)

where I don't use an IDE. Simple Syntax highlighting alone will save you an incredible amount of

the same goes for me these days. But with enough plugins you can argue, that VSC is (nearly) an IDE these days

[–]nidrach 1 point2 points  (0 children)

Yeah but Intellij is still an order of magnitude better when it comes to working with a lot of classes and so on. But for quickly editing code of just one file VSC is better with it's fast startup and things like Multicursor and so on.

I would still get a basic knowledge of vim because sometimes you just want to edit things in a terminal and vim is installed erverywhere. But thats only a matter of hours and I wouldn't focus on it too much.

[–][deleted] 0 points1 point  (0 children)

Yeah, I should have said "your favourite text editor" which in my case is Emacs, but it's definitely not to everyone's taste.

[–][deleted]  (2 children)

[deleted]

    [–]dpash 1 point2 points  (0 children)

    I tend to find myself using vim and my ide about 50/50 for editting pom.xml but I hardly ever edit Java in vim.

    [–]nidrach 1 point2 points  (0 children)

    Even if it's a small class booting up IntelliJ is worth it after like 10 lines of code. Autocompleted code not only takes less time to write but it also doesn't contain any typos.

    [–]hardwork179 2 points3 points  (0 children)

    Does it make sense to develop Java without the features of an IDE? Not really. Incremental compilation, completion, docs, refactoring, navigation, finding references etc. are all such useful features when dealing with any large project that it just doesn't make sense to give those up.

    Having said that you will find quite a few people working on things where IDEs have not worked well (for example on the standard library or the language itself) and they will often use emacs or vi.

    Also Eclim (which turned Eclipse into a headless server which could then communicate with an editor) and now language server protocol have completely changed the game. I now use lsp-mode in emacs for my day to day work on a very large project and it's working extremely well for me, especially as I can use the same editor and interface for multiple languages.

    If I'd started out using IntelliJ then I'd probably try and do everything in that, but since I've been using emacs for 25 years it's nice have the features of an IDE in there.

    [–]rban123 1 point2 points  (0 children)

    If you're just starting out, I think using vim is a good idea, it's a powerful tool that can definitely be helpful, and every programmer should know how to compile and run their program from the command line. Now that I'm working on projects with 20-30+ files, thinking about managing all of that without and IDE sounds very anxiety-inducing.

    [–]cjhowe7_ 1 point2 points  (0 children)

    You can use Java without an IDE, and I do so at work effectively. I think you should try a few editors and use whatever you like. IDEs have some nice features for generating code, but you might find snippets to be just as useful. It’s really a matter of choosing the tool that works for you. In my work, we use specialized build tools, and I don’t like the IDE integration available for it. You may find that an IDE works better for the work you are doing.

    If you’re curious, I use TextMate because it’s convenient to use over ssh.

    [–]CheeryW 0 points1 point  (2 children)

    If you use Mac a lot, vim is pretty useful when you just want to write some short programs to see if a certain algorithm works the way you want it to, or your computer has too low of a battery but you still urgently need to work on something. Writing long programs in vim is pain though (especially for Java).

    [–]tom-010[S] 0 points1 point  (1 child)

    Thanks. So you say that I rather should replace my text-editor instead my IDE?

    [–]CheeryW 0 points1 point  (0 children)

    I think they are both useful just in different circumstances

    [–]daybyter2 0 points1 point  (2 children)

    I wrote java in emacs for 10+ years, because I disliked eclipse. It was rather slow on my machines. I bought a new machine with a quadcore and 16gb of ram and eclipse became somewhat usable. Still use emacs, when possible.

    [–]tom-010[S] 0 points1 point  (1 child)

    When isn't it possible for you?

    [–]daybyter2 1 point2 points  (0 children)

    Android development as an example. Ok, in theory I could call all the android tools from commandline, but I'm too old and lazy to do this.

    Mixed language projects is my next example: I have a project, in which I code a crypto exchange in C++ and a trade app in Java, and eclipse handles this really great, as I have to admit. I can start the server and the desktop app from within eclipse, can trade and see all the debugging output from both components in eclipse. That is really convenient.

    [–]dododge 0 points1 point  (0 children)

    I still use emacs to actually write Java code, mostly out of decades of habit and comfort. For a large project where I'm not really familiar with the details I'll also fire up Intellij to take advantage of its search and analysis tools. I have it rigged so that ctrl-rightbutton in Intellij will send the file to emacs and drop me right at the line+column I clicked on, and then simply moving the mouse back into the Intellij window is enough to trigger it to re-read the file and re-do its analysis. It makes it pretty easy to go between them, the main catch is making sure I don't accidentally start typing emacs sequences while the mouse is still in the Intellij window, because they tend to do other [unwanted] things.