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.
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.
It's my 13-inch MacBook that I carry with me everywhere I go
Regular Expressions. I have no idea what I would do if I didn't know them (since Google is no help here).
Google , my programming related books and recently Stackoverflow became my best buddy!
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.
A very close second for me is an IDE with good intellisense. There is no better starting point for understanding existing code than to type a dot :)
Stackoverflow and IRC chats any day . Google helps you find these appropriate places.
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. :-)
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 !
Visual Studio, Google, CodeProject.com, people smarter than myself (not too rare, sadly :P ) and recently StackOverflow.
Of course my notebook(both paper based and electronic circuits based)
Ergonomic keyboard and chair.
I don't care how good the software is, if I'm uncomfortable, I can't concentrate.
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.
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)
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)
In no particular order:
And without a doubt my wife.
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
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.
The last one keeps you with the feet on the ground... and write good code.
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. :-)
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.
Colleagues because talking with them always gives me a chance at better understanding what I'm doing.
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.
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.
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.
StackOverflow
I like making other people do my thinking for me.
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.
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 "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).
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:
Stackoverflow, others who will answer my questions here within minutes - go on!! and lately firebug with yslow
A person, who you could ask a question whenever you have a problem and nothing else helps.
In no particular order:
Twin 23" widescreen LCD monitors. Nothing, but nothing can substitute for screen real estate.
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.
1)IDE - VS2008
2)web search - Google
3)noteKeeping - Evernote
4)backup,sync - BeyondCompare
5)textsearch - Agent Ransack
6)notepad2
At the risk of being a suck up, as of the last month, Stack Overflow.
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.
Ctrl + Z.
Dear GOD. CTRL + Z! CTRL + Z! CTRL + Z!
NOOOOOOOOOOOOOOOOOOOOOOOOOOOO!
I have to second the whiteboard. I realised when I saw this Dilbert cartoon 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.
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).
The floor. I like to do push-ups throughout the day to keep my blood flowing.
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 :)
My 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).
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, 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.
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.
Shortcuts on my Keyboard
Don't use the mouse --> makes you slow :-)
in addition to Carl Vondrick (Keyboard)
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.
Interesting Blogs(CodingHorror...) , WIKI , Google and Visual Studio
Soma.fm - Groove salad channel
Wonderful distraction free music to code by.
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.
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.
IDE (i'm not picky... :P) + Goggle + confy keyboard and I'm ready to go! :D
By all means its Electricity,
Its a computers best friend and without it computers won't exist and no computer means no programmer.
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.
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 :-)
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!
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.
My copy of "The Mythical Man Month" whenever a manager starts to get an idea
Dojo and firebug for webdev and STL/Loki-lib for C++.
Also google and wiki know just about everything :D
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.
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.
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.
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
The swedish bikini team that walks through or office once every hour to wake us from our programming stupor.
My father, he introduced me to programming, if not I would never put my hand on that thing.
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.
A 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)
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!
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, Martin Fowler, and Eric Evans...
I would be totally lost without their excellent insight and approach to our most common and difficult problems.
Microsoft...
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.
Here are the tools I can't live without
G'day,
I totally, Totally, TOTALLY, TOTALLY (is there a pattern here?) agree with having
to:
So that, in the end, you can have someone senior, e.g. 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"
Just my AUD0.02!
HTH
cheers,
XM Real Jazz playing on my PC. The only music I can code to without getting disctracted.
Notepad++ , haven't had a development machine without it since I first downloaded it years ago.
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.
Tree structured note program.
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.
Just a Terminal: