Yeah, like mirko said, being pressured by project leader to merge absolute crap (I was in charge of merging), "because it works and we don't want to suppress less skilled colleagues". "Try to explain nicely how to do it better" while that other guy a) doesn't want to learn and b) has feelings that are more important that making better software / learning.
Edit: to clarify, that other guy couldn't understand the project or how to do proper code so all the PC dance afterwards is the perfect shield and role playing. I just walked away after few weeks.
Hey, I don’t know your situation so this may be nonsense, but what you describe doesn’t sound so PC.
The guy’s code worked? Doesn’t sound unreasonable that the project leader would want it merged. Put the technical debt on the backlog, get on with writing other code that works.
The project leader presumably had a team to manage. Seems perfectly understandable that they would want all their team contributing, even if some team members were vastly more productive than others. The alternative is over-reliance on key personnel, or back to the recruitment treadmill (both of these are risks and uncertainties - which it’s the PM’s job to manage down).
The project leader should want his less skilled employees to grow their skills so that he may one day have a greater breadth and depth of talent at his disposal. It might even be reasonable for the leader to want his most talented developers to do nothing but coach junior colleagues - particularly on a typical project that isn’t rocket science, where 5 average developers will be more useful than one rockstar.
Like I said, I don’t know your situation. My point is that the behaviour you describe seems like it could be quite normal and rational and not motivated by PCness at all.
A low-quality codebase slows down everybody on the team and causes tasks that ought to be routine to hit unexpected roadblocks. Every software team has some set of practices for maintaining and improving the quality of their codebase; a few teams, like ØMQ, merge any old crap and then fix the crap (_but not in the backlog_, dear God! _Right away_, before it costs somebody else debugging time) while most teams require that patches meet some kind of quality standards in order to be merged.
By far the fastest I've leveled up my programming skills has been when better programmers looked at my code and told me what was bad about it and what could be improved. You're commenting on the story of someone who offered such commentary and had it rejected.
Word by word this is exactly my experience. Code I was forced to merge was working only on that day in a very limited set of tests. That's not 'working' in my definition. First next feature we needed to add and code would break all over the place. First I was politely telling it can't work because of this and that, then I was fixing the code silently so we don't all hit the roadblock the next day, then I was trying to discuss that we can't really work that way, then I walked away. All in a span of 30 days.
A shaky patch that “just works” but doesn’t have good tests is a time bomb waiting to happen. When a change six months later breaks the shaky patch, who fixes it?
Piling on lots of little bad changes is only possible if you have a good cleanup process (that I’ve never seen, who likes cleaning up bad code that isn’t breaking yet).
I think this may just be different management / development philosophies.
Edit: to clarify, that other guy couldn't understand the project or how to do proper code so all the PC dance afterwards is the perfect shield and role playing. I just walked away after few weeks.