Does Relying On an IDE Make You a Bad Programmer? 627
itwbennett writes "Writing about his career decisions, programming language choices, and regrets, Rob Conery says that as a .NET developer he became more reliant on an IDE than he would have with PHP. Blogger, and .NET developer, Matthew Mombrea picks up the thread, coming to the defense of IDEs (Visual Studio in particular). Mombrea argues that 'being a good developer isn't about memorizing the language specific calls, it's about knowing the available ways to solve a problem and solving it using the best technique or tools as you can.' Does using an IDE make you lazy with the language? Would you be better off programming with Notepad?"
No (Score:3, Insightful)
It's easier to learn the language when assisted by an IDE. Qt Creator is my favorite, followed by NetBeans.
No... (Score:5, Insightful)
It makes you a bad programmer in the same way that using an automated spell checker on your novel makes you a bad writer.
i.e. not at all.
Does using a saw make you a bad carpenter? (Score:2, Insightful)
See subject.
does relying on a hammer make you a bad carpenter? (Score:2, Insightful)
Its a tool. Used appropriately you're fine.
IDEs are good. UI builders are bad. (Score:5, Insightful)
No (Score:5, Insightful)
Programming is not about rote memorization (Score:5, Insightful)
Look, it's nice when you are well versed enough in a language to not have to lookup method/function names, nor their arguments. But let's face it, it's hardly the mark of an amazing programmer to have a photographic memory.
Programmers solve problems. Being able to understand the problem well enough to develop a solution for it is far more important a skill. Writing well documented code using a uniform style further boosts the quality of the output by helping make it maintainable.
An IDE is, at worst, neutral in this regard, if not beneficial for assisting in the last point.
Anecdote (Score:5, Insightful)
Fly By Wire (Score:3, Insightful)
IDEs are to programming as anti-lock brakes and Traction Control is to driving, as fly-by-wire is to flying, as any assistive technology is to anything else.
If they didn't exist, someone would write one because they are so useful.
Re:No (Score:5, Insightful)
Wouldn't this be more of what the API has available? IDE's don't really help you learn the language, beyond semantics, but they are extremely helpful with providing contextual information about API calls.
Yes (Score:3, Insightful)
Yes, if you rely on boilerplate code it generates. (Score:4, Insightful)
Also, "Would you be better off programming with Notepad?" No. A decent text editor is a must. Many programmers who "don't use IDEs" actually use text editors which are actually more powerful than many IDEs.
Re:No... (Score:5, Insightful)
I would argue that it's more like relying on Word's grammar checker. The suggested way may be technically correct, but you should still know when the IDE isn't doing it the right or best way. And sometimes something is correct in the local context but incorrect in a larger context.
New IDEs (Score:4, Insightful)
They're just tools. (Score:5, Insightful)
I'm glad somebody tagged this "idioticstory" because it is. Developers use whatever tools are available. Sometimes if the tools aren't available, they write them themselves. I've used development tools of one kind or another over the last 30+ years, and there are a few I've written myself. Frankly, I think that if you don't use development tools, and don't ever think about writing your own, you're a little like the clueless user who just knows, "I click here, then I click here," without any understanding of what they're really doing or trying to accomplish.
The use of complex tools is what separates us from the rest of the animal kingdom.
Re:IDEs are good. UI builders are bad. (Score:4, Insightful)
Re:No (Score:5, Insightful)
Actually, "learning the language" is the one time that an IDE is not the best choice. That's the time you should be trotting out Notepad and developing the skills and familiarity with the language itself.
Once you've mastered the language, the IDE serves as your reference tool, your refactoring tool, your formatting tool, your reading tool, your analysis tool, and even your testing tool. It makes simple things simpler, which is too simple for someone who doesn't understand the original simplicity.
A good IDE is a speed enhancer for good programmers. An IDE does not make a bad programmer become a good programmer.
Look at it this way: would you give a toddler a pair of crutches in order to teach him to walk?
Does CAD make you a worse engineer? (Score:5, Insightful)
The answer is: No.
Re:No (Score:5, Insightful)
Look at it this way: would you give a toddler a pair of crutches in order to teach him to walk?
That is an astonishingly bad analogy given the popularity of toddler walkers [amazon.com] and the fact that every child while learning to walk starts buy pulling themselves up next to something and scooting along it's length.
Re:Programming is not about rote memorization (Score:4, Insightful)
Just because your degree was memorized, doesn't make memorization an objective good.
If I can be as productive (or more) then a memorizer by using autocomplete (and knowing more or less what the necessary function calls are if not the operand order) then I've just saved the time used in memorization. Also the autocomplete guy will be productive while the memorizer is still hammering soon to be obsolete information into his brain.
Henry Ford Sr used to ask prospective engineering hires trivial technical information. If they knew the answer he wouldn't hire them, if they told him where to look it up he did.
Re: No (Score:5, Insightful)
Exactly. This is the way they teach the basics of the language you learn in school. This is why you also get tested on the basics of a language like variables, datatypes, and polymorphism.
If you never learned the basics ie foundations of programming, you will never use these fundamentals in any of that IDEs you use. I've seen it happen, somebody hasn't learned how to properly separate code functionally and it's all throwing together. They would do this in notepad or they would do it in eclipse or visual studio.
Your knowledge, skill, and experience make you the type of programmer you are. Good or bad.
Re: No (Score:5, Insightful)
Frankly, I don't think what they aid with at all is learning the language (beyond perhaps hovering over core statements like for loops and the like to give you basic syntax). What they do aid with is familiarizing yourself with libraries, but before you delve too far into libraries in any language, you should understand the language itself.
No (Score:5, Insightful)
Whether or not you use an IDE ought to say very little about how good of a programmer you are.
What makes a good programmer is someone who can produce stable, maintainable code in a reasonable time frame and someone who isn't worried about getting fired in order to fight for these goals. One part of maintainability is readable code and the other part is being able to communicate what you've done through documentation, written or oral.
Over the decades I've found that it makes no difference what tools you use, or what your age or educational or cultural background is. It doesn't matter so much whether you write few or many tests. You need to be patient, stubborn, thorough, curious, a problem solver, a voracious reader, and a great communicator to be a great programmer, and you need to have been doing it for at least 10 years. But companies should not shy away from helping to give someone those 10 years, because the best programmers will still do good work early on in their careers.
If you write code that just works but is unmaintainable by anyone and you hole up to write your code and you have no ability to communicate what you have done then you are a horrible programmer and you should be fired. There is a myth among some people that these are actually great programmers. These types of programmers tend to be, but are not always, extremely well qualified in terms of their educational or other experience but they make life difficult for all the other programmers that have to maintain their fragile junk. Fortunately, this type of software is less common in the free software community because this type of programming is called out.
Re:No (Score:4, Insightful)
Look at it this way: would you give a toddler a pair of crutches in order to teach him to walk?
That is an astonishingly bad analogy given the popularity of toddler walkers [amazon.com] and the fact that every child while learning to walk starts buy pulling themselves up next to something and scooting along it's length.
Or maybe it's a really good analogy, just a bad argument. That sounds more like it to me.
Re:Anecdote (Score:5, Insightful)
I realize how much time I wasted trying to debug things with many calls to system.out.println
The point of your university course was not to maximize your output productivity, but to teach you how to program.
For example --
For my first calculus course in university I had to manually evaluate derivatives and integrals. Now that I know how to use Maple, and matlab, and R I realize how much time I wasted.
Right?
Well, sure, but the goal of the calculus course was to teach me the math, with no eye whatsoever toward generating the answers as quickly as possible.
Writing code manually in a text file, compiling it to object, linking it to an executable, and debugging it with println teaches you how things work under the hood. Picking up an IDE later on lets you leverage all the power that tool gives you, but still, in the back of your head, you know what's going on. That's valuable.
While the IDE can be a little overwhelming at first, programming without a proper step-through debugger is painful.
Ironically, a debugger "originally" is a separate thing, you can attach it to a running process, load a symbol table, set breakpoints etc. Its great that they are part of IDEs, but this invaluable skill of working with a debugger separately is frequently overlooked.
Re:Notepad has the same problem as an IDE. (Score:4, Insightful)
IDEs are 80/20 solutions.
Typing speed is squarely in the 20. Hunt and peckers? No, but I may as well be. On a 1 month project, there's probably, what, 8 hours of typing at most? Even if you could make me type so god damn fast that I would type the entire code -instantly-, that would only save 1 day of work. The biggest part is the thinking, discussion, architecture, the stuff you don't even need a computer to do.
Then once you sit down, its about reading the code, analyzing it, re factoring it, debugging it. For all those things, typing is almost irrelevant. If your typing efficiency actually makes a dent in your productivity in the grand scheme of things, your job is probably outsourcable.
Now, as I mentionned in another post, in some type/size of projects, IDEs like visual studios may actually slow to a crawl to the point that non-typing-related tasks may get bogged down by performance and inefficiency. Then yeah, its time to switch editor.
But until then? If you can type 30 character per minute and are doing something significant, you're probably not slowed down much.
Notable exception for prototyping and testing out snippets in unfamiliar environments (like when learning a new programming language). You're likely to type/run/type/run/type/run a LOT.
Re:No (Score:4, Insightful)
Use something like Resharper in Visual Studio and you can learn a lot about the language, as it offers loads of little "this code block can be refactored this way for this reason" hints - shows you just what can be done and why.
Probably not. (Score:4, Insightful)
Please Stop. (Score:5, Insightful)
99% of the time if you hear someone questioning the utility of using an IDE, notepad was never in the running as a serious option to begin with. Just stop it. Don't say it's name. Notepad is a 24 year old joke stuck in the 90s feature-wise. The runners are programs like Sublime Text, BBedit, Text Wrangler, gedit, Jedit, notepad++, or even vim.
Just because someone tells you that you should drive your car less doesn't mean they are forcing you to walk everywhere you go on your feet. You can bike. You can ride your motorcycle. You can ride the bus. You can ride an electric bycycle. You can rollerblade. You can ride in someone else's car. You can ride the train. You can fly in a plane.
Anyone mentioning Notepad seriously in their comments on this article has no knowledge of what a proper text editor is and have an apathy to find out so they can actually contibute meaningfully to the conversation.
Who cares? (Score:4, Insightful)
If you can get the job done and get a paycheck what difference does it make?
No, it makes you a great programmer (Score:2, Insightful)
This is a perfect article for the 80's. You know, when computers had less computing power, less space, well less of everything. Yeah, in those days you could know a whole API of some library. Hell, you could know everything about programming the IBM PC (or any of its compatible clones). Secondly, you didn't have to write that much code because you couldn't write that much code. Remember, computers paled in comparison to today's machines. Your application fitted on a floppy. It does not require a DVD to install. Sure, in those days, you had no excuse if you couldn't cut it with vi (or your favorite text editor of choice).
IT'S 2014 FOR CHRIST'S SAKE! With the tremendous computing power we have today software has grown leaps and bounds. There are many APIs to know, and some APIs are large (like they have mini-APIs hiding inside). The programs we write are very large in size because they are feature rich. Maybe we aren't writing each line of code, but we construct programs module by module and they end up becoming very large because today's users take for granted a minimal set of features that would be considered Star Trek advanced back in the 80's. IDEs are not a crutch for dealing with millions and millions and millions of lines of code, it is a necessity. I'd really like to know how anyone could manage today's software with vi. Yeah, it could be done if you didn't value your time and had nothing better to do in life.
I look forward to tomorrow's article titled "Does relying on the web for reference material make you a bad programmer?"
I can't wait for next week's "Does relying on industrial equipment make you a bad skyscraper builder?" And here are some comment's from next week's article:
"My daddy used a hammer and a saw. Why can't today's construction workers do the same thing when building the Burj Khalifa?"
"Yeah, I second that. They build the pyramids with sand, water, and good ol' elbow grease. Technology makes us weak and unskilled."
"Guys, it took a long, long time to build the pyramids. It takes less than a decade to build a modern skyscraper. This is not exactly an apt comparison"
"Shut up, idiot! No true construction worker needs heavy machinery. You must be gay."
Re:Does using a saw make you a bad carpenter? (Score:5, Insightful)
If you're a bad carpenter, I suppose a powerful saw could make you a worse one. At least it allows you to make a bigger mess.
I've been a programmer for over thirty years now. When I started out, programming was about figuring out how to do things. Now it's much more about figuring out how to get someone else's code to do something. This shift was probably inevitable, as we try to get systems to do more and more. Very few of us have the luxury of being able to get away with just reading section 2 and 3 of the Unix manual; now we need to work with frameworks.
It's not like back in the day when you could code your own alternative to qsort as long as it worked; working with a framework's facilities is mandatory if you want the framework to do all the magical under-the-cover things it is supposed to do. We used to read the Unix manuals cover to cover from section 1 (commands) to section 7 (special files). Compilation and linking takes forever on a CPU running in the single digit MHz range, so we had plenty of time on our hands. That small but complete knowledge set, plus emacs, and we were cooking with gas.
These days you'd need to have loads more *static* knowledge to really know the APIs you're working with.So having things like pop-up parameter entry and a manual for the framework integrated into the IDE is nice.
But for me, the thing that finally got me away from emacsfor good was refactoring support in IDEs. And that's where the power saw analogy comes in. Refactoring is powerful, but it's also possible to drop down the refactoring rabbit hole and waste a lot of time frobbing around with the code. Refactoring is part of a suite of best practices that have to be implemented together (including source control, unit testing and project management). A clumsy and careless programmer can do a lot more damage with a powerful IDE, a skilled programmer can get more done.
It takes a lot more discipline, knowledge (of the know-how variety), and professionalism to be a good programmer these days. Back in the day there were very good programmers, and *terrible* programmers, and not much in between. These days there are more programming jobs than there are people gifted at programming, so what you see is a lot of mediocrity. Consequently all those powerful tools are neither a panacea nor a plague. Mediocre programmers will produce mediocre results no matter what they use.
Re:Please Stop. (Score:5, Insightful)
Re:Proprietary vs. free build system (Score:4, Insightful)
But that's a one time cost, while maintaining makefiles is a many time, extremely high cost.
It depends. (Score:5, Insightful)
If the IDE is helping you catch typos and quickly dig out references like method names, that's one thing.
If the IDE is providing so much scaffolding for your project, "wizards" and such, that you don't actually understand what's going on, that's another thing.
(I've seen both.)
Re:does relying on a hammer make you a bad carpent (Score:3, Insightful)
Using it to help you do a task you cannot do without it.
I.E. when the IDE fails to help you can you still do the job?
I'd liken it to a surgery robot. I as a non-medically trained person should not assume this will let me perform surgeries.
But it may help a skilled surgeon quite well but he can take over if the robot crashes where as I cannot.
Sadly I see most using the IDE as a normal person trying to code like a developer.....
Personally I use a combination of Vim+Nerdtree+tagbar for C/C++/Python and eclipse when forced to deal with Java. I'm also a believer that Java nearly requires the IDE purely because it's grown into a bloated mess that can barely be managed without one.
But real languages and such.... nah just use Vim and properly open the documentation for whatever class you are using instead of typing SomeClass(DOT) and waiting for the IDE to tell you what's there.
When doing C++ coding for instance you cannot just be happy "knowing" what functions are available... You need to know return codes, what headers those are found in, are they typed or enums, etc. Then all the quirks like if this function is thread safe, signal safe, block/wait free, etc.
If you are just blowing through using the IDE without knowing all those things I'd say it's hurting you more than helping. Cannot tell you how many bugs I've fixed where I was just being a tard and expecting some function to do A when clearly in the documentation is some text saying not to pass a B into it... and surely enough I've passed B.
I'd bet that moving to Vim for C/C++ development did more for my actual programming chops than any "shortcuts" eclipse provided. That an learning command line git after years of cvs/svn. That too really helped.
Re:No (Score:3, Insightful)
Learning the language with a notepad is IMO a really bad idea. I will give an analogy that I think is appropriate.
I am renovating our houses. In the past you would use a hammer and nail to assemble the wood. These days you don't. You use a cordless power drill with screws, and glue. I was talking to my sister and in Ecuador they do as well as their areas are earthquake prone.
My point here is, would you teach somebody to build a house with hammer and nails? Answer no, because it is a passe art. Now before you all start jumping on me on houses built with nails, that is to save costs. Anybody who wants a quality house will use screws and glue. Likewise notepad, VI, emacs are passe arts. Good at the time, but not usable anymore.
Re: No (Score:5, Insightful)
I don't think so. An IDE is not supposed to help you discover a language or a framework, but rather provide you with a workflow that makes you as productive as possible.
In fact, I've found that trying to learn a language or framework via an IDE can be a very bad thing indeed.
First, because you don't really learn how the language/framework works, you learn how the IDE's generators and editors work. And frequently automated code generators create some really awful, unnatural code, because they're using one-size-fits-all models rather than intelligence.
Secondly, because even with one-size-fits-all, there are a lot of features and capabilities in most languages/frameworks that won't be supported. And when someone who's used to having the IDE do all the work tries to go in and manually remedy the situation, the results can be horrible.
An IDE in the hands of people who know what they're doing can be a tremendous productivity aid.
An IDE in the hands of cheap untrained monkeys hired because management thought that the IDE could replace experience, skill, and talent is disaster on the hoof.
You can tell which is which by swapping out the IDE with Windows Notepad. The skilled people will slow down and grumble about having to do everything the hard way. The monkeys will sit around idly weeping, because without the crutch that an IDE affords, they don't know what to do.
Re:Please Stop. (Score:5, Insightful)
Anyone mentioning Notepad seriously in their comments on this article has no knowledge of what a proper text editor is and have an apathy to find out so they can actually contibute meaningfully to the conversation.
There's a difference between a text editor (and proper or not, Notepad is one) and a code editor.
IDEs like Eclipse have multiple code editors for different uses such as Java, C, SQL, Python and so forth. In the case of Eclipse, they're usually plugin options.
Emacs provides code editors but calls them "modes".
The point is, that a text editor can do generic text, but if you want to type in API calls and generic code, you have to type it all in yourself. A code editor is sensitive to the desired product and can suggest auto-completions for API calls, plug in boilerplate and the like. Back in the Bad Old Days, all we had to create code with was text editors and a stack of manuals printed on processed dead trees. And we liked it. At least until IDEs came along and we liked that better.
Then there are code "wizards", which are another species of skunk entirely.
Relying on an IDE doesn't make you a bad programmer. But if you are a bad programmer, you don't just rely on an IDE, you depend on it.