Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 18 of 18

Thread: When *Not* to Use an IDE

  1. #1
    Crazy Cat Lady KevinWorkman's Avatar
    Join Date
    Oct 2010
    Location
    Washington, DC
    Posts
    5,424
    My Mood
    Hungover
    Thanks
    144
    Thanked 636 Times in 540 Posts

    Default When *Not* to Use an IDE

    I’ve been asked to make a post on the dangers of relying on an IDE, so here goes…

    Tl;dr version: Relying too heavily on an IDE makes you a bad programmer. To demonstrate my point, think about trying to get your girlfriend to write hello world in notepad and compile and run from the command prompt, explaining to her what’s going on in each step. Chances are, she’d have a pretty good (if not vague) notion of what’s going on, and she’d be able to explain the gist of the process back to you. Now think about having her install eclipse, run it, set up a new project, generate a new main class template, write hello world using autocomplete, and press play. Even if you tried to explain each step to her, she’d have nowhere near the same understanding she gained from the simpler approach.

    Anyway…

    IDEs such as eclipse or netbeans have some amazing features that can help increase the productivity of an experienced developer- autocomplete, code generation, handling of classpath and dependency issues, and deployment are just a few things you can accomplish with just a few keystrokes.

    However, inexperienced programmers, or even intermediate coders (or even experienced programmers entering unknown territory), can rely on these features too heavily without even realizing it, which will actually hurt their productivity.

    For the first year or so that I was first learning programming (in a Java class back in high school), I used notepad to write all my code and the command prompt to compile and run it. I always had a browser open to the API- some of the most interesting things about Java, I learned by perusing the API randomly while looking for something else. And I became really accustomed to using the tutorials to figure out how stuff was used. I got to the point where I could write a simple gui shell consisting of a JFrame and a JPanel that does some custom painting with my eyes closed. After that, I moved onto JCreator (with only syntax highlighting and the ability to compile, run, and debug within the IDE, everything else disabled). I still used the API and the tutorials as my first source of information.

    And that’s pretty much all I used all through college. That helped me become very familiar with the standard libraries and where to go for more information. It wasn’t until the very end of college (6 years after I started programming) that I even touched eclipse. Now I use it every day, but I still have the API open (it’s always the first tab open in firefox), and I think my ability to go to the tutorials is one of the reasons I’m able to help people here. Most of the time, I’m not doing anything special, I’m just consulting the API and tutorials, which I learned by not using an IDE.

    Now, let me contrast that with somebody who uses all of the features an IDE offers from day one. First off, it actually makes writing and running small programs more complicated than it should be. Using notepad and the command prompt, I can have a simple gui up and running in about a minute. But to do the same thing in eclipse, first I have to create a new project, give it a name, specify its options, set up the directory structure, its classpath, etc. This might not seem like a big deal (and it isn’t), but all of those options can be overwhelming to a newbie who just wants to write a hello world program.

    Even if setting up a project and whatnot is second nature to you, that’s still just the tip of the iceberg. If you’re relying on the IDE’s autocomplete feature, there’s a good chance you’re going to miss out on the wealth of information contained by the API. Not only that, but you aren’t actually requiring yourself to learn the classes and methods you use. What happens when you’re in a scenario where you don’t have access to autocomplete? Say you’re having a test, or you’re helping another developer who doesn’t use an IDE with autocomplete, or you’re in a brainstorming session. You won’t always have an IDE available to you, so if you’re relying on one to write code, you won’t be able to write code.

    Aside from autocomplete, another problem with relying too heavily on an IDE is that it hides classpath and deployment from you. That can be a good thing, but if you don’t know what’s going on under the hood, what happens when you encounter a problem? What if a client (or just a friend you sent your program to) is having problems running your program? You can’t very well expect them to install your IDE to fix the problem, right?

    I can tell you from experience that people who rely on an IDE throughout their development education turn out to be worse programmers than people who claw their way up without one. I’ve seen people unable to show a JFrame that displays a random color, and I’ve seen people who couldn’t even type any code at all- they had to copy and paste it from somewhere else instead. Some of that comes from inexperience, but a lot of it comes from the difference between knowing how to write code and knowing how to make an IDE write code for you.

    The one thing I will say in defense of IDEs is that the ability to debug a program is immensely helpful in tracking down the cause of strange behavior. This is such an under-utilized skill in novice developers. But it’s possible to use a debugger without using any of the flashier aspects of an IDE.

    In the end, it’s up to you. There is a huge difference between using an IDE to accentuate your understanding of the language and using an IDE as a crutch. It’s up to you to decide which group you belong to. Try writing a simple program that displays a random color using only notepad and the command prompt. How did you do? Or if your goal is to learn, then the less you rely on an IDE, the better

    However, this isn’t just true for newbies- I’ve been programming for a few years now, and I still ditch the IDE when I’m entering new territory. I’ve recently been doing Java EE development (JSP, tomcat, and JavaDB). Since I don’t really know what I’m doing yet, I write all my code in jEdit, and I’m planning to continue to do so until I am completely comfortable with it. It might seem like things are taking more time, but in the long run, I’m going to end up a much more productive developer with a much better understanding of the language.

    Note- This doesn’t even touch the concept of GUI-builders that often come with IDEs. But the same rule can be applied to them- they hide what’s going on under the hood, which leaves novice developers clueless as to how to actually program. Plus the code they write is often hideous and hard to debug, so it makes getting help harder. There is a time and a place for them, and in experienced hands they can be useful, but novice users are better off doing things the “hard” way.

    Anyway, I hope that helps!
    Useful links: How to Ask Questions the Smart Way | Use Code Tags | Java Tutorials
    Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!

  2. The Following 4 Users Say Thank You to KevinWorkman For This Useful Post:

    ChristopherLowe (December 28th, 2011), JavaPF (December 22nd, 2011), Melawe (December 22nd, 2011), Mohak. (May 24th, 2012)


  3. #2
    Member
    Join Date
    Mar 2010
    Posts
    271
    Thanks
    21
    Thanked 7 Times in 7 Posts

    Default Re: When *Not* to Use an IDE

    Thanks Kevin! I will try to code with out Eclipse. Although I have compiled one or two programs using cmd, I will miss auto-formatting and syntax highlighting. I will show it to the group and see what they say.

    Thanks again.
    -Mel

  4. #3
    Super Moderator helloworld922's Avatar
    Join Date
    Jun 2009
    Posts
    2,896
    Thanks
    23
    Thanked 619 Times in 561 Posts
    Blog Entries
    18

    Default Re: When *Not* to Use an IDE

    I was one of those programmers who did start out with an IDE, but I do consult the API docs a lot, and tested/debugged even more. Learning to debug code well is in my opinion the most valuable assets any programmer can have, which really is the defining feature of an IDE for me.

    Reading the API docs comes in second because I have encountered times where the API docs either aren't clear on the behavior, or are just down-right wrong. Also I want to be able to see what a certain API function does for myself and how to apply that API function to accomplish a set task.

  5. #4
    Member Emperor_Xyn's Avatar
    Join Date
    Dec 2011
    Posts
    66
    My Mood
    Devilish
    Thanks
    21
    Thanked 2 Times in 2 Posts

    Default Re: When *Not* to Use an IDE

    Good to hear i'm new to Java and already a step ahead of people you work with!
    Hahaha

  6. #5
    Crazy Cat Lady KevinWorkman's Avatar
    Join Date
    Oct 2010
    Location
    Washington, DC
    Posts
    5,424
    My Mood
    Hungover
    Thanks
    144
    Thanked 636 Times in 540 Posts

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by Melawe View Post
    Thanks Kevin! I will try to code with out Eclipse. Although I have compiled one or two programs using cmd, I will miss auto-formatting and syntax highlighting. I will show it to the group and see what they say.

    Thanks again.
    -Mel
    I should have made this more clear in the original post, but things like jEdit will do auto-formatting and syntax highlighting for you, without any of the extra bells and whistles. I use jEdit and the command line for most of my Java EE stuff, at least for now.
    Useful links: How to Ask Questions the Smart Way | Use Code Tags | Java Tutorials
    Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!

  7. #6
    Crazy Cat Lady KevinWorkman's Avatar
    Join Date
    Oct 2010
    Location
    Washington, DC
    Posts
    5,424
    My Mood
    Hungover
    Thanks
    144
    Thanked 636 Times in 540 Posts

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by helloworld922 View Post
    I was one of those programmers who did start out with an IDE, but I do consult the API docs a lot, and tested/debugged even more. Learning to debug code well is in my opinion the most valuable assets any programmer can have, which really is the defining feature of an IDE for me.

    Reading the API docs comes in second because I have encountered times where the API docs either aren't clear on the behavior, or are just down-right wrong. Also I want to be able to see what a certain API function does for myself and how to apply that API function to accomplish a set task.
    I should have also made this more clear in the original post as well, but this was just my approach, and it seems to have worked for me. I have seen other people really handicap themselves by taking what they see as shortcuts, because in the long run they missed out on a lot of what makes a person a better programmer.

    But other people might have taken different, and completely valid, approaches as well. I only made the post because melawe requested that I do so- in the end, it's up to each person to figure out which approach is best.
    Useful links: How to Ask Questions the Smart Way | Use Code Tags | Java Tutorials
    Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!

  8. #7
    Crazy Cat Lady KevinWorkman's Avatar
    Join Date
    Oct 2010
    Location
    Washington, DC
    Posts
    5,424
    My Mood
    Hungover
    Thanks
    144
    Thanked 636 Times in 540 Posts

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by Emperor_Xyn View Post
    Good to hear i'm new to Java and already a step ahead of people you work with!
    Hahaha
    To be fair, the people I was talking about were people I went to school with, not people I work with. In my senior year of college, it really shocked me how little my peers knew about programming- and I think a lot of that was from relying too much on IDEs to do their work for them. Most of the people I work with are old school C programmers who do everything in emacs or vim, haha.
    Useful links: How to Ask Questions the Smart Way | Use Code Tags | Java Tutorials
    Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!

  9. #8
    Super Moderator helloworld922's Avatar
    Join Date
    Jun 2009
    Posts
    2,896
    Thanks
    23
    Thanked 619 Times in 561 Posts
    Blog Entries
    18

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by KevinWorkman View Post
    I should have also made this more clear in the original post as well, but this was just my approach, and it seems to have worked for me. I have seen other people really handicap themselves by taking what they see as shortcuts, because in the long run they missed out on a lot of what makes a person a better programmer.

    But other people might have taken different, and completely valid, approaches as well. I only made the post because melawe requested that I do so- in the end, it's up to each person to figure out which approach is best.
    True, and it's not like I never learned how to use a simple text editor/command line. It's a valuable skill to learn no matter which you prefer because it helps you understand what happens behind the hood in the build process, especially with classpaths and jar manifests.

  10. #9
    Member
    Join Date
    Mar 2010
    Posts
    271
    Thanks
    21
    Thanked 7 Times in 7 Posts

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by helloworld922 View Post
    I was one of those programmers who did start out with an IDE, but I do consult the API docs a lot, and tested/debugged even more. Learning to debug code well is in my opinion the most valuable assets any programmer can have, which really is the defining feature of an IDE for me.

    Reading the API docs comes in second because I have encountered times where the API docs either aren't clear on the behavior, or are just down-right wrong. Also I want to be able to see what a certain API function does for myself and how to apply that API function to accomplish a set task.
    The debug button is one thing I haven't figured out yet. When I did adventure and click the button, nothing happened. :/

    Quote Originally Posted by KevinWorkman View Post
    I should have made this more clear in the original post, but things like jEdit will do auto-formatting and syntax highlighting for you, without any of the extra bells and whistles. I use jEdit and the command line for most of my Java EE stuff, at least for now.
    Yea I know, but I will use on Notepad since I find it very hard to read code with out syntax highlighting. On the plus side, I wont install anything. I find auto-complete takes more time than typing, but I like the short descriptions it has.

    -Mel

  11. #10
    Super Moderator helloworld922's Avatar
    Join Date
    Jun 2009
    Posts
    2,896
    Thanks
    23
    Thanked 619 Times in 561 Posts
    Blog Entries
    18

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by Melawe View Post
    The debug button is one thing I haven't figured out yet. When I did adventure and click the button, nothing happened. :/
    -Mel
    Debug mode runs as "normal" (actually, it runs slower because it's an un-optimized build, but that's besides the point) until it hits a debug point. If you don't set any debug points, it won't break to let you debug step by step, inspect variables, etc.

  12. #11
    Member
    Join Date
    Mar 2010
    Posts
    271
    Thanks
    21
    Thanked 7 Times in 7 Posts

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by helloworld922 View Post
    Debug mode runs as "normal" (actually, it runs slower because it's an un-optimized build, but that's besides the point) until it hits a debug point. If you don't set any debug points, it won't break to let you debug step by step, inspect variables, etc.
    Sorry but I don't know what you mean. The only thing I understand about debugging is that it spots bugs, or gets rid of them. Thanks for trying to help, much appreciated.

    -Mel

  13. #12
    Member
    Join Date
    Mar 2010
    Posts
    271
    Thanks
    21
    Thanked 7 Times in 7 Posts

    Default Re: When *Not* to Use an IDE

    Hmm, how can you send arguments to a java program? They don't accept cmd arguments.

  14. #13
    Administrator copeg's Avatar
    Join Date
    Oct 2009
    Location
    US
    Posts
    5,320
    Thanks
    181
    Thanked 833 Times in 772 Posts
    Blog Entries
    5

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by Melawe View Post
    Hmm, how can you send arguments to a java program? They don't accept cmd arguments.
    Command-Line Arguments (The Java™ Tutorials > Essential Classes > The Platform Environment)

  15. The Following User Says Thank You to copeg For This Useful Post:

    Melawe (December 26th, 2011)

  16. #14
    Member
    Join Date
    Mar 2010
    Posts
    271
    Thanks
    21
    Thanked 7 Times in 7 Posts

    Default Re: When *Not* to Use an IDE

    Thanks! I read that Java programs don't accept cmd line arguments somewhere; and when I tried it, I was typing arguments after I run it, so the arguments where never sent to the program.

    -Mel

  17. #15
    Crazy Cat Lady KevinWorkman's Avatar
    Join Date
    Oct 2010
    Location
    Washington, DC
    Posts
    5,424
    My Mood
    Hungover
    Thanks
    144
    Thanked 636 Times in 540 Posts

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by Melawe View Post
    Sorry but I don't know what you mean. The only thing I understand about debugging is that it spots bugs, or gets rid of them. Thanks for trying to help, much appreciated.

    -Mel
    The only thing a debugger lets you do is examine the code line by line as it's being run. It doesn't spot bugs or get rid of them automatically, but it does make it easier for you to figure out the flow of a program. But in order to do that, you have to tell the program where to pause and let you take control.
    Useful links: How to Ask Questions the Smart Way | Use Code Tags | Java Tutorials
    Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!

  18. #16
    Crazy Cat Lady KevinWorkman's Avatar
    Join Date
    Oct 2010
    Location
    Washington, DC
    Posts
    5,424
    My Mood
    Hungover
    Thanks
    144
    Thanked 636 Times in 540 Posts

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by Melawe View Post
    Thanks! I read that Java programs don't accept cmd line arguments somewhere; and when I tried it, I was typing arguments after I run it, so the arguments where never sent to the program.

    -Mel
    Either way works- you can pass the command line arguments into the program, or you can read them in after the program starts running using something like the Scanner class.
    Useful links: How to Ask Questions the Smart Way | Use Code Tags | Java Tutorials
    Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!

  19. #17
    Member
    Join Date
    Mar 2010
    Posts
    271
    Thanks
    21
    Thanked 7 Times in 7 Posts

    Default Re: When *Not* to Use an IDE

    Quote Originally Posted by KevinWorkman View Post
    Either way works- you can pass the command line arguments into the program, or you can read them in after the program starts running using something like the Scanner class.
    Ah, thanks. I haven't done anything with that class yet, the closest thing I've done was a program that reads from the console. Not hand made though, it was an example in a book.

    -Mel
    Last edited by Melawe; December 27th, 2011 at 11:53 AM.

  20. #18
    Member
    Join Date
    Jan 2013
    Posts
    34
    My Mood
    Busy
    Thanks
    2
    Thanked 4 Times in 4 Posts

    Default Re: When *Not* to Use an IDE

    Ah, about the last paragraph: I've heard about these Gui Builder thingies but I don't try to use 'em. I don't know how to use one, or what one even LOOKS like, but I'm pretty sure it just does all the work for you.
    I believe people should stay away from Gui Builders, and stick with normal code. I don't know, but if I used a GUI Builder to make JTextEditor, my very own program, it would probably be a nightmare debugging, lol.
    I just use IDEs so I can easily read code with syntax highlight, and for some reason compiling in Terminal (Mac) doesn't work. =/


    When I was a beginner I didn't really use those options in Eclipse, I tried to memorize how to write the main method, which took a while, believe it or not. I first used Netbeans, but it was really complicated and stuff, creating classes threw me off...
    Creating a new .java file and writing
    class WhatEver{
    }

    is pretty easy.