Programmer problem solving sequence Posted on 22 October 2010 by John From Phillipe Leybaert: 2010 developer’s problem solving sequence: Google Coworkers StackOverflow RTFM Think
32 thoughts on “Programmer problem solving sequence”
I tend to use IRC a lot. With web-based IRC now widely available (webchat.freenode.net / mibbit.com) it’s very quick to get interactive feedback.
Aardvark (vark.com) also might work well, though I suspect for well known languages or problems Q&A sites like StackOverflow can be just as quick.
Oh, and I’d replace coworkers by knowledgeable contacts (be them friends, coworkers, classmates, etc)
I wonder if my last comment was caught by the spam filter (had some links, though without html or even the http:// part…)
Pretty much sums it up but sometimes I go directly to stack overflow if I have a specific thing in mind that I know is going to be available there and want to avoid the noise on google.
Waldir: Yes, your comment did get caught in the spam filter. I don’t see why.
WordPress has a setting:
“Hold a comment in the queue if it contains # or more links. (A common characteristic of comment spam is a large number of hyperlinks.)”
By default # is 1 or 2 I don’t remember, that could cause this.
LOL! I actually thought ‘Think’ was a website! :P and googled for it.
@Hans, I am aware of that, but it’s kind of strange that it considers even text “links” (the urls aren’t even clickable).
I also have seen some people using Twitter for this. It only works if you have a large programmer following, though.
RTFM = “Read the F***ing Manual!”
Really? I thought it was Read The Fscking Manual and pertained specifically to file system problems?
Althrough at first sight, this might seem like a bad grade on today’s programmer, I think that you also need to look at the environment.
20/30 years ago, a programmer that had a problem had a basic structure problem or algorytmyc problem that COULD be solved by thinking..
now, programmers use monstruously badly documented framework build on top of framework where the “problem” often translate into “what existing functionality of the above mentionned framework do I need to call and HOW do I call it”…. in this case, no amount of thinking can help you solve the problem, you need the data/info…
this is why I find windows/.net development so frustrating… skills and brain are NOT rewarded, rote knowledge is…
Hmmm… a conjecture:
Items 2 and 3 are high on the list because they reward other people by making them feel useful. However, you don’t want to overdo this, otherwise you’ll be seen as needy and incompetent, so you google first (item 1) so that you can say that you’ve done your homework and/or Google is incompetent. If all that fails, reading (item 4) is obviously better than thinking (item 5) since it’s very much possible other people have thought about the problem before you and figured out the solution.
Quite possibly this sequence is a consequence of programming environments where big stuff needs to be done quickly and working alone is not an option.
That is why I am supporting. Proposals for physics, general engineering, electronics and electrical engineering, hardware engineering and development and Engineering and Scientific Software Tools.
@Cyrille: Don’t confuse “finding how to use an API” with “problem solving”. This tweet is actually about problem solving.
It seems to me that modern age developers don’t want to think about a problem anymore. They sometimes spend hours trying out ways to formulate the problem in order to find a solution via Google, while they could’ve found the solution in half an hour by thinking about it.
Its funny because its true.
How funny! After my talk at WUSS on programming design choices, someone came up to me and said, “I think there is a blog you would like.” When I got home and followed the link he sent me, it turned out to be your blog! He was right about it being a blog I would like.
For me, it’s more along the lines of:
I mean, honestly, who likes reading a manual? ;)
RTFM should be closer to the top. If I’m asking coworkers and Stack Overflow before I’ve read the documentation, I’m doing this world a disservice.
I can’t believe that reading the source code isn’t listed here, since almost everything I use is open source:
1. Google Problem Symptom (includes Stackoverflow)
2. Read The Source (hooray github)
4. Go for a Walk and Think
Yup, except my co-workers have figured this out by now and usually pretend that they cant hear me until i move onto the next step, and solve it by myself :)
The stages before thinking often give the fuel for thinking. And sometimes they solve the problem in time to meet a deadline or save a job.
@JOHN: Your problem solving sequence is typical to so many people. I tend to think negatively of a coworker/collab when he/she walks into my office way too often.
My personal sequence is:
2. My personal electronic archive, including code stuff written by me.
3. Think. Also requires pen+paper.
4. Q/A forums
5. RTFM (sigh)
99. Coworkers (very unusual).
I would swap #3 and #2, then give them new names [in order of decreasing hopefulness]:
1. Someone has solved this problem before
2. Someone smart has solved this problem before
3. Someone I work with understands this problem and has solved it before
4. Someone planned for this problem to be solved before
There is a missing 0’th entry which is “reinvent solution immediately if its obvious”. Even if well known solutions exist programmers seem to come up with a new one each time provided it is sufficiently obvious this starts from the bottom with very simple problems and becomes less likely as the problem grows in complexity e.g. there are a number of ways of copying PODs (plain old datatypes) in C/C++ for instance nobody Googles for the best answer, they just use the assignment operator = – many programmers can go a whole career and not ever discover that there is a better way if you care about performance (assuming the overloaded C++ operator = isn’t used and implements something which is optimal).
I usually wet my pants and take a nap.
Makes sense – why would you do a CPU-intensive task (thinking) when you can just fetch the result from a latency-tiered hierarchy of caches (Googling etc)? Especially if the caches’ results may be based on distillation of a wider range of value nodes (information, perspective) than you have access to?
In science, they call this “searching the literature”. Why would you do a Ph.D. project if five others have done it already?
Unless of course the problem is so simple that a cache lookup is more expensive than the required calculations.
Depending on the kind of problem, ‘Debug’ (stepping through the code and watching your variables) could also be an option.
20yrs ago Google and StackOverflow didn’t exist. Manuals were generally better. When your manual is a printed book, you make sure it’s good before it gets released. Same with software. These days, the manuals (if there are any) often just really s*ck.
But you certainly have more options now and it’s become a lot easier and cheaper to use the right tool for the job.
I remember 15-16 yrs ago looking at coding problem together with a friend of mine, going online (as in dialing and connecting with a moden) to look for an answer on Altavista. My friend thought it was funny that I used ‘the internet as a coding tool’.
For the last 10yrs or so I’ve often felt Google was my #1 essential coding tool.
What’s Coworkers? Is this a new website? ;-)
After I initially commented I clicked the -Notify me when new feedback are added- checkbox and now each time a remark is added I get 4 emails with the same comment. Is there any means you can take away me from that service? Thanks!
Sorry for the unwanted email. There should be an unsubscribe link in your email notification.
Read the manual? Isn’t that what the search function is for?
Well, I am middle-aged now but for me it was always:
yeah, You got it right. I never used Google.