share
Stack OverflowWhat things didn't you know you needed but are now very glad you have?
[+196] [171] DrStalker
[2008-10-15 00:07:06]
[ tools paradigms ]
[ http://stackoverflow.com/questions/203286] [DELETED]

Take a programmer that has never used source control, show them what it does, and their eyes light up... the benefits are obvious but until they actually see it most people had never considered the existence of such a tool.

What other such things exist? Tools or approaches or techniques that aren't obvious before you encounter them, but once seen have obvious value. Things that are likely so ingrained in the way you work that it's hard to think of working without them, things almost embarrassing to bring up because you expect the other person to say "duh, that's obvious!"

No matter how petty something seems there is a chance that other people don't know about it yet; I'd like to get an idea on what things I'm missing simply because I never thought of them.

their eyes light up... or they stare blankly at you and never use source control no matter how many times you tell them to... then you wish that you'd hired someone more intelligent :-( - Orion Edwards
I think "What source control system do you prefer?" should be an interview question. Disinterest or incomprehension should disqualify the applicant. Ignorance is curable, stupidity is forever. - Peter Wone
(1) Great question. I'd guess most people will find something on this list that they've missed. - Shane MacLaughlin
"a programmer that has never used source control" IMO is a contradiction in terms - Don
(4) I saw that you were at 99... enjoy the +1 from me for your first gold badge. :) - BoltBait
(3) Could one of you bright sparks turn the answers to this question into A-Tip-A-Day plugin for Firefox. I want to read and act on them all, but too busy right now. I love this question. - JW
[+302] [2008-10-15 00:54:50] acrosman

A second monitor. One to hold the programming environment, the other to hold either the documentation or to hold the program under testing.


(20) A third monitor. To do email and database stuff. - tvanfosson
Widescreen is important too (e.g., Eclipse) - Uri
I wish I could get a second monitor, IT won't let me :( - Nathan W
(1) A fourth monitor. For Firebug. - Dylan Beattie
(20) A bigger desk for all my monitors... - JesperE
(2) A second monitor is MINIMUM. - Jeff Schumacher
(20) A bigger office for my big desk - Vinko Vrsalovic
(2) Longer arms to reach my keyboard on the huge desk - Vinko Vrsalovic
@Nathan - if you're a developer having a second monitor MORE than doubles your productivity. Given how cheaply you can pick-up a decent 22"+ widescreen LCD (a few hours at a software developers hourly rate) it's really madness not to. - Sprogz
(5) A fifth monitor - where else are you going to put Stack Overflow? Sheesh - 1800 INFORMATION
(1) A second computer and synergy installed on both computers! - Loris
(9) A 6th monitor. For a spread sheet to help me manage my monitors. - Matthew Scouten
(6) A 7th monitor for monitoring my other 6 monitors. - Bob Somers
(67) An 8th monitor for viewing that amazing background pic you spent 3 hours of work time searching the internet for. - postfuturist
Now if only I could convince my bosses of this at any of the 3 companies I worked at :) - Cervo
Nathan, go buy your own monitor. I do that at work. If you wait for the company to supply everything, that will happen after you have quit. :-D - icelava
(8) Compound eyes to see what's going on on all my monitors at the same time. - mmacaulay
(2) Better aircon, to cope with the heat thrown off by 8 monitors and the frankly obscene graphics card combination required to drive them all. - Steve Jessop
(28) A 9th monitor, so you can browse shopping and auction sites for that new monitor you've felt you needed for the past hour. - Mike B
(1) haha, all i have a is a freakin crt 17inch with a old p4 system, apparently developers don't need good hw according to my bosses :( - melaos
(1) I don't understand the whole "2 monitor" thing. It takes about as much time to flip virtual desktops as it would to move my eyes between screens anyway. - flussence
(5) Two monitors allows your to compare things more easily. You can look at your code and the documentation at the same time. So I can write the code while still reading the documentation. There are other advantages too. - acrosman
(6) Ant, sounds like you have never had two monitors before. - Louis
(2) @Ant P. I'll take your extra monitor, then. Have fun with your desktop flipping. :) - Greg D
(4) Interestingly, in 10 years of programming, I have tried working with a 2nd monitor for 3 or 4 times. I always ended up back with one - I just couldn't get used to it. - Pekka
(1) +1: Sometimes when debugging GUIs (especially repaint issues when creating your own components) two monitors just rock! - Matthieu BROUILLARD
haha got it to 256!! - dotjoe
(1) And a tiling window manager like xmonad. With multiple workspaces, of course. - avendael
I've been used to two monitors for a long time. What I really needed was a monitor mount that holds them both off my desk. Freed up a lot of desk space. - Ferruccio
1
[+180] [2008-10-15 01:15:53] VirtuosiMedia

Vacations. Evenings. Weekends. It can be fun to pull all-night sessions and code really cool programs, but in the end family time is what counts.


Especially vacations. I keep telling myself I'll move to Europe so I can finally get a decent amount of vacation. - Kyralessa
2
[+135] [2008-10-15 01:36:54] Hapkido

Learn to say NO.


(2) This is more important than many developers seem to realize. - Jeff Schumacher
(50) N... N... N... New features! That's not right... - Bernard
(8) Yes, drugs are bad. - postfuturist
The problem with this is that in general you have to say no to the boss. Then things get nasty. - Stefano Borini
(2) And if you don't, things will get nasty anyway, but it will be your fault... ;-) - Hapkido
this is so true. don't do favor and don't accept job while you already have a deadline - justjoe
3
[+130] [2008-10-15 01:13:33] BoltBait

The Internet.

The amount of information at my fingertips is mind boggling.


(7) You didn't know you needed that? - Jay Bazuzi
(16) I've been programming a lot longer than the Internet has been around. - BoltBait
(1) Back in 1995, I didn't know why I should pay for Internet access when I could dial up a dozen BBS systems for free. - Bruce Alderman
Who are these people - on Stack Overflow - who didn't know they needed the Internet? Is there some direct-mail interface that I just haven't found yet? - MarkJ
(5) @MarkJ: they are people like me who have been using computers since before you were born. - BoltBait
- 1: oh the endless distractions! Procrastination is the plague of early XXI century. - Tadeusz A. Kadłubowski
(1) @BoltBait: MarkJ is 39 years old. Have you been programming for longer than THAT!!? - Vaibhav Garg
4
[+127] [2008-10-15 01:16:08] nickf

stackoverflow.com


(1) this one totally deserves the answer award. - TheSoftwareJedi
(17) What's that? I've never heard of it. - Jacob
(2) @jacob : hahahhaha, me too. i only use it unconsciously - justjoe
5
[+115] [2008-10-15 00:08:42] Mark

An IDE!

Seriously some people still just dont know "why" they should use one...


(8) I am one of them (but let's upvote and try again :) I still can't stand with the mess of buttons, icons, tabs, menus, poststamp-size editors, views, tree views, and the like one usually finds in modern IDE's. I sincerely prefer a fair editor and printf debugging. - Federico Ramponi
But that's probably because I never worked on a 1000000 LOC project. The only thing I miss from an IDE is the 'refactor' menu in the editor. - Federico Ramponi
Oh, and of course autocompletion. - Federico Ramponi
Seriously, I just don't get how the many benefits of an IDE don't greatly out weigh the "mess" as you call it, you can totally customise the look and feel of any environment you work in. - Mark
Any decent modern IDE lets you put the "mess" on autohide, only takes up space when you want it to. Visual Studio also supports a full-screen mode if you want to get rid of things like its title bar. - Greg D
(9) Sure, I haven't worked on any large project, but still the benefits of an IDE doesn't cut it for me. I really enjoy Vim. - David The Man
Actually working in the financial software industry, we have HUGE projects.An IDE Helps keep everything organized, easy access, etc. I have a coworker who still argues that using vi is better for large projects.I have to disagree.using IDEs are v. useful for large projects - Wael Awada
I had two reasons to avoid IDE's: inertia and their steep learning curve. Having worked with XCode for a while now I'm sold on the idea. I think the fact that I could continue using Emacs key-strokes got me through the early stages! - Stephen Darlington
I'm sure you all have good reasons to advise to use IDEs. Only, I didn't get that feeling so far. What would you suggest for python development? (Eclipse + python plugin is what I'm thinking to give it another chance)... - Federico Ramponi
(3) I use eclipse in work and am now transitioning to vim. Well configured vim can do everything I do with eclipse, except in a terminal and more efficiently (IMHO). I love vims keyboard commands, syntax highlighting, autocompletion and ability to script in python. I've come to despise eclipse though... - Dan
Eric is nice for Python, especially its refactoring tools. eric-ide.python-projects.org - sep332
(4) I like eclipse for Java development. I find that most of the "clutter" of IDE's is because most people are using low resolutions. My laptops resolution is 1920 x 1200 and the editor window is much much larger than anything else in the IDE. That said ive learned the basics of vim and once you start puttering around in that, man you just spew out code. - Deinumite
@Dan I can't imagine how keyboard command can be faster than good keystrokes... - Nicolas Dorier
If the IDE doesn't have really really good Intellisense I am very nearly as productive without it. - Joshua
People use IDEs instead of editors to write code for the same reasons that people use word processors instead of editors to write text. - Thorbjørn Ravn Andersen
@Federico, most IDE's allow to fullscreen a single thing so you can get rid of all the clutter if you need to and have it back when you need to. - Thorbjørn Ravn Andersen
@federico, also the IDE helps you learning new code faster, as you Can simply see more context and navigate easier without needing to jump hoops to get the metadata your editor needs. Think what difference TAGS does for vi. - Thorbjørn Ravn Andersen
Thorbjorn: The same reasons that people use word processors instead of editors to write text ... because they're not very good with a text editor? I'm not sure what you're getting at here. - Ken
I use Idea at work. But I get my vi/vim fix by using the IdeaVIM plugin. - Vivin Paliath
6
[+112] [2008-10-15 00:34:08] EvilTeach

A profiler. A good one will tell you more about what is going on inside your code, than you could have ever dreamed.


absolutely agree here. It helps you get to that next level where you can really wow people. - TheSoftwareJedi
Noob alert - but what is the profiler you mentioned? - Dominic Bou-Samra
7
[+107] [2008-10-15 02:47:11] cole

Holding down alt + dragging, in certain text editors, to select not only lines of code but also columns. This has definitely saved me hours of time.


(2) Wow, didn't know that, yet often i thought "How could would it be to select a column without having to copy/paste it into Excel first... Works like a charm :D - Michael Stum
(3) This is a great tip! - bouvard
If I could vote for this one more than once, I totally would. You're right, saves TONS of time. - Zachary Yates
(4) Jeebus... I can't believe I called myself a developer before. - greg7gkb
Yeah, it's great. I am all the time resorting to jEdit just for this - Camilo Díaz
(3) I just learned something! :) - Ries
(1) Can you provide a few example apps/situations where you use this? I don't follow the description. - Cory House
Say your file is a list of names. Each name is on a new line. First and last name are separated by tabs so that all the last name start at the same column. If you only wanted a list of last names you hold "alt" click and drag a block over all the last names, copy and paste. Works in Notepad++, Word. - cole
Nobody mentioned yet that you can also Alt+Shift+Arrows in pretty much every app that supports Alt+drag... Visual Studio and Notepad2 included. - romkyns
Sweet! Now how do you paste columns? - Martin Cote
(2) I can't believe I didn't know that. - Jason Baker
(3) @Martin Cote: Ctrl+V :-) - Jasper Bekkers
Please name these editors. - Thorbjørn Ravn Andersen
(2) Visual Studio, Notepad2, Notepad++, Textpad, jEdit, MS Word, even MS Outlook. I don't know about any other IDE's, but I'm sure they all would have it. And I've found it works slightly different in different programs. - cole
Also in PsPad you can switch the selection mode from normal to column, it also can save a lot of time. - Matthieu BROUILLARD
@cole I didn't know MS Word and Outlook counted as IDE's :) - Wesley Wiser
Shift-V in Vim to select lines, and Ctrl-V to select blocks (rectangles of text). Ah, I love Vim. - strager
To make it work on my GNOME environment (where ALT+drag moves the selected window) I can use CTRL+ALT. It's working on QtCreator. - peoro
Holy crap. Never occured to me - Dyppl
8
[+104] [2008-10-15 01:10:22] Joel Coehoorn

Something we all take for-granted now, but I remember when I first got a mouse with a scroll wheel, and then had to go back to one without.


(8) For some reason my old Visual Basic 6 IDE would continually ignore the mouse wheel. It was excruciating. - Chris Farmer
(2) It's a bug that has a fix described here: stackoverflow.com/questions/147339/… - jpoh
i have gone through the same experience of having to use a mouse without the wheel, for sure we take it for granted - Steve Obbayi
Wish I could upvote multiple times for this one - tloach
(1) I remember when I first got a mouse, on an Amiga 500 in 1989... It was excruciating when in 1995 I had to go back on keyboard on my pentium 100... - Myrrdyn
Sounds like you Will LOVE the swipes ón a modern Mac - Thorbjørn Ravn Andersen
9
[+99] [2008-10-15 03:07:06] Uri

Source control. I'm amazed at how many people don't use any.


(3) this was in the original question, so I think it's assumed already. - DGM
But you can't vote it up! :) - David Holm
I figured that whoever would look it up in the future, would go immediately to the answers and not read anything but the question title. I also admit that I wanted to see if this will get votes... </snicker> - Uri
I've only worked at one place that wouldn't use source control - but not for long! - Codebeef
I'm a recent convert to using source control, so I understand how much I was missing out on that extra security blanket of knowing that if I break something, I'll be able to roll back easily. - dsimcha
10
[+97] [2008-10-15 06:39:58] blindauer

Touch typing.

Don't laugh, I've personally known several programmer who "hunted-and-pecked", claiming that they could do so just as quick as a touch typer. I say, BS. If you can't touch-type, you're gimping yourself.

There are some good free online typing programs. An hour a day for a couple weeks can double your typing speed, and nobody has to know you were ever a hunt-and-pecker.


The most important class I took in highschool. - Lance Roberts
I didn't actually learn to touch type in high school. Too boring. :o 'a', 'a', 'a', 'a'. . . Learning vim had me doing it though. - Bernard
if you can't type without looking at the keyboard, you are not a programmer. - nickf
remember this?: 'dads' 'fads' 'sads'... (; - keyofnight
Hey! Who are you calling a pecker? - anopres
(2) I count touchtyping as one of the two things that I learned in school. Had to relearn it for Dvorak, though. - tomjen
Part of me wishes I had learned to type properly in Middle School/High School when they made us play Mario Teaches Typing all the time, but I can still manage 80-110 WPM without stopping to look at my keyboard- it's just a matter of feeling the keys - Nathan Taylor
(2) @"[play a typing game] an hour a day for a couple weeks" Am I the only one that taught myself how to touch type by programming and internet surfing? - Earlz
(2) I taught myself when I was 8, on a mechanical Remington typewriter. Back then, I didn't know I needed a computer... - Marco Mariani
11
[+93] [2008-10-15 00:32:32] Paul Nathan

Debugger. I deal with so many computer science students who have not really used a good, GUI-driven debugger.

I hold up Visual Studio as a great debugger (or at least the best I've ever seen).

Of course, I've debugged on a system where the only debug output I had was one LED, initially. That was not terribly pleasant. You don't need a GUI. But it sure helps at times!


(9) In my experience, CS students overly depend on visual debuggers and have no idea how to debug code when they don't have access to one. I've even seen students doing something they erroneously called "unit tests" where they just stepped through the code and said "that looks right". - rmeador
My experience is that most students I've dealt with believe that printf is The One True Way. - Paul Nathan
@rmeador - stepping through the code in a debugger is a good thing, though, at the least. - Bernard
(4) printf is often the only way. Because printf to a file is a logging system. And many times you just can't replicate the bug in a visual studio debugger. - Cervo
I'll admit that visual studio blows the gnu debugger away. But sometimes gdb is all you have.... - Cervo
(4) @Cervo and sometimes you can't replicate the bug with printfs... - drhorrible
@rmeador: That's a difficulty with senior devs, too. Real unit tests are an extremely hard sell. - Greg D
of course, with printf you mean log4cpp.sourceforge.net - bcml
Once you learn how to use it, gdb is a great tool. I'd almost prefer it to using Visual Studios debugger. - samoz
(1) Sometimes cdb (not gdb) and WinDbg are more suitable. - Alex
+1 for pointing out the debugger. There are undergrads who go through their entire CS degree without learning how to use the debugger. It's unimaginable. It should be one of the first things taught as a visual way to trace through code and see what's going on, line-by-line! - stinky472
12
[+82] [2008-10-15 01:42:52] Jack

A good file comparison application, like BeyondCompare.

http://www.scootersoftware.com/moreinfo.php

It is the most useful tool in my toolkit and has saved my hide many times.


Also some pretty good free alternatives like kdiff3 kdiff3.sourceforge.net - jpoh
Or DiffMerge by SourceGear: sourcegear.com/diffmerge - Antonio Cangiano
Amen, I use UltraCompare. - icelava
(2) Another vote for BeyondCompare here. - Artem Russakovskii
(5) I use WinMerge since it was the first thing I found several years ago. - Albert
wow...Windows users discover diff :-) - DavidM
vimdiff. 'nuff said. - Chinmay Kanchi
13
[+75] [2008-10-15 00:47:49] JarrettV

Fiddler - HTTP debugger, essential for REST development, link [1]

FireBug - javascript/css debugging used to be torcher, FireBug + jQuery make AJAX development fun. link [2]

[1] http://www.fiddlertool.com/
[2] https://addons.mozilla.org/firefox/addon/1843

(6) +1 for firebug. It's probably the sole thing that keeps me on firefox, as opposed to switching to safari on the mac or google chrome on windows - Orion Edwards
I think it's a bit much to say 'fun', but certainly not to complete horror it was previously. - SpoonMeiser
+1 for Firebug, though I've taken to using it in a separate copy of Firefox Portable dedicated for development work with other relevant extensions, rather than my main installation as it can cause Firefox to crash (especially on Gmail). - Mun
Is "torcher" a Freudian typo? (coming just before "Firebug") - Hugh Allen
I think it was conscious pun :) - JarrettV
Charles Proxy here for HTTP debugging - free and cross-platform (written in Java). charlesproxy.com - Artem Russakovskii
@Mun you can enable it only for certain sites (or at least disable it for Gmail and enable it for everything else). @Orion, I haven't looked at much yet, but Chrome comes with something that resembles Firebug - MatrixFrog
TamperData and Wireshark. - Rook
14
[+64] [2008-10-15 05:23:20] Steve Obbayi

code & syntax highlighting and coloring in modern text editors and IDEs


+1 - I find it incredibly off-putting if I ever have to go without syntax highlighting. - Codebeef
(1) +1 - it's amazing how it still seems to be 1980 in some editors - MarkJ
I have stared at code thinking something was wrong. The syntax colouring told me that a variable was not declared in the way it was supposed to according to how it was written (in Java, all uppercase indicates CONSTANT which this wasn't). - Thorbjørn Ravn Andersen
15
[+61] [2008-10-15 01:15:25] Jay Bazuzi

Automated refactoring tools. Mostly Rename, Extract Method, and Introduce Explaining Variable.


+1: Agree a must to have for me also! - Matthieu BROUILLARD
16
[+57] [2008-10-15 05:44:26] RichH

Red squiggly lines under my syntax errors so I don't need to hit compile.

It's saved days of my life.


That's why I love my IDE. No more time wasted to search where the semi colon is missing or which parenthesis you didn't close ! - kevin
I personally hate that, when you want to work top to bottom, or that you can't think about the parameters of the function because VS stress you with all the red when a parenthesis is missing. You can most of the time spot these errors just looking at the code, and the compiler will do that for you in a few seconds if you just press one button. - Clement Bellot
17
[+56] [2008-10-15 02:24:12] Gerald

VMWare or other virtualization system. Being able to test cross-platform code on 6 or 7 different OS configurations without having to have a mess of spaghetti cabling and KVM switches is great.


also great for client server program testing - PeteT
Even greater for developing webapps on top of multiple tomcat/java/database configurations. Previously I would install separate tomcats on my development machine and be completely lost when configuring which java is used etc. Now I have my own VM's per project - kosoant
Just being able to put a new service ón a new ip- number with the deafult port instead of ón a crowded server ón an obscure port, and then announce it with bonjour/zeroconf is fantastic! - Thorbjørn Ravn Andersen
18
[+48] [2008-10-15 01:44:13] mcherm

Here's one that I don't have yet... but I SHOULD. A reversable debugger. That is, you just run your program until the error, then tell it to BACK UP one step at a time until you figure out what's going on. I have seen academic examples [1], so tell me: why don't I have one built into IntelliJ or Eclipse?

[1] http://homepages.inf.ed.ac.uk/jcook/bdbj/bdbj-1.2.1/dl.html

(3) Considering that Borland's Turbo Debugger had a "step backwards" feature in 1991, that's a damn good question! Why haven't IntelliJ or Eclipse caught up with this? - Sherm Pendley
If you're doing AWT work, take a look at Andy Ko's whyline. - Uri
(2) Smalltalk environments have had this since the 80's or maybe even before that... Try [Restart] (the current context) in the Squeak debugger to see it in action! - Sébastien RoccaSerra
(13) The next version of Visual Studio will have a 'historical debugger' doing exactly what you're asking for. channel9.msdn.com/posts/VisualStudio/… - user18044
(2) Eclipse has "Drop to Frame", which backs up to the start of the current method (or any other method in the call stack). With small enough methods, the amount of forward stepping is minimal. - flicken
Always wished this feature existed when I stepped forward too much. - blizpasta
next version of VS is supposed to have this - Greg Dean
For Java, CodeGuide www.omnicore.com does that. - michelemarcon
@1 Yep - definitely what programming in Smalltalk feels like. - teapot7
@flicken, but it doesn't undo any changes done by the code in the frame. - Thorbjørn Ravn Andersen
19
[+46] [2008-10-15 00:14:44] Ken Liu

A unit testing framework like JUnit [1], and a Continuous Integration (CI) [2] server. Also, some kind of build system like make, Ant, or Maven.

Maybe also a team coding standard, to avoid wasting time over arguing with coworkers about tabs vs. spaces and brace styles.

[1] http://www.junit.org/
[2] http://martinfowler.com/articles/continuousIntegration.html

20
[+39] [2008-10-15 04:17:45] Craig

A family. My baby daughter rocks! And shes a good sleeper too!


not programming related, but I have to agree. Also, I'd add "a van for the family" ... we just got one and it ROCKS. - DGM
You ought to get the suspension checked out. That might be dangerous. - SpoonMeiser
(2) I thought the van rocking was what got you with a baby ;) - Loofer
(1) I'm about to graduate to van. My house now has: me, wife, daughter1, daughter2, inlawDad, inlawMom, basementRoomMate... We can't all go anywhere together, since the Camry only seats 5. >sigh< - Troy Howard
I have to agree though -- I became a better programmer after having kids... Why? I suddenly cared about job security, a stable income, beneifts, etc. In other words, I got "career minded" and that has had a huge impact on my code quality. - Troy Howard
I got 7-month-old twin girls and all of a sudden care a lot more about my medical coverage provided by the employer. Thankfully, my wife is anti-van just like me. So I got myself the new Pilot to fit everything! - Kon
She even writes better code than you? Smart kid :) - Thorbjørn Ravn Andersen
Agreed; and the patience you learn when becoming a parent makes you a better developer to boot :p - DanP
21
[+38] [2008-10-15 00:12:06] Gulzar Nazim

Another important concept is ORM and using tools like NHibernate..


This is true, I have seen so many people get scared away just at the thought of an ORM. - Mark
(1) .. and EntitySpaces, and Llblgen, and LINQ-to-SQL, and Entity Framework, and .. - stimpy77
These are all rapidly evolving and are great for development teams with weak SQL skills. From what I have seen, iBatis can be much better for those who want more control over the actual SQL run: ibatis.apache.org/index.html - Dr8k
Not sure I really like ORM. I still need to do some research on it. - Terry
22
[+36] [2008-10-15 01:41:50] Kris Erickson

Mastery of a text editor (whether it be VIM, Emacs, etc). At least one that supports replacing with Regular Expressions, macros, and all the shortcuts that allow me to type and edit at the speed my brain sometimes thinks. Learning an editor inside and out is one of the best pieces of advice I ever got from an instructor in Com sci at university.


(1) Hear, hear. Learn a good editor Well, but also learn the deafult one ón each platform well enough to dó trivial edits. - Thorbjørn Ravn Andersen
23
[+36] [2008-10-15 04:57:58] community_owned

Firebug: didn't know I needed it, and sometimes wish I didn't need it anymore.


24
[+35] [2008-10-15 08:03:47] John Nolan

Generics - I love you.


I am also amazed that most people don't use them still, both in Java and .net camps - Varun Mahajan
+1, the day I found Generic.List(of T) was a good day! - Pat
+1, Generics was the first thing that came to mind. - Kon
I'd never heard of this before: en.wikipedia.org/wiki/Generic_programming - JW
25
[+33] [2008-10-15 09:56:55] Vaibhav Garg

Google
so that all that I need to know is just a URL away


(13) "Google - making people on the Internet appear smarter since 1998" - Steven A. Lowe
26
[+32] [2008-10-15 02:15:26] Solracnapod

On a group level, continuous integration.

If an automated build runs per commit, people will no longer freak out when the build breaks because they know exactly which commit broke it.

If the build also runs unit tests, people will smile.

If the build also deploys to test environments and runs acceptance tests, group zen may be on its way.


That would mean an organization would have to spend money on testing! Why do that when customers pay us to beta test our releases? - Greg D
27
[+29] [2008-10-15 02:35:41] jjacka

For .Net Lutz Roeder's Reflector [1] for being able dive into the code of some DLL when source code is not available.

Open source Javascript frameworks like Prototype [2] and JQuery [3] that finally make it easy to get a rich clientside experience.

And Tortoise SVN [4] for saving me from my Visual Source [un]Safe nightmares!

[1] http://www.red-gate.com/products/reflector/
[2] http://www.prototypejs.org
[3] http://www.jquery.com
[4] http://tortoisesvn.net

Email from Lutz re Reflector in Aug. 2008: After more than eight years of working on .NET Reflector, I have decided it is time to move on and explore some new opportunities. I have reached an agreement to have Red Gate Software continue the development of .NET Reflector. .... - DOK
I hope they don't start charging for it, as with SQL Prompt. - Kon
28
[+28] [2008-10-15 01:14:32] Jay Bazuzi

A nightly build.


We run multiple hourly's per branch. - FlySwat
That is too much for their favor :) - Nrj
Yes, build as often as you can! Some of my experience is with huge projects that take 23 hours to build everything; ouch. - Jay Bazuzi
Several times a day! - icelava
29
[+26] [2008-10-15 00:51:45] Matt Dillard

A large, widescreen monitor. Being able to see two (or more) files for editing at one time is huge.


multiple monitors are better. I think 4 is ideal for a corporate programmer. 6 is better. - TheSoftwareJedi
While multiple monitors are important, widescreen is the most critical aspect. Most IDEs need a dedicated vertical area for files and outline, not leaving enough space for anything. I don't know how people edit at 3:4 - Uri
It really depends on the IDE. VisualStudio's "main frame" approach doesn't lend itself well to multiple monitors, where XCode, where everything is a window, shines on multi-mon, wide screen isn't as much a factor here. Also, I'd argue it's pixel count, not wide screen, ie 1600x1200 minimum. - Chris Blackwell
I always feel like I'm squinting with a widescreen. I really prefer the vertical space of 3:4 ('course, I'm usually using vi, not an IDE, and have a second monitor for horizontal space). - Brian
Multiple monitors are more cost-effective. I have to admit, though, it might be nice for the middle monitor to be wide. - Alan Hensel
@Uri: widescreen or not is not as important than resolution afforded by the monitor. - icelava
(4) I think I'm alone in this but I find one massive monitor (24inch + with multiple desktops) to be much more comfortable than multiple monitors. - Ali
You really need to get to the 30" (2560x1600) for the word "huge" to be meaningful. At that pixel count, you can really slice it up into 2, 4, or 6 screens and still be useful. - gahooa
@Ali: You wait until you get several massive monitors! - Donal Fellows
30
[+23] [2008-10-20 11:10:28] community_owned

Regular Expressions. Many people don't know them.


Somehow I worked as a programmer for 4 years without really understanding regex. The day it "clicked" changed my life forever (seriously) - MattBelanger
31
[+19] [2008-10-15 20:58:30] Ben Throop

Coworkers!

I left my job to do a solo software startup project and by far, by a million miles, the thing that I miss most is having smart people around me. This is not only true in the sense that our coworkers make us smarter, but they also help us stay sane.

twitch twitch

So next time you think you can do it better by yourself, really examine all of the benefits of being surrounded by smart folks. I don't regret my decision, but I can't wait to hire someone!


bouncing ideas off other people is great, working on your own means silly design decisions are easy to make and long to fix. - PeteT
(2) I've since hired someone and stand by this post. - Ben Throop
32
[+18] [2008-10-15 12:39:01] community_owned

Understanding the end user.

There is no substitute for understanding.


I used to think I understood the end user. Then I was on a project with an on-site customer, and my self-confidence was reset to a different level... I don't think this one will get enough votes, because people reassure themselves. They don't know, or don't know that they don't know, or don't care. - Alan Hensel
Even indentifing the end user is sometimes tricky. The customer is not always the end user. - TFM
33
[+17] [2008-10-15 02:35:49] DrStalker

Cygwin [1]. All the power of the Linux command prompt and associated tools for your Windows systems. If you know some basic bash commands there are a lot of things you can do with a one-line command that would be a real pain to do manually in the GUI.

[1] http://www.cygwin.com/

I prefer unxutils.sourceforge.net - kenny
I second unxtools, along with sourceforge.net/projects/console - Alan Hensel
I use GnuWin32 for the same thing. gnuwin32.sourceforge.net - Chinmay Kanchi
34
[+16] [2008-10-17 19:51:38] Ates Goral

Launchy [1]: The Open Source Keystroke Launcher

I can never go back to using the Start menu again...

[1] http://www.launchy.net/

35
[+15] [2008-10-15 04:29:34] gregf

A girlfriend that cooks for me while I am at stackoverflow.


(4) upvoted to cancel a clearly jealous downvote - Steven A. Lowe
I do the cooking here, its a very relaxing activity. Do you know Susan from Desperate Housewives? Well, my GF is just like that :) you should try it out too ;) - Fabio Gomes
36
[+14] [2008-10-15 15:47:19] RoadWarrior

Assertions. After I started adding them to my own code during development, I was astonished to find how many times they were triggered. When I started adding them to other people's production code, they were astonished by the number of bugs that the assertions uncovered. It was a tipping point in my software development career.


37
[+14] [2008-10-17 06:21:30] staticsan

Learning about advanced algorithms.

For example, spending the time to read about all the different ways data can be sorted teaches you a lot about manipulating data. Even if you never do anything but call the library's QuickSort. Ditto about how compilers work. Or how to store tree-oriented data in a relational database.


38
[+12] [2008-10-15 12:58:48] Rob Bell

A memory stick


39
[+11] [2008-10-15 13:13:02] Dana

Intellisense


40
[+11] [2008-10-15 14:32:05] DOK

I keep coding notes. A library of code snippets + text about coding minutiae.

As a senior .Net web developer, I just have too many details to remember in too many languages -- C#, VB, HTML, CSS, SQL, JavaScript and on and on.

I can instantly find the SQL using ROW_NUMBER for paging data, the syntax for applying a regex in JavaScript, or the steps for deploying a web app to IIS, along with my own comments and troubleshooting tips.

Since I've been keeping notes for a decade now, I can find information about older technologies like classic ASP, SQL Server 7, or VB6 -- handy when you're called in to read the old code for an upgrade.

I refer to my own dogpile of notes before going to Google. The particular software I use is InfoSelect (www.miclog.com, I have no affiliation with them). It's like writing everything you know on 3x5 index cards and then being able to search their text. I believe you can also use OneNote for this; no doubt there are many others.


(1) Same concept but for me it is evernote + github gists. - wilmoore
Evernote, interesting. Thanks for letting us know about it. - DOK
41
[+11] [2008-10-15 05:06:49] cbp

A coffee grinder


Grinding coffee from whole beans is one of those 80% things. You can go crazy making awesome coffee, but for me, as long as it's freshly ground it's "good enough". - Jerph
42
[+11] [2008-10-17 13:03:40] Steve Dunn

Learn the keyboard short-cuts of your IDE and ditch the mouse whenever possible. It'll not only make you faster, but also force you think more of keyboard oriented users in your own apps!

Oh, and ReSharper [1] of course! :)

[1] http://jetbrains.com

+1 for Resharper - Nader Shirazie
43
[+11] [2008-10-16 16:19:39] Lepu

A great revolution for me was the discovery of delicious.com

It has become an every day tool, completely integrated in my browsers as plug-ins, through which I discover and find pertinent techniques, white papers, tutorials, tools for subjects I'm interested in. The fact, that you can also browse bookmarks saved by other people on subjects of your interest is a related amazing technology-watch feature that I discovered by acccident.

I guess you can't really understand the power of this social bookmarking features as implemented by delicious until you start using them. That's why I think delicious is a good candidate as an answer for the current question.


44
[+10] [2008-10-15 23:02:06] Even Mien

Code Complete. Absolutely the best book on software development.


45
[+10] [2008-10-17 22:14:49] Lex

Test driven development


46
[+10] [2008-10-15 01:32:25] stimpy77

IM and IRC. At this moment there are 207 people in the ##CSharp chat room in FreeNode, always about ten who are active at any time, and always two or three who are willing to help or discuss technical issues and ideas with you about C#.


Are they nicer than the aholes in #c# of efnet? - FlySwat
MUCH nicer!!! I visited the guys in efnet and only lasted about five minutes before I had to bail out of there. - stimpy77
I prefer all of the Freenode channels to Efnet's channels. - Thomas Owens
But StackOverflow has history... - Thorbjørn Ravn Andersen
47
[+9] [2008-10-15 15:55:34] JB King

Design patterns


48
[+9] [2008-10-15 17:30:36] Maglob

wiki - collaboration on the web


49
[+7] [2008-10-15 08:33:30] community_owned

MacBook's touchpad.


I second this. Being able to do the 4-finger swipe saves a ton of time! - Chinmay Kanchi
50
[+7] [2008-10-15 00:56:42] TheSoftwareJedi

Learning how to take heap dumps of running processes, then using WinDbg + SOS to troubleshoot them for memory leaks and deadlocks. Priceless with large scale web applications!

Good article here [1]

[1] http://www.eggheadcafe.com/articles/20060114.asp

51
[+7] [2008-10-16 10:57:42] Nick

Agile and SCRUM Methodology changed everything


52
[+7] [2008-10-17 06:28:21] TheCodeJunkie

My wife and son :-)


53
[+6] [2008-10-17 16:04:44] community_owned

No interruptions would also be high up my list. Often hard to achieve but makes the world of difference


54
[+6] [2008-12-19 03:23:51] Greg Beech

wget - is there a better way to download things from the net?


Voting up although before I found it I very nearly wrote it. - Joshua
(1) bittorrent much better - Eric
55
[+6] [2008-10-15 08:39:54] Shane MacLaughlin

Automated regression testing, preferably run nightly after the nightly build on the nightly build. Huge time saver and confidence booster.


56
[+6] [2010-02-11 16:42:53] Kelli Shaver

It will sound corny, but.... a co-worker. I freelanced for a long time, doing contract work for small businesses where I was pretty much the only developer, brought in for small projects, often working remotely from my house, then moving on to something else.

A couple of years ago, I started working with someone on a daily basis, and improved efficiency aside, it's amazing how much more fun and rewarding work has become. Even the bad stuff is so much easier to get through.

Spider Robinson had it right.


And if you go the full way and even practice pair programming, it's even better. - kriss
57
[+5] [2009-03-19 08:44:08] Vijay Dev

vim, find and grep


58
[+5] [2008-10-17 13:08:45] Bas Leijdekkers

Static source code analysis in the editor.

This has already caught many silly mistakes I made after I got distracted by a phone call or something. For example I seem to often create a while loop with a condition that does a variable != null check, but then forget to update the variable inside the loop (thus creating an infinite loop). IntelliJ IDEA warns me about this before I try and run the code.


59
[+5] [2008-10-17 13:47:58] Dano

A Laptop! Finally I don't have to walk 5 minutes to a warehouse, then back to my desk, then back to the warehouse......


60
[+4] [2008-10-16 11:45:45] community_owned

WinMerge for comparing the differences in content of two files similar files


61
[+4] [2009-03-19 09:14:59] community_owned

Life, mate. It's short and it's out there, so don't spend yours in front of a monitor (says the wise guy who's mostly done that).


62
[+4] [2008-11-03 07:21:57] Rob Howard

Virtual Desktops.

Being able to have "groups" of windows (say, a browser window for testing and two code windows on desktop, then a browser window and a PDF viewer for docs on another, and then a group of email/calendaring apps...) is really damn useful.

It's like having an extra dimension; you can alt-tab to switch within the windows on one desktop, and then hit another key combo to switch to another desktop with its own self-contained group of apps.

  • Linux: Gnome, KDE, XFCE, Fluxbox, Enlightenment, twm... They all have it. :D
  • Windows: Virtuawin [1] (beats the Windows Powertoys version hands-down.)
  • Mac: ... Any suggestions?
[1] http://virtuawin.sourceforge.net/

Mac: upgrade to OS X 10.5 and it out-of-the-box. They are called ,,spaces'' there. - Tadeusz A. Kadłubowski
@tkadlub: Unfortunately, it sucks if you want to have, say, two terminals or browser windows on different desktops. Alt-TAB and see what happens - it goes crazy switching from desktop to desktop as you cycle through the apps. (You have to use Alt-` to cycle to the application window on the desktop that you're working on before you can Alt-TAB between windows on the one desktop smoothly. And then you change desktop...) - Rob Howard
63
[+4] [2008-10-19 11:07:26] mohammedn

Issue/Bug tracking systems like Fogbugz and Bugzilla.


I wonder why this essential element (included in the Joel Test for example) is so low! Is it that you don't need bug tracker if you have two computer screens to stick all those post-it notes you use to keep track? - Tadeusz A. Kadłubowski
64
[+4] [2008-10-15 04:01:05] smaclell

Funky things like Dependency Inject or Test Driven Development.


65
[+4] [2008-10-15 04:48:24] user11039

Teach him Test Driven Development way of developing software.


66
[+4] [2008-10-15 04:23:21] DGM

Backups. Automated, versioned, tested, and useable backups.


67
[+4] [2008-10-15 19:31:28] user16738

A programmers notepad (such as TextPad or Notepad++). Sometimes a full IDE isn't needed and it' nice to have someting light to do quick things.


68
[+4] [2008-10-15 22:53:44] Rene Saarsoo

Emacs - Before using it I didn't imagine I could so easily automate all those everyday routines. Now I can't imagine my life without it.


69
[+4] [2008-10-15 10:07:09] ePharaoh

Scripting I mean scripting in "scripting" languages. I used to write my scripts in C, and only realised the true power of scripting when a colleague introduced me to Python.

Since, then I have moved on to Scala, but the Python experience was an eye opener.


You should learn /bin/sh someday... - Thorbjørn Ravn Andersen
70
[+4] [2008-10-15 01:13:17] bouvard

Lint [1], pylint [2], JSLint [3], etc. You don't know just how ugly your code is until an automated procedure goes out of its way to badger you about it.

[1] http://en.wikipedia.org/wiki/Lint_programming_tool
[2] http://www.logilab.org/857
[3] http://www.jslint.com/

71
[+4] [2008-10-15 01:24:41] Kyle Burton

System level debugging and monitoring tools:

  • sar [1] - Solaris, system activity reporter - a system monitoring tool
  • vmstat - Linux, processes, memory, paging, block IO, traps and cpu activity
  • lsof - Linux, lists open files, including sockets, shows the owning process
  • strace - Linux, traces system calls and signals in an already running program
  • truss - Solaris, system call trace
  • dtrace [2] - Solaris, this tool is amazing

Software Development (some were already mentioned): Unit Testing frameworks, JUnit, etc., especially when combined with code coverage tools: Devel::Cover [3] (Perl), Cobertura [4] (Java), rcov [5] (Ruby), sb-cover [6] (SBCL) and Devel::NYTProf [7] (Perl).

Profiling tools: Devel::Prof (Perl), Devel::NYTProf (Perl), YourKit [8] (Java) and ruby-prof [9].

Oracle's EXPLAIN PLAN [10] for helping to tune SQL.

[1] http://www.ibm.com/developerworks/aix/library/au-unix-perfmonsar.html
[2] http://en.wikipedia.org/wiki/DTrace
[3] http://search.cpan.org/dist/Devel-Cover/lib/Devel/Cover.pm
[4] http://cobertura.sourceforge.net/
[5] http://rubyforge.org/projects/rcov/
[6] http://sbcl.sourceforge.net/manual/sb_002dcover.html
[7] http://search.cpan.org/~timb/Devel-NYTProf-2.05/lib/Devel/NYTProf.pm
[8] http://www.yourkit.com/
[9] http://ruby-prof.rubyforge.org/
[10] http://www.oracle-base.com/articles/8i/ExplainPlanUsage.php

72
[+3] [2008-10-15 13:14:52] Nicholas

Reflector!!!!!!!


73
[+3] [2008-10-15 05:22:16] vanslly

A mocking framework, like Rhino Mocks [1], which allows you to work with mocked or stubbed instances while testing.

Without it Test First Development just wouldn't be the same.

[1] http://ayende.com/projects/rhino-mocks.aspx

74
[+3] [2008-10-19 11:43:23] porneL

Unix CLI tools like find, awk, sed, make. They come handy in all kinds of situations.


75
[+3] [2008-10-20 12:52:09] gpojd

GNU Screen [1]. I don't know how I worked without it before I found it. It allows me to use all the other suggestions that were made here in one screen session.

[1] http://www.gnu.org/software/screen/

76
[+3] [2008-10-19 05:45:57] Yes Fish...

Reflection. Definately reflection. There is just no way I could do my current work without it.


77
[+3] [2008-10-23 08:54:12] community_owned

Without a doubt, it's the Internet. Those who have always known it have no idea what an impact this has made on everything.


78
[+3] [2008-10-18 03:57:16] Leonard

If you haven't really "got" the object oriented paradigm, your eyes will light up when you finally grasp it. OO is a way to think about the "middle chunks" of a complex system and lets you make progress even when you don't understand the whole solution yet.


79
[+3] [2008-10-17 19:49:36] Don

stackoverflow :)


80
[+3] [2008-11-05 13:26:00] Nappy

Cheat sheets!

Command-line access to cheat sheets using a Ruby gem: http://cheat.errtheblog.com/ Heck, you can even do cheat cheat.

Here are some awesome networking cheat sheets from Packetlife: http://packetlife.net/cheatsheets/

I'm currently in the process of collecting all the best sheets and printing them into a binder format.


81
[+3] [2008-11-12 15:17:00] Codebeef

A Staging Server: I can't imaging working on a web app then deploying into production without staging it first in the same environment as the production server.


I can imagine it, I'm living it, and let me tell you, it's ugly - MattBelanger
82
[+3] [2008-10-16 15:43:54] Shane

Scott Hanselman has put together and maintained an excellent list of tools and utilities, many of which I now find indispensable.

The list is here:

Scott Hanselman's 2007 Ultimate Developer and Power Users Tool List for Windows [1]

My personal favourite: slickrun [2], an indescribably smart and effective utility to launch anything.

[1] http://www.hanselman.com/blog/ScottHanselmans2007UltimateDeveloperAndPowerUsersToolListForWindows.aspx
[2] http://www.bayden.com/SlickRun/

83
[+3] [2008-10-17 05:00:45] deft_code

Boost [1]

C++ is as bad as all the Java programmers claim without it.

[1] http://www.boost.org
[2] http://www.boost.org/doc/libs/1_36_0/libs/smart_ptr
[3] http://www.boost.org/doc/libs/1_36_0/libs/bind/bind.html
[4] http://www.boost.org/doc/libs/1_36_0/doc/html/function.html
[5] http://www.boost.org/doc/libs/1_36_0/libs/tuple/doc/tuple_users_guide.html
[6] http://www.boost.org/doc/libs/1_36_0/doc/html/thread.html
[7] http://www.boost.org/doc/libs/1_36_0/doc/html/boost_staticassert.html

84
[+3] [2008-10-17 18:05:57] David Kemp

Google.

Before trying to solve any problem, use Google to see if (and how) any one has done it first.*

*Although the answer to who's done it first might well be Google.


85
[+3] [2008-10-16 11:08:40] Nick

Domain Driven Design


86
[+3] [2008-10-16 11:40:49] jrutter

Basecamp Project Management Software because no one really wants to take the role of the project manager, but this helps everyone become more accountable for what they are doing. Especially in small companies, I think most programmers fret at the thought of using such software because they complain it makes more work for them, but when you are working with programmers who are both on-site and remote, things can get messy. Basecamp helps to keep everyone on the same page. For our team, we use it as a calendar, task list and sometimes a wiki for documentation.


87
[+3] [2008-10-16 10:53:15] Herman Lintvelt

Bazaar. Definitely the best source-control software I've ever worked with. First you discover source-control, then you discover bazaar [1].

[1] http://bazaar-vcs.org/

(1) Why bazaar instead of any other SCM? - Thorbjørn Ravn Andersen
88
[+3] [2008-10-17 01:39:04] dicroce

strace and ltrace on Unix. I have no idea how other programmers get along without them! The output of these tools can take some getting used to, but once you do get used to it, its hard to imagine not having!


(1) Also: DTrace on Solaris. Power tool indeed. - Tadeusz A. Kadłubowski
89
[+3] [2008-10-17 01:45:18] user28791

Synergy, without a doubt. 3 seperate OS's all controlled by one mouse and one keyboard? Magic.

(java) In the last few days, I've also discovered the joys of Spring Workflow. There are other frameworks out there but this is the one I discovered. Re-implementing our core Webservices has not only been a joy, but maintenance and performance have been hugely improved.


How Can you tell after only a few days? Please share. - Thorbjørn Ravn Andersen
90
[+3] [2008-10-16 01:35:15] Ovidiu Pacurar

Ctrl+F5


On my Linux box, this takes me to desktop 5 :). That works, I suppose. Multiple desktops in Linux are pretty handy. - postfuturist
Wow! thank you. In OS X on my Mac that shortcut takes you to the toolbar of the current window. That was one of the things I didn't know how to do without the mouse. Great! - Sergio Acosta
(1) You might want to be more specific (software and os), as in Firefox on Windows it only does a refresh and override the cache... - Franck Mesirard
91
[+3] [2008-10-16 03:32:10] AlePani

CruiseControl or any continuous integration tool, and lots of Unit Tests.

Good people in Test.

And "eat your own dog food" use your software every day you'll know the problems earlier.


92
[+3] [2008-10-16 06:51:23] Jerph

I've found that having one vertical monitor and one horizontal monitor is very useful. E-books, web browsing and some code (long functions) are better on the vertical one. Mail and wide code are better on the horizontal one.


93
[+2] [2008-10-16 07:21:00] bob

for me also...

  1. JetBrains [1] tools (ReSharper, dotTrace)
  2. GhostDoc [2], (VS.NET Addin) (the little push I sometimes need)
  3. Expresso [3], great regex tool
  4. Enso [4], program launcher
  5. Google Reader
  6. VirtualPC / VirtualBox
  7. and FreeMind [5], to keep me organized

EDIT

forgot one

  1. GridMove [6]

EDIT 2

some tools I place on my USB stick. ( link [7] / link [8])

always my mindmaps with me...

[1] http://www.jetbrains.com/
[2] http://www.roland-weigelt.de/ghostdoc/
[3] http://www.ultrapico.com/expresso.htm
[4] http://www.humanized.com/
[5] http://freemind.sourceforge.net/
[6] http://jgpaiva.donationcoders.com/gridmove.html
[7] http://portableapps.com/
[8] http://portableapps.com/node/10952

Thanks for the FreeMind. I didn't know that that there is free alternative to MindManager - Rinat Abdullin
94
[+2] [2008-10-15 23:11:33] ejgottl

A "visual" editor. When I first started programming, I learned to use a line editor (think interactive sed... a big step up from punch cards) and got pretty good at working with it. Then some other students started using and bragging about a new "visual" editor (think vi). I tried it, but couldn't see the point; I could edit code faster with the line editor which I had spent a great deal of effort mastering. Finally, after some time, after admitting my stupidity, I switched to the more modern editor and never looked back. Hopefully that experience has made me a better judge of the value of change. In our industry, more often than not the new way of doing things is worse than the old one. But sometimes the new way is in fact an improvement.


I, on the other hand, learned to use vim. It's awesome. I used to use Visual Studio before :) - hasen j
It is not easy having to relearn things you know how to do well already. - Thorbjørn Ravn Andersen
95
[+2] [2008-10-16 03:20:34] Kent Brewster

WinSCP [1] and TextPad [2].

[1] http://winscp.com
[2] http://textpad.com

96
[+2] [2008-10-17 06:27:32] Oliver

ClipX - A Clipboard extender that lets you access your 20 most recent "Ctrl-C copies". How many times you whished, you had that "second-to-last" copy handy.

Set the shortcut to Ctrl+Alt-V, and you will get used to it quickly.


97
[+2] [2008-12-19 03:16:28] plaureano

People skills. Now I can talk my managers out of doing thing(s) that make absolutely no sense without having to write a single line of code, and that saves me a huge amount of time.


98
[+2] [2009-02-03 16:43:27] community_owned

Git. I didn't have any idea how bad svn was until I came to know the powerful ways of git. (though I think any -distributed- version control system might work).


99
[+2] [2009-05-10 20:58:09] Timwi

IntelliSense, or any similar auto-completion mechanism.

It is absolutely staggering how many IDEs don't have this, even though Visual Studio demonstrates really nicely how useful it is and how much time it can save.

Unfortunately you can't have IntelliSense in a dynamically-typed language.


SLIME has been rocking autocompletion in Lisp, the archetypal dynamic language, for years. But even if you insist on only languages that look like C, Intellisense in VS2010 does Javascript, too. - Ken
100
[+2] [2009-05-15 05:11:49] zonkflut

Resharper [1] Proberbly one of the most useful tools I have ever used. Makes my coding experience in Visual Studio so much more pleasent.

[1] http://www.jetbrains.com

101
[+2] [2009-05-27 19:12:06] NotDan

A mock object tool. Specificaly Moq for .Net.


102
[+2] [2008-10-17 16:02:23] community_owned

two monitors. definitely two monitors.


Isn't this a duplicate of the #1 answer? - Alan Hensel
103
[+2] [2008-10-18 08:25:45] rabashani

Google, absolutely that best thing ever happened.


104
[+2] [2008-10-15 06:12:14] Chris Blackwell

Using a language that supports closures and functions as first class objects, if you've never used anything but a C derivative. These two language features make your code orders of magnitude more elegant. It can take a while to catch on to why they are nice, but much like source control, it's hard to go back once you have them.


105
[+2] [2008-10-15 13:05:16] kenny

Cell phone.


106
[+2] [2008-10-15 15:14:43] Jeff Schumacher

Tools like CodeRush & Refactor Pro
Coffee
A comfortable chair (seriously)
Productivity enhancing tools (not programming specific) like Launchy and Ultramon
Someone to bounce questions off of
Silent time
Code Complete 2
Virtual Machines

just to name a few.. but all of these are very very important to me.


107
[+2] [2008-10-15 01:12:15] aib

Debugger. I deal with so many comp sci students who have not really used a good, GUI-driven debugger.

I hold up Visual Studio as a great debugger.(Or at least the best I've ever seen).

printf debugging. I've seen so many CS students who have struggled with good GUI-driven debuggers when they could have simply added a few lines to their code and found their mistake.

(Both methods have their moments, I guess)


"Tracepoints" are nothing more than printf's, pretty much - TraumaPony
108
[+2] [2008-10-15 00:37:07] moffdub

Coding standards checkers like JTest [1] are capable of giving good advice on programming techniques that you might not be aware of, and they can give you something to think about. Also, any unit testing framework that calculates statement coverage is useful to see what you overlooked in your tests.

[1] http://www.parasoft.com/jtest

109
[+2] [2009-05-11 16:48:28] 動靜能量

a KVM switch for handling 2 computers or more at the same time.


110
[+2] [2010-05-18 23:09:01] Roflcoptr

3 monitors. A large widescreen monitor for Eclipse (or any other IDE). A second monitor for the documentation/API/tutorials/references/spec stuff and a small third monitor for my entertainment (tv, watching movies, watching series like 24, big bang theory and so on, listen to music,...).

Sounds weird, but if you don't think very hard but just have to code your already thought about solution, its very relaxing to code while wathcing tv or series.


111
[+2] [2010-08-06 15:04:05] user279521

Microsoft. If it wasn't for Mr. Gates, I'd be schleping at Radio Shack !!


112
[+2] [2010-08-06 15:09:28] Adam

ReSharper. Enough said.


113
[+2] [2010-08-18 08:02:38] TimS

File and directory comparison tools.

My two favourites:


114
[+1] [2010-08-18 08:04:42] TimS

WinDirStat. Shows a graphical representation of files and folders taking up space on your hard drive. Great for spotting files which can be deleted or moved. Has saved an old tiny server from certain death for the last 5 years!

http://windirstat.info/


+1. Or even 'just' plain ol' SequoiaView (from which WinDirStat borrows one output mode). - pinkgothic
115
[+1] [2009-02-19 19:29:23] Fortes
  • Firebug
  • A Macintosh computer instead of a windows pc
  • Eclipse ide
  • SVN, Version control
  • jAvaScript librarys like Scriptaculous and prototype
  • a cellphone with internet
  • a webCam with a motion sensor

116
[+1] [2010-10-26 19:55:03] user181813

A clipboard with history. I use Ditto [1].

[1] http://ditto-cp.sourceforge.net/

117
[+1] [2010-08-06 15:08:53] Shawn D.

Logging. I cannot count the number of times that a customer has reported an issue in an environment where there is no possible way to get a debugger in, and it has been solved simply through examining clear, verbose logs to figure out what's going on.

I find a lot of the time people rely on a debugger to step through and see what's going on, and that's how the causes of problems are found. However, you'll end up with customers that have boxes that you're not allowed to access at all, let alone use a debugger.

"Here's the log file. Tell me what's wrong."


118
[+1] [2010-08-02 12:16:42] Tarun

I am thankful to the spotlight on my Mac! and Launchy on my PC!

without it, i would waste a lot of time searching for my programs!


119
[+1] [2010-08-05 21:01:42] JW

Latin

Learning Latin at school.

Its difficult to quantify the benefits... but every so often I find myself understanding words that I have never seen before and being able to remember them more easily by understanding their derivation rather than simply learning their meaning 'parrot fashion'.

Also being able to pick good names for classes, methods and variables by building them up from smaller blocks like inter-, intra-, ex-, in-, pre-,post-.

Dunno - waddya think?


120
[+1] [2010-08-06 14:31:53] Ken

Conditions [1]. (Also: Seibel [2], Pitman [3].)

Before using them, I had no idea they existed; after learning about them, I find it amazing that most people and systems still get by with exceptions or (gasp) error codes. (In fact, from up here, exceptions look pretty much like a tiny amount of syntactic sugar for "error codes + early return + a struct".) We generally recognize the value of separation of policy and mechanism in other contexts, yet exceptions still violate this horribly. Even in languages that seem otherwise enlightened compared to the old C++/Java way (like Python and Ruby), nobody seems to care that their error reporting and handling facility is pretty much exactly as wimpy as C++/Java's.

[1] http://www.lispworks.com/documentation/HyperSpec/Body/09_a.htm
[2] http://www.gigamonkeys.com/book/beyond-exception-handling-conditions-and-restarts.html
[3] http://www.nhplace.com/kent/Papers/Condition-Handling-2001.html

121
[+1] [2010-08-06 14:40:18] Gabe

Monadic query comprehensions (i.e. LINQ)


122
[+1] [2010-08-06 14:56:22] loneboat

Portable apps; really helps when your shifting from one environment to the next.


123
[+1] [2009-05-12 15:39:42] Jugglingnutcase

That totally happened to me with source control! Why they never taught me that in college is beyond me! Actually they started teaching it the year after me.

Similar to the question, but on a little different plane...

i told my co-worker that i hated the second or two it takes for new tabs to load in IE and that was the biggest reason why i preferred Firefox. He said now that i've said that he's started to notice it and it bugs him too.


124
[+1] [2010-01-28 02:19:40] Alex

App Verifier [1]. It rocks your world.

[1] http://www.microsoft.com/downloads/details.aspx?familyid=c4a25ab9-649d-4a1b-b4a7-c9d8b095df18&displaylang=en

125
[+1] [2010-02-03 09:34:24] marcgg

Git [1]

[1] http://whygitisbetterthanx.com/

126
[+1] [2010-02-11 15:59:08] user256890
  • Storing code on an external USB powered HDD. This makes swapping between computers very easy, often do not need to carry my laptop.
  • PostSharp [1]: ground-breaking for aspect oriented programming
  • Reflector
[1] http://www.postsharp.org/

127
[+1] [2010-02-11 16:21:41] devio

I notice that almost all answers are centered on tools.

Things that I miss most in projects where they don't exist are:

  • Specifications
  • Project Documentation

It really makes a difference if you work in a project which starts out with a set of specifications and requirements, or whether it's just "an idea" which needs to be implemented.

Same is valid for documentation (and I don't restrict this to source code documentation): Consider which documentation is required for whom (technical, setup, maintenance, user; users of different areas of expertise). Also estimate the time required to create this documentation, and plan this as active development time (rather than an afterthought after the "real work" is done).


128
[+1] [2008-10-15 03:33:20] HappyCodeMonkey

Portable Apps, Linux Live CDs, and classes in C++ have all vastly improved my life.


129
[+1] [2008-10-15 19:48:09] da code monkey

Separate compilation. Gone are the days of when I used a BASIC compiler which took several minutes to re-parse a large program after editing one line of code.


130
[+1] [2008-10-15 13:10:43] Danielle

By the way, I'm not answering this question per se, but for anyone that doesn't know about source control (as mentioned in the post), here is a great introduction: http://www.ericsink.com/scm/source_control.html


131
[+1] [2008-10-15 13:12:24] Nicholas

Two tools:

  1. Good Database schema compare tool (Great for generating change scripts on legacy dbs)
  2. Tool to generate Insert Scripts (Lets you annihilate your dev environemnt and restore at any time via query analyzer)

132
[+1] [2008-10-15 09:24:05] Peter Miehle

Make-file or now it is Ant-files i will have to learn by heart


133
[+1] [2008-10-17 20:06:31] tsilb

my six monitors [1], .NET, Edit and Continue, unit tests, and a STOP button that actually stops the page loading (Thanks, IE8!).

[1] http://www.realtimesoft.com/multimon/gallery_browse.asp?ID=934&date=desc&nummon=false&mon=desc

134
[+1] [2008-10-17 22:06:58] J.J.

Switching to the Dvorak keyboard layout. It increased my typing speed, and decreased my fatigue.


135
[+1] [2008-10-21 11:38:33] ptor

A (dual) monitor that can be rotated by 90deg

No longer scrolling like crazy all over the source code, and can see a reasonable number of lines at a time


136
[+1] [2008-10-21 21:02:34] Paul Fedory

In Visual Studio, I use code snippets all the time. For example, typing "mbox" then Tab, will auto-complete a MessageBox.Show() for you. There are several others, and it's easy to create your own.

Also, I use the right-click "Surround with" option to surround a block of code in a try-catch block or something similar.

I also use the "Extract method" on a block of code to create a private method and enhance the readability of the code.

I know a lot of programmers that aren't aware of them, or are aware of them, but just never used or got used to them. They're a great time-saver!


137
[+1] [2008-10-20 02:06:07] user23313

Unit Tests and Lean software practices generally.

Knowing I have comprehensive automated test coverage lets me sleep at night.


138
[+1] [2008-10-20 11:32:36] Jon Topper

Development, integration and test environments that are identical in software configuration to the live environment to which code will be deploy, as well as a database with a large enough dataset to be representative of the live environnment.


139
[+1] [2008-10-20 12:06:50] Colonel Sponsz

Versioning file system. Having worked on a VAX many years ago I'm still somewhat surprised that it's not a standard feature of modern operating systems.


140
[+1] [2009-06-23 06:23:07] community_owned

Assembler.


141
[+1] [2009-06-30 15:06:19] Jim Rush

A complete continuous integration environment that performs a rich set unit and system tests.

Those 'quick fixes' can cause significant damage if there's only quick testing.


142
[+1] [2009-05-11 16:43:48] e-satis

A living ornitorynx. I am sure none of you is able to realise the amazing benefit of coding near this incredible gift of god. No ?


143
[+1] [2009-02-03 16:46:49] Jonathan Sampson

In all honesty, DIV-Based CSS Layouts. I fought tooth-and-nail for years, and continued to tell myself "It's okay, tables work with little effort, nothing wrong with using them."

I am so thankful I stopped being so apathetic and lazy.


144
[+1] [2009-01-13 17:39:30] user19471

WinGrep for searching quickly and efficiently through a codebase.

http://www.wingrep.com/download.htm


145
[+1] [2008-10-17 09:13:43] community_owned

Continious integration...CC.NET


146
[+1] [2008-10-17 12:38:05] Stepan Stolyarov

GoF [1] book and the concept of design patterns as such. I think I never really understood OOP until I read this book. Patterns helped me to take a broader look at my programs.

When you start programming, you think of your code in terms of really low-level things, such as vars and loops. Then you learn functions and start using them (I can remember times when I was about 10 and was eager to write my next BASIC program with subroutine). Even later you meet the classes — and at first it seemes to be the highest level of abstraction. And then you meet the patterns.

For me it was like driving to the top of the hill — when you reach it thinking the road is just over, you suddenly see the whole world ahead.

[1] http://en.wikipedia.org/wiki/Design_Patterns

Yes - lot of things 'clicked' for me too when I read the Gof book. - JW
147
[+1] [2008-10-16 14:13:13] community_owned

A second screen

For developping and testing and read the documentation, plus check e-mails once a while...


Isn't this a duplicate of the one currently at the top of the list with over 100 votes? - Alan Hensel
148
[+1] [2008-10-17 19:43:10] dviljoen
  • SysInternals
  • Reflector
  • Managed Stack Explorer
  • Ghostdoc
  • Notepad++

149
[+1] [2008-10-17 16:27:12] whatknott

For anyone with multiple monitors or widescreens, a window management program is a must. Try WinSplit Revolution [1] for starters.

[1] http://www.winsplit-revolution.com/

150
[+1] [2008-10-17 14:43:10] bwknight877

Automated nightly build system, saved us the time of a 6+ hour manual build process down to a 15min automated build


151
[+1] [2008-10-17 02:31:33] SpongeJim

Going backwards in time:

CruiseControl.NET... Resharper... NUnit... Reflector... Intellisense... Struts... Debuggable JSP's... Java... an IDE... Windows... XWindows...


152
[+1] [2008-10-15 23:37:27] tunaranch

Maven. It makes integrating the use of various tools into the build process so easy.

Code Coverage Reports (cobertura).


153
[0] [2008-10-16 01:52:42] Kena

A tool to check memory usage (like valgrind, purify or bounds checker). These have been the key to solving some pretty nasty bugs in the past. Because reading through thousands of lines of code looking for that wretched memory corrupting code is not my idea of fun.


154
[0] [2008-10-16 10:44:10] larssg

Capistrano. Knowing that I can run deploy:rollback if anything fails and also forcing tests to run before deployment is extremely useful. It also means no matter how complicated deployment of a project is, anyone is able to do it since it only requires a single command.


155
[0] [2008-10-17 14:54:59] John Dunagan

A laptop, Intellisense, dual monitors, teammates, my local developer community, Resharper, Firebug, WinMerge, Subversion, Google, ice cream, and beer.

And the minute I can't add to this list is the minute I've lost the will to live.

Great question.


156
[0] [2009-02-18 09:42:16] Ries

ORM tools. I remember going into a project (early days) thinking I would have to write classes for all entities manually, and then finding out about code generating ORM tools. Needless to say, it saved considerable time and effort.


157
[0] [2009-08-20 12:45:51] Mark Redman

Object Oriented Programming for code reuse!


158
[0] [2009-10-22 02:01:03] gcb

in VIm you can apply a regexp or any command based on another regexp.

e.g.

:/head/,/\/head/s/google.com/yahoo.com/
 ^^^^^^ first regexp. start
       ^ separator
        ^^^^^^^^ second regexp, ends here
                ^ command. substitute.
                 ^^^^^^^^^^^^^^^^^^^^^^ the regexp.

159
[0] [2008-10-17 19:55:35] community_owned

EJB3...

Death to deployment descriptors! Long live annotations!

Oh, and Java annotations, too. Never saw the need until EJB3 showed me the light. Of course, having done EJB3 annotations for a while, I still see the need for deployment descriptors (don't put host names in source code - that's bad 'um kay?). But the annotations sure makes ORM constructs easier to deal with.


160
[0] [2008-10-15 09:25:21] Peter Miehle

lex and yacc for skimming through context free data (of any type, be it languages or structured data)


161
[0] [2008-10-15 07:58:43] Pace

Third party tools that make your job easier / more productive.

For example I work with sql server a lot and there are some great intelli-sense and comparison tools out there. I can compare and sync schemas and data. When I show these to other developers they often turn green with envy.

The tools alone save me hours upon hours a week.


162
[0] [2008-10-15 05:16:40] hlfcoding

Textmate bundles. E uses them now too, so I can develop on Mac and PC using relatively light-weight and easy-to-understand IDEs that are very versatile.


163
[0] [2008-10-15 03:49:16] Nrj

Finger-Print reader for authentication on a notebook ! Wow !!


164
[0] [2008-10-15 02:33:04] Skittles

FullShot9 for putting screen shots of only the areas on code and forms that I am referring to into my documentation and bug reports.


165
[0] [2008-10-15 00:18:42] Dan Dyer

I second the suggestion of a Continuous Integration server. Particularly if you use something like Hudson [1], since you can graph all sorts of interesting data (test numbers, code coverage scores, static analysis) over time.

[1] https://hudson.dev.java.net

I think you should vote the original post up if you second it in order to push it to the top. - David Holm
166
[0] [2010-03-10 07:14:20] mhd

perl and regex(unseparatable I guess), GUI diff/merge tool, mercurial. That's about it that I can think of for now.


167
[0] [2010-07-19 17:47:03] JW

Taskbar Shuffle

On Windows "It allows you to drag-and-drop programs on your taskbar for quick reorganization"

Until I had it installed, during long work sessions I used to spend 10 to 15 minutes closing down all my apps and re-opening them again purely to re-order the tabs on my taskbar. With shuffle it takes a second.

See: http://download.cnet.com/Taskbar-Shuffle/3000-2072_4-10531265.html


168
[0] [2010-08-18 08:12:38] obelix

Onenote for keeping track of information while writing code and it syncs with the cloud FTW


169
[0] [2010-08-06 15:29:31] pinkgothic

It's another tool, and typically one a programmer encounters early in their life, but one that I've learnt to love in all its simplicity (and that makes me retrospectively curse the fortunately fairly little time I spent without it):

less

Oh, the sweet times I've spent piping svn diffs and large grep results into it. The beauty of console buffer restoration after a simple q. The finesse of navigating through just about any input that can be piped.

Godsent.

So simple it's brilliant.


170
[0] [2010-08-06 16:14:28] BenBtg

Snoop! for debugging WPF apps FTW!


171