A degree guarantees a broad understanding of computing related issues. Of course some people without a degree may have this, but these are a few of the things I have seen:
A business rule that had been modified a number of times by requests from the business; "do X when Y", "do X when Z but not A", "Assume A is false when not Y", and so on for many years. The result was a huge condition with brackets that could not easily be understood. Writing it as a boolean expression and simplifying it revealed that several of the variables in the conditions were not relevant (it did the same thing when they were true or false), much of the complexity was because some test was being applied in multiple conditions and the whole lot simplified down to a short clear expression.
A coder had produced a phenomenal amount of code, counted by lines. In peer review it turned out he didn't understand how to call library classes, and copied the library code into every module which used it
A coder defined a macro defining the boolean "or" "|" as "and"! It turned out that he was totally confused by an expression opening a file as F_READ | F_WRITE, and thought that the compiler writers and everyone else in history had got "or" and "and" the wrong way round.
A definition which was obviously a finite state machine written as spaghetti code, where all that was needed was a table of state, event, action, new-state
This is a legend in our company. An Array copy function defined, despite one being available as
# This function only works on arrays up to size of three elements
A = B
if (B.size > 1)
A = B
if (B.size > 2)
A = B
if (B.size > 3)
A = B
And yes, the language had loops and a built-in array copy function.