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?"
It's easier to learn the language when assisted by an IDE. Qt Creator is my favorite, followed by NetBeans.
Real programmers use butterflies.
I say this knowing next to nothing about programming. So, I might be incorrect.
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.
See subject.
Its a tool. Used appropriately you're fine.
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?
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
Yes.
"Would you be better off programming with Notepad?"
Um, hell no. If you have to ask... Studio and other IDE's make me more productive. That's their job. If I had to fish for declarations of variables every minute and remember all the intricacies of the language, I would, well, be living in the 70's. If I couldn't use an IDE I wouldn't have time to /. QED
If only Apple has been using an IDE that looked for unreachable code...
Unstable Apps: Our Android Apps Don't Suck
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.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Offhand, yes, you are a less effective programmer if you rely on the IDE. I've seen many "programmers" that get completely lost if the IDE doesn't autocomplete everything for them. They have no sense as to how the program as a whole hangs together. (Note the specific phrasing of "rely on the IDE". Not the same as "uses an IDE". Not using the tool is silly. Requiring the tool is the problem.)
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
Mombrea argues that 'being a good developer isn't about memorizing the language specific calls
As a recent C# convert, I can tell you that for me, it has become quite addicting.
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
There is nothing wrong with using and IDE, that doesn't make you a bad programmer. Relying on an IDE does make you a bad programmer. Lets face it, there is a lot of boiler plate boring crap involved in programming. Using an IDE to handle the mundane stuff makes a lot of sense. But if you can't do your job without it then you are probably not very good at your job.
Using a calculator doesn't make you bad at math. Being unable to do math without a calculator makes you bad a math.
Relying on an IDE makes you a more productive programmer. Programmers who think they're elite because they use some primitive text editor are simply wasting time. If that's your attitude, why are you writing code on a computer at all? Why not go back to punched cards? Or cuneiform on clay tablets?
The answer is: No.
The Kruger Dunning explains most post on
This is just the emacs/vi argument dressed up.
The Kruger Dunning explains most post on
Perhaps if DICE had used an IDE, we could have avoided Slashdot Beta.
Perhaps a better question might be what is the best way to teach someone how to code? With or without an IDE? The first language I learned in college was C, and we wrote C inside of pico. It was a huge pain in the ass, but it made you have to know what you were doing. If I am writing C# these days, I love the auto-complete features in Visual Studio. I wonder though, if I had learned in an IDE first, would I be less likely to use a language that maybe doesn't have an IDE? When I build UI's in Visual Studio, I just use the drag and drop system. I dislike having to go and edit those generated files when I need something to be a particular way. Assuming everyone is as lazy as me, I would wager that someone that has only used an IDE is considerably less likely to try their hand at a new language if doesn't have an IDE.
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.
Yes. If you were a Real Programmer (TM) you'd focus your mind and flip bits on the motherboard.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
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.
Being a bad programmer is a state of mind, leave the tools of the trade out of it.
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 can get the job done and get a paycheck what difference does it make?
love is just extroverted narcissism
I can tell you from experience from the development side of things that having a good IDE and proficient knowledge of it's features can greatly improve productivity of a team. You still need to know how to compile at a low level and what the various link and compiler options are and you should know how to use a native debugger but if you want to be productive and not worry about the minutia of details then use one. An IDE doesn't make you a better programmer but it does make you more productive and you can focus on learning those nuances and skills within the chosen programming language more easily, allowing you to gain more proficiency.
The whole "you don't need an IDE" may be true but it's like hunting bears without a rifle. Sure, you can hunt bears without a rifle but if you have one it's much easier and you get less bloody.
Harrison's Postulate - "For every action there is an equal and opposite criticism"
I'm surprised that so many of the comments for IDEs are restricted to things like autocomplete. IDEs do far more than that. Things like smart refactoring (beyond GREP/Replace), code searches and navigation (find references, go up and down the object hierarchy, find impls), and debugging (attach to remote process, breakpoints, etc).
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."
But that's a one time cost, while maintaining makefiles is a many time, extremely high cost.
He's explaining it wrong and its detracting from his point. Webforms was basically the server side ancestor of the currently very popular AngularJS. Pieces of functionality (not just UI) were encapsulated in components ("web controls") that had their own life cycle, would ensure ids were unique, could contain their own css and scripts in their own DLLs.
You'd then drop them on a design surface (or stick them in XML code), sure. But that was just a convenient way of inserting the snippet. You weren't designing your app Front Page style or anything, it just didn't work for anything meaningful.
The issue here is with the framework providing an overly complex leaky abstraction over too many things, and the issue remains if you use Emacs to do it. Again, case in point: the problem is absolutely there with AngularJS. But since you don't drag and drop the controls there, and it has a marginally better architecture (ie: its not dog slow), people feel better about it...
Too many people confused the IDE with the framework (TFA contrasts PHP, a language with a web framework that revolves around pure text rendering, usually wrapped with 3rd party MVC frameworks, to a heavyweight component based framework). It would be kind of like blaming a Ruby on Rail IDE for a programmer's reliance on Rail's scaffolding.
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.)
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.
But that's a one time cost
It'd be a one-time cost if all projects used the same graphical IDE. It's not one-time if you have to obtain Eclipse for one project, Code Blocks for another, Visual Studio for a third, CodeWarrior for a fourth, etc. A lot of the IDEs' project file formats don't diff well either, which makes them harder to handle in version control.
in XCode the extensive LLVM warnings can reveal a lot of issues that pertain to incorrect usage of the computer language, not just the APIs.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
probably too late to jump into the discussion but I work with several developers who shun the use of IDEs, they're all 'VIM or die' mentality. The funny thing is their code is full of problems, from undeclared objects to undefined variables - all over the place. Much of the code is completely untestable and I'm constantly cleaning things up because my IDE picks up the stuff they missed because they are all gungho hacker devs. Bad developers exist regardless of what they write code with. I like my IDE personally, integrated debugging tools, code hint/completion and built in stuff like LINT make it easier for me to get actual work done.
I have been using visual studio professionally since version 1.5 on windows 3.1, ie: 20yrs. I do not write (serious) .net programs and never have, VS is not the only IDE I am familiar with, but it is my favourite with "eclipse" a close second.
You sound like someone who tried it once, found it was different to the QT you love and gave up. If you want a job coding you would be wise to explore it a bit deeper than you have. Not suggesting you give up QT but in my (considerable) experience you often don't get a choice of IDE when you take up a programming job. For example: The large code base I currently manage and help maintain is cross-platform C/C++ which aside from running on win32/64 and windows itanium, is also expected to build and run on various flavours of linux, sun, hp, and aix. I'm not going to change all my build scripts just so the new guy can build a private development version with QT, nor will I pay for a commercial QT license when the department already has an MSDN subscription that comes with the defacto industry standard IDE for windows.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
From personal use/observation - they are helpful to get you up and running on a new language or one you have not had much exposure. They catch errors, help with syntax and api calls. But after a certain point they start to become more of a crutch.. almost training wheels. On reason for taking the training wheels off is to prove you actually can ride the bike. The same might be said of an IDE - after some period of time (months? years?) are you able to code without it? Do you really know what it is you are doing? Is the IDE holding back your own creativity?
Every each case is different, there is no black and white on this but I do think it may be worth stepping away from an IDE from time to time just to make sure you've not become over reliant.
Does driving your car make you less able to walk?
Does turning on the tap make you less able to dig a well?
What do you want? Do you want us to only write 1's and 0's to prove how "pure" and "clever" we are!
Of course IDE's are better. They are designed to make us more productive. Yes, some people are very happy with vi or emacs. Good luck to them.
But IDE makes better programmers because they can focus on the problem they are trying to solve rather than truing to remember the exact syntax and semantics of how to do it.