Does Relying On an IDE Make You a Bad Programmer?
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?"
Real programmers use butterflies.
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.
Who ever said using an IDE is bad? IDEs are powerful tools that improve developer productivity. The problem with the older generation of IDEs (especially older versions of Visual Studio) was that they focused too much on graphical UI builders that produced brittle, often subtly buggy UIs and unreadable code and encouraged the writing of spaghetti code. Remove the useless UI builders, and you are left with syntax highlighting, code completion, code folding, incremental compilation, and lots of other useful tools that increase productivity.
I remember the days when all real programmers needed was a magnetized pin and a steady hand *puffs pipe*
Tubby or not tubby. Fat is the question
An using an IDE doesn't make a bad programmer any more than using a table saw makes a bad carpenter. It's just a tool, if it can help you be more productive, why shouldn't you use it?
I agree. With a good IDE, is easier to discover all the language can do.
Religion: The greatest weapon of mass destruction of all time
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.
Mod me down with all of your hatred and your journey towards the dark side will be complete!
When I was in college, I started immediately with an IDE - largely with no development experience. This was a struggle because the IDE was doing things that I did not understand. Ultimately, one of the elder geeks (a properly bearded and pony-tailed Yoda) suggested that I start at the beginning and develop with a text editor and the command line. This worked. Once everything was properly understood, the IDE is useful for saving time and catching typos. But I still need to "go back to the beginning" in order to find out what I am missing sometimes.
More
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.
XenoPhage
Technological Musings
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.
Up next: do you really need source control?
sic transit gloria mundi
The problem I see with IDEs like VS is that the hide a lot of complexity to programmers, which is good to boost your productivity, but the fact that you don't really know what's going on inside can back-fire if you are starting as a programmer. I've always thought that it's a good thing to do low level tasks at the beginning so you can build yourself up and don't depend on a specific tool.
Open Source Network Inventory for the masses! Kuwaiba
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.
Proverbs 21:19
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?
John
The answer is: No.
The Kruger Dunning explains most post on
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 and the fact that every child while learning to walk starts buy pulling themselves up next to something and scooting along it's length.
I don't have experience where 100% of what I do is programming, but at times, up to 25 or 30 pct of job was coding, and without an IDE I'd be lost. I can never remember any of the semantics of a given language (and I only use VBA and Python), but I do remember roughly what a language can do and an IDE makes it a lot easier for me to find the exact wording of a call, capitalization, etc.
I'd be miserable in notepad, getting hung up on typos, or an extra space that gums up indentation. IDEs allow a lot of folks like me who don't program full time to be able to code useful algos when we need them and walk away, not worrying about the time it takes to re-familiarize myself with a language.
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.
Perhaps if DICE had used an IDE, we could have avoided Slashdot Beta.
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.
The world's burning. Moped Jesus spotted on I50. Details at 11.
I think a better analogy is that an IDE to a developer is more like a CNC machine to a carpenter.
It's possible that a CNC machine can allow an experienced carpenter to do his work fast and efficiently.
But for an unskilled carpenter, I see two possibilities:
- the carpenter may limit his designs to what the CNC machine can make (no curved wood objects for one example)
- the fundamentals of carpentry might be ignored (like the properties of natural wood, growth, shrinkage)
In the context of an IDE maybe like:
- only build on one platform
- only create products the IDE way (maybe creating "apps" instead of minimal command line tools or OS internal things)
- allow the developer to ignore corner cases that are abstracted away with IDEs (memory management? interrupts?)
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.
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.
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.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Then it seems you do remember something about the language's semantics. Maybe it's the details of syntax you're forgetting?
"The use-mention distinction" is not "enforced here."
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.)
Back in the 80's I wrote a lot of code for my Commodore 64 on paper which I would type in later when the computer was available to me. I was in college a few years ago and was required to take a class on Visual Basic. Everyone is class was new to programming or learned with a fancy IDE. We had a test where we had to write a few routines on paper for a test.
Most students had no idea how to form a line of Visual Basic code. They would just start to type the statement and let IntelliSense give them the proper parameter list and then they would just fill in the blanks. This means they were lazy on if a statement used : or ; or if a variable was one-counter or one_counter or OneCounter. It was a disaster. out of 60 students I was the only one who passed that part of the test.
It is not that I am against IDEs. But having worked without them, and having to do the edit-compile-execute-debug loop, I conceptually understand what the IDE is doing for me. I have done the heavy lifting and I appreciate what the IDE does.
The best way to learn what the language can do, is to set down with a manual that has all of the commands and with simple examples, and read it whenever you are in the bathroom. It is much less boring reading something like this when the only competition is staring at the floor.
vi +
Comparing Notepad to vim or emacs is like comparing Mayim Bialik to Kaley Cuoco.
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
... 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.
Oh good -- I was worried if and when Clippy would find work again, what with the husband and little staples to feed.
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.