4 ms·
Wait, what? OP claims that we are bad programmers because we use too many tools: We can't remember all the methods our code needs to call, so we use autocompl
by edw519 16y ago
Wait, what? OP claims that we are bad programmers because we use too many tools:
We can't remember all the methods our code needs to call, so we use autocompleting IDEs to remind us.
and then recommends using tools to become better programmers:
These tools flag common mistakes... really common mistakes.
I know I'm in the minority because I've had this debate with almost every programmer I know, but I do not use an IDE for exactly this reason. I want the "firmware" that knows how to assemble building blocks of code to be in my brain, not in my computer. To me, writing code is like driving a stick shift, for much of it I don't even think, it's unconscious competence. Can you imagine driving a car with auto-complete, color coding, or drop down menus? To this day, I get pissed off when something doesn't compile the first time, usually because of a typo.
There's a time and a place for every tool. An IDE or test suite is like a back brace or crutches; they are indispensable when you really need them, but they only weaken you when you're healthy. I guess I draw the line in a different place from OP (and almost everyone else I know).
- RyanMcGreal 16y ago>OP claims that we are bad programmers because we use too many tools I took from the essay that the tools we use are evidence of our bad programming ability, not the cause of it. Incidentally, I mainly code in gedit, for much the same reasons you cite.
- DisposaBoy 16y agoI dislike IDEs for all their features which for the most part I think just add clutter, since I've ever found a use for most of them like debuggers etc. but I'll admit that they are useful if done right and can bring a productivity boost. When I have to write things like: strstr($str, $delimiter) and explode($delimiter, $str) Netbeans ctrl+p comes in very handy in re-enforcing my choice of arguement order because if I make a mistake that's a very subtle bug waiting to happen. or when I have to wrote things like: g_file_new_for_commandline_arg who wants to type that out when they don't have to? or this over and over: AStudpidlyLongName:: when I can just type `ast` and press ctrl+[space] and get the name in a completion list highlighted every single time. or: m_ui->tooBar->addWidget when I can m_ui.t... and have to automatically figure the correct sequence, this comes in pretty handly when you're working code written by other and they decide to use hard objects as opposed more common pointers.
- mayank 16y agoYou raise a good point -- when I was writing reasonably small programs, it was gvim all the way for me. However, the minute you have to interface with a library like wxWidgets, for example, the IDE really shines through with auto-completion. To answer previous posters, it just replaces an alt-tab to firefox and a couple of API lookups, and saves you about 5 seconds per obscure, unfamiliar API call.
- chewbranca 16y agoAlternatively, use languages that aren't PHP and actually have standards and have a designed API rather than something organically grown into a disgusting mess. That said, I used PHP for years and am very familiar with how annoying the lack of standardization is. I took the opposite approach from you, I just used a text editor and hit php.net/$foo until I had the parameter orders burned into my head.
- DisposaBoy 16y agoWell I didn't see you offering to pay me to write in anything else so excuse me if I don't take your advice, and going to php.net is just time wasting if your IDE provides that info right there and then. After that you didn't address the C++ case or the case coding in glib or C# with their overly verbose(though less ambigous) naming, C is even worse when you have to use multiple libraries or predominanly binding dependent languages like Vala or Lua.
- ryanwaggoner 16y agoCan you imagine driving a car with auto-complete, color coding, or drop down menus? Have you been in a car built in the last few years?
- points 16y ago> " I want the "firmware" that knows how to assemble building blocks of code to be in my brain, not in my computer. To me, writing code is like driving a stick shift, for much of it I don't even think, it's unconscious competence. Can you imagine driving a car with auto-complete, color coding, or drop down menus? To this day, I get pissed off when something doesn't compile the first time, usually because of a typo." Well said. I've also had the argument a few times, but have given up trying now. You could also compare it to a novelist using a "Writing IDE" to create a story. Click "John", Click "Conversation with Kate", Fill in the speechmarks, click "Build suspense macro". It would be mental to write a novel that way, so why do some people write programs that way and then look surprised when they end up with rubbish code.
- jonhendry 16y agoThe novel-writing analogy is a bit off, because the novel elements you mention are higher level than a single API call would be. They're more like a subroutine or algorithm level. IDEs don't really do that. An IDE's functionality is more like a screenwriting app's formatting of a script as the writer writes.
- points 16y agoidk, I've seen a lot of IDE's that have scary high level things like "Refactor this", "Remove unused code" etc.
- loewenskind 16y agoNo, a closer analogy would be when you're near the end of your novel you realize that you could add a twist by having Kate actually die in the first act and no one realizes it until the twist ending. Refactoring tools make sure that you don't have to comb through every line of the previous 1200 pages looking for inconsistencies.
- netmau5 16y agoWhy is there such massive nerd-rage when it comes to people using IDEs versus what amounts to text editors with scripting toys? IDEs are fantastic and I am a more productive programmer for using one. I work with a pretty big codebase and just having excellent cross-file navigation and usage searches are big time-savers. Color coding allows me to establish a visual understanding of more code at a glance which is especially useful when I didn't write it. Integrating with source control directly from your editor gives you fine-grained organization when you are working on multiple changes in parallel. Task managers (ie, Mylyn or Atlassian), in conjunction with source control integration, significantly reduce the overhead time that is required to perform workflow-related management during the day. And despite my hacker pride, I love having good debugging tools around as they are wonderful at aiding in maintenance. Code completion saves you time and accelerates learning. Maybe I'm in the minority here, but I simply cannot understand why autocomplete makes you so bad. Once your team grows to beyond 4-5 programmers, you're going to be seeing plenty of code you didn't write yourself. A knowledge of naming conventions and design patterns allow you to use autocomplete to help find the behavior you want before turning to documentation or duplicating it yourself. At the very least, it helps me type faster because I am typing less and it helps me avoid spelling mistakes. Autocomplete is a search tool and a typing assistant; it does not create a black hole in your brain that sucks away any memory of what you have seen or done in the code. If you find a function that is useful, stop and find out what it does. Why are you calling it if you don't know what it does? If you don't remember it after the first time, you probably will have it committed to memory by the third. And who cares if you don't remember it, do we really need to know every API of every library we use? No, we used it as a tool to get the job done. We have precious few brain cells to spend them on memorizing an ever-changing dictionary; let the computers do what they do so well. I use Textmate and occasionally vim when the situation arises. They are excellent tools for certain types of work. But when I'm working on a feature in a big codebase, there is no place like my IDE. It takes care of all of us average programmers at average companies.
- mgrouchy 16y agoMost if not all of the things you counter nerd-rage about here are available in vim and emacs if you want them.
- pavel_lishin 16y ago> To me, writing code is like driving a stick shift, for much of it I don't even think, it's unconscious competence. Can you imagine driving a car with auto-complete, color coding, or drop down menus? Can you imagine driving a car with power windows, turn signals that turn off after you complete the turn, etc?