views:

190

answers:

9

Companies I have worked with and some of my other friends have a concept of "due diligence". That is, before you go to one of your colleagues with a question, do the research necessary to ensure that your question doesn't have an answer that can be easily found without bothering your colleague. My guess is most companies have this idea, although they probably don't all call it "due diligence". EDIT: In researching for this question I've learned that the phrase "due diligence" is actually a commonly-used business law term, but it means something slightly different from how I've seen it used.

I have three questions on this subject:

  1. What constitutes due diligence? Is looking over the first pages of Google and StackOverflow search results enough? Or should one crack open a book and look at all the search results that Google and StackOverflow turn up (assuming the search returns a reasonable number of results)?

  2. How would one introduce the concept of due diligence into a company? Of course it's common courtesy and shouldn't be anything new to anyone, but introducing it as a formal concept brings it into the general consciousness.

  3. How do you deal with colleagues who don't do their due diligence? When programming with friends who I know won't be offended, I've jokingly sent them links to let me Google that for you, but in a work environment that's obviously not appropriate. Note: their questions aren't necessarily stupid questions; it's just that they could be found easily on Google. If they are asking lots of stupid questions, the issue isn't that they aren't doing their due diligence.

A: 

My wife works at a law firm and their definition is much like what you would expect. For me it is:

  • Looking over supplied documentation by supplier/vendor of product you are working with.
  • Google
  • Stack Overflow
  • Some common sense playing around.

Basically it is "put some effort into it" before just asking....

It shows effort and thought not just laziness....

And, I don't see an issue at all with sending someone an e-mail saying "let me google that for you" or " Google said: --and giving them a link to the query results-- "

In reference to your last statement, I think handing people the answers all the time only encourages their lazy behavior.It's similar to handing a street bum $5 when it's quite obvious that they smoke crack rocks. If you really cared about helping them, handing them a bagel, sandwich, or bottle of juice would actually benefit them much more.The same can be said about how to handle people who don't do their due diligence. Kindly reaffirm that you are busy and ask them if they've exhausted their resources, by asking "Have looked at the reference documentation yet?"
Kevin Elliott
A: 

Here's what I do, but I am in the position of being able to define circumstances to fit my desires. So, take the advice with some salt. :)

  1. When developers here come to me with a question, I am upset if they are not able to comprehend the answer. That is, they have not done enough research on the subject to actually understand the ins and outs of it. To me, that's due diligence in the sense that you're talking about. The ability to have a reasonable back-and-forth on a subject and comprehend a recommendation.

  2. That comes from the top. See #3.

  3. Mockery, peer pressure. I am very, very hard on developers and architects in code reviews. I have cultivated a culture of an extreme desire not to have time wasted or wasted somebody else's time. When a new guy comes in, I will tell him once or twice (and that's it) that he needs to (1) research his questions; and (2) batch them up reasonably before he asks a senior developer. I don't tolerate people wasting other people's time. One or two times of getting yelled at and most people start to understand what is expected of them. The ones that are too dense to get that don't last long anyway.

JP Alioto
In response to 3, I don't feel that I'm in a position to do that. I'm a junior developer.
Imagist
You're right ... culture comes from the top.
JP Alioto
But that's not entirely true. For example: our product was written in C, then, due to standardization, it was rewritten in a version of Java 1.0. It became necessary to do code generation, and while the general consensus was "Let's use this ancient version of Java to keep things consistent," I did it in Python, which proved to be significantly more efficient. I also pro-actively volunteered to teach a class on Python. In the end, this lowly junior dev affected culture in a positive way. My point is that culture comes from the bottom too; it just has to come more carefully.
Imagist
@JP: Truly mocking people out and yelling at them will drive good developers off, hope you're exaggerating for effect.
Jim Ferrans
@Jim: I'm actually really nice. The pressure comes from being on a team where everyone is a black belt. It makes you want to be a black belt too. :)
JP Alioto
A: 

1) I usually give about 15-20 minutes of effort without progress before I'll ask someone else. This is a good rule of thumb - you don't waste too much time, and often you find it within the first 10 minutes anyway.

2) I wouldn't formalize this. It's a common sense kind of thing that can be encouraged only when needed.

3) If you have one guy who's bugging you non-stop, then tell him you're busy, and can help him out 'shortly'. I find it pretty rare for this to happen in my experience.

Kieveli
+1  A: 

Use let me google that for you. I hope they get the message after a couple of mails.

Jokes apart, I believe business questions should be asked between colleagues, and we must be patient with new comers, specially when they come from a different business.

About technical questions:

  • if you know and it is quick, you answer (that's good also to get a better reputation and better respect from your colleagues).
  • If you don't know, say you don't and politely ask if he searched about it, because you don't know.
  • If you know, and it should take long, you decide. You could answer, and likely get some reputation and respect), or give some minor hints and say something like "I'm a little busy with (...). Can you try to research a little on this and ask for help later if you're having difficulties?"
Samuel Carrijo
I already mentioned why I don't do that in the original post.
Imagist
just edited with some more serious comments
Samuel Carrijo
Some don't get it, even when you're giving them the answer where to look. You end up becoming their "google search appliance." I prefer to ask them if they've already searched Google, and then they're forced to 1) say No, and feel stupid and go search it, or 2) lie, and then I can catch them on their lie, and then they feel stupid. Either way, they feel stupid, and remember not to waste your time again.
Kevin Elliott
@Kevin The idea is not making the other feel stupid, but not to sacrifice good team spirit. You want to make this situation as something to improve team relations
Samuel Carrijo
+2  A: 

How do I deal with colleagues who don't do their due dilligence? Unfortunately, the only answer is the most obvious one - politely don't cooperate.


Other Person: Hey, what's the name of the function to find the first instance of a word in a string?.

You: Have you checked the MSDN?

Other Person: No

You: Look it up


This is not suggesting the other person is lazy or incompetent. From the other person's perspective, he or she is trying to solve a problem, and it's only natural to find the quickest way to get the necessary information. If you answer the question, even begrudgingly, then you are the best solution for them to follow.

Simply don't answer the questions - remove the avenue.

People are usually fine with this. Only once has a junior colleague taken it personally, in which case I had to explain to him what being a software developer actually meant.

Andrew Shepherd
Very good answer. I answered similarly below, but you did it better ;)
Tres
I personally find MSDN relatively messy and hard to find what you want. I am a novice at WinAPI and C#, but I never have anywhere near the amount of trouble with the Python manual.
Unknown
The problem with this is that I also want to balance this with creating an atmosphere of mentorship. Even though I'm a junior developer, I've probably got the most experience of anyone I know of at my company with the Python programming language. I feel that it increases my reputation and clout within the company if I am the go-to guy on that subject. So I don't want to discourage people asking me questions.
Imagist
Imagist there's a happy medium somewhere. If a fellow developer asked me about an HTML tag I'd tell them to go look it up. There's nothing I can contribute to that question that they wouldn't be able to find online. If another developer asked me about multithreading techniques I'd give him all the information he wanted.
Spencer Ruport
@Imagist: Of course, sometimes there's a legitimate incentive to be the one who answers the questions. If you're unknown in the company, it helps to publicly become "the guy who knows everything", so you want to be approachable. Only then, once you've cemented yourself in that role, you have to figure out how to manage the interruptions.
Andrew Shepherd
A: 

Since you have posted this on a coder site, let's use the coder oriented acronym RTFM instead of the legal phrase "due diligence" because I think that RTFM does a good job of concisely capturing the issue at hand.

You're the new guy. You go to the senior developer. Maybe he or she is called the team lead or chief architect. You ask a question that, to you, is not dumb. The team lead gets angry. Why? Because coders don't like to write documentation and because this coder most probably spent hours writing documentation that answers the question that you just asked. Furthermore, this is most probably the 18th time that this question has been asked this month.

This team lead is now frustrated because he realizes that you would rather ask him to explain what he has already explained yet again instead of taking some time to research the topic yourself. He's the team lead. He's the "go to" guy for every one in your company. You're the new guy. You've got all the time in the world. He is busy putting out fires from dawn til dusk.

It also demonstrates that you don't have a lot of respect for his time which means that you don't respect him. It also shows that you're lazy.

You also bring up the scenario where someone asks what I would call a common question about something publicly available such that the correctly phrased google query could bring up relevant topics. That's not laziness. That's low IQ. Competency assessment in common knowledge worker tasks such as emailing, searching, or submitting a web form should be handled by the placement agency or the HR department and speaks to a larger, more systemic, problem in the organization around quality control in personnel selection.

Glenn
I've heard RTFM too, but again, as a junior developer, I'm hesitant to swear, even implicitly, in the workplace.
Imagist
That's what read the *fine* manual is for :)
Mark Rushakoff
The other issue is that with the advent of the internet, "manuals" aren't as often used.
Imagist
A: 

I think that depends totally on what type of information you are asking. I have a guideline I use myself and I think it work.

  • Does the information I need is important part of my current job, and I will probably need to do the same thing in the future? If the answer is yes, then there is definitely value added to you understanding the problem. I this case I will look for an answer everywhere before asking my colleagues.

  • The answer is something I need to do, but it is something that it is one in a lifetime and there is no value added in me understanding/learning or memorizing something? I just simply ask somebody.

  • Does I know somebody in my team that already did the exact same thing or something similar? If yes, I ask him/her.

My mentality is this: What is better for my company or my organization? Me expending time looking for information out there that will not add any value to my job, or expend a few minutes asking a co-worker?

However, be aware that at some point people will come to you for questions, and the better you treat them, the better they will treat you when the time comes. In my experience people like to be asked questions every now and then, what they don't like is someone keeps asking the same stupid questions over and over.

At least do a basic research before asking. You should never start a question by "How do I...", Always start with "I am am having this problem, and I checked this, and that. Didn't you do something similar a while back?"

Freddy
You point out a reasonable exception.
Imagist
+1  A: 

Due diligence is a great idea, since by trying to find the answer on your own you'll be better prepared when talking to your colleague. This preparation will help you get more out of their answer, save time, and perhaps also teach your colleagues something in return.

On (1) the time to spend looking up the answer probably varies based on the difficulty of the question, Googling is good for digging up program fragments, but for something like "what is static typing vs. dynamic typing?" you'll want to be more thorough. Maybe spend 5x or 10x the effort looking up an answer that you'd expect your colleague to spend in giving you the answer?

On (2) you can informally introduce this by responding to a question with "what have you been able to find out about X so far?". The questioner will very quickly understand that there's an expectation they do some homework first.

I think (3) is similar to (2). Ask if they've been able to find anything on Google. Assuming they've tried perhaps all you need to do is give them hints on coming up with good search terms.

Another solution to (2) and (3) would be to distribute a list of good online resources to check for answers. That carries an implicit expectation that people look there first,

Jim Ferrans
I really like your answer to 2. I'll definitely start doing that.
Imagist
A: 

I am not bothered by someone asking my opinion/expertise (sometimes flattered). Some people learn better by someone teaching them rather than teaching themselves doing research. I try to put myself in the position of the person asking the question.

Google and StackOverflow are great resources, but so are people. It might be faster for them to ask you a question rather than searching the internet. Your answer may spark them to do research on their question.

Not everyone goes about doing things the same way (as most programmers would agree) and just because someone didn't go on Google doesn't mean they aren't doing the "due diligence". By asking, they are doing their "due diligence". It's if they start guessing without knowledge where they aren't doing their part.

Remember: Stupid question deserve stupid answers.

Tres