Hacker News new | ask | show | jobs
by learning_still 3915 days ago
Excellent article. The one thing I disagree with is IDE's. I think that they actually present an overly complex interface that is daunting to the new user, not helpful. Ditching IDE's and switching to a text editor and CLI has made every aspect of programming easier for me to understand. As a new user, the price I paid to be able to click a button and run my program, was far greater than the price of learning how to run it from a CLI. I wish I had listened sooner to all the people telling me not to use IDE's.
7 comments

When you say "IDE" you're probably meaning something like Visual Studio. Ok, fair enough.

Now think about something like HyperCard. That's an IDE. It's eminently usable and learnable (even friendly), and yet still does all the things an IDE does.

"IDE" doesn't have to be Visual Studio. There have been friendly IDEs in the past, and there's no reason they couldn't be built today except nobody's doing it. There's actually a nasty trend in software development right now that can be summarized as "they're programmers; they don't need usability or discoverability". Look at Git for an example. Ugh. This trend can not die quickly enough for me.

I find git extremely usable, and I despise IDEs that hide anything from me.

Every hidden thing is a thing that, when it goes wrong, I can't fix. Something "goes wrong" when it's either not working as designed, or it's broken as designed and needs to be reconfigured or otherwise changed: The IDE handles the wrong language, for example, and needs to use a different compiler and have different highlighting and formatting rules.

IDEs that only handle one language are beneath contempt.

Sounds like you're a power user, not a novice.
> Sounds like you're a power user, not a novice.

Smile when you say that. ;)

"Power user", to me, means someone who knows a lot of trivia about specific software but no underlying theory; none of their knowledge transfers to any other system, so their domain knowledge is constantly being obsoleted. Having some power user traits is inevitable and desirable, but being just a power user is a stage you should strive to outgrow.

I admit that that's just a knee-jerk reaction based on my idiosyncratic definitions.

I completely agree with you. This problem with IDEs is not in the concept but in the way in which it is most often executed.
I agree with that to an extent. IDEs are certainly a powerful tool at some fuzzy point in your programming career when you've had enough of the ancillary details and want an environment to help you code. Most IDEs are a distraction to just learning, however, and VB in particular helped me construct a world view where everything in the computer was some big black box I couldn't hope to figure out. Of course, part of that might have been trying to develop on Windows too.
I agree with rileymat on Visual Basic, version 6 especially. Combining that with partly made apps lets people learn the stuff incrementally as they need it. You don't need to know the IDE past step-by-step instructions on adding, compiling, etc. People even temporarily dodged the debugger with the dreaded, but useful, debug-by-print-statements method.

The 4GL's like WINDEV made this more the case. We saw it on the command line side with COBOL. That and what happened with 4GL's in general should be a lesson that whatever we build for new users better (a) be consistent with more powerful stuff, (b) easily integrate third-party code, (c) be easy to port, and (d) do good practices by design in case we're stuck with it for 50 years. :O

This.

I liked the debugging features of IDEs when I had to maintain a gigantic PHP codebase. The hours I stepped through code after one click :D

But after I started with JavaScript, which brought graphical debuggers inside the runtime (Browser) I didn't need this feature anymore...

Also IDE get features slower, Atom and Sublime often have more up to date plugins, which allows the use of more alternative languages like LiveScript.

It may cause future problems, but things like Visual Basic with the graphical interface are very easy for a child to understand (or at least me). As the artifacts that you are interacting with in the GUI are in the programming environment.
I think it's much simpler to learn 10 commands in the terminal and use text files than try to grasp what's going on in an IDE. I understand the corner case for GUI building. My first language was C# and this is how I learned how to program. I had no idea what was going on. I had no idea how events worked and the Property Inspector seemed to have a million nuances. I didn't care about learning how to program. I just wanted to make my ideas a reality. The result of this was a lot of frustration. I would say if you are just trying to get something done. You have a product or an idea that you just need to make a reality as soon as possible. If you don't have the patience to wait a month before you can make a GUI, then sure IDE's will do a lot of things for you. But if you plan on programming for more than 6 months, it's worth it to do it the simple way, that makes sense to you. Even if that means you won't be able to get a GUI up and running in 5 seconds.
> I think it's much simpler to learn 10 commands in the terminal and use text files than try to grasp what's going on in an IDE.

This is true IMO. However you don't need to understand what the IDE is doing to use it now do you? A new user needs to learn nothing more than how to use the project creation wizard, and hit the play/stop button button.

As someone who teaches high school children how to program I assure you from experience and an IDE is much, much simpler than diving into the terminal.

But that's the point. I didn't need to understand 10 commands in the terminal to run the application. A very small barrier. What IDE's did was create a huge barrier between me and all the other programmers. If something broke or I needed to learn something new, it was all in the context of this magical black box. I wasn't learning how to use my computer. I was learning how to use someone else's program. I could get from point A to point B without knowing what was going on, but ultimately that just caused a lot of frustration. How long would it actually take you to teach a student to compile and run a program written in C?

This example requires the user to be able to do the following that an IDE would not:

- copy paste a file path to the terminal

- cd [pasted filepath]

- make [file name]

- ./[filename]

http://c.learncodethehardway.org/book/ex1.html

Versus throwing them into a black box where they are overwhelmed with buttons and gizmos and are encouraged to give up on the idea that they will ever know what's going on. Do you honestly think it's not worth the time to teach students how to use the terminal?

Then you have to learn how to write makefiles, which means you need to learn at least a little bit about gcc.

Oh, you're on Windows (like 90+% of normal computer users), well there's this thing called Mingw, or you can use Cygwin, which you use in this thing called a command-prompt, which you've probably never used before. Oh, and make sure you have your PATH environmental variables setup correctly. What's an environmental variable?

It's all turtles. Much easier to open Visual Studio, add a project, type out a main method, and hit compile & run. It's a shame QBasic isn't around by default anymore, limited as it was. Which, come to think of it, was a stripped-down, basic IDE.

All anyone needs is a text editor and a compiler :-)
That's too easy, man. Punch cards and machine language, is what builds character ;)
I've used punch cards. I prefer a text editor.
when you are dealing with a small project notepad++ might be fine but large codebase and frontend development it would be counter productive to not use IDE

The 'complexity of IDE' is overrated. Once you've memorized the hot keys, it makes a world of difference, running grep to find a piece of code you don't remember hidden under layers of inheritence. You are setting up for failure if you act like a luddite.

The article is about why so many people were able to customize their myspace pages but not their internet browsers. It's about the transition of a new user to that of a programmer. My response is in the context of the article. It has nothing to do with whether or not IDE's are good or bad for advanced users with large projects.