News for hackers. Stuff that matters.
Re:Daniel Kahneman on when to trust intuitive judgment by branweb on Friday November 30, 2018 @01:24PM (#18571223)
I wonder how those three conditions apply to intuition in software development. The only condition that seems to regularly be unmet is "immediate feedback."
Re:Daniel Kahneman on when to trust intuitive judgment by AstralStorm on Friday November 30, 2018 @01:32PM (#18571314)
They do apply reasonably well as long as you're solving similar problems. Even if programming language differs...

It is similar with mathematicians. A mathematician may smell a rat in a proof like a programmer a bad pattern in code, but you can only really trust their intuition in their specialty field.

E.g. web frontend programmer intuition won't do in backend, desktop UI, mobile, HPC, video game coding, embedded programming, real time applications or safety critical software.

This does not preclude polyglots and polymaths or generalists.

Re:Daniel Kahneman on when to trust intuitive judgment by mpweiher on Friday November 30, 2018 @01:31PM (#18571306)
...which is why REPLs, fast test suites (1-5 seconds), etc. are so important. It's not just a quantitative thing, you get a qualitatively very very different process happening.

People have known this, er, intuitively for some time. Kahneman gives us an handle on why it is: it lets us develop an intuition for the software we are working on.

Re:Daniel Kahneman on when to trust intuitive judgment by tunesmith on Friday November 30, 2018 @01:34PM (#18571339)
I think intuition goes downhill as your system increases in complexity. It's harder to develop deep experience or regularity in distributed systems than it is in your monolith that you know inside and out. Feedback can get less immediate, too.
Re:Daniel Kahneman on when to trust intuitive judgment by zwieback on Friday November 30, 2018 @01:44PM (#18571425)
So true. I spent the bulk of my early SW development career in distributed systems that were complex enough that they felt like they had a mind of their own. What I learned back then is that my intuition was worthless. Maybe that's just me but the key to success was always to set aside your expectation of what your code does and instead spend more time instrumenting and collecting data on what was actually going on. This is especially true for completely asynchronous systems like networks or systems that integrate multiple independent subsystems. Things just don't happen in the order you expected when timeouts, aborted operations and retries bubble up and down your OS and application stack.

After 30 years I consider myself pretty capable in debugging such systems but one thing I never use is "intuition" as defined in the beginning of the article.

Re:Daniel Kahneman on when to trust intuitive judgment by wenc on Friday November 30, 2018 @01:53PM (#18571526)
Agreed. Also, in complex systems, there are emergent properties that are hard to predict, so any intuitions about system behavior from previous observations aren't always valid.

Intuition is a form of pattern-matching on implicit/tacit variables. It only works if there is a pattern to match.

Re:Daniel Kahneman on when to trust intuitive judgment by paulsutter on Friday November 30, 2018 @01:48PM (#18571468)
As the system increases in complexity, you need more and more measurement/monitoring in order to gain intuition for how the system works. For example, watching Ganglia graphs of mapreduce clusters make it 10x easier to tune system parameters.
Re:Daniel Kahneman on when to trust intuitive judgment by onemoresoop on Friday November 30, 2018 @01:52PM (#18571508)
Intuition can give you a sense that the code may be bad, but not necessarily pinpoint the problem in the code
Re:Daniel Kahneman on when to trust intuitive judgment by devonkim on Friday November 30, 2018 @02:33PM (#18571898)
We do have a form of feedback in most languages - whether it compiles / is syntactically correct. Expert intuition gets tougher for higher level constructs partly due to both the regularity issue (with a sufficiently fast-moving problem domain what may work one year may be suboptimal later) and feedback loop.

Basically, consider it a form of Bayesian learning models. The difference is that with humans if the feedback comes too late, we will reject the signal as we have trouble separating actions and consequences.

I can conceptually explain why some commonly bad practices like hard coding variables or not using looping constructs for repetitive statements are to those that keep doing it, but I can’t give quick feedback showing precisely how tough it is to make changes around the code or to even understand it to those that write it because they have developed intuition about their codebase and are now mentally somewhere between Stockholm Syndrome and defensiveness.

Re:Daniel Kahneman on when to trust intuitive judgment by meditativeape on Friday November 30, 2018 @01:52PM (#18571514)
I think if you work on a stable piece of software with good test coverage and CI/CD process for a long time, you'd meet all 3 requirements and develop good intuition about that system.

How valuable that intuition is and whether it is transferrable to other system is another question.

Re:Daniel Kahneman on when to trust intuitive judgment by Symmetry on Friday November 30, 2018 @05:14PM (#18573212)
As a software developer you tend to get very rapid feedback on whether your code is working compared to, say, engineers or scientists. Often you can test a change in code and see if it works almost instantly. Some languages force minute long compile cycles but even that is pretty fast compared to the months a scientist might have to work to test a guess. There might be more ceremony at the workplace but when you were learning to code you probably had immediate feedback.