ProgrammersAs a programmer what single discovery has given you the greatest boost in productivity?
[+315] [205] community_owned
[2009-03-14 02:47:16]
[ tools techniques ]

This question has been inspired by my recent discovery/adoption of distributed version control. I started using it (mercurial) just because I liked the idea of still being able to make commits at times when I couldn't connect to the central server. I never expected it would give me a large boost in general productivity, but a pleasant side effect I discovered was that making a new clone every time I started a new task and giving that clone a descriptive folder name is extremely effective at keeping me on task resulting is a noticeable productivity increase.

So as a programmer what single discovery has given you the greatest boost in productivity?

Extra respect for answers which involve tools or practices that aren't so obvious from the outside!

(12) Voted to reopen, for two reasons: 1) The enormous amount of historical activity and interest on this question warrants at least some feeble attempt at preservation, and 2) I believe that this question meets at least four of the six criteria for constructive subjective questions. - Robert Harvey
(2) Agree with Robert Harvey. This is a good question. - Thorbjørn Ravn Andersen
[+342] [2009-03-14 04:46:31] David Zaslavsky

Not sure it's really my #1 but nobody has mentioned this yet: syntax highlighting.

Maybe it's just because I've gotten too used to it but it takes me twice as long to edit a program in nano (black-and-white) as it does in KWrite (color with syntax highlighting)... sometimes I've been outright unable to do it.

(28) You can enable syntax highlighting in Nano - just google it for your language. And anyway - real men use vi :-). - community_owned
(6) +1 I remember the times when syntax highlighting was considered not to be for real programmers... (I've always found it helpful though - maybe I'm not a real programmer after all ;-) - Anders Hansson
(17) I've generally made a point of embracing, or at least taking a good look at all the things real programmers disdain. Half the time people disdain things because they're afraid it'll put them out of business. - community_owned
(6) @Subtwo, I do everything "real programmers" don't. This isn't about being macho, it's about writing great code easily. It reminds me of this XKCD: - community_owned
(2) I use syntax highlighting, but honestly, I could probably live without it. No dynamic highlighting of matching braces, parentheses and brackets? Now that would really slow me now. - Matt Garrison
(27) @Lucas Jones And real women. I don't think my vi skills are going to make me a real man anytime soon. - community_owned
(1) I once spent days trying to work out why my code had broken, only to discover that it was an unclosed comment. That kind of thing just can't happen with syntax highlighting. - Benjol
Some say that real men need no national health care either. - community_owned
@Mike Sherov, I love that strip! :) - Anders Hansson
Really, you use KWrite... not Kate? - community_owned
Ah, well of course I use Kate for real coding ;-) KWrite is for random hacks when I don't need advanced features like project management. It was just the first syntax-highlighting editor that came to mind. - David Zaslavsky
@Ellie P.: Fair point - real women use vi, too! "Real people" doesn't have the same ring to it, though, if you know what I mean. Neither does "real [men/women/etc.] (delete as appropriate)". - community_owned
(2) 255 votes. I couldn't make myself vote this one up, I just don't want to risk it overflowing and returning to 0 votes! Wow, there's another one at 255 too. - Wallacoloo
lol, actually I'm surprised it got this high. Probably only because this question was linked from reddit (200+ of these upvotes have come in the past week). - David Zaslavsky
Nano is a good choice for gui environment in Linux. - xiao
I like it as a console-mode editor but I find that a typical true GUI editor (e.g. KWrite or gEdit) is usually much easier to use. Some people will feel differently of course. - David Zaslavsky
(2) @Lucas Jones/Ellie P: How about "real men and sophisticated ladies use vi(m)" - TokenMacGuy
[+338] [2009-03-14 03:18:08] community_owned

For me it is Code Completion (which Microsoft calls Intellisense [1] although they are slightly different). Things just move so much faster when the information I need right now is right at my fingertips. The savings in keystrokes helps as well.


(5) Yes. I find it actually semi-intuitive now to ~explore~ a library and its functions. - community_owned
(1) I agree with Simucal. The ease of exploration with intellisense on an otherwise unknown library is just superb. - Greg D
(40) What's Intellisense? - David Zaslavsky
(16) David, Intellisense is the little window that pops up when you are typing in Visual Studio (or most any other IDE or editor these days) that shows you matching objects (e.g. all objects or methods starting with "a"), methods, parameters, etc. - community_owned
Definitely Intellisense. Syntax highlighting, autocomplete, and everything else is nice, but IS is best. - community_owned
@Mark: thanks, I didn't know it had a name... - David Zaslavsky
(75) Intellisense is Microsoft's proprietary name for autocompletion. - community_owned
(150) +1 I don<ctrl+space> ty<ctrl+space> ful<ctrl+space> wo<ctrl+space> anym<ctrl+space>. - community_owned
@Greg D, I tend to agree, but you can get into trouble that way too. Every once in a while a method doesn't quite do what you would think it does from the name and signature alone. - community_owned
(3) Intellisense is that thing that crops up from time to time on my C++ stuff. I hear it's reliable on C#, which would be nice. - David Thornley
@Kennet Belenky: Of course, but given that most APIs I've had to program against in my professional life have either little or no useful documentation, I'm happy to take what I can get. Ultimately, good documentation always would supercede Intellisense. Goodness knows I use the .net framework docs on MSDN to discover functional details far more than just intellisense, but even then intellisense can be a fast way to explore the library so I can figure out a likely starting point in the docs. - Greg D
(6) C# Intellisense rocks my world. C++ on the other hand is a piece of ... Glad Visual Studio 2010 is finally taking a stance against that. - community_owned
(1) I agree with Nick. C# Intellisense is probably one of the few reasons why I stick with C# and don't even bother learning something else. It's just faster to program, and also allows you to virtually have the documentation right there. - DMan
Intellisense is mediocre at best with Visual C++. Add Boost headers to the mix and it's utterly worthless. - community_owned
Does this really count as a discovery? I guess you mean when you first started using Visual Studio? - Dan Tao
(2) and in 2010, it does more of a Contains search--not just BeginsWith...which is awesome - Michael Haren
(15) Intellisense/Autocompletion really aren't that useful when you're using languages that don't require so much boilerplate. - ironfroggy
(5) @ironfroggy Calling a function or method ain't boilerplate. - community_owned
(2) I prefer using man -- prevents you from overlooking side effects... but then I program in C... But when in Java, Eclipse's auto completion rocks! (I will write an emacs extension to find and kill anyone who calls autocompletion "intellisense") - Aviral Dasgupta
for c++ you want dabbrev-expand, also bette rfor TDD as intellisense can't do TDD (currently) - jk.
Anyone who has migrated SQL Server 2005 to SQL Server 2008 will know the real boost in productivity in Intellisense. FYI, 2005 doesn't auto complete table names or columns! No idea why Microsoft waited till 2008 to add this feature. - community_owned
(2) Why don't you just say autocomplete instead of using some proprietary terminology used only by customers of one company? - Dev er dev
(1) If MS call it intellisense in their products, why shouldn't we call it the same when talking about its use in those products? Autocomplete and intellisense are anyway not the same thing technically. - community_owned
@Nick Bedford, IntelliSense for C++ in VS2010 still fails randomly, thought it seems to recover quicker. I haven't had to delete the IntelliSense database yet. - Matt Olenik
Just to stay technically correct, I've altered the answer to reflect Dev er dev's point. - community_owned
(1) MSVC intellisense also involves tooltips that show the variable type and function parameter types (while you're writing the function call). Editing the answer and changing that to just "code completion" is not fair to the people who voted intellisense up. - hasen j
Ummm...I didn't change it to "just code completion" - I specifically include Intellisense as an instance of the broader concept. I don't think someone would not vote for Code Completion / Intellisense where they would vote for Intellisense, would they? - community_owned
Eclipse's auto complete also shows variable type and function parameters, as well as function description, full documentation on that function/variable, hyperlinks to related types, and much more information. It is in every way superior to IntelliSense, so implying that "auto completion" or "code completion" can't have these features is absurd. These are full terms themselves (not just combinations of words) with implicit meanings, so it's not "unfair" to fans of IntelliSense - they're still the same concept. It's just an umbrella term. - community_owned
Personally I dislike this feature very much. All the little floating popups distract and annoy me to no end. They break my concentration. - community_owned
@Sander - funny you say that. Red Gate installs a little code completion utility with their SQL Tool Belt that drove me nuts until I could figure out how to turn it off (the rest of SQL Tool Belt is extremely well done - indispensable even). Every time I would type "Select Count(" it would sense the "(" and substitute in a very rarely-used table called "CountryNames". Anyway, done right - as it is in Visual Studio - I find it invaluable. However, if you don't like it, there will surely be a way to turn it off! - community_owned
Intellisense isn't just about saving work or getting a list of members. If I type that dot and get a list I wasn't expecting, it tells me I have a type I wasn't expecting to have. That helps me catch bugs faster, often before I even compile. Sometimes Intellisense shows nothing at all; in that case it usually means a syntax error or a problem with my page markup. It saves a lot of time that I can find these things out without having to run the app. - Kyralessa
[+279] [2009-03-16 09:36:01] community_owned

Google [1]


(156) Thx you for including the link :-) - community_owned
(12) How come I didn't see yet? o_O - community_owned
(3) Unheard of before. - fastcodejava
(46) @Romain because for some of us, stackoverflow is the single greatest drain of productivity. - community_owned
Yup, probably half the people here don't remember the era B.G., when you just had to keep trying different ideas till you found something that worked. Or order a book and wait till it came by post, then read it to see if the answer was there... - Benjol
I use Google as my Java SE reference. - titaniumdecoy
I believe this is the second gold-badge answer on SO that included nothing more than a link to Google. I may have to change my style. - mmyers
he works for google, he included the link to increase pagerank of google - Suraj Chandran
@To1ne, this might be the one occasion where a "Let me google that for you"-link might be appropriate. - Thorbjørn Ravn Andersen
[+251] [2009-03-14 03:12:33] community_owned

Flow. Try to maximize the amount of time that you can spend in Flow. That means: Close your web browser (the one opened to, don't listen to distracting music, close your mailbox, close your IM, etc. You get the idea. If you wanted to be very productive in college, you shut out the entire world so that you can focus. There's no reason why work-life is any different.

People who are least productive tend to lose a lot of time to distraction, entertainment, etc. Look at your co-workers. You'll see that I'm right.

(20) When I'm really trying to concentrate, I've gone as far as turning digital clocks around to face the wall because that changing number once per minute was too distracting. :) - Greg D
(4) hmm on the other hand, when i'm really 'in' the problem .. my all sense organs are automatically paralyzed... - Vardhan Varma
Yeah, I'm told by co-workers that I frequently don't see them walking down the hall my desk faces because I'm so focussed on the screen. - community_owned
(62) yeap and i get distracted reading stackoverflow questions too :-D - icelava
(1) Very true...I wish I could save this answer. I am missing the "add answer to my favourites" feature - Aishwar
(28) I thought it's called "The Zone" :) - community_owned
Very much agreed. Learning how I work, and what are the optimal conditions for doing my best work, has boosted my productivity more than any one tool. Know thyself ;) - community_owned
I heartily recommend Your Brain at Work… - community_owned
Like this: - community_owned
Music off? Well I prefer to hear Music while working (excluding research, heavy thinking stuff). Sometimes gives me some "boost" just like when doing sports. - Nils Riedemann
'Flow' is a term from psychology, 'the zone' is more general - both describe the same thing in this sense. - community_owned
(1) @Nils: when you do sports, music boosts you at the very beginning. But when your body come to its limits, the music gets on your nerves. Why? Because it's when you need to concentrate 100% on your body, and only on your body, that every other thing that may disturb you will get on your nerves. In other words, when you need real concentration, whatever activity it is, every single thing that may disturb you... will disturb you. - Olivier Pons
(3) Unfortunately, still being a kid, I have to put up with whatever my parents are doing. They love to play really obnoxious music, and I gotta say that noise canceling headphones help make getting into Flow much easier. - Wallacoloo
@Wallaco, sounds like you are old enough to demand your own room now! - Thorbjørn Ravn Andersen
[+203] [2009-03-14 04:14:32] community_owned

VIM!!! Nuff said!

(13) I'd +2 this if I could. - Kristo
(13) As someone born after green-screens, why on earth would VIM help productivity? - community_owned
(14) @Karl: Because it gets out of your way and just listens to what you tell it do to. You can be the programmer without worrying about fighting the shitty tool (Microsoft, I'm talking about your shitty tools) - community_owned
(49) It's spelt vim. No fancy exclamation marks needed or allowed. - mctylr
(11) In the right hands, it can do things most text editors cant. --- "To me, vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth every time you use it." (author unknown) - community_owned
(2) @brian Author known: - jleedev
(1) Yes, yes, yes, yes, yes, yes!!!!! - j0rd4n
(3) I'm so used to vim's command/insert modes that whenever I have to type something regularly, I always find myself hitting <ESC>bb... whenever I misspell something and then I mess it up even further. - community_owned
@jleedev, it is like I had written this cheat sheet. Thanks! - yogsototh
@Adam, you just can't use the tools. I don't use a hand-drill when I have a power-drill available... same with coding. - community_owned
@jleedev: Many thanks! - community_owned
@Adam Hawes: I have used both vim and the MS tools, and I can assure you that the latter have evolved since notepad... - community_owned
(2) I logged in just to upvote this. vim makes all the difference in the world. Short learning curve but you will continue to learn and progressively become fast as hell at everything from coding to debugging and updating. Simply one of the best tools available. My brother introduced it to me when I was a junior in high school and it simply doesn't get better. - community_owned
I'm beginning to know a lot of things... thanks to this question I posted myself :) (1kviews) :… - Olivier Pons
I've started at uni and now, many many - not so many, years after I still keep learning and I keep using more and more vim magic. My productivity is 500% compared to other tools used for 'software development' ... I get impatient watching my colleagues to click or highlight stuff with mouse, copy paste, compile and then search for the window with the error output, try to find stuff in file, most 'editors' don't recognize that file has been updated and so on ... vim has it all plus some ... I'm using it on all platforms (mac,linux,windows) ... and it does not freeze while updating intelisense - stefanB
absolutely. went into a vim trance while reading and tried to C-F my browser window.. - community_owned
i find it funny that emacs is not anywhere on this thread (1st page at least) - scottschulthess
[+186] [2009-03-15 04:11:52] community_owned

Dual Monitors for me. Note: I haven't attempted to use one very large screen.

(13) Dual-very-large-screen also works, trust me. I personally use 3 monitors at work. - community_owned
@Roman lucky!!! - CrazyJugglerDrummer
@Romain: Do you eyes bleeding at the end of the day? Explain how do you use it. - community_owned
(3) I had 4 monitors at my previous job. I think that 3 is the sweet spot. One very large screen would be a disadvantage as you'd have to do much more manual positioning of windows. - community_owned
(14) If every programmer worked in a worker cooperative or had managers who knew how programmers tick, they would all have dual monitors. - community_owned
I once tried to do some programming after watching a movie on my 42" LCD TV. The eye burn was terrible from trying to view the text after about 10 seconds. - community_owned
I'm okay with one large screen, but then again, I don't use IDEs. I also don't routinely maximize windows. But if the app you're developing wants to take over the screen (embedded stuff almost always does this), then one big screen might not be as good as two smaller screens. - Mike DeSimone
(2) If two screens are good, three must be better. I love having firefox open on the left screen, email client on the right screen, and my IDE maximized on the center screen. Excellent for workflow. - Pedro Estrada
(1) @Mendy: I have one screen for my Linux box, two for the Windows laptop. I tend to have documentation on one, code on Linux, and the third one is full of mail, IM, excel crap, ... Works like a charm. They are laid-out in a slightly curved way :) - community_owned
(1) I have 1 very large screen at work and dual monitors at home. I much prefer dual monitors. - Heather
(1) For home, I switched to a 4 monitor system. I also think 3 is the sweet spot, but I got 4 because I could. :) - community_owned
@RamyenHead So true! - community_owned
(1) How many monitors is too many monitors. When do you get to the point it takes an age scanning each screen for an open window? - community_owned
I find that dual monitors require too much head/eye and mouse movement, so I actually prefer a single screen. (So long as its large-ish. Laptop screens won't do, obviously.) - Jo Liss
[+168] [2009-03-14 03:10:05] gnovice

Surprised no one has posted the obvious smart-ass answer: caffeine!

I uhm..... forgot... I forgot to take my daily dose of caffeine pill. - community_owned
I could use some right now. x_x - community_owned
(4) Am I the only programmer who isn't addicted to caffeine? - community_owned
(23) lol Figures that I would get my first Nice Answer badge from this instead of the dozens of other serious answers I've posted. =) - gnovice
(52) It's funny that this gets so may up votes, and nobody even suggests "a full night's rest". - community_owned
(7) Who has time to sleep? :) - Greg D
@memo: No. I don't need drugs to keep me awake. - luiscubal
(9) It seems to me developer productivity peaks around 3am. Or is it just me? - community_owned
(13) +1 for the full night's rest, +0 for caffeine. My code quality plummets with poor sleep, and plummets even more with stimulants. I suspect most people's does. - community_owned
This... caffeine stuff. It really works! Thanks guys. ;-P - community_owned
(3) Coffee - Do stupid things faster, and with more energy. - Khanzor
No, James, you're not the only one. I burned out on caffeine back in my second year of college; couldn't sleep, couldn't focus, felt like my skin was always tingling. Even now, if I have a can of, say, Dr. Pepper any time after lunch, I'll be bolt awake (yet unfocused) until 3 AM, and then the next day is completely shot. The caffeine in Excedrin is my max these days. - Mike DeSimone
lol my first nice answer badge was about caffeine as well. - Neil N
(1) "A mathematician is a device for turning coffee into theorems" - community_owned
(1) Curiously, I'm a big coffee drinker, I love the stuff, but if I want to be productive, I must have Tea! Not sure why coffee is so much less effective for me. - TokenMacGuy
[+162] [2009-03-14 04:06:32] DrJokepu

Debuggers. I remember that learning to use debuggers opened up a whole new world for me.

(7) I can't decide if I've gained or lost net time from debuggers. And if I have to wonder it means debuggers haven't been all that useful for me. Rather, I use the habit of writing code that is written to break early and such that when broken it is immediately obvious the one and only one place it could have broken that way. This and frequent regression testing make debugging trivial. IMO, debuggers solve a problem most programmers shouldn't have. - community_owned
(1) @Plynx: I'm that way, too, for different reasons. A lot of my early work was on embedded systems which didn't have debuggers, and then I moved to real-time systems where a breakpoint would cause everything else to die from buffer overflows, obscuring the real problem. So I got good with LEDs for the former and printf + timestamps to log files for the latter. - Mike DeSimone
@Plynx I can't imagine being a programmer without debugging. - community_owned
(3) I have no idea why, but I first read that as 'teabaggers' - community_owned
(4) I primarily use debuggers for learning other people's code (or my own code that I've forgotten). Following the flow of the code as it actually runs makes a big difference in comprehensibility. - community_owned
The graphical debugger for .net in VS is a brilliant piece of engineering that has saved me countless hours. No other debugger I've used has helped me in any way. - community_owned
@Daniel Coffman: gdb can be quite useful, even though it's a bit hard to use, especially compared to the VS debugger. Still, if you have nothing else but a unix shell or do weird things like kernel development, gdb can save an awful lot of time once you learn how to get your head around it. - DrJokepu
Wait until you learn TDD. It will open another world - one without the need for debugger. - community_owned
@davidlin: I do TDD every day. Unfortunately TDD can't possibly capture every possible situation - even TDD developed software has bugs. And you will (possibly) need a debugger to hunt them down. I agree that tests help isolating problems, but very often you can only get to the "last mile" in the debugger. - DrJokepu
Yeah, in the ideal world, you'd never need a debugger. But, when you have to build on top of other people's code, the debugger saves you many hours of pain. - palswim
@Dan Fabulich, agree. I recently had to reimplement a Visual Basic module in Java (an interesting exercise in its own). The only way to find out what was actually done in a large nest of ifs was to debug it. - Thorbjørn Ravn Andersen
[+157] [2009-03-14 03:15:30] community_owned

Programming languages with managed memory. It makes coding so very much easier. Also an IDE that has code completion is a must.

+1 for managed memory. It's not a panacea, but for 99% of memory usage situations it requires far less brain power than an explicit allocation/deallocation system. - community_owned
(5) humanity has far more important things to do than write C or assembler (except for the rare times when its necessary for super-optimization) - CrazyJugglerDrummer
C# rocks my world coming from C++ for years. Well, C# + Intellisense. - community_owned
(3) You should still code destructors for linked list, etc. I remember reading a while back about how a DARPA MIT driving team had a bunch of trouble because it assumed C# managed all memory, yet it was leaking anyways. They had to code something to fully stop and reboot the car every few minutes. - community_owned
Memo: simple reference counting garbage collection only works some of the time. Try ring buffers! - Tim Williscroft
(14) IMO, C++ works as well as most any in this respect, with the addition of boost::shared_ptr. My main issue with garbage collection is that it abstracts too much away. A computer has memory. Having the programmer pretend that it doesn't isn't the right strategy for writing good programs. E.g. if you have memory leaks in Java (which will happen) you need to start nullifying variables and calling Runtime.getRuntime().gc() which is basically the same as explicitly deleting just more verbose, slow and confusing. - community_owned
I honestly haven't felt the need for code completion in years. C# and Java are the only two languages I've ever felt needed it. Don't get me wrong, I can't imagine writing code in either of them without code completion, but other languages just don't benefit from it as much. Dynamically typed languages with open classes in particular. - community_owned
(5) @codebolt good point, c# events give you such a great way to quietly leak memory i wouldn't be surprised if the average c# program didnt have more leaks than the average c++ program - jk.
@MindStalker, IIRC they had tested the automatic vehicle indoors with only a few obstacles, when they took it outside it basically crashed because the number of obstacles went up from three or four boxes to like thousands of rocks (or something like that). So it wasn't C#'s fault, the team had just not designed the program to take it into account, I don't tihnk a memory manager can create more memory when it's needed so you can't really blame it on C# - community_owned
(2) No and no, but I guess we are all different and there is some reason why there are so many job opportunities for me - apparently all these other developers have no idea how memory is managed and take too long to setup their ide while i'm already finished coding using gcc/vim/make ... c++ rulez - stefanB
I would say that not having managed memory would be a problem, its just assumed these days. - community_owned
@codebolt If you are a bad programmer you will have more memory leaks in C++ than in Java. If you are a good programmer you will have more memory issues in C++ than in Java. Yes, you should know what you are doing--are you saying that because Java makes it POSSIBLE to not know what you are doing and still succeed and C++ does not that C++ is better somehow? - Bill K
[+141] [2009-03-14 15:09:42] community_owned

pencil and a paper (simple obvious) but still underestimated

(11) I still prefer to hash out rough designs using a pencil and paper. - Neil N
(3) Pencil and paper are irreplaceable to put your ideas together AND explain to others, which is a big part of any job after all. - community_owned
(11) I use a big dry-erase board. - Billy ONeal
Somebody need to invent something having all pros of pencil and a paper without its cons. - community_owned
what are the cons? - jk.
(2) @jk...spots of coffee on it? - community_owned
Yes, I always write my code in pencil first, because I can erase. When it's perfect, I carefully type it up in the typewriter and scan it into The Beast. [Pardon the deranged humor - I do understand the OP's point] - Nathan Long
So you were a programmer before you "discovered" pencil and paper? - John Isaacks
[+135] [2009-03-14 03:26:35] community_owned

Learn another language. Eg, learning Ruby, and Ruby on Rails, has helped my Asp.Net programming immensely.

(39) For me it was Python. - community_owned
lol I think you broke Stack Overflow Chris... somehow you're getting rep even though the question is a wiki. =) - gnovice
(7) Is there a badge for that? - community_owned
@gnovice: He posted his answer before the OP changed the question to CW. - community_owned
That shouldn't matter. Once a question goes wiki, all answers should go wiki too. It's always done that before. - gnovice
gnovice, that's not true. - eyelidlessness
(1) @Chris, can you explain quickly how it helped you? I do Asp.Net programming and I was interested in learning Ruby on Rails just for fun. - GoodEnough
(1) Ruby on rails is a bit closer to the raw html than is, and taught me a lot about the page request lifecycle. - community_owned
(1) Plus taught me to think about ORM's more (eg activerecord / nHibernate) - community_owned
[+118] [2009-03-14 04:19:47] community_owned

Open source.

(5) My ability to work effectively with Django was strongly afflicted by the framework's weak reference docs. Then I started using the source to look up practically everything! - TokenMacGuy
The fact that you have to look at the source is not a vindication of open source, it's a condemnation of crappy documentation. "Use The Source, Luke" is the lazy ass's way of documentation and anybody who "documents" their code in this way should be shunned by anybody who is even vaguely professional. - JUST MY correct OPINION
I don't know whether TokenMacGuy is being sarcastic, but there are /much/ better reasons to use open source than bad documentation. And of course most serious open source projects have good docs (and I'm really not convinced Django's are so bad). The most important benefit is full control over your own software ecosystem. But it also allows you to learn from others' work, and yes, it supplements the docs. Proprietary vendors show source (albeit under very restrictive licenses) for the same reason ( - Matthew Flaschen
methinks TokenMacGuy was being sarcastic. Django is renowned for its excellent documentation. - David Johnstone
I was not being sarcastic, I find django's documentation to be fantastic from the point of view of tutorial information, but as far as reference information, it's not that great, many areas are simply undocumented or underdocumented. Don't believe me? look at the source, pick a class, now find its documentation. This is a non-issue, though, if you can actually read the source. - TokenMacGuy
My ability to work with Visual Studio effectively was strongly afflicted by the sheer amount of unnecessary and distracting information on MSDN. Then I started using the Object Browser to look up practically everything! - Jurily
[+108] [2009-03-14 15:00:31] bzlm

Pair programming!

Nothing even remotely compares to that in terms of productivity boost. You could take away intellisense, or even the IDE, and pair programming would still be more productive.

(14) It is amazing how two people being together gets each other to pay attention to the task at hand instead of day dreaming. - icelava
(14) I wish I could give you twelve up-votes for this one. For me the hard part is thinking about the big picture and the small picture at the same time. Having someone work with me saves hour-and-hours of "OK, that method is done. Now what?" Also hours-and-hours of "What was that called again?" and "What was I doing before I went on this bug-hunting tanget?" - community_owned
(12) I find Pair Programming to be a big net loss of productivity. 95% of the time someone wants me to join them to work on something they are taking me out of a coding groove where I am being hugely productive. It takes a lot of time to reorient yourself after disruptions like that. - community_owned
Even so, when you're working with the express idea of pair programming, that makes it very effective. There are certain people it works better with. - community_owned
(8) I found pair programming worked horribly for me. I found that having to write code with someone sitting there periodically interrupting me to be very distracting. - cdmckay
(12) Pair programming is not "someone sitting there periodically interrupting". That does sound horrible. Pair programming is 2 people at 1 machine working together. Anything else is NOT pair programming. - community_owned
(6) 2 people 1 machine - community_owned
(1) I think the positions expressed above are not mutually exclusive. Pair programming clearly works for people who are inclined to be more productive when working with someone else. Some people are genuinely more productive when working solo in a state of flow. Horses for courses :) - community_owned
I personally value pair or team design, where the necessary people work together on designing the program and getting a template in code. Then everyone works independently implementing the rest of the code, testing, etc. Finally, we come back together for code reviews. It helps me break down a problem early on then tackle it independently and finally validate my choices later. - community_owned
(4) I wasn't sure what pair programming was, so I Googled it, and this is what I found: - community_owned
(3) Pair programming is a great way to learn new keyboard shortcuts! - community_owned
[+106] [2009-03-14 14:13:43] Dave Webb

A decent pair of sound isolating headphones [1]. It still surprises how much more I get done when I block out all the office chatter. It's not a private office [2] but it's a start.


(5) I'll second, third and fourth this :) Sound can be very distracting. You wouldn't believe how mind-bogglingly distracting it can be :) - community_owned
I agree. We have an open floor plan at work. It works great for people who don't have to write code... Works lousy for me. Unfortunately, they don't seem to like headphones. :-\ - docgnome
I can only agree there. Noise-cancelling headphones is a must-have for efficient work in a cubicle. - community_owned
(6) I worked in a room with 3 other interns, and it could get a little wild sometimes. Sound isolating headphones were my only option. However, when they were in, it would have helped to have a sign taped to my back that said something like "Smack me across the head to get my attention". - community_owned
That link has an error. Which headphones do you recommend? - Dr. Zim
@Dr. Zim - The link was to Shure SE110 headphones. These aren't listed on the Shure site any more so I have updated the link to be a Google search. However, if the SE110 aren't made any more it may be a good time to buy them as they're probably on sale. - Dave Webb
Another voice of agreement: a good pair of headphones has let me get stuff done in all kinds of environments that otherwise would be productivity-destroyingly distracting. - Sean M
Yes. And when it comes to very good headphones, nothing beats ultimate ears headphones. But it must be some mid class product or better. Studio Fi 5 model does the trick perfectly, while delivering high quality music to your ears. - Robert Koritnik
[+97] [2009-03-14 03:51:03] community_owned

Lisp. (Why write programs when you can write programs to write programs?)

(17) I find it fascinating that Intellisense is up to +6, while somebody spent karma to downvote this. Is the consensus truly that simply seeing a list of methods is somehow more valuable than learning the first homoiconic, and hence programmable, language? The Q specifically asked for the nonobvious. - community_owned
(4) @Ken maybe most people can't get their head around meta-programming... - chakrit
(1) Love functional programming, but prefer languages other than lisp :p - CrazyJugglerDrummer
(1) I use write Perl scripts that write other programs. Shoot me now! - Vivin Paliath
(4) Clojure is a very nice modern lisp. < /plug > - community_owned
(9) Lisp! I love to spend more time thinking than typing. - community_owned
(1) Well, the best autocomplete and introspection implementation I saw so far was for lisp, not java, not C#, not anything else. Just take a look at SLIME. - Dev er dev
Why write programs to write programs when you can just write programs? I don't deny that LISP's homoiconicity is great for bottom-up shaping of DSLs when you need it, but you frequently don't, and then the syntax is more burdensome than other languages I think. - j_random_hacker
(w)(t)(f)(?)( ))(a)(r)(e)( )(y)(o)(u)( )(s)(u)(r)(e)( )(a)(b)(o)(u)(t)( )(t)(h)(a)(t)(?). Ah, crap - malformed comment. :/ - CAD bloke
[+94] [2009-03-15 09:19:56] community_owned

I'm surprised nobody mentioned this - perhaps nobody knows this? Well, I hope my answer will enlighten everyone...

My discovery that boosted my productivity the most was this:

You don't have to read 20+ blogs, before you can look into that critical bug, that your boss wants you to fix ASAP! You don't even have to read a single post! It is possible to start working on it without reading anything at all!

I know, I know... Sounds crazy, but it's true!

(15) What programming isn't about wasting time surfing the Intartubes? I'm disappointed; time for a career change :p - community_owned
(20) Hey that blog isn't going to read itself! But the bug might fix itself (user gives up). - Travis Leleu
(2) "beginning is half done." - community_owned
(2) I guess if you were not required to 'spend' 10+ hours at work you could be finished in 4 hours and have enough time to read blogs on your own time. But as it stands you can't really make people keep working on some code before they get bored because the requirements change, someone broke build, someone changed code and it no longer works with your module, customer quit and noone knows how their code works and so on - stefanB
Just mark it 'broken by design'. - Arnis L.
[+88] [2009-03-14 03:16:03] Angela

Getting up and walking around, especially in the fresh air, really makes me a much more productive problem-solver. This is when I usually come up with the "Eureka!" solution.

that's a good answer. - community_owned
(13) I do some of my best work in the bathroom -- be it on the loo, or in the shower -- and in bed. It seems these are places where I can really let my mind crank on a problem without distraction. I can't tell you how many times I've solved a problem, or mentally identified the fix for a tough bug even though I haven't been anywhere near a computer in hours. - community_owned
(9) Dr. House, is that you? - community_owned
(1) I take a shower in that case. Apparently the white-noise of the water falling in the shower helps you think. - community_owned
(1) For me it the walk to the loo, or whilst on the loo taking a leak :-) - community_owned
(2) +1 have come up with some of my best ideas while out on a smoke break. - tsilb
@Frank Farmer I remember Alan Kay writing he frequently got his most brilliant ideas while in the shower. Seems to do with sense isolation (feels like in mother's belly). - mlvljr
(1) I personally come up with solutions to most of my programming problems when not programming, eg in the evening. Then the following day I implant the solution. Then I get stuck, stop working, and the loop continues - community_owned
[+77] [2009-03-14 03:16:10] community_owned

That it's important to understand, deep down, how your tools work, and how you can use them to improve your workflow and automate repetitve tasks. Regardless of whether you use Eclipse, Textmate, Visual Studio, Vim, Emacs, Notepad or anything else, take the time to learn their shortcuts and, better, understand how to extend them with custom plugins.

Even further, learn shell scripting if on Unix (or PowerShell on Windows). Repetitive tasks can and should be automated, and pain points can be blunted. Automate your deployments. Automate your builds.

(2) I am soooo with you on this one ( It really should rank higher than the "VIM!!! Nuff said" answer). I say, Use the tool you feel comfortable in. Not what others say is "the best tool evar!". Then learn to use the tool and customize all the kinks out of it. Granted, for me it was vim as well. The rationale was simple: It works on virtually every platform and with any programming language. So you learn (and customize) the editor only once! - community_owned
(2) Ha, to be fair... I don't think there's a whole lot that Notepad offers you on this front. Ctrl-F, maybe? - Dan Tao
One of my greatest boosts in productivity was learning to automate launching my online website from my local version. - community_owned
[+63] [2010-03-03 02:03:17] community_owned

Source Control

The day I started using source control for all of my personal projects was the day I graduated from amateur to professional. I can't believe I wasted all of middle school, high school, and two years of college agonizingly writing code without being safe in the knowledge that a known good version was saved away, ready to be reverted to if necessary.

Oh, and don't even think of trying to do a group project without source control.

I just wish my classmates new source control so we could use it for group school work - community_owned
This answer is so underrated! - Josh
This made me think highly of myself. I just successfully used subversion with VS for my personal projects. And no I don't miss VSS. - community_owned
+1 Save is just there to see if it compiles. - Jurily
Agreed with Josh. Source Control is a must have, no matter how many people work on a piece of code, helps to have the ability to rollback, and version your code. - crosenblum
[+59] [2009-03-16 17:31:54] community_owned

Generics. Casting is for pottery.

(17) Type inference. Why waste time with generics when the compiler can figure it out for you! - community_owned
(5) Weakly typed languages. Go on and call methods, assign properties. Who cares if they're really there? Let who executes the program figure it out ;) - Agos
(5) Templates! Generics are just dumbed down versions. - Robert Fraser
Most pottery is thrown rather than cast, i think. 'Casting is for iron', perhaps? - Tom Anderson
[+45] [2010-03-03 06:30:01] Wallacoloo

Descriptive variable naming

It's not very hard to do, just rename "size" to "imageSize". And don't abbreviate too much. "op_add" should be "operator_add". I still use "i" in loops, but only when they're small, and never in nested loops.

This makes it way easier to come back to projects you haven't touched in a month. :D

(2) I'll second this. A few years back, I adopted a no-abbreviations policy for personal projects, and it's been working out well since then. - community_owned
(4) This definitely needs more up votes - instanceofTom
(3) If you name your variables, methods and classes correctly, inline comments will only be redundant. So name them correctly and forget about comments. In the long run, it will save you a lot of time, especially if it's code you'll ever have to come back to. - community_owned
This is a top 5 answer. - wok
[+42] [2009-03-14 03:19:06] Nick Presta

Tab Completion!

To be honest, some of the other answers are nice, but can't always be applied in every situation, especially day-to-day tasks which we perform hundreds of times.
I find tab completion helpful not only because it prevents spelling mistakes, but allows me to save time, every single time I go to the terminal.

Tab completion works almost everywhere, except in OpenOffice Calc! - palswim
[+40] [2009-03-14 03:22:15] John Saunders

Only one answer? I'm going to cheat a little, since my three answers are very closely related. ReSharper, Refactoring, and Test-Driven Development.

I totally agree with ReSharper and Refactoring. I still don't like Test-Driven development, though. Instead of focusing on writing good code in the first place, I get caught up in trying to cover every possible case in my tests. TDD makes me incredibly unproductive. - community_owned
(8) The secret to TDD is not to cover every test case - it's to not write any code unless you can prove the code is needed - needed to make a failing test pass. If there's no failing test, then you don't need the code. - John Saunders
I have one problem with what John said: In some cases, it's easier to validate a solution than to generate it - in other words, it may be easier to write the program first and have it produce a test case that can be manually validated (if necessary). - community_owned
@generic-identity: it may be easier, but then you will have created code that has not been proven correct by a unit test which is proven correct by the created code. That leaves room for error. - John Saunders
Can't believe Resharper was waaayyy down here. Usings management, stubs, and code cleaning with Resharper (I'm on 4.5) make me code better, faster. Outside of intellisense this is the number one thing that I could not live without. (dual monitors are second). - community_owned
(2) @John Saunders: unit testing does not prove anything. no mater if you write the test first or last. as Dijkstra said: "program testing can be a very effective way to show the presence of bugs, but it is hopelessly inadequate for showing their absence." - community_owned
[+38] [2009-03-14 14:54:53] chakrit

Lambda Calculus [1] and Object Oriented Programming

or more generally speaking... truly understands what "functions as first class objects" means...

and not everyone really groks how OOP works. Evidences are those large switch statements and if-else spreading out through a large code base that could be eradicated with application of polymorphism.


(5) Sometimes it's easier to grok the logic by reading through the if/else statements than to go searching the code-base for a sub-class somewhere. Sometimes "Functional" is easier for getting the job done and easier to maintain long-term. OOP is great, but there are times when KISS is good too. (and what a mess when someone tries to overlay a recursive language like Scheme onto an iterative object model like GIMP's... ah well, tha's my own irrelevent gripe ;) - community_owned
Of course, if/else and switch has its uses and then KISS but I meant the ugly ones! ... - chakrit
[+38] [2009-03-19 08:59:19] community_owned

Don’t know this has been posted or if it would make the cut for a discovery.

For me it’s Peer Review [1].

Working with smart programmers, getting that extra pair of eyes to look into code. Saved me from burning the Midnight oil many a times!


That works if you have someone to actually make the peer review. Only your manager can schedule it. - Stefano Borini
You make Peter Garrett sad. - nickf
Using source control with the stipulation that you can't submit anything into the main branch unless it has been peer reviewed has worked quite well for me in the past. Apart from anything else, the knowledge that someone is going to sit down and read your code with you makes you put that bit more effort into the code so they don't find anything wrong with it - community_owned
[+36] [2009-12-29 05:09:14] Chinmay Kanchi

I'm surprised no one's mentioned this one: Python!! Before Python, I used to use C/C++/Java for most things or occasionally PHP/Javascript (depending on what I wanted to do).

Now, my first step is almost always to prototype the core logic in Python. Having an interactive interpreter, sequences, iterators and strings built into the language (yes, I know C++ and Java have them too, but they aren't quite as easy to use), having a for-each construct, and a billion other things make coding in Python like writing executable pseudo-code.

And the richness of the third-party libraries is amazing! Want to write a parser? pyparsing is your friend (I wrote an adequate chemical reaction balancer/parser in an hour). Want to manipulate images, use PIL! Bioinformatics? Biopython.

(9) import antigravity - iconiK
[+34] [2009-03-15 09:11:49] community_owned

Closing the browser often.

(30) but i need browser to post to various communities requesting for them to send me teh codez plz. - icelava
(1) I keep my main browser closed and for looking up docs I use one that I don't like (so I don't spend more than minimum time in it). - porneL
(4) Doesn;t that mean you also open the browser often? - community_owned
@Chris He probably has a bunch of browsers already "prefetched" by some sort of a batch script. :) - mlvljr
Though I'd prefer the browser popping back as soon as closed :) - mlvljr
(1) For web-designers like myself, we literally can't even work with the browser closed! - community_owned
(1) @Jonah Than reopen it fast! - mlvljr
Ok, I'm going to close the brow+++AT0+++<NO CONNECTION> - Kelly French
[+34] [2009-03-14 04:56:07] community_owned

Learning to break down complex problems into a series of simple tasks boosts productivity and improves the accuracy of your schedule.

(1) Bonus: When the tasks are code, wrap those simple tasks(snippets) in well-named sub-functions/private methods and your code will be: easier to re-use, easier to re-factor, more scalable, more readable, easier to debug etc. Sometimes referred to as "Procedural Abstraction" or "Cognitive Thunking". Powerful tools :) - community_owned
I wish more people did this. This can be rephrased as "modularization" - community_owned
[+28] [2009-03-14 14:10:40] bruceatk

I've been around a while so I have several single things over the years and they vary wildly. I really haven't had any productivity discoveries in a while, except for small special purpose tools.

Probably my biggest single discovery is to prototype quickly and get the user/customer looking and touching as fast as possible before wasting time on features that they don't want or will change as soon as they discover that they really don't want it that way. I first realized this the first time I used Visual Basic to prototype the interface of an application I was creating in C++ (late 1992/early 1993).

A bunch of people can sit around a table and discuss for months what they do and do not want, but until they can actually touch it and experience it they really do not know.

I am not disagreeing with the value of this, but the only problem with prototyping is that once you show them the prototype they say, "Great, you are almost done!" and you have to carefully explain that no, it is going to take me X amount of time to get the "real" thing done. Non-techies have a hard time understanding this. - Nemi
I completely agree. My first job programming was taking a "prototype" that was put into production and actually making it do what it was really supposed to do. The trouble is that usually the people in control have a hard time saying no to the people that sign their paychecks. The solution is clear communication about what your prototype does and even more important does not do. - bruceatk
The XP orthodoxy is that you get the customer's hands on something ASAP, but it's a larval form of the final system, rather than a prototype per se. That avoids the "you're almost done!" problem, because you only show them stuff that really is done, but it still gets feedback early. - Tom Anderson
[+26] [2009-03-14 02:53:14] community_owned
  1. The Internet/WWW! There is often a solution for so much problems. If you want to squeeze knowledge out somewhere or just talk with other IT-People, the www is THE place.

  2. The Libraries for every programming language in the www! I can't live without the Apache Commons, Hibernate, Spring and so on. They make my life so much easier!

  3. High-Level Dialects and Domain Specific Languages [1], to use the found libraries. Such DSLs [2] can be written in Groovy, JRuby or LISP(Closure) for example. Grails [3] as Groovy [4] DSL for Web (with addons...) has boostet the overall productivity many projects a lot! It's an impressive framework!

  4. Software I've ever used: Things as Subversion/CVS... were ever there since I develop software. Also IDEs like Eclipse and IntelliJ ;) I can't live without them.

typo: did u mean clojure, not closure for the lisp reference? - community_owned
(1) That's a good deal more than a single discovery. - mcherm
[+26] [2010-03-03 01:22:13] theycallmemorty

Getting a good nights sleep is pretty underrated.

+1, but +1 to caffeine also. - Luca
[+23] [2009-03-14 03:07:07] community_owned

Formal design patterns and unit testing.

We finally retired a legacy VB6 codebase and are in the process of building new frameworks for our business model and there's really no comparison. We're infinitely more productive. (well maybe not infinite, but you get the idea.)

(3) What do you mean by "formal design pattern" vs "design pattern"? - community_owned
[+19] [2009-06-25 03:00:04] RN01


I used to be intimidated by blackboards in school, but now having a whiteboard in my office is incredibly helpful for the thinking process. - community_owned
[+17] [2010-03-02 20:38:52] Mike Polen

Test Driven Development. I was skeptical, but it works remarkably well. I was able to code a chess rules engine (validates all legal moves) in about 40 hours, with only one defect. I have been programming for almost 30 years and TDD has given me the biggest boost in productivity.

[+17] [2009-03-14 03:28:03] community_owned


I'll spare you the nasty details, but I've written classes before with seperate (overloaded) functions to do exactly the same thing with a different varible type.

[+17] [2009-03-14 15:08:28] shoosh


In my undergrad studies I was hardly aware of it and every time I needed a data structure I had to pull my own. luckily on my first real job they showed me the light that is STL.

(1) I remember using the STL for the first time, it was a god send, but then shortly after I moved away from C++ to C# and .NET - Sekhat
STL is hugely better than nothing, though there are languages that make STL look rough around the edges... - community_owned
[+17] [2009-03-14 14:47:46] idstam

That it is OK to say no to unproductive work.

[+15] [2010-03-03 01:20:22] Edward Kmett

Stack Overflow [1], obviously.


[+14] [2010-03-03 00:50:49] Arthur Ulfeldt

rotating my monitor 90 degrees. the contents of the display are my brains level one cache, and its measured in (cache) lines from top to bottom so rotating the display greatly increased the lines of code I can see at once.

(4) This is a simple change that surprised me with how much more efficient it made me. - community_owned
(2) This goes hand-in-hand with dual monitors: One for text and one for image. :) Now, if only more monitors had stands that offered this orientation... - community_owned
(3) it actually happened by accident for me when i was leaning on the monitor and it rotated... - community_owned
Interesting idea. But if you have a really big&wide monitor, you can fit two windows on your screen side-by-side without cutting content in either window - community_owned
[+14] [2010-03-03 11:18:59] community_owned

Working on a fun project.

That's the single biggest productivity boost for me.

(3) Upvoted. If I were working on a fun project, I wouldn't be here... - pestaa
[+13] [2010-03-02 22:58:41] community_owned

LINQ. I love not having to write the plumbing for iterating over collections over and over again. Also being able to apply set operations to collections of data is a huge productivity boost.

[+13] [2009-03-17 13:58:26] community_owned

Learning to type properly and accurately.

[+12] [2009-03-17 13:59:48] unwind

Stack Overflow! No, wait, you said "boost". Hm.

"single biggest boost" nothing in that statement about "net gain" so its ok if it gives you a 1000x increase for five min. then eats the next month by distracting you. - community_owned
Stack overflow definitely boosted my productivity! It's often faster than having to peruse badly written documentation or ad-loaded forums. - StackedCrooked
Oh yes, it greatly boosts productivity when you use it just to find an answer to your question. But I often find myself spending 2 hours reading unrelated threads after the 10 minutes it takes to get an answer to my question. - Wallacoloo
[+12] [2010-03-02 21:57:42] community_owned

Gnu screen. I work primarily from the command line (Ruby/Python/PHP) and it has been, bar none, the single greatest tool in my toolbox for increasing productivity.

[+10] [2010-03-03 03:56:20] JonnyBoats


You don't always have to spend hours alone trying to figure out how to do something. Often it is better to email a friend, call someone or post the question on stack overflow.

I was trying to figure out what the acronym ASK meant. Maybe it's related to AST? After reading - No, it must be something to do with partner programming. Then 30 seconds after giving up and moving on, I realize it's not an acronym at all. I feel stupid. - Wallacoloo
[+10] [2009-03-17 14:04:05] Dashogun

It's a tie between Ctrl+F and Ctrl+C

Those are things you discovered that boosted your productivity? Don't most people figure those ones out before they start coding? - community_owned
(1) Granted, I did know about them prior to coding. However, as far as raw productivity goes, copy and paste produces much more LOC than even the fastest typing. (P.S. This was meant to be a joke.) - Dashogun
Ctrl+H in Visual Studio saves me loads of time. - community_owned
No Ctrl+C without Ctrl+V; and to complete the pair, we also need Ctrl+X. - poke
Scroll forward and break execution? :/ - progo
[+10] [2009-03-16 17:17:53] Paperino

"Thinking" in a functional language (in my case Scheme).

*lisp really changed the way my brain works, not sure if its healthy in general though it really helped me enjoy the code i write a lot more. - community_owned
[+10] [2009-12-29 04:44:46] community_owned

Using a Framework

Since I started using a programming framework ,My productivity has increased 10 folds ,Now I dont have to do much work to get what has already been done.

YES. Definitely on of the best productivity boosters. - community_owned
[+9] [2010-03-02 21:24:50] Romain

Synergy [1] helps me save a lot of time changing keyboard / mouse when coding on heterogeneous platforms (like Windows and Linux). It basically lets one computer share its HID with another... or a set of others... And it's a life-saver.


[+9] [2010-09-02 06:27:11] Michał Pękała

Stackoverflow [1]. Really.


+1, I agree completely. - HEAVEN'S TEAR
[+8] [2010-08-03 11:30:32] Wojtek

ctrl+r in bash terminal (and other bash terminal shortcuts)

(1) I had to test this just now, and oh my god, that's amazing! Thanks :O - poke
[+8] [2010-03-04 02:45:40] hasen j

The realization that keyboard > mouse

It started with launchy.

After a while, I learned vim.

Then, I starting using the command line.

Then I switched to linux.

Then I started writing scripts that automate the mundane tasks that I always need to perform.

This is so true. Keyboards offer so much and you only need your fingers with muscle memory instead of visual aid in case of the mouse. +1 for Vim, +1 for command line and +1 for scripts. Too bad they only count as one. - progo
[+8] [2010-03-03 07:59:32] community_owned

A good 8 hours of sleep every night. Amazingly, this increased my gpa in college by .5 and makes me incredibly more productive during the day. When I am sleep deprived I cannot concentrate on anything.

Oh man, I can't upvote this enough! - community_owned
[+8] [2009-03-14 04:58:54] Click Upvote

If you're doing your own projects as opposed to your employers, taking your own ideas to reality, you are a heck of a lot more motivated and productive than when doing a 9/5. Your project is the first thing you think of when you wake up, and its the last thing you dream of when you fall asleep at the keyboard, waiting for the sun to rise so you can do the same thing again.

(2) Truth is I've had that experience on my employer's projects. Not all of them. But the things that are truly valuable have consumed hours of my free thinking time. - community_owned
Then you should be doing your own thing, otherwise your employer benefits from your creativity - Click Upvote
(2) I'll happily allow my employer to benefit from my creativity as long as I get paid. ;) - community_owned
(3) my annoyance is that my days programming isn't overly interesting, I have lots of little personal projects that I tend to think about during the day while working, yet I'm to tired to code on them once I get home :( - Sekhat
Unfortunately, work generated stress is my most effective motivator :( - community_owned
Two thoughts: 1) when you work for someone else, they take on all the risk. If the business doesn't pan out, you move on to the next job. 2) I personally just don't have the drive. I get really excited about personal projects for a few weeks or months, but I get bored eventually. I think self-motivators such as yourself are uncommon. - community_owned
[+7] [2009-03-14 03:40:25] Kev Ω

Due to the types of projects I've recently been working on, OS Virtualisation technologies (Virtual Server 2005) have probably boosted my productivity as a developer by quite a large degree. This is because I can get new development environments for different types of projects (which require 2 to 4 machines to represent a cut down instance of the final production environment) up and running really quickly. To paraphrase from another question [1] I answered about ' How to quickly setup a developer machine? [2]':

I have a couple of different base development environment configurations hosted on virtual machines (Virtual Server 2005). Once I was happy with them I sysprep'd them. Now when I need an environment for a specific project type I clone the VM with the config I require, start it up and and off I go to work. The great thing is that if I wreck the VM all I need to do is start afresh from one of the sysprep images. It's such a timesaver.


I totally agree. Though we haven't implemented it yet, my company intends to deploy a VMWare ESXi setup so that we can easily test our software in many different environments at the same time. It's so much better than a separate machine/HDD for each version of Windows - community_owned
[+7] [2009-03-14 03:01:12] CDR

Recursive function call.

Boosted with tail call elimination. - community_owned
how it is possible or useful Recursive function call. - community_owned
(def useful (this) (useful (inc this)))) .. thats how - community_owned
Overrated. At lease for PHP, where recursion is slow. Recursion is a pretty fun word to say though. Recursion. - community_owned
[+7] [2010-03-02 21:16:50] community_owned

I'm sure I'll get flak for this, but I mostly use C++, and the boost libraries give a big productive boost.

[+7] [2010-03-02 23:04:25] OscarRyz


I think this change pretty much the way I see code.

Before everytime I need something else I just added and if the previous design didn't match I start doing strange things and after a couple of weeks, everything was a real mess. Going like that every time I need a new feature, the existing code was somehow in the middle.

After getting to know refactoring, everything was much easier, new functionality helped to define the methods, and the design. I extracted methods, simplify conditions and a lot of etc. which make my existing code much easier to work with.

[+7] [2010-03-02 23:09:12] community_owned

Notepad++. Hands Down.

[+6] [2009-12-29 05:19:23] Stefano Borini

I discovered that is nonsense to pretend to create something perfect the first time. You have to understand your problem, so it makes sense to grow together with your product.

[+5] [2010-03-03 08:03:38] community_owned


All the fancy tools in the world cannot replace a full-wall whiteboard and a couple of co-workers.

[+5] [2010-03-03 05:24:30] community_owned

Exercise- as powerful as caffein with no deleterious, and many positive side-effects. A simple 45 minute jog every other day does the trick for me. Often I find the answer to a difficult problem in the shower after a run, especially if I am well rested.

[+5] [2009-03-14 03:01:21] community_owned

My answer: the promise of dual monitors boosting performance while programming/debugging was a lie.

I now prefer 1 monitor. With two monitors you always have too many things distracting you and also you get stressed due to awkward head and eye movements.

I'll never go back to 2 monitors.

(I also use EMACS so I keep my fingers on the QWERTY row much more than ever before... why stop the flow of typing??)

Have you bought a bigger one (Monitor)? - community_owned
(10) I dunno ... the ability to easily read documentation and write code at the same time, or to run an app and debugger on separate screens has been pretty nice ... - community_owned
I agree, tend to end up with twitter, skype etc all open and visible, we have now switched all of the dual monitors in the office to display the same thing making them good for pair programming and not a total waist of money. - community_owned
(1) "Awkward" head/eye movements haven't been a problem for me. Maybe you need to try placing the monitors in a different position. Looking at two or more separate screens placed side-by-side shouldn't be any different than looking at a single large screen. - community_owned
+1: A single large high resolution wide screen (Apple 30" cinema display) was far more useful than two 20" widescreens. Two screens has the advantage of an unsightly gap in the middle and only one or none being square-on to your head - community_owned
A wide screen isn't square on your head either if you have several windows open. I prefer the utility of being able to maximize to a screen, using one to remote control another system, flip one monitor between a mac mini and my second monitor, debugging, and testing. I can never go back. - bruceatk
(2) Recently my typical testing has been having eclipse, toad, textpad, and primavera P6 open on one monitor. Tomcat, IE, javadoc, Firefox, and a command window open on the other. I typically need to look at two at the same time. I am really productive with two monitors while wishing I had 3. - bruceatk
(3) I wont downvote, though I do disagree, but to each his own. I think dual monitors are great, but there have been a few people I introduced to dual monitors who eventually went back to one. - Neil N
I prefer two 20" monitors to one (worked that way for 2.5 years and it was always a step down in productivity when I had to drop one), but moving to one 30" (Apple Cinema display, like Adam's) was even better - community_owned
im now using multiple virtual desktops (Spaces/VirtuaWin) instead of multiple monitors = 1 screen but endless real estate. RadRails is southwest, Flex IDE is southeast, Eclipse PDT is over on the northeast and thunderbird, browsers and reddit's here on northwest - community_owned
Dual monitors + virtual desktops worksforme. Perhaps your PEBKAC. :p - community_owned
[+5] [2009-03-14 03:35:19] community_owned

Code generators like CodeSmith [1] to reduce repetitive coding.


(2) What about generics to remove repetitive coding? - community_owned
I think if you want to reduce repetitive coding, you should use a framework. A lot of frameworks have code generators too (scaffolding). - community_owned
[+5] [2009-03-14 06:09:19] Tim Jarvis

for me, Linq

I must agree. Linq is a massive productivity booster. - community_owned
Some one has to explain the benefits of LINQ to me. - community_owned
[+5] [2009-03-14 14:58:49] community_owned

The world wide web. I used to spend HOURS every week thumbing through books, going through the MSDN disks, asking other folks etc, looking for answers to questions. The WWW put the answers quite literally at my fingertips. Of course some of those answers are wrong, but even when you factor in the time for filtering out the wrong ones, it's still a lot less than I used to spend in the library alone.

[+5] [2009-09-26 09:43:24] community_owned

Not checking my email in the morning, and turning off all the associated alerts and popups and warnings and so on.

[+5] [2009-03-15 16:22:24] Dan

Enabling the "Hide When Minimized" option in Microsoft Outlook.

for me its using a faster, less clunky email client! - community_owned
what does this do? im intersted, outlook is mandated here. - community_owned
It puts a small Outlook icon in the notification area rather than taking up space (and attracting attention) on the taskbar. - community_owned
[+5] [2009-04-08 12:24:35] community_owned

Higher Order Programming. (And on some days: unplugging the phone...)

The phone!? What about e-mail and IM - the new age of communications. :) - community_owned
[+5] [2010-03-03 12:29:30] Alan

Definitely MVC. As a amateur-turned-professional web developer with a background mostly in PHP I always found it a bit difficult to wrap my head around the idea (PHP naturally doubles as a template engine after all). While I was familiar with templates, I never thought of it as a step towards MVC, which I always associated with Microsoft's .NET stack.

Even when I learned about Java Servlets and I tried having beans for everything and putting all my output in JSP files I never quite "got" it. Beans seemed cumbersome and without ORM (which I always thought to be a fancy way of writing queries without using SQL) I often found myself dealing with SQL in beans and servlets alike.

When I picked up Python and came across Django, it suddenly all fell into place. Sure, Django calls it MTV and the views are really more like controllers, but without ever having been exposed to the architecture directly before, it just all made sense.

I'd say it even gave me a better understanding of OOP. Even though I still loathe PHP frameworks and PHP in general, when I came back to PHP recently for a client, I naturally structured my software the way Django taught me: my ORM classes separate from my views, my views separate from the templates and all that separate from the main file, which now just served as a dispatcher.

Not only that, I think it even gave me a better understanding of software architecture in general. For example, I now understand better why it is a good idea to keep your GUI code out of your business logic in desktop applications. In fact, I don't even think about it much anymore, it just seems obvious to me now.

tl;dr Learning MVC gave me better insight into OOP and software architecture even in languages I otherwise find messy to code in.

(1) Those who don't vote this up, probably never tried MVC or a framework - community_owned
[+5] [2010-03-03 17:19:20] community_owned

Visual Studio - the fuck***g best IDE in the world!

since its still a pain in the ass its just the best one gets! the editor is cool / debugger is as one needs it + you get edit & continue which is very nice. Customizable as hell + good plugin interface + good external buildtool integration like cuda- or other microprocessor-compilers - and its a fast IDE - not like other java-written IDEs.

i tried many IDEs and did also larger projects with for example eclipse or netbeans - but they all cannot reach the quality of VS.

I hope MS will forget about their company politics someday and support cross platforming better in the future. But this is quite unlikely to happen.

[+5] [2010-03-03 18:10:09] Woot4Moo

Losing my girlfriend. Not that I was really thinking how much more productive I would be, but it is a side effect.

[+4] [2010-03-03 11:29:28] community_owned

Hot showers.
Usually there I get my "Aaahhh, of course"-moment.

[+4] [2010-03-03 11:52:08] Ira Baxter

The idea that computer source code is just an a kind of data you can compute with. This means you can build code analyzers, transformers, generators, ... that reuse your knowledge about code rather than doing all the coding yourself.

The key idea is program transformations [1], which allow you to code bits of analysis or transformation knowledge as rules you can store and apply many times. This generalizes all the "code generation", "metaprogramming" and "aspect-oriented programming" stuff you hear about.


[+4] [2010-03-03 11:58:01] Jonathan Conway

Object-oriented programming. Nuff said.

[+4] [2010-03-03 10:14:02] Longshanks

Know thyself!

I've discovered that to truly be productive you have to listen to your biorhythms. My most productive time of day is in the early morning hours between 4am and about 9am.

I can often accomplish more in 10 minutes in that section of my day than I can do in 2 hours at any other time. (Grunt-work excluded of course :) ). So I do most of my planning/thinking at that time.

I know you said "ONE THING", but... The other thing is to use your subconscious mind to figure out the solution to any major problems - it will do a way better job than your conscious mind can!

[+4] [2010-03-03 10:34:56] community_owned

Former programmer. Best discovery that I ever made was to hire people that knew a hell of a lot more than I did and were more up to date.

Never failed me yet.

[+4] [2010-03-02 20:54:44] community_owned

Realizing that time spent designing is better than inversely proportional to time spent coding.

Realizing that people who pay us refuse to see that. - Codism
I'd say 50% (give or take 50%) of the designing process takes place away from the computer, in your head - community_owned
[+4] [2010-03-03 05:49:08] community_owned

Emacs [1] along with the whole new world of Free Software [2] tools.


I'm with you here. I frequently work with at least 5, 6 different programming languages and switching from Eclipse/Netbeans/Visual Studio/vim to Emacs made me aware how little I benefit from Intellisense, but how much from an environment, which can handle integration of different languages and tasks pretty well. - boxofrats
[+4] [2010-03-03 05:11:06] community_owned

That I can code after GF goes to bed.

(2) These days, my most productive coding hours are after everyone else has left the office. Interruptions kill my flow. - community_owned
(2) Until she insists you come to bed. - instanceofTom
[+4] [2010-03-02 21:18:19] Moe


Coming from a C/C++ background, it takes so much less time for me to do what I need in python.

Read the other answers before posting. Someone else already said Python!… - Pete
[+4] [2010-03-02 21:06:29] Daniel Daranas

I +1ed intellisense and syntax highlighting. But since noone has mentioned it, object oriented techniques, in particular Design by Contract, have done a lot for the quality of my code, hence improving my productivity.

[+4] [2010-03-02 21:36:10] community_owned

switching from pc to mac helped my productivity the most because I started enjoying spending more time at the computer.

[+4] [2010-03-02 23:10:43] Nick Bedford

One thing that's been the greatest boost in productivity?


[+3] [2010-03-03 00:53:06] community_owned


The only way you can solve a problem is to be able to diagnose what is going on, and not just bandaid the symptom.

A while ago i read a book on just diagnosis, it wasnt related to computing , but on diagnosising any problem, it really helped develope my deductive reasoning skills.

[+3] [2010-03-02 21:47:47] community_owned

A 4'x6' whiteboard. Ok, any size will do but the bigger, the better.

(1) I like using chalk on my nice black paved street to design my applications - community_owned
[+3] [2010-03-02 23:01:34] community_owned

ReSharper [1]


[+3] [2010-03-02 21:27:41] community_owned

Take time to RTFM for your frameworks, programing languages and other tools before you use them. Read most of it, you don't have to memorize everything. You want an idea of what the tool can do for you, so you don't go reinventing the wheel.

[+3] [2010-03-02 21:18:56] limitedmage

Control+Space. 'nuff said. In-line documentation for functions and classes, autocompletion, type matching.... I can barely program without it.

[+3] [2010-02-09 06:43:25] community_owned

Definitely the mini-fridge under the desk. Although more frequent bathroom trips may be offsetting the convenience.

(2) Mini-bathroom under the desk. - community_owned
Why not just set you computer up on your kitchen counter? - community_owned
This has a good point to it. When I'm in the flow, it's either thirstiness or my bladder that will quickly stop the show. When the flow fades -- can't solve a problem, then a visit outside helps tremendously. - progo
[+3] [2010-03-03 03:30:24] community_owned

File Sharing.

I've gained the equivalent of a Master's degree in my field by torrenting software applications and textbooks and studying for free at home. I learned more (in far-less time) than the tools spending $50,000 to listen to a disgruntled professor recite a textbook that cost said tool about $80.

File Sharing.

(1) So the people that go to college and pay for their textbooks are fools for not doing what you do? - community_owned
(4) I didn't go to college, and I'm enjoying a fairly successful programming career. And I've worked with guys with bachelors degrees who couldn't code their way out of a wet paper bag. But I've also worked with some brilliant programmers who've learned a hell of a lot in college that you just don't pick up from the "learn as you go" school of programming -- things like natural language processing, graph theory, etc. They have a much more developed set of tools for approaching really difficult problems (e.g., complex manipulations on terabytes of data) than I do. - community_owned
[+3] [2010-03-03 02:20:53] community_owned

Working at night!!

[+3] [2010-03-02 20:58:55] community_owned

Two answers:

  1. Screen and ssh -t
  2. Code folding

Code folding seems like it should be helpful but I never actually find myself using it. - community_owned
[+3] [2009-03-14 04:03:26] community_owned

Write an application for someone else, then maintain it as they ask for things which weren't even considered in v1.0. This helps with better design so you don't have to spend so much time re-factoring. Also, having an IDE which can do a lot of the re-factoring for you (e.g. Netbeans) is nice to take care of things quickly.

[+3] [2010-04-12 00:19:24] community_owned

My single most productive move was to get rid entirely of the debugger.

Don't get me wrong: I've start in 2nd generation language (manually entering hex codes, not even assembly yet) and I've spent more time in more debuggers than most programmers on this site.

But since unit testing and multi-threading (you know, the present) came around me I realized that the old "debugger" concept was such a waste of time when working with high-level languages.

Sure, I still use one when I'm doing the occasional C hackery but besides that, learning to "find problems" by thinking outside the box, on a higher level, and never using a debugger again was my single biggest productivity boost.

[+3] [2010-09-26 03:01:35] AlexW

For me the most important but seemingly obvious lesson I've learned is in naming conventions for my objects and the ability to define through names the processes that are going on. Familiarity with a framework's object names is also very important.

[+3] [2010-09-02 07:27:59] poke

Time pressure. Nothing makes me more productive than knowing I have to be done soon. I usually end up having my most effective code sessions when I am in a hurry. If that deadline is not real, even better, as that means I can still spend a bit more time reviewing what I did.

So true. Having really small incremental deliverables is a great cure for student's syndrome. - community_owned
To me, very often, it has the opposite effect.. - community_owned
[+2] [2010-09-01 23:50:32] community_owned

the discovery that imperfect solutions are the best ones.

Care to elaborate? - community_owned
Avoid gold plating... - community_owned
[+2] [2010-09-29 22:30:19] Ryan Ternier

I'd say my wife and Kids. Honestly, yes Google, MVC, this and that give a productivity boost, but it's incompatible to what my spouse / kids give by just being them.

But for those married dev's out there, or those with kids, there is no single entity that can give a productivity boost like your spouse / kids. Especially when you are the sole provider.

You want to increase someone's productivity, give them something to work for that's not themselves.

Disclaimer: I am not saying for employers to sign up all their single staff on eHarmony or anything else like that. Just sayin'.

[+2] [2010-06-25 05:50:11] community_owned

in C# LINQ-to-[Everything] is extremely helpful especially coding in Lambada.

"Lambada"? Certainly you mean "Lambda"? - stakx
[+2] [2010-03-04 02:53:28] Igor Klimer

Dependency Injection/DI and the type of code it enforces (loose coupling, MVP, etc).

DI might have a steep learning curve (especially if you've programmed for a long time without DI), but once you get the hang of it, the code gets easier to test, refactor and read (by you, the author or someone that will "inherit" this code when you leave the company for Google, where they use DI and strongly recommend it [1]).

Recommended reading: Misko Hevery's blog [2] and the "Guide: Writing Testable Code" [3] it hosts.

Plus, it adds another one of those nice expressions that can easily be misinterpreted by a non-programmer person, like: "Have you injected the Client?" or "Wow, this Guice [4] makes work so much easier."


[+2] [2010-03-03 17:11:02] community_owned

Particularly when programming in C or C++, liberal use of the assert macro has saved me countless hours of debugging.

For those of you who do not know, assert is a preprocessor macro takes a boolean expression as its argument. When executing the program, if the boolean expression is false, location information (source file and line number) is printed to standard error with an ``assertion failed'' message, and the program aborts. For a production release, the macro NDEBUG is defined, and the asserts are compiled out.

assert can be more useful than comments, as it is mechanically checked as the program runs. By making your assumptions about the program explicit in this way, when those assumptions are violated, you learn about it sooner rather than thousands of instructions later when your program segfaults far from where the actual error is.

This early detection complements the use of a debugger as well: rather than working backward from a segfault, you add enough assertions so that your program dies with an assertion failure. This helps narrow in on the bug.

assert exists in most languages, although I find it most useful in languages that use manual memory management.

[+2] [2010-03-03 08:47:51] community_owned

Testing, plain and simple. I sort of had to be dragged to it, but now I'm addicted. And it turns out that it has some great features that will, over time, make you a better programmer.

First, you discover that if something is hard to test, it's a code smell. Doesn't mean it's wrong, but there's a good chance that when you're struggling to test all combinations of those five arguments to a function, you're doing too much in that function.

Second, "fear-driven development" is a thing of the past. Many times developers find themselves afraid to touch a hairy section of code because it's grown over time and has become unmaintainable. Having fear back you into a technical corner is never pleasant. With good test coverage, it's much easier and safer to dive in and make those changes. "Fear-driven development" goes away.

Third, your overall designs improve. As with the first point, not only do you discover that discrete bits of code become more maintainable, you find yourself wrapping global variables in well-guarded method calls to ensure that you can test them easier. Later, when something else break this "global", it becomes trivial to add logging to find out what does it. Further, you find that your code starts decomposing into different sections that are easier to test, but this also tends to be better-designed code.

Fourth, you'll be more productive. The studies I've read tend to show that initial productivity drops between 10% to 30% while testing, but long-term productivity increases because you have fewer bugs. When you implement a new feature, you can code as fast as you want, safe in the knowledge that a strong test suite will catch many errors. Also, when bugs do arise, good test suites generally help you pinpoint their source much faster.

Fifth, you can work as a team better with tests. When Joe and Sally both check in code which passes all tests, often the tests fail when the code is merged. This can be a very subtle issue when working on separate areas of the code. I confess that sometimes I hack together code quickly just to explore an idea, but when I'm working with others, I wouldn't dream of it. Tests will save me again and again.

Sixth, you know where bugs are before you find them. This sounds weird, but over the years, I've discovered that when I run test coverage code, those areas of my code which aren't tested are almost always those areas of my code where serious bugs/design flaws are working. It happens to me again and again. Look for areas where your test coverage falls short and you'll find bugs. Even if you don't see them, write tests for them and those bugs will start crawling out of the woodwork.

Testing is far and away the best tool I've found for making me a better programmer who turns out more code, to deadline, with fewer bugs.

[+2] [2010-03-03 14:49:23] Pedro Estrada

Learning how to touch type. I had developed my own homebrew technique over the years, but still made a lot of mistakes when typing. I forced myself to spend an hour day with a couple of free typing programs and saw my accuracy soar. This made programming much easier as I didn't waste time hitting the wrong keys and could focus on what I was trying to code.

[+2] [2009-03-14 06:44:11] Drakonite

When I discovered I could tell the computer what to do, hit a button, and the computer would do what I told it to.

(3) I tried this, and it didn't work. Do you have to install some special software or hardware before being able to tell the computer what to do? - bzlm
The key is to use a stern voice. The computer is two years old, you have to treat it like a two-year-old. - community_owned
2 years in computer years are more like teens. Stern voice won't do it. Sexy voice will. - community_owned
We interviewed someone for a web dev. position. Their answer to most questions was "Add a button. You can buy those. They do amazing things. I make buttons.". My manager was quite upset when I asked him where the button repositories were for shutting down the internet when you're done with your work. - Ryan Ternier
[+2] [2009-03-15 04:03:30] Dan

Getting rid of .h files in C#.

=)))))))))))))) - community_owned
[+2] [2009-04-12 10:22:48] community_owned

ClipX [1] has done wonders for me.


[+2] [2009-03-17 13:56:15] community_owned

Expectations before taking a new job that it will be much better. For some first weeks/months I get a productivity boost until they dissappoint me again.

[+2] [2010-03-03 02:29:59] kzh

Cigarettes and coffee.

Cigarettes and coffee are good, but they are the "greatest boost"? Really? - HEAVEN'S TEAR
@kzh: I am sure this study has been funded by some big multinational tobacco company :-) . - HEAVEN'S TEAR
[+2] [2010-03-03 03:17:50] community_owned

Head Phones, with appropriate music to block out the NOISE!

[+2] [2010-03-03 04:42:53] community_owned

Lots of great stuff here I agree with: isolation, caffeine, unit-tests, flow, pencil & paper, good CASE [1] tools.

One I haven't seen that I find is critical to getting the job done (especially if you're stalling and don't want to do the work)

Todo Lists

  • Identify the task(s)
  • Write it down
    • Decompose it into smaller steps(I have an odd habit of indenting these items ;)
  • re-arrange/prioritize steps
  • When tasks are completed, come back and indicate they're done (is satisfying :) ).

Every day I start with a todo list (or I throw it together the night before so I can go home... hate breaking the flow like that, but balance is important too).

Once made, start working your way through it. Side benefit: If/when interruptions happen, todo list is right there to help get back in the zone.


Also, I find it helps to keep a text file/journal where I can throw anything/everything without thinking about it. Code snippets, urls to helpful articles, etc etc. Sometimes I just work through a problem by writing about it.


[+2] [2010-03-03 03:57:35] Colin Dean

Matched parenthesis, bracket, angle bracket, and brace highlighting. When you do as much XML as I do, as well as as much Scheme as I once did, it's an incredible time-saver.

[+2] [2010-03-03 06:02:46] community_owned

Many people stated the things that many of these tools do, but these are the best tools for the job for me. Textmate Bundles, CSSEdit, and Firebug take me about 95% of the way. Omnifocus and GTD for managing my projects.

Description of Bundles:

Public Repository of Available Bundles:

Also, for Design Work, CSSEdit:

And for JS Debugging, Firebug:


All well worth the money. About a combined $150, will pay for itself in a day.

[+2] [2010-03-03 08:09:30] Sarfraz

For me, stack overflow is turning out to be a great boost.

[+2] [2010-03-03 07:33:00] community_owned

Not to use internet at work.

[+2] [2010-03-02 23:02:15] Zak

SLIME [1]. No other editor, IDE or programming environment I've seen offers the same level of integration. Not only does the editor understand the syntax of the language, it communicates with your program while it's running. It knows the value of everything, at all times and, to reference the old saying about Lisp programmers - it knows the cost as well, due to the integrated profiler.


Link broken, try this: - community_owned
[+2] [2010-03-02 21:50:55] community_owned

for me, regexes and design patterns.

[+2] [2010-03-03 02:10:10] community_owned

asking a DBA for help with database design.

[+2] [2010-03-02 23:22:00] community_owned

Two things:

  1. Breevy [1], which I use to "autotype" boilerplate code using shortcuts/abbreviations.

  2. My widescreen LCD monitor. Emacs with a horizontal split increases my productivity so much it's not even funny.


(1) Oh man, Breevy looks pretty sweet. - Dan Tao
[+2] [2010-03-02 22:49:37] community_owned

Stochastic unit testing. Don't just unit test: unit test with large-ish sets of random inputs. It'll catch errors you'd never think to test for on a fairly regular basis.

(In languages with accessable parse trees, there's a good argument for mutation testing, too - see the Ruby took "heckle" for a good example.)

[+2] [2010-03-03 00:01:39] fastcodejava

Story cards [1].


[+2] [2010-03-03 00:45:57] community_owned

Valgrind [1].

If you are using an older version, it is definitely worth upgrading for the --track-origins feature.


[+1] [2010-03-03 01:08:10] community_owned

Humanized Enso

I wouldn't say it is "the" greatest thing for programmers specifically, but it definately saves me time from fumbling through directory hierarchies and windows all day when someone interrupts my programming time to ask a question.

[+1] [2010-03-03 01:20:58] community_owned

Syntax Highlighting, Auto-completion, Source Control and ORM.

[+1] [2010-03-02 23:02:36] Rayne

Clojure [1]


[+1] [2010-03-02 21:25:51] Jim G.

Streaming/satellite radio.

[+1] [2010-03-02 21:27:22] community_owned

Practice and self analysis of your problem solving techniques.

I find I only really understand something once I've done it a few times, and I feel that programming is no different. I've heard programming described as an art form and I agree. It takes years to master.

At the moment I am working on User Interfaces and find myself trying out new ideas and new approaches in my spare time just to see what works better. This has lead to substantial improvements in my work rate and more importantly less re-writes because of bad design.

[+1] [2010-03-03 07:59:58] community_owned

Software: Quicksilver [1]. Nuff said.

Hardware: A wireless mouse (no more losing "flow" at critical moments when the cord get tangled)

Time management: The Pomodoro technique [2]. In a nutshell, work for 25 minutes, take a 5 minute break. But there's more to it. Mix this with a solid GTD workflow and it's amazing how much quality work I get done these days.

Diet: I've never been unhealthy or overweight, but eating like a bear (nuts, berries and fish) really seems to help me concentrate better and solve problems much quicker. I'm never going back to pic-a-nic baskets.


[+1] [2010-03-03 06:19:35] community_owned

Ruby. Incredible productivity increase coming from both Java and C#. Dynamic typing, blocks, and easy-to-read syntax come to mind.

[+1] [2010-03-03 05:30:32] community_owned

Ctrl+Click and Alt+Left/Right in Eclipse.

Edit: and how could I forget Ctrl+Alt+h when the cursor is in a function name.

[+1] [2010-03-02 23:56:04] community_owned

Lately, I've gotten a productivity boost with one simple tool: good posture.

Forcing myself to sit with better posture makes it much easier for me to stay on task, for some reason. Whether the improvement will remain robust to time remains to be seen.

[+1] [2010-03-03 05:06:07] Frank Farmer

These are varied and largely unrelated, but here's my list from the last few years:

Taking notes / record keeping

I'm the "go to guy" for my current project, and the project is a pretty large one. This has two implications:

  1. I get interrupted a lot. Keeping a "todo" list on a pad of paper next to my keyboard makes it easier to context-switch back to my list of tasks that need to get done for the day
  2. I document things in our ticketing system and/or wiki obsessively. If I don't document design choices/the bug I just found/that great feature idea now, there's no way I'm going to remember it -- especially in a couple of months.

In short, there's more going on than I can possibly keep in my head, especially long term, so I have to augment my memory.


Branching and merging couldn't get any easier. And that's just scratching the surface. git stash and git add --interactive are both extremely handy as well. And being able to trivially get your patches to your favorite open source project merged to master (trunk) on github is a pretty mindblowing experience as well.


KCacheGrind is awesome. Why waste your time guessing what's slow, when you can get hard data?

Unit Testing

For any piece of code with a large number of test cases, unit testing is the only sane way to ensure that fixing one test case doesn't break the others. Being able to trivially verify all test cases 6 months later is also a must-have.


If you're using a pure LAMP stack (apache, mysql, php), you're missing out.

Several of these are great... but I can't up-vote it because there are too many different ideas together in one comment. - mcherm
[+1] [2010-03-03 04:10:17] James McLeod

The discovery that, in the real world, workflows are often constrained enough that it isn't necessary to handle all cases - and much of software requires solving "engineering problems" rather than "computer science problems."

[+1] [2010-03-03 04:15:33] community_owned


Because "Segmentation fault" is ever such a helpful error message.

[+1] [2010-03-03 03:50:11] community_owned

Outsourcing to third world countries

Just not related with the OP - xiao
[+1] [2010-03-03 03:27:02] Michael

Bpython is awesome in python, an interactive shell is fantastic when learning a language or framework.

[+1] [2009-03-16 17:19:44] community_owned

Moore's law for caffeine.

Meaning, every so often, new products will be created which will dramatically increase caffeine delivery, leading to increased programming productivity! - community_owned
[+1] [2009-03-16 17:22:01] community_owned


(1) Did you even read any of the other answers? - Pete
[+1] [2009-03-16 16:22:55] Xolve

Writing cleaner code by using god text editors like vim, kate etc. I leanred a lot about standard coding when I checked their options.

[+1] [2009-04-12 09:57:59] community_owned

Using an IDE as opposed to a simple programmers' editor.

Amazingly simple answer for taken for granted the IDE is but developing software in notepad (and even emacs) is harsh. - Chris Marisic
[+1] [2009-07-07 02:23:12] community_owned

The greatest boost to my productivity has been from learning how to recognize that I'm starting to write some code or text that is very similar to some code or text I've already previously written in the file or the project, and to quickly generalize and create a function, include file, macro, or other appropriate idiom that makes what would have been messy, elegant.

[+1] [2010-03-02 21:02:52] Chris Marisic

Resharper, it's probably already been said.

[+1] [2009-04-12 10:36:58] community_owned

If i were to choose only one thing that boosted my productivity it would be a moment when I've put down books and learning-only mode to programming and doing stuff instead of only reading about them.

[+1] [2009-12-29 05:14:27] this. __curious_geek

Realizing the fundamentals of HTTP and Web and how they actually work while working on classic ASP has turned out to be my greatest discovery. I could then think in HTTP and design my own CGI applications on plain HTTP state-less protocol.

This findamental understanding is still helping me learn new web-technologies much faster.

I'm still amazed for what all things we were forced to do in classic ASP which now in ASP.Net is just readily available. Databinding, paging, server-controls and server-side events.

[+1] [2009-03-14 15:02:34] community_owned

In all honesty, probably learning another programming language has helped me the most. Once you have taken a look at one ore more other languages, you find patterns in the code. It helps you better understand how to reach your objectives and will make you a more efficient programmer.

[+1] [2009-03-14 15:13:10] Kriem

Code completion.

[+1] [2010-03-03 14:58:55] neves


Yes, little children, there was a time when your compiler/tool/SO/library would spit a cryptic error message and you had no option but read the thick manual. After being stuck for days, you would just reimplement everything in a different way.

Then there was the USENET. You would ask a question and the greatest specialists in the world would answer you. Then there was Dejanews. You'd find similar questions already asked. Now you just put your error in Google and you solve your problem.

[+1] [2010-03-03 15:20:07] community_owned, 'enuf said

Why spend ages hunting for the solution to a bug on google when it's likely it's been asked on here already - community_owned
[+1] [2010-03-03 15:50:05] community_owned

COPY & PASTE shortcuts. This is the foundation of my career.

Not a good way for programmer - xiao
[+1] [2010-03-03 12:07:09] community_owned

Creating mock versions of critical backend services. It has enabled our team to develop the front-end virtually separately from the back-end.

[+1] [2010-03-03 07:11:30] community_owned

Modafinil, a.k.a Provigil. It's the next Caffeine, and the worst kept secret of the working world. Although it's hard to measure, this item is possibly the most prescribed off-label Rx in the United States. If Obama directed the FDA to permit over the counter sales, we'd be out of this recession by Christmas.

[+1] [2010-03-03 08:29:22] community_owned

From time to time: using the other hand to use the mouse :)

It's quite refreshing feeling, it forces you to use keyboard more often and it might increase your creativity (there was such study).

+1 for creativity. giving your brain's snowglobe a shake every once in a while is a great way to dislodge bugs and push forward on the dusty corners of a task list. - community_owned
[+1] [2010-03-03 08:35:40] rem

The discovery of existence and the way how it works. Nothing is comparable!

[+1] [2010-03-03 10:36:11] Deckard

Meta-programming. I know someone mentioned Lisp but that's just one tool that supports the technique, there's much more:

  • Using languages like Ruby to tweak how method invocations are handled (like implementing a basic type of AOP in a couple lines of code) or adding a method to only a selective group of instances of a class.
  • Using language tools like ANTLR to generate a small language or notation or the other way around: make some fixed notation of a specification into a formal grammar so you can immediately push through changes (for instance, an access rights table).
  • Using larger scale tools like the Rascal MetaProgramming language to write custom refactorings to modify large codebases (such as remove all public fields).

The reason this has boosted my productivity is because it allowed me to adopt a wildly different perspective on both designing and maintaining software.

[+1] [2010-03-03 17:14:55] community_owned

Automatic code indentation and following a code convention always helps me spot small problems before the compiler.

Obviously not for Python - community_owned
[+1] [2010-03-04 17:29:50] Klaim

Discovering how bad I am at programming -- after a job search where I got a terrible test.

For me (now), knowing how much you are bad, as a human being, because your memory is terrible, your logic is flawed, your attention is bad, is the best skill for a programmer. It allows him to code according to his flaws and make the code point him his errors fast. It also gives you a chance to learn from everything around, by not assuming you "know".

Those answers somewhat reflect my feeling :

This article totally refflect my feeling :

After the test that made me admit how bad I was, I relearned everything from the start, the languages, the computer theory, helped by search habits from a self-made background.

[+1] [2010-03-04 18:44:47] community_owned

Databases - as a newbie programmer the hardest pieces were writing and reading data to disk in an organized way, then later it was sorting information, then it was finding information, then it was network-accessibility of information, then it was concurrency concerns, and security concerns.... DBs provide for every one of those needs!

[+1] [2010-03-05 09:54:32] community_owned

Stack Overflow really helped to resolve many of the Critical Issue which were quite difficult to search on Google also.

Thanks for giving such a helpful site.

[+1] [2010-04-09 18:31:10] community_owned

I've had a Logitech MX Revolution for a while. Today, I assigned copy, delete, and paste to the secondary mouse wheel. Now, I can use my mouse thumb to do all of those operations!

[+1] [2010-04-12 00:06:57] Jon Harrop

Mathematica taught me the value of a really high-level language but it took OCaml [1] to make that style efficient enough to let me replace C++. Now I use F# [2] for its multicore support and nothing else comes close.


[+1] [2010-11-11 11:56:12] community_owned

To Do List ... Keeping a Diary for it.

[+1] [2010-11-19 15:25:24] Ramy

hate to be a brown-noser but:

just look at this FB post: (it may not last long)

[+1] [2010-09-19 06:59:29] community_owned

A GNU screen session inside another GNU screen session. It blew my mind when I first accidentally did this.

[+1] [2010-09-02 07:41:20] community_owned

It may be some small small productivity say: the production tools, production ideas, some more home works to plan the process all make together a complete boost in the whole programming.

Basically we should have a better strategy than hard hard-works otherwise or unless it seems to have nothing else to complete even 75% remain pending to complete

GOOD Strategy - with a complete idea of what you have done and whats next will get you a big boost. On the run we should not feel lack of ideas for the next step

good luck

[+1] [2010-03-03 12:25:06] community_owned

I quit my programing job, started a company and will this year sell millions of worth steel products. I guess leaving my desk was the best thing I ever done. I still love programing, but that´s for fun only.

[+1] [2010-11-19 20:16:40] srand

Higher Education. Knowledge is power. Graduate school exposes you to areas (e.g., algorithm analysis, advance data structures, higher mathematics, different types of languages, compilers) that you wouldn't normally get as in-depth as an undergrad. Also helps to build better critical thinking and problem solving skills. Of course, you need to go the extra mile and learn all that you can while still maintaining your contact with industry (i.e., internships).

All this helps you in the future when you become a developer in understanding the problem and designing a solution.

+1 hardly could be called a single discovery but must be in the top of this list nevertheless - community_owned
grigory, I know what you mean but when I came to the conclusion/discovery that being a good developer is a by-product of being well educated it changed my view on school from performance oriented to knowledge oriented...if that makes sense :) - srand
[0] [2010-09-15 16:21:46] community_owned

The !command& command in MATLAB to open up a windows command line:


[0] [2010-09-02 00:03:28] serg

Hyperlink navigation through the code

Not sure if it's correct name, but it's when you do ctrl+click in Eclipse on a method call and it goes to its declaration. It blew my mind first time I tried it.

[0] [2010-09-02 00:16:50] THEn

How about Ctrl+Z.

[0] [2010-09-02 00:23:16] community_owned

Garbage Collector

[0] [2010-09-02 00:24:16] community_owned

Learning Haskell.

[0] [2010-09-25 00:02:10] OTZ

SSH Remote Command Execution

$ ssh '<your_remote_command>'

[0] [2010-09-01 23:42:27] community_owned

Notepad++ and a Project in the mind

This is how I started to learn and to really love programming :)

[0] [2010-11-19 15:38:41] George B.

Visual Studio (for C++), especially when it comes to debugging.

[0] [2010-03-09 00:02:26] community_owned

To find that there are other options for data storage than relational databases (for example: velocity). This really helped me to solve way quickly certain types of problems.

[0] [2010-03-03 14:42:35] community_owned

Event delegation

[0] [2010-03-03 19:19:06] community_owned

The book Getting Things Done [1] and software that implemented it (I use Things for Mac [2]). Being able to focus on the next action, and not having the 10 other things I needed to do swirling around in my head gave me a big productivity boost.


[0] [2010-03-03 20:15:58] Brian Carlton

CPAN [1] for Perl.


[0] [2010-03-03 10:51:47] community_owned

When you need to do routine search first for some existing libraries. Someone (from Apache usually) have already done it for you. No need to reinvent the wheel.

[0] [2010-03-03 10:25:53] community_owned

StackOverflow [1] !!


[0] [2010-03-03 10:28:02] community_owned

The ability to write code without errors. Who would've thought, this whole time, it's just a setting in our IDE's.

[0] [2010-03-03 12:13:28] community_owned

Discovering that clear requirements followed by careful planning and design makes the programming faster, easier, and less bug prone.

[0] [2010-03-03 16:59:31] Chantz

Since I am a bit late to the party most of things that have boosted my productivity have already been listed. To add to the list (which are not programatically related per se) are,

  • Usage of keystroke launcher like Launchy [1]
  • Religious usage of TODO Sticky Notes & actually sticking them on to Monitors (at the bottom).

[0] [2009-09-26 09:26:25] community_owned

Debug and Caffeine with Internet is the trio that works for me.

[0] [2009-09-26 09:53:15] community_owned

Domain Specific Language for UML and Code Generation see

[0] [2009-04-12 10:24:01] Vardhan Varma

For me, it was 'computer progamming is actually human to human interaction'

What that means is, that it's essentially software developer ( designer/programmer ) talking to user .. program just happen to be the medium

In the grander scheme of things, the human interface is absolutely what ultimately matters for many applications, but on the other hand, there's an awful lot of programming work that doesn't really touch interface. For some complex applications -- for example, google's search engine -- there are entire departments full of programmers who work all day without going anywhere near the human interface portion of the application. Similarly, the ffmpeg library's utility is not in its interface. - community_owned
[0] [2009-03-15 16:45:57] community_owned

What single discovery has yielded the biggest boost in productivity? Well, if the measure of productivity is the ratio of desired outcome by work effort, then this single biggest discovery would be that of process and methodology (i.e. learning how to work smarter). RUP [1] is a good example of process and Agile [2] is a good example of methodology.

You want a tool recommendation? Well, I felt so strongly about how important process and methodology was to outcome in software development that I wrote my own tool to accelerate software development called Code Roller [3].


[0] [2009-04-12 09:31:04] Artyom



[0] [2009-03-19 10:24:35] community_owned

Not mine, I'll admit, but focused working: link text [1]


[0] [2009-04-08 12:20:26] community_owned

It began when I changed my mindset to feel very good whenever I see a program bug. It gives me great pleasure to remove the bug.

The Samurai Coder, Hideo.

[0] [2010-03-03 03:29:18] community_owned

Document databases like MongoDb!! :)

[0] [2010-03-03 03:18:07] community_owned

Two things:

  1. Recursion (not just what it is, but when to use it)
  2. Making programs clean and easy to read instead of just getting things to work

In the same vein as your #2: the principle of DRY: Don't Repeat Yourself. If you find yourself copying pasting a block of code for use in a second (or 3rd, or 4th) place, it's a very likely candidate for being made into a function/method. - community_owned
[0] [2010-03-03 02:57:59] community_owned

Learning there is no substitute for properly instrumenting your code. Nothing is worse then trying to figure what went wrong with no trace/debug information. I am amazed at the amount of"professional" and "Best of Breed" software out there that does not have instrumentation built in.

[0] [2010-03-03 02:27:07] community_owned

Test Driven Development.

This little puppy has improved what my classespublic interface looks like, given me the confidence to refactor, and made it SO much easier to test the living crap out of my code.

Whenver I write something like an email validator, or math sequence, or string manipulator -- OMG -- it's just so fun to throw the boundary tests as it and feel the confidence that the method is strong. So much better than before when I would presume I'd find a failure at some point in the unknown future.

[0] [2010-03-03 03:56:03] community_owned

MyGeneration [1] to generate all my ORM code and skeleton code structure adhering to the architecture (in other word, it takes care of all the boring and repetitive code)


[0] [2010-03-03 04:49:39] community_owned

This should be fairly obvious... Code Generation. Generating an entire data layer on small to medium-size projects saves countless hours.

MyGeneration + doodads C# data layer and any relational DBMS procedures for all the CRUD.

[0] [2010-03-03 05:20:58] ChrisH

The Eclipse Modeling Framework (EMF) [1] and the whole EMF ecosystem of related projects.


[0] [2010-03-03 05:43:14] community_owned

google, of cause.

[0] [2010-03-03 08:01:46] Aviral Dasgupta

Starting linux development which made me realize that hacking up your own solutions is never the best thing to do -- taught me to make healthy use of third party libraries... and really increases productivity.

[0] [2010-03-03 08:23:10] community_owned

File Versioning using SVN and unfuddle. This has definitely made working in my University programming labs with a partner much easier. We can work on it whenever we want and leave each other comments about what has changed.. not to mention the file versioning and file differential utilities.

[0] [2010-03-03 07:38:31] community_owned

Haskell is the big one. But after that comes the modern IDEs like Eclipse.

[0] [2010-03-03 06:45:08] community_owned

Turning my second monitor so that it was vertical. Then adjusting windows such that (for web programming) the window where I was editing code was on the top half, and the browser where I was viewing changes was on the bottom.

At a high enough res, it's basically 3 full-size windows on two physical screens. You'll never go back.

[0] [2010-03-02 21:43:04] community_owned
  • Strong black tea
  • Source Control System
  • Bug Tracking System
  • Hippie Completion
  • Taking breaks at the right time

[0] [2010-03-03 01:27:34] nickyt

Aside from tools like Intellisense, refactoring tools and all the other answers people have given, I'd have to say good co-workers. People that you can bounce ideas off of and genuinely enjoy hanging out with. People make a huge difference.

[0] [2010-03-02 23:47:50] community_owned

Project automation (I include TDD with this). Whenever I discovered the wonders of shell scripting, Make/Ant, automated tests, and one-button builds, programming lost most of its few sour moments.