3 ms·
Hard agree. It annoys me that this has the air of a “hot take,” but I don’t believe anyone wakes up in the morning and thinks, “I’m going to write overly clever
by agentultra 4y ago
Hard agree. It annoys me that this has the air of a “hot take,” but I don’t believe anyone wakes up in the morning and thinks, “I’m going to write overly clever spaghetti code today and do as bad a job I can.”
People are generally good and want to do a good job and be recognized by their peers.
Different people have different strengths and skills. It’s the sum of those things that makes a team. Alone we could do some of the things we want to achieve but it’s together that we can make it happen.
- dasil003 4y agoWhat I’ve noticed over the decades is that performance on large teams is largely a function of systemic behaviors and culture. The larger the “team” (ie. everyone you have to interact with to get something built), the less any one individual’s performance matters. In particular I’ve seen situations where every single person is working hard doing their job in a defensible way, but the code base is heading towards a cliff because no one has the incentive and/or skill set to point out that the short term decisions made on either side of the engineering /product divide are steadily inching us towards a state where the code base will be too complex to add a feature or fix a bug without creating more bugs. Ultimately this type of problem has to be owned by management with support all the way up the chain in order to be solved. That doesn’t mean ICs and PMs don’t have a role in the solution, but this is why engineering management is hard and requires technical depth.
- pdimitar 4y ago> I don’t believe anyone wakes up in the morning and thinks, “I’m going to write overly clever spaghetti code today and do as bad a job I can.” Tearing down a straw man is not an impressive feat. The inconvenient truth is that a lot of programmers are just not that good. They lack the self-awareness, insight and experience to look into the near future and realize they're contributing to the problem. I was there too. Facepalmed really hard after I realized it years down the line.
- agentultra 4y ago> Tearing down a straw man is not an impressive feat. Neither is being cynical. Everyone is at a different point in their life and has different skills and has the potential to do good work. I don't know what problem you're referring to. Maybe you could enlighten us and tell us what it is about self awareness, insight, and experience and gazing into crystal balls that make developers, "good."
- pdimitar 4y agoYou said that people don't write spaghetti on purpose. And I said that lacking in certain qualities makes people write spaghetti code unwillingly and without realizing it.
- agentultra 4y agoIf you don’t realize you’re writing spaghetti code how could you do it on purpose? Most people don’t write spaghetti code on purpose. They’re trying to solve a problem with the skills and knowledge they have in the only way they can. You seem to attribute spaghetti code to a personal failure to have characteristics you think are essential. How’s anyone supposed to live up to that? I have a different theory. I think that it’s a combination of things which cause spaghetti code. I agree with others here that poor management is a strong factor. Also poor communication, time pressures, vague specifications, insufficient proof or testing, a lack of documentation, family emergencies, lack of motivation, general anxiety, social dysfunctions on the team, and so on. Everyone I’ve worked with usually had something going on for them. Even if they were just starting out or changing careers or had been at it a while but felt like they weren’t getting anywhere. The bad developers, to me, were the ones who brought others down when they could have raised them up.
- pdimitar 4y agoSure, spaghetti code can and is also happening as an emergent property of a system that's increasingly succumbing to entropy -- due to all the factors you enumerated. That too. And I am saying that a lot of programmers lack the skills to recognize they are in a situation that promotes spaghetti code and they don't resist the symptoms that lead to it. Can we live up to that? Absolutely, but it takes time, practice and a lot of screwing it up -- so, sadly, it can't happen with people who are still kind of fresh. Sad fact but what can you do. I made my peace with it, begrudgingly.
- pojzon 4y ago> People are generally good and want to do a good job and be recognized by their peers. I completely agree with you. Thing is - not everyone can do that. Thats why top companies hire best talent and not anyone who applied. Thats why there is a canyon size difference in compensation between one “expert” engineer and another EXPERT engineer. It sounds like elitism, thats just how it is.