What is the one "thing" (physical object, tool, software package, person, etc.) that is most indispensable to you as a programmer?
I will get the ball rolling by stating that I have long considered a whiteboard to be a programmer's best friend.
A second monitor.
Really, I can't stress how useful it is to be able to google for help or read documentation on one screen while simultaneously being able to see your code on the other.
Source Control System
My keyboard. For without my keyboard, I am speechless.
Coffee. .....
Ctrl + Z.
Dear GOD. CTRL + Z! CTRL + Z! CTRL + Z!
NOOOOOOOOOOOOOOOOOOOOOOOOOOOO!
My headphones, to create a quiet place.
Regular Expressions. I have no idea what I would do if I didn't know them (since Google is no help here).
Visual Studio.
my girlfriend.
because she doesn't know anything about programming, so i have every evening to explain to her what i did the day in a way she understands my work.
Colleagues because talking with them always gives me a chance at better understanding what I'm doing.
GVIM.
The feature that I use most frequently is its default auto-completion and splitting the windows to view the source and the header file side by-side.
Emacs [1].
I'm impressed with some of the magic that IDEs can do now but for pure text manipulation Emacs always come out on top.
And I'd be lying if I said I didn't like the fact that most people are scared of it. :-)
[1] http://www.gnu.org/software/emacs/Notepad++
I wish the shortcuts and extra text editing functions were available in text fields across the whole operating system! In fact, they would make a great addition to IDEs such as Visual Studio, Eclipse and Netbeans.
Duplicate Current Line
Ctrl + D
Delete Current Line
Ctrl + L
Move Current Line Up
Ctrl + Shift + Up
Move Current Line Down
Ctrl + Shift + Down
jQuery [1]. Finally I can do magic on web pages.
Oh, and Firebug [2] too, of course..
[1] http://jquery.com/The yellow rubber ducky that sits next to my monitor
Since I need all the help I can get... I have an extra braincell
My dog.
I take her for a walk when I need to clear my head, or get a fresh view on things. She takes me for a walk when I've been sitting too long in front of the computer.
Google, my programming related books and recently Stack Overflow became my best buddy!
intellisense
Eclipse .^_^.
Cause it makes me as productive as it makes me unproductive. It is where I zip by some tasks in a jiffy without taking any of it`s procrastinatic capability "there gotta be a plugin that does that" and boom... where did that sunny friday afternoon go !!
thoug on the serious side
+1 for google +1 for rubber ducky (gotta get me a new one) and +1 for Stack overflow with much the same reasonign as eclipse though !
vim, my vim configuration file, google, stackoverflow, my laptop and all my previous code. You cannot imagine how many times you have to solve the same problem again and again.
My peanut sized brain.
My Internet connection
This gives me all the goodies I need
Without it I'm helpless & useless.
(How did I do that in pre 1998?? Oh yes: the magic MSDN library on CD)
Ergonomic keyboard and chair.
I don't care how good the software is, if I'm uncomfortable, I can't concentrate.
Perl.
Even when I'm working in another language, I like to automate tasks, and I haven't bothered to learn all the intricacies of bash
syntax to use a real shell script. So I turn to Perl, and it's always there for me. It lets me call out to shell commands when I need to, but still allows me to process variables like a real programming language.
It has tons of nice syntactic sugar, like regular expressions, that make some things so much easier (even if it's a little bit dense to read the first time). I use it for any moderately-complicated task that I need (or want) to automate, and since it was my first programming language, it's much more natural to me than using shell scripts.
Plus, I can usually get things done very quickly.
Who needs to update a Makefile every time you add an important new file to a rapidly growing project when you can just glob("*.c")
to get a list of all your C
files, no matter what you've added or taken out?
It has some of the most useful parts of shell syntax, but in a real, actual programming language.
It's improved my social life significantly.
Of course my notebook(both paper based and electronic circuits based)
A very close second for me is an IDE with good IntelliSense [1]. There is no better starting point for understanding existing code than to type a dot :)
[1] http://en.wikipedia.org/wiki/IntelliSenseSupportive Wife
The flying pig that hangs from a bit of fishing wire from the ceiling. Whenever someone comes in and asks something unreasonable, you just turn it on and it starts flapping around in a circle. :-)
The solid door to my office.
Stack Overflow and IRC chats any day. Google helps you find these appropriate places.
A good version control system.
A person, who you could ask a question whenever you have a problem and nothing else helps.
IDE(vim)
version control system(Git)
my laziness.
It's my 13-inch MacBook that I carry with me everywhere I go
Caffeine, a debugger, and google.
In no particular order:
And without a doubt my wife.
Total Commander is indispensable for all the file system stuff needed when programming (creating/browsing directory structures, copying, moving and deleting files, launching/opening/finding files)
Eclipse, GVIM and visio. And now-a-days collabnet Subversion.
CTRL-C, CTRL-V :-)
A bathroom with a fan
English is the best tool ever
Microsoft Trackball Optical Mouse
WHY WHY WHY did they cease manufacturing them?
I bought 4 when they started to get scarce as I cannot take using a regular mouse for more than an hour or two before getting aches in my hand...and I have several machines.
Simply couldn't work without one.
My Visual Studio action figure :)
Some pic [1]
[1] http://www.rustylime.com/media/image/source%5Ffource%5Flarge.jpgA good text editor.
The last one keeps you with the feet on the ground... and write good code.
A good IDE with decent refactoring and debugging capabilities.
I have to second the whiteboard. I realised when I saw this Dilbert cartoon [1] how much I've come to rely on drawing on a whiteboard as a supplement to the essential hand-waving that characterizes the design discussions we have on our team.
[1] http://www.dilbert.com/dyn/str%5Fstrip/000000000/00000000/0000000/000000/40000/4000/400/44413/44413.strip.gifThe floor. I like to do push-ups throughout the day to keep my blood flowing.
The compile error, since I am dyslectic.
Top Gear. Every time I can't focus, I throw an old episode in the background, and for some reason it provides just enough distraction/entertainment to occupy that bit of my mind that is stopping me from coding.
Ctrl + Space
Autocomplete FTW.
Visual Studio, Google, CodeProject.com, people smarter than myself (not too rare, sadly :P ) and recently StackOverflow.
google, IDE with good intellisense and stackoverflow community
Trance music is almost an absolute must, and a Ti-83+ close.
A bottle of beer.
Pink Floyd's progressive music :)
SLIME [1].
The idea of restarting the process just to recompile some code seems downright archaic now. Or having to recreate a situation in my program just because an exception got raised.
[1] http://common-lisp.net/project/slime/Twin 23" widescreen LCD monitors. Nothing, but nothing can substitute for screen real estate.
My programming playlist on my ipod.
Source control
Well, I've seen an answer stating that a second screen is a programmer.
In fact, I'm currently using four 1920*1080 24" displays. That cost me under $1000, and I guess the screens repay for themselves every other week.
I think extra-screens are by far the most effective use for your money if you want to improve your productivity.
At my previous job position, I insisted that every programmer should have at least 3 screens if he wants to, and I eventually got my point accepted by the management.
My Teddy Bear.
If ever I have a problem I can't solve, I go and explain it to the teddy bear. 90% of the time, by the time I've explained the problem to the bear, I have found the solution.
If that does'nt work, I resort to talking to my colleagues. Talking to the bear first though, saves loads of their time!
A plain old text editor and a good knowledge of unix commands. I can't tell you how many times I've been saved by something like Emacs "find-grep" or the ability to run a simple search and replace with a command like:
find . -name "*.xml" -type f | xargs perl -pi.bak -e "s/TEST/BLAH/g"
Despite the proliferation of capable IDEs (which I use every single day) like Eclipse and Visual Studio, there is something to be said for introducing every programmer to the simple text manipulation tools that have served us well for a few decades. At the core of what we do: text manipulation, and the programmer that is best friends with his or her text editor (vi or emacs) is a programmer that can do just about anything.
My copy of "The Mythical Man Month" whenever a manager starts to get an idea
Textmate definitely.
a calm and quiet working environment :)
Caffeine, doesn't mater if it's generic 0xC0FFEE, caffè latte, Red Bull or your favorite cola.
Soma.fm - Groove salad channel [1]
Wonderful distraction free music to code by.
[1] http://somafm.com/play/groovesaladMy non-programming partner for giving me something other than work to talk about when I get home. (damn I'm single, better get back in the partner game).
Redgate SQL Compare. Sort of DiffMerge for MS SQL databases
The technical support people.
They do most (and most times all) of the hand-holding with the customers so that I can develop software instead of researching how "it's just not working" for some dumb reason like they haven't turned thir computer on.
for , next and repeat , until loops are my favourite...
Backspace, the key that I type the most.
Problems to solve!
Syntax Highlighting / Coloring
Good syntax highlighting can speed up the learning of a language, visually filter content, and also gives code a kind of beauty.
That supercomputer inside my head...
It is: Faster, more powerful and more reliable than any silicone based computer or, any array of silicone based computers.
Prove It? Vast neural network with 200 trillion trillion nodes. Mutiliple (in the thousands at least) parallel processes in real time. Superior image recognition. Superior cognitive ability. Superior speech recognition (English, Basic, Sql, C++, C#, VB and some assembler). Excellent motor controller. Multiple years of service (50+). Low maintenance. It does require downtime every day and a subsequent re-boot in the morning. Analog design (superior to digital, we just never figured out how to do it in silicone).
Alt + Tab
Window + D
Window + R
My punching bag.
LOGIC... LOGIC .... LOGIC all the way To find things you need logic and to use what you found you need logic so it is definitely logic friends... it is Logic. Regards, Andy
Your mind
The swedish bikini team that walks through or office once every hour to wake us from our programming stupor.
My Pair at PairProgramming sessions.
Digitally Imported of course ;p
Visual studio + Resharper
Fiddler followed by Firebug
Resharper. Makes my coding time so much more productive.
Note, Pen, Mind, and Google.
White erase board.
Vim
For shear text processing it cant' be beat. If only I could vim style modal editing with an IDE.
Perl
Because automating repetitive tasks is something all programmers have to do.
Because for 99.9% of your problems someone else has already experienced it and has useful advice.
By all means its Electricity,
Its a computers best friend and without it computers won't exist and no computer means no programmer.
Stackoverflow, to remind me why I do what I do
Time, Google and a good debugger
When I used to write code C on Linux, I lived in the man
pages. Both of LIBC and system call documentation are pretty solid.
The nearby couch where I can stretch out and think.
My "best friends" as a programmer
Would also like a second monitor, but my computer at work can't take two, and they don't want to invest in a video adapter (go figure out why).
code completion
Stackoverflow, others who will answer my questions here within minutes - go on!! and lately firebug with yslow
In no particular order:
The Internet
Without internet getting all my IDE's, libraries, documentation, help, ideas etc. would be major pain and often impossible.
The rest of my setup would be:
Caffeine. It's no fun when you're the sober observer.
Notepad++ , haven't had a development machine without it since I first downloaded it years ago.
Just a terminal:
EXECUTOR [1]
This is a multi purpose launcher and a more advanced and customizable version of windows run. The program originated as I was sick of spending too much time searching for programs through my ever growing windows start-menu, and also I missed a tool that could ease and optimize my daily work flow.
KEYNOTE [2]
Tree structured note program.
[1] http://home25.inet.tele.dk/mb/executor/download.html?version=9800Emacs!!! :)
Here are the tools I can't live without
[1] http://en.wikipedia.org/wiki/TextMateXM Real Jazz playing on my PC. The only music I can code to without getting disctracted.
I totally, Totally, TOTALLY, TOTALLY (is there a pattern here?) agree with having
to:
So that, in the end, you can have someone senior, for example, an architect or senior developer, with relevant experience, who was also a party to the discussions, just say
"Bugger it!" This, is what we'll do!
But, seriously, having that space to
is a big jump on other companies who just expect you to "discuss these things using email or ICM".
CTRL-C CTRL-V
CRTL-Y CRTL-K
My father, he introduced me to programming, if not I would never put my hand on that thing.
Visual studio with MSDN
Visual Studio and Resharper
The . key -- Intellisense is your friend.
cygwin [1]
I need those Unix-style tools to be productive on Windows even with IDEA [2] as my IDE.
[1] http://www.cygwin.org/cygwinA sign by my desk that reads "If headphones are on, send an email".
(and below that "Except if the fire alarm is going off", because I can't hear it with my headphones on)
Soda to keep me awake and Beer to keep me calm.
www.di.fm --> Trance channel. Keeps me focusing and in a good mood
A door I can close and a phone with a ringer-off switch.
Code auto-formatting.
They're absolutely fabulous in Netbeans and Visual Studio. When your code formatting is just a little out and your braces don't line up it becomes agony to try and make sense of something that should read as quickly as an English sentence.
Align my code for me and I'm a happy guy!
My "best friend" is my computer and Google.
My brain is the best friend I have.
Maybe not best - but most recent "cool" one:
www.linqpad.net
Supports both C# and VB
Lets you enter linq code directly against a live database - great for testing/learning.
Also has some great snippets and built in leasons.
I learned quite a bit just from playing around with it several months back.
Apache Chainsaw [1], as a log viewer, but you should run it with the extra switches to allocate more memory than the default (say, -Xms32m -Xmx1024m)
[1] http://logging.apache.org/chainsaw/index.htmlCigar and tea.
Araxis Merge... it's by far the best diff tool available. Indispensable when merging code, comparing my own changes and debugging.
Books by Thomas Erl [1], Martin Fowler [2], and Eric Evans [3]...
I would be totally lost without their excellent insight and approach to our most common and difficult problems.
Microsoft [4]...
For creating an amazing computing environment and development ecosystem that has provided me with the career I have today...without them....well, not many of us would be here today, I figure.
[1] http://www.thomaserl.com/My fingers. I don't know what I'd do without them :)
Divine Intervention (Google), Vim [1], rxvt [2], zsh, GCC [3], GDB [4] and Valgrind [5] :)
[1] http://en.wikipedia.org/wiki/Vim_%28text_editor%29Firebug [1], Aptana Studio [2], NetBeans [3], Eclipse [4] and ArgoUML [5] are my best friends.
[1] http://en.wikipedia.org/wiki/FirebugCoca Cola
I must finish off about 7 cans a day
Notepad++
The only thing I haven't done with it is compile code.
A good VPN connection or other remote access tool. Knowing that I can get to my stuff and be productive whenever and whereever I need to - home, office, the company's other office across town, Panera, when I'm waiting for my car to get serviced - is invaluable.
TextPad.
Game and music
Coffee and green tea.
Task tracking system - I use OnTime.
Google C++ Mocking Framework [1].
Unit testing is no fun without it.
[1] http://code.google.com/p/googlemock/1)IDE - VS2008
2)web search - Google
3)noteKeeping - Evernote
4)backup,sync - BeyondCompare
5)textsearch - Agent Ransack
6)notepad2
coffee, VS, google
The obvious answer is the system on which you develop, for without it, there would be no development.
Polymorphic inheritance.
StackOverflow
I like making other people do my thinking for me.
Google Talk.. as when I am fed up with some cranky code/logic that's not coming my way, i just talk to my frnds online and get relaxed and start again..
earphones too, just to keep away the sound of that bothering discussions of colleagues away from my ears...
My self.
For always trying to help by judging my code.
A notepad and pen. Before coding any non-trivial part of a project I tend to write down my thoughts on the particular pros and cons of any solutions that come to mind.
I just find it easier than typing it out in a project management app or something similar.
My most important three tools for programming:
Pen & paper will always kick ass. No software will replace scribbled notes on an innocent piece of paper. It's fast, cheap, easy and you can use it as a valve to your aggressions.
To communicate is highly important. I like emails and bug tracking software. But there is an enormous problem: It's fixed. If you write one false word in an email, you're doomed. In a normal conversation, you can discuss and clarify your opinion.
The combinated use of email (for appointments etc) and normal conversation is perfect.
Whiteboard, yes. But back at my desk there's the following:
Text searching: good old command-line grep often comes in handy when searching files my IDE won't search.
Google: It's hard to imagine the time when we didn't have Google for seaching the body of knowledge and Q&A out there (but I do remember back, in the mists of time...). It's not indispensable but it's a magic wand from time to time. And it's how I found Stackoverflow. (And solved a problem I was having with my application icon.)
Outlook Folders: More than most people I know, my .PST file in Outlook is a hierarchical archive of ever-accumulating emails. Keeping this archive organised and using the Advanced Find are of daily use to me.
Miscellaneous: a couple of large monitors on my desk, a well-run source control tool and a consistent versioning scheme, IDE with intellisense, the Alt-TAB in Windows, and mstsc (Terminal Services) are a few others...
Thanks for the opportunity to think of the things I sometimes take for granted :-)
ctrl + C and Ctrl + V keeps me going forward :)
A large supply of chilled water, healthy and helps force you take breaks.
Probably a walk around the block. There's nothing better when I start thrashing, especially during crunch times.
OpenGrok found here: http://opensolaris.org/os/project/opengrok/
I set up an OpenGrok server a few months ago hosting the rather large code-base I work with. Symbol and definition look-up are damn fast and being able to click through function calls helps to get my head around unfamiliar code quickly.
I'd say the most important thing for me is Google - being able to lookup API's and find other peoples solutiones to problems I'm having is by far the most productive part of my toolchain.
After that, I'd say a good IDE is important (I use KDevelop).
Finally I think a good SCM tool such as Git or Mercurial is a lifesaver.
Dojo and firebug for webdev and STL/Loki-lib for C++.
Also google and wiki know just about everything :D
One one only... Google
Paper and pen. I fix most of my coding problems (as opposed to implementation tedium) while on the bus, away from any computer larger than my phone.
Backups, and by extension version control. The freedom to revert has made me a lot less cautious about trying new ideas.
Google code search. Rather than slogging through the source for something common-but-undocumented, I can just find out how everyone else is using it. This often gets me the jist of its style much faster, after which figuring out the details is easier.
Mac, TextMate and Google! It's the key for success ;)
Google - All i need
stackoverflow
MSN Messenger - Boy people must hate me by now :D
-- ofc, when that doesn't help Ill go seach SO, then google, and if I still haven't found my answer, Ill ask on SO :)
Being able to type fast and knowing crap-loads of keyboard shortcuts.
Python.
Even if I'm working on something in C, I always try
how things will work in Python, and then build from there.
a sense of perspective
IDE (i'm not picky... :P) + Goggle + confy keyboard and I'm ready to go! :D
Guess I'm the first one to mention REFLECTOR [1] :-)
[1] http://www.red-gate.com/products/reflector/Interesting Blogs (CodingHorror...) [1] , WIKI , Google and Visual Studio
[1] http://codinghorror.com/Overtime salary
Silence is wat i need.
System.out.println (or whatever the print statement in your language of choice)
Again, whiteboard.
But here's the thing... I work from home. And I rent. So every time we have a property inspection (about once every 3 months) I have to take it down, plug up the holes with Spackling paste [1], and then very carefully mix various shades of tester paint to decieve the property inspector in to being none the wiser. Muhaha!
So worth it.
[1] http://en.wikipedia.org/wiki/PolyfillaRedbull in non-stop coding nights, and Coffee in regular days ;)
Internet is probably easily one of the best tool though it can be a double-edged sword as you shouldn't refer to it for every problem. Sleep (bed?) is also pretty useful or any time (?) away from the computer really helps in seeing a new perspective.
flat assembler, an Open source assembly language compiler.
Shortcuts on my Keyboard
Don't use the mouse --> makes you slow :-)
in addition to Carl Vondrick (Keyboard)
KomodoEdit
Google
VirtuaWin (virtual desktop, just like in Linux)
Unlocker [1]. Why Windows chooses to lock random files I will never understand. Nor do I need to care anymore with Unlocker.
[1] http://ccollomb.free.fr/unlocker/At the risk of being a suck up, as of the last month, Stack Overflow [1].
[1] http://stackoverflow.com/goole google google... It has everything a programer need :)