The problem with IDEs

October 20, 2003 | View Comments (8) | Category: Programming

Summary: Why you should not start with an IDE when learning how to program.

Let's face it. IDEs are great for programmers. They save many hours of time by inserting code and generating code that otherwise we would have to type ourselves. They help prevent errors before they even occur and they can help us produce GUIs in the blink of an eye. The problem with them is that they do not teach us how to program.

One of the greatest IDEs ever created has to be Microsoft's Visual Studio.Net. It does so many wonderful things for you and creating applications in it seems only a click of the button away. Microsoft really did an excellent job of integrating XML and the .Net framework into the IDE so everything seems seemless. Before .Net, Microsoft started a mini-development revolution with Visual Basic. This tool allowed non-programmers to quickly get up to speed on "programming" so that they could create their own programs. Granted many of these were not evolutionary or revolutionary type programs, but they did fulfill a purpose and I am sure provided great satisfaction for the people who created them.

Even though Visual Studio.Net allows you to create wonderful applications does it actually help you create great code? Back in the early days of computing when system memory was minimal programmers had to get very creative with how they went about solving problems. Some of the by-products of these developments were many great design patterns and algorithms that exist today. However, because of the IDE I do not think the majority of programmers are capable of getting as creative with their code. With the power of computers and the limitless amount of RAM many times it is not necessary to get creative with code and therefore programmers may be losing their "edge".

First ban calculators

Okay, not really, but look at the damage that could be done if all kids were taught how to use calculators before knowing how to add. It seems that some people today were taught that way and I am sure they stuggle through many things in life. Calculators are great, but not always available. Yes, the calculator says 2+2=4, but what does that really mean? I would never know if I had been given a calculator first without being taught how to add.

Becoming a great programmer requires practice just like anything else that you may wish to become great at. IDEs take a lot of this practice away from us, preventing us from really becoming great programmers. I am not saying IDEs should be taken away or anything ludicrous like that. I just believe that if someone is going to learn how to program give them Vim or Notepad or whatever other text editor you can think of and get them to start writing some code. I mean real code that involves algorithms and requires problem-solving abilities, not code to create a GUI because that task really should be left to IDEs.

Once you have gotten the coding aspect down, then by all means utilize the power of the IDE. However, what is the purpose of learning the functionality of an IDE if you can not understand the code that it generates? Coding, like designing, takes a great deal of practice. Even when you do think you have reached an expert level where you can simply rely on the IDE, every once in a while why not create something in the command-line or using a text editor. It does not have to be a whole program, but maybe a small code snippet like the ones Simon is so famous for. The point is to stop becoming an IDE manipulator and to start becoming a programmer again. If you love to code then these small exercises should not be a problem. That is why you love to program right?

This post got its inspiration from milberus.

Trackback URL: http://9rules.com/cgi-bin/mt/mt-tb.cgi/33

Comments

#1

I agree that IDEs do shield new programmers away from things that they should rightly know (like how some Java programmers have no idea what JDK is, or that their impression of compiling and running is just pressing those 2 buttons in that shiny toolbar).

I do think that shielding is sometimes necessary. I guess it is at the same level as how much coding in a high-level language shields you from having to code in assembly code, and how assembly shields you from coding in machine code (think 011010001). If the shielding helps you without the expense of losing a necessary level of understanding of the workings of the system, only then will it be detrimental. Otherwise, it is OK and very much welcome. No one really wants to code a complex Swing applications using a text editor. If the perfect Swing graphical designer exists, I'd use it - I don't care or think I need to know how it really is implemented in real code.

I do disagree that IDEs do not teach us how to program. I've only had (any real) experience with IntelliJ IDEA and Borland JBuilder Enterprise, but these 2 IDEs have taught me a considerable amount of stuff as I code in them. One example I can think of is how the auto-generation of EJB stubs and methods help me understand how they really should be used, implementation-wise and conceptually (JBuilder's EJB Designer is great stuff, btw!). These IDEs also offer auto-completion that alerts me to the existence of heretofore unknown methods that I'd have been unlikely to unearth just reading the Javadocs, since they're sometimes too big to be easily readable.

Cheah Chu Yeow (http://blog.codefront.net/)

#2

While IDEs can be great teaching tools (I've used them for that myself), they can also be used for "evil", as how Scivs describes them in this entry. While there are people who can resist the tempation of using the IDE to generate code quickly, I am not one of those people.

I tend not to use the IDE features that generate code for me unless I don't know what I'm doing. In that case, I'll have it generate its code, and then I'll look at the code that was generated and see what it's doing, making it better if I can.

Personally, I find that Visual Studio .NET helps me to be more productive. The one feature of it that really helps me is that I don't have to use the C# compiler via the commandline.

Granted, given something with Visual Studio's power does make it easier to "cheat" have it do all the work for you. I guess it just means that Visual Studio users just have to be careful, and not bite off more than they can chew.

milbertus (http://www.milbertus.com)

#3

Chu Yeow: In that regard then it seems IDEs are really just teaching you the intricates of the language and not the concept of programming itself. Having an IDE create EJBs is great and everything, but does it help you understand the object oriented paradigm associated with them?

I also admitted in the post that no one should do GUI code in a text editor. Creating GUIs has really nothing to do with programming to me, aside from some event-handling and such. I guess my main complaint is that you shouldn't give someone an IDE, tell them to create a simple application using the wizards, and then expect them to do something complex later without any programming experience.

milbertus: I agree that Studio.Net can make you crazy fast productive, as long as you know what you are doing. There is no use putting something out fast if I have to fix it a couple of weeks later due to a lack of good coding knowledge.

Scrivs (http://www.9rules.com/whitespace/)

#4

In that case, if you're talking about the concept of programming itself, I don't see how an IDE can hide you from that. I've yet to see an IDE so good that you don't need to know the concepts of programming to be able to code anything useful.

But I admit you're right - it seems the intricacies of the language was what I was learning.

Cheah Chu Yeow (http://blog.codefront.net/)

#5

"no one should do GUI code in a text editor."
Hmm... that's not what you say whenever a webpage is involved. :-)

I'm not a programmer, so I can't comment directly on IDEs, but I really need to point out that notepad sucks ass for everything, including hand coding. There are so many better things out there that can color code and do code completion and debug as you code and so on... anyone using notepad for anything but a quick fix is just *trying* to make their job harder.

JC (http://thelionsweb.com/weblog)

#6

Surprisingly, many people swear by Windows Notepad. Especially web developers.

Me I just roll my eyes at them. :p

Cheah Chu Yeow (http://blog.codefront.net/)

#7

JC: Come on man, you know the difference between a website and a gui application...at least I hope so. If not get a Java book and have fun creating a swing application by hand. It sucks.

As with the text editor it was a very simple example. I haven't used notepad since 1856. Vim rocks my world. Great syntax highlighting.

Scrivs (http://www.9rules.com/whitespace/)

#8

the only web developers I know who swear by notepad are jackasses trying to make themselves look like 'real' geeks. Textpad, yeah. I use that all the time. Notepad I'm more than happy to edit existing code in if there's a small change needed, or I'm just writing a quickie page to do something simple, but if I'm doing any kind of serious work I'd be using textpad or dreamweaver or CF Studio (dreamweaver MX unfortunately left out some of the help info from cf studio that I need sometimes for features I don't use often).

And paul, just teasing you. But a web page is a gui, too, especially if you're doing a real web application.

And I took a short java class and covered some swing code. what a bloody incredible bore. Why anyone would want to code a user interface in java is beyond me. Sure it's portable... but it runs like ass no matter how powerful the system is.

But part of that may be my utter distaste for java. I want nothing to do with it. I didn't even want to learn JSP, but at the time we were told we couldn't talk to the mainframe without it (pre-CFMX)

JC (http://www.thelionsweb.com/weblog)

Keep track of comments to all entries with the Comments Feed