Difference between revisions of "2797: Actual Progress"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
(Undo revision 316910 by The Willy on Wheels (talk))
(I don't think this is even remotely true. People gain experience and insight with age. The recent political climate is irrelevant. I'm seeing more and more "hacking projects" all the time, and what does hacking have to do with this anyway?)
Line 19: Line 19:
  
 
Another quite common software engineering situation like the comic is when working with a codebase that has been rushed to market without organizing and modeling its underlying concepts well: “spaghetti code”. At first one may think they can enter the software and simply patch a fix, but past similar patches have made the parts needlessly intertwined and baked any heuristics in in an unmaintainable way.
 
Another quite common software engineering situation like the comic is when working with a codebase that has been rushed to market without organizing and modeling its underlying concepts well: “spaghetti code”. At first one may think they can enter the software and simply patch a fix, but past similar patches have made the parts needlessly intertwined and baked any heuristics in in an unmaintainable way.
 
A further possible situation is sadly cognitive decline. People who were skilled hackers as adolescents are now experiencing mental age, and things become harder and harder as the brain ages. This is significantly worsened from general confusion people have experienced this decade in the new political climate, and fewer innovative hacking projects have been reaching completion in many domains.
 
  
 
The joke regarding “actual progress” is both sarcastic and possibly referring to how the most progress is made on a problem when it’s general structure and underpinnings are addressed directly: when it is better understood and its root causes engaged. This appears ironic when it means breaking apart the solution to unusability before rebuilding a better one, which is usually what happens here; this is called refactoring and is analogous to taking everything off the shelves of a slightly-messy room, making it very messy, before putting everything back in a new mess-free organization. In both situations if your new solution has a crucial mistake you end up with a much worse situation.
 
The joke regarding “actual progress” is both sarcastic and possibly referring to how the most progress is made on a problem when it’s general structure and underpinnings are addressed directly: when it is better understood and its root causes engaged. This appears ironic when it means breaking apart the solution to unusability before rebuilding a better one, which is usually what happens here; this is called refactoring and is analogous to taking everything off the shelves of a slightly-messy room, making it very messy, before putting everything back in a new mess-free organization. In both situations if your new solution has a crucial mistake you end up with a much worse situation.

Revision as of 09:45, 4 July 2023

Actual Progress
Slowly progressing from 'how do protons behave in relativistic collisions?' to 'what the heck are protons even doing when they're just sitting there?'
Title text: Slowly progressing from 'how do protons behave in relativistic collisions?' to 'what the heck are protons even doing when they're just sitting there?'

Explanation

Ambox notice.png This explanation may be incomplete or incorrect: Created by a CONFUSED RESEARCHER - Please change this comment when editing this page. Do NOT delete this tag too soon.
If you can address this issue, please edit the page! Thanks.

An edge case is a situation, often in software engineering but also in other domains, that is rare and may need special handling and does not perform the way most of the situations do.

At the start of tackling a complex problem, somebody may come up with a simplified interpretation of it, see it as simple, and implement and even deploy a system that uses their interpretation. These partial (incorrect) and ingeniously useful solutions are called heuristics in software engineering. If the developer is unaware that their formation of the problem is incorrect, they may happily dive into edge cases hoping to hash them out and resolve them, only to uncover that the very underpinnings of their possibly-live system are based on false perceptions or logic and then often even be at a loss as to how it is working at all.

At this point it may be the case that the developer is actually working on a cutting-edge research challenge, unaware that this is the case, and the problem space they have to grapple with is one that is actively being worked on, yet nobody has yet completely addressed. In 1425: Tasks, a naive boss asks an engineer to perform two tasks that the engineer gives wildly different estimates for the developmental timespan. Before the easy accessibility of research papers it was much less obvious when or when not this was happening. And today, when many historically very hard problems have many more well-known solutions, and many of the very hard problems that have been intractable in the past are demonstrating aggressive progress that anyone can step in and review, the situation is quite different and much more tangible.

Another quite common software engineering situation like the comic is when working with a codebase that has been rushed to market without organizing and modeling its underlying concepts well: “spaghetti code”. At first one may think they can enter the software and simply patch a fix, but past similar patches have made the parts needlessly intertwined and baked any heuristics in in an unmaintainable way.

The joke regarding “actual progress” is both sarcastic and possibly referring to how the most progress is made on a problem when it’s general structure and underpinnings are addressed directly: when it is better understood and its root causes engaged. This appears ironic when it means breaking apart the solution to unusability before rebuilding a better one, which is usually what happens here; this is called refactoring and is analogous to taking everything off the shelves of a slightly-messy room, making it very messy, before putting everything back in a new mess-free organization. In both situations if your new solution has a crucial mistake you end up with a much worse situation.

The title text may have been partially inspired by the PBS Spacetime episode " Did AI Prove Our Proton Model WRONG?" released twelve days before this comic, which discusses how physicists don't have a proven accurate model for the internal structure of a proton at rest and that having an AI analyze collision data resulted in a model significantly different from human-made ones.

Transcript

Ambox notice.png This transcript is incomplete. Please help editing it! Thanks.
[Cueball is sitting on an office chair at a desk and has his hand on a laptop. Ponytail is standing behind him.]
Cueball: When I started this morning, there were a few edge cases I was confused about.
[Panel of just Cueball sitting on the office chair.]
Cueball: But now after a full day of research,
[Same scene as in the first panel, but Cueball has his hand on his lap.]
Cueball: I'm confused about all the regular cases, too.
Ponytail: Ah, actual progress!


comment.png add a comment! ⋅ comment.png add a topic (use sparingly)! ⋅ Icons-mini-action refresh blue.gif refresh comments!

Discussion

So true! If the outliers look weird, it's often because you've misunderstood something about the whole set. ProphetZarquon (talk) 17:11, 3 July 2023 (UTC)

It may be good to start to ask whether your nice obedient little line is just a coincidence in your testing data. 172.71.26.159 17:22, 3 July 2023 (UTC)

By the time you've happily worked out why the strange exceptions aren't actually strange/exceptions, you realise that there's no real underlying reason that carefully regiments the 'clearly patterned' bits and that's just a pure artefact of data... 172.70.86.132 18:24, 3 July 2023 (UTC)
Related: You have two numbers which are supposed to be same but differs. Sure there is small bug in computing one of them ... and sure you find it, fix it ... and the difference became about twice as big. -- Hkmaly (talk) 20:10, 3 July 2023 (UTC)

When I read it, helped also by the title, I thought at scientific research more than software engineering. So I felt the explanation slightly off - not sure if I am alone. Vdm (talk) 22:12, 3 July 2023 (UTC)

For me it reminded me of something I was doing recently. Boiling down some text, within which were numeric values (allied to descriptors that related to what those numeric values were). Dealt with the the distinction between floating point and (intentionally, not just coincidentally) integer numbers in various places, but then had to deal with various other notations. The first surprise was negative small values (should have been ~0, perhaps, for 0<=x<MAX, but smudged and badly re-normalised before getting into my hands), then there was exponential notations (multiple types), and then there was a set like 4.30k, 8.05M, 5.46T, 8.12Qu, 3.67Qi (had to presume Short Scale was in use, despite being the more illogical version) which I only discovered by checking for word-boundary exceptions for values when checking there weren't any currency or unit-of-measure aspects I needed to be aware of. When I process what I've extracted a bit more, no doubt I'll find other things to add to my edge-condition checklist. But it's already been 'fun' getting past the hurdles I know about!
Now, this isn't really what I think the comic is about (at its core, even if closely related), and I think the Explanation is a little too bloated/all-over-the-place at the momemt already so I won't try to add anything from this experience in there as well. Just recording my own prosaic tale of recent experience, which probably says more about my bad choice of source data than anything else... 172.70.86.73 07:12, 4 July 2023 (UTC)
Agreed on the bloated explanation - I don't think the third paragraph is doing anything to explain the comic at all at the moment. 141.101.99.72 11:52, 4 July 2023 (UTC)


Such a common scenario. In code you often wonder once you isolate buggy behavior: Why does anything work at all? It is usually because another bug cancels out this bug for the common cases. Not entirely sure what two bugs cancelling eachother out would mean in the realm of particle physics :D 162.158.95.80 11:08, 5 July 2023 (UTC)

In QFT applied to code, with the introduction of a photon, bugs and antibugs can be generated spontaneously, but then cancel each other out, producing a photon. This type of activity makes for virtual bugs and virtual antibugs.