News for hackers. Stuff that matters.
Re:Coding, Fast and Slow: Developers and the Psychology of O... by rayiner on Tuesday November 04, 2014 @09:43AM (#8556660)
One of the best things you can do in your organization is create a culture that treats obstacle discovery as forward progress. There is nothing more disheartening for an engineer than banging her head against the wall trying to debug some race condition only to get flak from management about why it isn't fixed and why it's holding up some milestone. The root of this problem is management that doesn't understand the problem domain, and is suspicious about whether the engineers are really working diligently. The proper response to obstacle discovery is to treat it as forward progress. Firing off an email to a superior saying: "I discovered an unknown race condition, let's see what we need to do to fix it," should be treated no differently than "I finished this feature." The presumption should be that the engineer used due diligence and the situation was unforeseen. Now, that doesn't preclude separate improvements to diligence procedures to provide better foresight in the, future but under no circumstances should anyone be blamed for discovering obstacles or defects and raising them. When your culture does that, all you'll get is shitty product.
Re:Coding, Fast and Slow: Developers and the Psychology of O... by gfodor on Tuesday November 04, 2014 @12:31PM (#8557787)
Just to play devil's advocate, there is also the type of person who tends to get stuck down rabbit holes more than they should. There's a skill not just to solving problems but avoiding them in the first place. Usually this requires not just engineering talent but the ability to see the bigger picture, in terms of product and business goals. If someone is banging their head against the wall, it may be because they are trying to solve a necessary difficult problem and are discovering valuable knowledge, or it could be because they are foolishing running into a wall that they could easily go around if they stepped back for a second and considered what they had set out to do in the first place.

In your race condition example, it would be the difference between an engineer debugging a race condition in mission critical code, and debugging one that is incidental complexity in a unit test or ancillary tool that could be refactored to be single threaded, or just omitted altogether. Heck, even in the mission critical code case, it's worth considering how many users it effects, how it effects them, and at every moment considering if the time spent so far on the problem (and its associated opportunity cost) is still justified. (Taking into account the fixed costs of switching context into the problem again.) It's very easy to get wrapped up in an interesting problem and forget about the eject button.

Re:Coding, Fast and Slow: Developers and the Psychology of O... by zenogais on Tuesday November 04, 2014 @01:23PM (#8558116)
This is where "The presumption should be that the engineer used due diligence and the situation was unforeseen" clause enters into play.

I've seen many folks in management just always assume incompetence or rabbit holing on the part of engineers. It's good to ask clarifying questions. But as a manager you should be aware that adopting a style of second guessing and interrogating everything your reports do comes off as insulting - after all, you likely hired them, so why don't you trust them?

That being said there are no hard and fast rules here, and being aware of the different histories of different folks is important, but defaulting to a critical attitude is likely to lead to all types of efforts to hide things from you just to avoid questioning, feeling insulted, having their time wasted, etc.

Re:Coding, Fast and Slow: Developers and the Psychology of O... by aangjie on Tuesday November 04, 2014 @01:20PM (#8558098)
> it could be because they are foolishing running into a wall that they could easily go around if they stepped back for a second and considered what they had set out to do in the first place.

Note to self: Remember this, whenever you feel stuck and look at the problem in perspective.

My experience, tells me this is one of the biggest guidance a technical/engineering manager must be able to provide to his team. I am not sure how hard or easy or for that matter even makes sense from the manager/lead's perspective, it is to provide this, but have found that whenever my manager is asking me to speed-up i run into these problems and lose the ability to judge whether i'm running against a wall or not.

Re:Coding, Fast and Slow: Developers and the Psychology of O... by nostrademons on Tuesday November 04, 2014 @01:25PM (#8558133)
This is not incompatible with treating obstacle discovery with forward progress. Often the outcome of discovering an obstacle is making a decision at a higher level to go around that obstacle, and either changing the product concept or architecture so that it's a non-issue. You can't make that decision unless you have the information that what you're trying to do is difficult or impossible.
Re:Coding, Fast and Slow: Developers and the Psychology of O... by ep103 on Tuesday November 04, 2014 @01:20PM (#8558093)
And that's why management needs to be both responsible in instilling this attitude in themselves, and in the developer leads that are responsible for overseeing the developers. And it is the developer lead's responsibility to ensure that their developers aren't going down to many rabbit holes unnecessarily, specifically because that's too technical a decision for management to make.
Re:Coding, Fast and Slow: Developers and the Psychology of O... by kstenerud on Tuesday November 04, 2014 @09:18PM (#8560211)
If, by default, you assume the worst in your employees, they will eventually ALL start to behave in the worst ways. Why? Because every time they're honest with you, they get screwed when you assume they're just trying to get the better of you. So they'll eventually either be fired, or learn to lie to you.
Re:Coding, Fast and Slow: Developers and the Psychology of O... by gbhn on Tuesday November 04, 2014 @02:43PM (#8558615)
On exactly that topic, see another (great) post by the same author: http://blog.hut8labs.com/no-deadlines-for-you.html
Re:Coding, Fast and Slow: Developers and the Psychology of O... by sporkenfang on Tuesday November 04, 2014 @11:30AM (#8557393)
Having experienced both sides of this, I concur.

When your manager is annoyed and replies "oh man, how much will I have to push back the next release deadline for your bug?!" even though you just discovered it and didn't necessarily cause it, it's much more disheartening than something like

"Good! Fix it! I'm giving you two weeks until the next release (instead of releasing tomorrow) and if it's still an issue we'll get you some backup."

Race conditions can in some cases break the entire product or render some of its results useless (depending on scale and location of the bug, naturally). I definitely think in most cases they shouldn't be taken lightly.

Re:Coding, Fast and Slow: Developers and the Psychology of O... by rayiner on Tuesday November 04, 2014 @11:46AM (#8557481)
> even though you just discovered it and didn't necessarily cause it

Whether you caused it or not is irrelevant. The only issue on the table when confronted with a defect should be: 1) how do we fix it so the customer does not get shitty product; 2) how do we improve the process so that such defects are not introduced in the first place.

If there are people who do careless work and consistently introduce defects, that's a wholly separate issue to be handled through separate channels. If you mix the engineering issue, with the HR issue you will create a culture where people would rather let defects get to the customer than get in trouble for raising them internally.

Re:Coding, Fast and Slow: Developers and the Psychology of O... by yarrel on Tuesday November 04, 2014 @12:07PM (#8557605)
1) By spending the time to do so.

2) Use oracles.

Re:Coding, Fast and Slow: Developers and the Psychology of O... by lucaswoj on Tuesday November 04, 2014 @10:27AM (#8556941)
Are you hiring? Can I work for you?
Re:Coding, Fast and Slow: Developers and the Psychology of O... by Aldo_MX on Tuesday November 04, 2014 @12:11PM (#8557630)
The problem with many companies is that they're too focused in profits that they disregard other areas. Their inflexibility can reach ridiculous levels, and they will understand what they want from development philosophies like "Release Early, Release Often".

But I completely agree that a shitty culture leads to a shitty product.

Re:Coding, Fast and Slow: Developers and the Psychology of O... by chicofarm on Tuesday November 04, 2014 @10:17AM (#8556878)
Interesting. This sounds like an Agency Theory issue.

http://www.investopedia.com/terms/a/agencytheory.asp

Re:Coding, Fast and Slow: Developers and the Psychology of O... by fit2rule on Wednesday November 05, 2014 @01:51PM (#8563470)
Angry managers are those who are not doing their job. I find that the effectiveness of the manager is directly related to just how angry they get. Usually, the very angry manager, is an incompetent junior - as in, cannot do his juniors job. This is typical. But when a team decides to support its own organizational structure, and thus support the manager in doing his/her job, then things do work.

Its just that people are often-times so bad at communicating with each other. Anger rarely helps there, either..

Re:Coding, Fast and Slow: Developers and the Psychology of O... by neebz on Tuesday November 04, 2014 @10:55AM (#8557140)
forward progress means learning.

if our colleague gets into an unexpected issue and he takes time to solve, we pat him for it. however it's important that the learnings have to be shared. they should be tangible enough to be reapplied if we get into a similar situation in future.

Re:Coding, Fast and Slow: Developers and the Psychology of O... by markbnj on Tuesday November 04, 2014 @11:18AM (#8557300)
Dead on, imo.