The most annoying specific one was a fairly large Fortran77 codebase. It was for quantum mechanical computations that were a bit over my head in the beginning.
In general
- No static typing (makes automatic refactoring much less precise).
- Relying on semi-global mutable states (that is, having a long lived mutable object structure that is too large to understand).
- Too little, inaccurate or too many comments.
- No tests (preferably automated, preferably unit, but anything fast and reproducible is very helpful).
- Basically everything from preventing bugs: hashnode.com/post/what-are-some-programming-habit…