Riku wrote:
I appreciate your pasta-based scale of disaster.
It's also a programming in-joke. Confusing, disorganized code is called "spaghetti code", and codebases with too many unnecessary layers (e.g. Module A queries Module B which in turn does nothing but forward the query as-is to Module C, and so on) is called "lasagna code". Our project is more of a lasagna. That's not anyone's fault at least, it's the architecture that was picked (which in turn was kind of forced on us by the terrible and pointless framework that they decided to use for the whole application). I had to refactor a vital module last week and again this week, and I had to add about 60 new functions in the lowest layer for the top layer to use, which meant writing the actual code in 60 files and then copy-pasting the exact same useless code that simply calls the actual implementation in 3 more layers of query-forwarding files, for each one of those 60 functions. It's ridiculous and offers no actual benefit.
Riku wrote:
Also, I am not sure how you avoided getting more upset than this. I've never been in THAT severe of a situation, but I would be well beyond the "Things that Mildly Annoy You" thread in my level of anger at such an inefficient lack of foresight form coworkers who are supposed to be skilled.
The main problem is a lack of oversight. The leaders have too much on their plates and the customer needs to be babysat all day so they have no time left to take a look at what we produce and spot problems. We used to have mandatory code reviews in which more experimented programmers would go through every new line of code and made sure it followed the standards/good practices/made use of the convenient utilities to avoid duplication, but we had to stop because there was simply not enough time. Also, to keep costs low, there were very few senior developers (4 at most, 1 now but she's also the leader
and the analyst so she has no time to program) and only ever 1 intermediate (who has since left the project). This leaves only interns (who only stay for periods of three months, which is not enough to reach full efficiency, especially with the steep learning curve that our project has, plus they need more handholding and break things more often), part-timers (some of which work from home so communication is sparse and kept to a minimum) and juniors (such as myself, and the two others left want to become analysts at some point and are only programmers for the time being, so they're not that much into code quality and foresight so much as concrete results). I'm not rustled because everyone is doing what they can and is honest and full of good will, but also and probably mostly because I get to be a smug smartass and say "I warned you about this six months ago but you didn't listen" every time this kind of situation arises.
Also re:skilled coworkers. I always thought big IT companies hired only über-nerds obsessed with programming and who see it as an art, but it turns out the vast majority of people are more balanced than I am and only see programming as a job they do to earn a living (which is perfectly fine), so the requirements are lower than I expected. Most just don't care enough or know enough to acknowledge the weaknesses in projects and the potential benefits of thinking outside of the box.