How can I encourage my coworkers to produce better quality code? [closed]

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;







up vote
5
down vote

favorite












I'm a team lead for a small group of programmers. We share several projects with other teams. Lately the quality of two other teams' code has deteriorated to the point where it is slowing us down and causing maintainability issues. I've raised this diplomatically with a couple of individuals directly, but they become defensive and dismissive. I don't have the clout to go over their heads, and ultimately I need to work with these people so I don't want to annoy them too much.



I'm wondering if there's a process or a forum that can help improve the code for everyone? We already have basic things like well-documented coding standards, tests, linting, code reviews, etc.



But I'm thinking there's more we could do. Maybe a system where developers can anonymously praise or criticise others' code. Or maybe a type of informal meeting where someone can present some problematic code and describe the issues it causes and suggest a refactor. The original author could have the opportunity to defend their work, and then everyone gets to vote on the outcome... if there's a way to do that without being outrageously confrontational.



Has anyone tried something similar, and how did it work out? Any other suggestions? (Apologies for the open-ended questions)







share|improve this question












closed as too broad by gnat, Twyxz, GOATNine, JimmyB, IDrinkandIKnowThings Sep 5 at 14:10


Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.














  • Problematic as in has lots of bugs, or poorly designed/thought out? Do the tickets contain enough information and documentation?
    – Juha Untinen
    Aug 31 at 14:39











  • Have you listened to the defensive arguments? What did they told you?
    – Josef
    Aug 31 at 14:52










  • @JuhaUntinen - poorly thought out, overcomplicated stuff that violates separation of concerns, DRY, and the principle of least surprise. Inappropriate design patterns, inaccurate naming, and lack of attention to security issues. They're all just basic things that shouldn't need to be explicitly requested in the tickets.
    – manannan
    Aug 31 at 15:17










  • @Josef the only valid defensive argument was that stuff just needs to get done under time constraints. However I don't accept that because (a) the quality issues persist even when not under a tight deadline, (b) bad habits are bleeding over into more junior team members now, and (c) ultimately the maintainability issues cost us all more time in the long run.
    – manannan
    Aug 31 at 15:25










  • @manannan Thanks. Who sets and enforces deadlines then? And is there somebody to protect the team and code against them? I would not discount their answer, you may be actually talking to the wrong people about this problem.
    – Josef
    Aug 31 at 17:35
















up vote
5
down vote

favorite












I'm a team lead for a small group of programmers. We share several projects with other teams. Lately the quality of two other teams' code has deteriorated to the point where it is slowing us down and causing maintainability issues. I've raised this diplomatically with a couple of individuals directly, but they become defensive and dismissive. I don't have the clout to go over their heads, and ultimately I need to work with these people so I don't want to annoy them too much.



I'm wondering if there's a process or a forum that can help improve the code for everyone? We already have basic things like well-documented coding standards, tests, linting, code reviews, etc.



But I'm thinking there's more we could do. Maybe a system where developers can anonymously praise or criticise others' code. Or maybe a type of informal meeting where someone can present some problematic code and describe the issues it causes and suggest a refactor. The original author could have the opportunity to defend their work, and then everyone gets to vote on the outcome... if there's a way to do that without being outrageously confrontational.



Has anyone tried something similar, and how did it work out? Any other suggestions? (Apologies for the open-ended questions)







share|improve this question












closed as too broad by gnat, Twyxz, GOATNine, JimmyB, IDrinkandIKnowThings Sep 5 at 14:10


Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.














  • Problematic as in has lots of bugs, or poorly designed/thought out? Do the tickets contain enough information and documentation?
    – Juha Untinen
    Aug 31 at 14:39











  • Have you listened to the defensive arguments? What did they told you?
    – Josef
    Aug 31 at 14:52










  • @JuhaUntinen - poorly thought out, overcomplicated stuff that violates separation of concerns, DRY, and the principle of least surprise. Inappropriate design patterns, inaccurate naming, and lack of attention to security issues. They're all just basic things that shouldn't need to be explicitly requested in the tickets.
    – manannan
    Aug 31 at 15:17










  • @Josef the only valid defensive argument was that stuff just needs to get done under time constraints. However I don't accept that because (a) the quality issues persist even when not under a tight deadline, (b) bad habits are bleeding over into more junior team members now, and (c) ultimately the maintainability issues cost us all more time in the long run.
    – manannan
    Aug 31 at 15:25










  • @manannan Thanks. Who sets and enforces deadlines then? And is there somebody to protect the team and code against them? I would not discount their answer, you may be actually talking to the wrong people about this problem.
    – Josef
    Aug 31 at 17:35












up vote
5
down vote

favorite









up vote
5
down vote

favorite











I'm a team lead for a small group of programmers. We share several projects with other teams. Lately the quality of two other teams' code has deteriorated to the point where it is slowing us down and causing maintainability issues. I've raised this diplomatically with a couple of individuals directly, but they become defensive and dismissive. I don't have the clout to go over their heads, and ultimately I need to work with these people so I don't want to annoy them too much.



I'm wondering if there's a process or a forum that can help improve the code for everyone? We already have basic things like well-documented coding standards, tests, linting, code reviews, etc.



But I'm thinking there's more we could do. Maybe a system where developers can anonymously praise or criticise others' code. Or maybe a type of informal meeting where someone can present some problematic code and describe the issues it causes and suggest a refactor. The original author could have the opportunity to defend their work, and then everyone gets to vote on the outcome... if there's a way to do that without being outrageously confrontational.



Has anyone tried something similar, and how did it work out? Any other suggestions? (Apologies for the open-ended questions)







share|improve this question












I'm a team lead for a small group of programmers. We share several projects with other teams. Lately the quality of two other teams' code has deteriorated to the point where it is slowing us down and causing maintainability issues. I've raised this diplomatically with a couple of individuals directly, but they become defensive and dismissive. I don't have the clout to go over their heads, and ultimately I need to work with these people so I don't want to annoy them too much.



I'm wondering if there's a process or a forum that can help improve the code for everyone? We already have basic things like well-documented coding standards, tests, linting, code reviews, etc.



But I'm thinking there's more we could do. Maybe a system where developers can anonymously praise or criticise others' code. Or maybe a type of informal meeting where someone can present some problematic code and describe the issues it causes and suggest a refactor. The original author could have the opportunity to defend their work, and then everyone gets to vote on the outcome... if there's a way to do that without being outrageously confrontational.



Has anyone tried something similar, and how did it work out? Any other suggestions? (Apologies for the open-ended questions)









share|improve this question











share|improve this question




share|improve this question










asked Aug 31 at 14:08









manannan

344




344




closed as too broad by gnat, Twyxz, GOATNine, JimmyB, IDrinkandIKnowThings Sep 5 at 14:10


Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.






closed as too broad by gnat, Twyxz, GOATNine, JimmyB, IDrinkandIKnowThings Sep 5 at 14:10


Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.













  • Problematic as in has lots of bugs, or poorly designed/thought out? Do the tickets contain enough information and documentation?
    – Juha Untinen
    Aug 31 at 14:39











  • Have you listened to the defensive arguments? What did they told you?
    – Josef
    Aug 31 at 14:52










  • @JuhaUntinen - poorly thought out, overcomplicated stuff that violates separation of concerns, DRY, and the principle of least surprise. Inappropriate design patterns, inaccurate naming, and lack of attention to security issues. They're all just basic things that shouldn't need to be explicitly requested in the tickets.
    – manannan
    Aug 31 at 15:17










  • @Josef the only valid defensive argument was that stuff just needs to get done under time constraints. However I don't accept that because (a) the quality issues persist even when not under a tight deadline, (b) bad habits are bleeding over into more junior team members now, and (c) ultimately the maintainability issues cost us all more time in the long run.
    – manannan
    Aug 31 at 15:25










  • @manannan Thanks. Who sets and enforces deadlines then? And is there somebody to protect the team and code against them? I would not discount their answer, you may be actually talking to the wrong people about this problem.
    – Josef
    Aug 31 at 17:35
















  • Problematic as in has lots of bugs, or poorly designed/thought out? Do the tickets contain enough information and documentation?
    – Juha Untinen
    Aug 31 at 14:39











  • Have you listened to the defensive arguments? What did they told you?
    – Josef
    Aug 31 at 14:52










  • @JuhaUntinen - poorly thought out, overcomplicated stuff that violates separation of concerns, DRY, and the principle of least surprise. Inappropriate design patterns, inaccurate naming, and lack of attention to security issues. They're all just basic things that shouldn't need to be explicitly requested in the tickets.
    – manannan
    Aug 31 at 15:17










  • @Josef the only valid defensive argument was that stuff just needs to get done under time constraints. However I don't accept that because (a) the quality issues persist even when not under a tight deadline, (b) bad habits are bleeding over into more junior team members now, and (c) ultimately the maintainability issues cost us all more time in the long run.
    – manannan
    Aug 31 at 15:25










  • @manannan Thanks. Who sets and enforces deadlines then? And is there somebody to protect the team and code against them? I would not discount their answer, you may be actually talking to the wrong people about this problem.
    – Josef
    Aug 31 at 17:35















Problematic as in has lots of bugs, or poorly designed/thought out? Do the tickets contain enough information and documentation?
– Juha Untinen
Aug 31 at 14:39





Problematic as in has lots of bugs, or poorly designed/thought out? Do the tickets contain enough information and documentation?
– Juha Untinen
Aug 31 at 14:39













Have you listened to the defensive arguments? What did they told you?
– Josef
Aug 31 at 14:52




Have you listened to the defensive arguments? What did they told you?
– Josef
Aug 31 at 14:52












@JuhaUntinen - poorly thought out, overcomplicated stuff that violates separation of concerns, DRY, and the principle of least surprise. Inappropriate design patterns, inaccurate naming, and lack of attention to security issues. They're all just basic things that shouldn't need to be explicitly requested in the tickets.
– manannan
Aug 31 at 15:17




@JuhaUntinen - poorly thought out, overcomplicated stuff that violates separation of concerns, DRY, and the principle of least surprise. Inappropriate design patterns, inaccurate naming, and lack of attention to security issues. They're all just basic things that shouldn't need to be explicitly requested in the tickets.
– manannan
Aug 31 at 15:17












@Josef the only valid defensive argument was that stuff just needs to get done under time constraints. However I don't accept that because (a) the quality issues persist even when not under a tight deadline, (b) bad habits are bleeding over into more junior team members now, and (c) ultimately the maintainability issues cost us all more time in the long run.
– manannan
Aug 31 at 15:25




@Josef the only valid defensive argument was that stuff just needs to get done under time constraints. However I don't accept that because (a) the quality issues persist even when not under a tight deadline, (b) bad habits are bleeding over into more junior team members now, and (c) ultimately the maintainability issues cost us all more time in the long run.
– manannan
Aug 31 at 15:25












@manannan Thanks. Who sets and enforces deadlines then? And is there somebody to protect the team and code against them? I would not discount their answer, you may be actually talking to the wrong people about this problem.
– Josef
Aug 31 at 17:35




@manannan Thanks. Who sets and enforces deadlines then? And is there somebody to protect the team and code against them? I would not discount their answer, you may be actually talking to the wrong people about this problem.
– Josef
Aug 31 at 17:35










2 Answers
2






active

oldest

votes

















up vote
1
down vote



accepted










If time is the highest priority, then you're not going to get quality. It sounds like you have all the usual standards in place, just no time to actually enforce them.



You don't say if you have a formal change control process.



If someone raises a ticket for a new feature or a bug fix, the ticket needs to identify what needs to be done. Someone gets assigned to do it. But the updated code doesn't get committed to the main build until it's been passed by a change control board (a few more senior members of the project). They don't approve it without the evidence that it's passed static code analysis, peer review and testing. Only once the CCB are happy does the code get committed and the ticket closed.






share|improve this answer




















  • That's a good idea that I hadn't come across. That would be really helpful when someone is about to make changes that can't be reversed, that affect customers and impose limitations on future development.
    – manannan
    Sep 1 at 17:26

















up vote
11
down vote














I don't have the clout to go over their heads




You're the team lead, this gives you the clout.



If the problems are with another team, you should raise this with their team lead and discuss the issue of the code quality that's effecting everyone.



Have a meeting with them with a view to increasing quality across the board.



Trying out new processes probably won't work as you've already put coding quality/standard processes in place that clearly aren't working well enough. Adding another one won't improve quality, it'll just add more of a burden to everyone else.



Tackle this as a team of team leads.






share|improve this answer
















  • 1




    One of the other team leads is the worst offender though (we write code too). His stuff is objectively bad; at least 5 other people have commented on it. I always feel more comfortable using a process when trying to impose a consensus on someone.
    – manannan
    Aug 31 at 14:28






  • 4




    Then discuss it with the team leads that are producing decent quality code and work together.
    – Snow♦
    Aug 31 at 14:40

















2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
1
down vote



accepted










If time is the highest priority, then you're not going to get quality. It sounds like you have all the usual standards in place, just no time to actually enforce them.



You don't say if you have a formal change control process.



If someone raises a ticket for a new feature or a bug fix, the ticket needs to identify what needs to be done. Someone gets assigned to do it. But the updated code doesn't get committed to the main build until it's been passed by a change control board (a few more senior members of the project). They don't approve it without the evidence that it's passed static code analysis, peer review and testing. Only once the CCB are happy does the code get committed and the ticket closed.






share|improve this answer




















  • That's a good idea that I hadn't come across. That would be really helpful when someone is about to make changes that can't be reversed, that affect customers and impose limitations on future development.
    – manannan
    Sep 1 at 17:26














up vote
1
down vote



accepted










If time is the highest priority, then you're not going to get quality. It sounds like you have all the usual standards in place, just no time to actually enforce them.



You don't say if you have a formal change control process.



If someone raises a ticket for a new feature or a bug fix, the ticket needs to identify what needs to be done. Someone gets assigned to do it. But the updated code doesn't get committed to the main build until it's been passed by a change control board (a few more senior members of the project). They don't approve it without the evidence that it's passed static code analysis, peer review and testing. Only once the CCB are happy does the code get committed and the ticket closed.






share|improve this answer




















  • That's a good idea that I hadn't come across. That would be really helpful when someone is about to make changes that can't be reversed, that affect customers and impose limitations on future development.
    – manannan
    Sep 1 at 17:26












up vote
1
down vote



accepted







up vote
1
down vote



accepted






If time is the highest priority, then you're not going to get quality. It sounds like you have all the usual standards in place, just no time to actually enforce them.



You don't say if you have a formal change control process.



If someone raises a ticket for a new feature or a bug fix, the ticket needs to identify what needs to be done. Someone gets assigned to do it. But the updated code doesn't get committed to the main build until it's been passed by a change control board (a few more senior members of the project). They don't approve it without the evidence that it's passed static code analysis, peer review and testing. Only once the CCB are happy does the code get committed and the ticket closed.






share|improve this answer












If time is the highest priority, then you're not going to get quality. It sounds like you have all the usual standards in place, just no time to actually enforce them.



You don't say if you have a formal change control process.



If someone raises a ticket for a new feature or a bug fix, the ticket needs to identify what needs to be done. Someone gets assigned to do it. But the updated code doesn't get committed to the main build until it's been passed by a change control board (a few more senior members of the project). They don't approve it without the evidence that it's passed static code analysis, peer review and testing. Only once the CCB are happy does the code get committed and the ticket closed.







share|improve this answer












share|improve this answer



share|improve this answer










answered Aug 31 at 22:58









Simon B

2,5672716




2,5672716











  • That's a good idea that I hadn't come across. That would be really helpful when someone is about to make changes that can't be reversed, that affect customers and impose limitations on future development.
    – manannan
    Sep 1 at 17:26
















  • That's a good idea that I hadn't come across. That would be really helpful when someone is about to make changes that can't be reversed, that affect customers and impose limitations on future development.
    – manannan
    Sep 1 at 17:26















That's a good idea that I hadn't come across. That would be really helpful when someone is about to make changes that can't be reversed, that affect customers and impose limitations on future development.
– manannan
Sep 1 at 17:26




That's a good idea that I hadn't come across. That would be really helpful when someone is about to make changes that can't be reversed, that affect customers and impose limitations on future development.
– manannan
Sep 1 at 17:26












up vote
11
down vote














I don't have the clout to go over their heads




You're the team lead, this gives you the clout.



If the problems are with another team, you should raise this with their team lead and discuss the issue of the code quality that's effecting everyone.



Have a meeting with them with a view to increasing quality across the board.



Trying out new processes probably won't work as you've already put coding quality/standard processes in place that clearly aren't working well enough. Adding another one won't improve quality, it'll just add more of a burden to everyone else.



Tackle this as a team of team leads.






share|improve this answer
















  • 1




    One of the other team leads is the worst offender though (we write code too). His stuff is objectively bad; at least 5 other people have commented on it. I always feel more comfortable using a process when trying to impose a consensus on someone.
    – manannan
    Aug 31 at 14:28






  • 4




    Then discuss it with the team leads that are producing decent quality code and work together.
    – Snow♦
    Aug 31 at 14:40














up vote
11
down vote














I don't have the clout to go over their heads




You're the team lead, this gives you the clout.



If the problems are with another team, you should raise this with their team lead and discuss the issue of the code quality that's effecting everyone.



Have a meeting with them with a view to increasing quality across the board.



Trying out new processes probably won't work as you've already put coding quality/standard processes in place that clearly aren't working well enough. Adding another one won't improve quality, it'll just add more of a burden to everyone else.



Tackle this as a team of team leads.






share|improve this answer
















  • 1




    One of the other team leads is the worst offender though (we write code too). His stuff is objectively bad; at least 5 other people have commented on it. I always feel more comfortable using a process when trying to impose a consensus on someone.
    – manannan
    Aug 31 at 14:28






  • 4




    Then discuss it with the team leads that are producing decent quality code and work together.
    – Snow♦
    Aug 31 at 14:40












up vote
11
down vote










up vote
11
down vote










I don't have the clout to go over their heads




You're the team lead, this gives you the clout.



If the problems are with another team, you should raise this with their team lead and discuss the issue of the code quality that's effecting everyone.



Have a meeting with them with a view to increasing quality across the board.



Trying out new processes probably won't work as you've already put coding quality/standard processes in place that clearly aren't working well enough. Adding another one won't improve quality, it'll just add more of a burden to everyone else.



Tackle this as a team of team leads.






share|improve this answer













I don't have the clout to go over their heads




You're the team lead, this gives you the clout.



If the problems are with another team, you should raise this with their team lead and discuss the issue of the code quality that's effecting everyone.



Have a meeting with them with a view to increasing quality across the board.



Trying out new processes probably won't work as you've already put coding quality/standard processes in place that clearly aren't working well enough. Adding another one won't improve quality, it'll just add more of a burden to everyone else.



Tackle this as a team of team leads.







share|improve this answer












share|improve this answer



share|improve this answer










answered Aug 31 at 14:16









Snow♦

51.5k46170213




51.5k46170213







  • 1




    One of the other team leads is the worst offender though (we write code too). His stuff is objectively bad; at least 5 other people have commented on it. I always feel more comfortable using a process when trying to impose a consensus on someone.
    – manannan
    Aug 31 at 14:28






  • 4




    Then discuss it with the team leads that are producing decent quality code and work together.
    – Snow♦
    Aug 31 at 14:40












  • 1




    One of the other team leads is the worst offender though (we write code too). His stuff is objectively bad; at least 5 other people have commented on it. I always feel more comfortable using a process when trying to impose a consensus on someone.
    – manannan
    Aug 31 at 14:28






  • 4




    Then discuss it with the team leads that are producing decent quality code and work together.
    – Snow♦
    Aug 31 at 14:40







1




1




One of the other team leads is the worst offender though (we write code too). His stuff is objectively bad; at least 5 other people have commented on it. I always feel more comfortable using a process when trying to impose a consensus on someone.
– manannan
Aug 31 at 14:28




One of the other team leads is the worst offender though (we write code too). His stuff is objectively bad; at least 5 other people have commented on it. I always feel more comfortable using a process when trying to impose a consensus on someone.
– manannan
Aug 31 at 14:28




4




4




Then discuss it with the team leads that are producing decent quality code and work together.
– Snow♦
Aug 31 at 14:40




Then discuss it with the team leads that are producing decent quality code and work together.
– Snow♦
Aug 31 at 14:40


Comments

Popular posts from this blog

What does second last employer means? [closed]

List of Gilmore Girls characters

Confectionery