Professionalism: protecting code quality
TL,DR: Questions under the text
I am a software developer at a R&D center. Due to my seniority, I am oftentimes asked to review time/scope critical changes to our code-base. Due to the hectic state of the project, it is not unusual that I am asked to review others' code the day or even hours before a major delivery.
I often review pull requests from a contractor, Joe. Joe gets paid for every feature he completes rather than a hourly rate. It is my impression that Joe tries to get as many features done as possible, oftentimes skimping on documentation/code quality in the process. In the past, I have had to do overtime to fix issues with Joe's code, because once it's approved and paid for, he doesn't feel and nobody makes him responsible for bug fixing. Our team has pointed out that the situation is non-ideal, but the current managerial decision is that this won't change.
I would frequently request changes in Joe's code because it doesn't meet our guidelines. Joe would usually approach me with a story about how he wouldn't get paid if his code wasn't accepted in time. For a while I would accept minor issues under the condition that Joe would fix them later, but that never happened. Eventually I stopped accepting incomplete submissions and have asked Joe to escalate the issue if he's unhappy with my verdict.
Generally, Joe's code would have the following issues, in ascending order of seriousness:
- Lacking documentation/formatting against our guidelines
- Lacking tests
- Architecture incompatible with what we were trying to achieve in the future
- Performance issues
- Flat out not working
Since Joe's features were often promised to the client in that particular week and there wouldn't be time for Joe to fix them, eventually other people have started approaching me to accept Joe's code, from Product Owner, through Project Management, my boss, to my boss' boss.
In the discussions my project management/my superiors usually ask me to find a way to accept Joe's code anyway. I would generally let 1 and 2 through at this point, but refuse to accept anything more serious, citing my responsibility for code quality and technical debt as engineer. To put it bluntly, accepting code like this would cost us more time down the road than it is worth.
In some situations my superiors have asked to accept the code anyway, even if the issues were egregious, citing features promised to the client and the upcoming delivery. At this point I usually respond by saying:
- Anyone, including non-technical employees can overrule my decision and merge the code.
- If they are my direct superior, they can send me an email ordering me to accept it and I will oblige.
I do this not necessarily as a CYA tactic, but rather believe that people think twice about the decisions they are making if they put them in writing. To this date, no one has decided to do any of the above, even if I have gotten some scoffs as a result.
Nevertheless, some co-workers have privately told me I wouldn't make it very far with this attitude, thus I wonder:
- As an engineer, code quality is my responsibility. To what degree should I fight for it?
- Is it appropriate for me to ask my superiors to put their decisions in writing?
- If code quality is suffering due to organizational issues (the way a contractor is compensated), is it appropriate for me to be "a judge" or raise the issue with my superiors or HR?
software-development germany
New contributor
add a comment |
TL,DR: Questions under the text
I am a software developer at a R&D center. Due to my seniority, I am oftentimes asked to review time/scope critical changes to our code-base. Due to the hectic state of the project, it is not unusual that I am asked to review others' code the day or even hours before a major delivery.
I often review pull requests from a contractor, Joe. Joe gets paid for every feature he completes rather than a hourly rate. It is my impression that Joe tries to get as many features done as possible, oftentimes skimping on documentation/code quality in the process. In the past, I have had to do overtime to fix issues with Joe's code, because once it's approved and paid for, he doesn't feel and nobody makes him responsible for bug fixing. Our team has pointed out that the situation is non-ideal, but the current managerial decision is that this won't change.
I would frequently request changes in Joe's code because it doesn't meet our guidelines. Joe would usually approach me with a story about how he wouldn't get paid if his code wasn't accepted in time. For a while I would accept minor issues under the condition that Joe would fix them later, but that never happened. Eventually I stopped accepting incomplete submissions and have asked Joe to escalate the issue if he's unhappy with my verdict.
Generally, Joe's code would have the following issues, in ascending order of seriousness:
- Lacking documentation/formatting against our guidelines
- Lacking tests
- Architecture incompatible with what we were trying to achieve in the future
- Performance issues
- Flat out not working
Since Joe's features were often promised to the client in that particular week and there wouldn't be time for Joe to fix them, eventually other people have started approaching me to accept Joe's code, from Product Owner, through Project Management, my boss, to my boss' boss.
In the discussions my project management/my superiors usually ask me to find a way to accept Joe's code anyway. I would generally let 1 and 2 through at this point, but refuse to accept anything more serious, citing my responsibility for code quality and technical debt as engineer. To put it bluntly, accepting code like this would cost us more time down the road than it is worth.
In some situations my superiors have asked to accept the code anyway, even if the issues were egregious, citing features promised to the client and the upcoming delivery. At this point I usually respond by saying:
- Anyone, including non-technical employees can overrule my decision and merge the code.
- If they are my direct superior, they can send me an email ordering me to accept it and I will oblige.
I do this not necessarily as a CYA tactic, but rather believe that people think twice about the decisions they are making if they put them in writing. To this date, no one has decided to do any of the above, even if I have gotten some scoffs as a result.
Nevertheless, some co-workers have privately told me I wouldn't make it very far with this attitude, thus I wonder:
- As an engineer, code quality is my responsibility. To what degree should I fight for it?
- Is it appropriate for me to ask my superiors to put their decisions in writing?
- If code quality is suffering due to organizational issues (the way a contractor is compensated), is it appropriate for me to be "a judge" or raise the issue with my superiors or HR?
software-development germany
New contributor
@Downvoters please let me know how I can improve the question
– soft dev
5 mins ago
Good question but a little too broad for this site format
– solarflare
5 mins ago
add a comment |
TL,DR: Questions under the text
I am a software developer at a R&D center. Due to my seniority, I am oftentimes asked to review time/scope critical changes to our code-base. Due to the hectic state of the project, it is not unusual that I am asked to review others' code the day or even hours before a major delivery.
I often review pull requests from a contractor, Joe. Joe gets paid for every feature he completes rather than a hourly rate. It is my impression that Joe tries to get as many features done as possible, oftentimes skimping on documentation/code quality in the process. In the past, I have had to do overtime to fix issues with Joe's code, because once it's approved and paid for, he doesn't feel and nobody makes him responsible for bug fixing. Our team has pointed out that the situation is non-ideal, but the current managerial decision is that this won't change.
I would frequently request changes in Joe's code because it doesn't meet our guidelines. Joe would usually approach me with a story about how he wouldn't get paid if his code wasn't accepted in time. For a while I would accept minor issues under the condition that Joe would fix them later, but that never happened. Eventually I stopped accepting incomplete submissions and have asked Joe to escalate the issue if he's unhappy with my verdict.
Generally, Joe's code would have the following issues, in ascending order of seriousness:
- Lacking documentation/formatting against our guidelines
- Lacking tests
- Architecture incompatible with what we were trying to achieve in the future
- Performance issues
- Flat out not working
Since Joe's features were often promised to the client in that particular week and there wouldn't be time for Joe to fix them, eventually other people have started approaching me to accept Joe's code, from Product Owner, through Project Management, my boss, to my boss' boss.
In the discussions my project management/my superiors usually ask me to find a way to accept Joe's code anyway. I would generally let 1 and 2 through at this point, but refuse to accept anything more serious, citing my responsibility for code quality and technical debt as engineer. To put it bluntly, accepting code like this would cost us more time down the road than it is worth.
In some situations my superiors have asked to accept the code anyway, even if the issues were egregious, citing features promised to the client and the upcoming delivery. At this point I usually respond by saying:
- Anyone, including non-technical employees can overrule my decision and merge the code.
- If they are my direct superior, they can send me an email ordering me to accept it and I will oblige.
I do this not necessarily as a CYA tactic, but rather believe that people think twice about the decisions they are making if they put them in writing. To this date, no one has decided to do any of the above, even if I have gotten some scoffs as a result.
Nevertheless, some co-workers have privately told me I wouldn't make it very far with this attitude, thus I wonder:
- As an engineer, code quality is my responsibility. To what degree should I fight for it?
- Is it appropriate for me to ask my superiors to put their decisions in writing?
- If code quality is suffering due to organizational issues (the way a contractor is compensated), is it appropriate for me to be "a judge" or raise the issue with my superiors or HR?
software-development germany
New contributor
TL,DR: Questions under the text
I am a software developer at a R&D center. Due to my seniority, I am oftentimes asked to review time/scope critical changes to our code-base. Due to the hectic state of the project, it is not unusual that I am asked to review others' code the day or even hours before a major delivery.
I often review pull requests from a contractor, Joe. Joe gets paid for every feature he completes rather than a hourly rate. It is my impression that Joe tries to get as many features done as possible, oftentimes skimping on documentation/code quality in the process. In the past, I have had to do overtime to fix issues with Joe's code, because once it's approved and paid for, he doesn't feel and nobody makes him responsible for bug fixing. Our team has pointed out that the situation is non-ideal, but the current managerial decision is that this won't change.
I would frequently request changes in Joe's code because it doesn't meet our guidelines. Joe would usually approach me with a story about how he wouldn't get paid if his code wasn't accepted in time. For a while I would accept minor issues under the condition that Joe would fix them later, but that never happened. Eventually I stopped accepting incomplete submissions and have asked Joe to escalate the issue if he's unhappy with my verdict.
Generally, Joe's code would have the following issues, in ascending order of seriousness:
- Lacking documentation/formatting against our guidelines
- Lacking tests
- Architecture incompatible with what we were trying to achieve in the future
- Performance issues
- Flat out not working
Since Joe's features were often promised to the client in that particular week and there wouldn't be time for Joe to fix them, eventually other people have started approaching me to accept Joe's code, from Product Owner, through Project Management, my boss, to my boss' boss.
In the discussions my project management/my superiors usually ask me to find a way to accept Joe's code anyway. I would generally let 1 and 2 through at this point, but refuse to accept anything more serious, citing my responsibility for code quality and technical debt as engineer. To put it bluntly, accepting code like this would cost us more time down the road than it is worth.
In some situations my superiors have asked to accept the code anyway, even if the issues were egregious, citing features promised to the client and the upcoming delivery. At this point I usually respond by saying:
- Anyone, including non-technical employees can overrule my decision and merge the code.
- If they are my direct superior, they can send me an email ordering me to accept it and I will oblige.
I do this not necessarily as a CYA tactic, but rather believe that people think twice about the decisions they are making if they put them in writing. To this date, no one has decided to do any of the above, even if I have gotten some scoffs as a result.
Nevertheless, some co-workers have privately told me I wouldn't make it very far with this attitude, thus I wonder:
- As an engineer, code quality is my responsibility. To what degree should I fight for it?
- Is it appropriate for me to ask my superiors to put their decisions in writing?
- If code quality is suffering due to organizational issues (the way a contractor is compensated), is it appropriate for me to be "a judge" or raise the issue with my superiors or HR?
software-development germany
software-development germany
New contributor
New contributor
New contributor
asked 14 mins ago
soft devsoft dev
1
1
New contributor
New contributor
@Downvoters please let me know how I can improve the question
– soft dev
5 mins ago
Good question but a little too broad for this site format
– solarflare
5 mins ago
add a comment |
@Downvoters please let me know how I can improve the question
– soft dev
5 mins ago
Good question but a little too broad for this site format
– solarflare
5 mins ago
@Downvoters please let me know how I can improve the question
– soft dev
5 mins ago
@Downvoters please let me know how I can improve the question
– soft dev
5 mins ago
Good question but a little too broad for this site format
– solarflare
5 mins ago
Good question but a little too broad for this site format
– solarflare
5 mins ago
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "423"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
soft dev is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fworkplace.stackexchange.com%2fquestions%2f132435%2fprofessionalism-protecting-code-quality%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
soft dev is a new contributor. Be nice, and check out our Code of Conduct.
soft dev is a new contributor. Be nice, and check out our Code of Conduct.
soft dev is a new contributor. Be nice, and check out our Code of Conduct.
soft dev is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to The Workplace Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fworkplace.stackexchange.com%2fquestions%2f132435%2fprofessionalism-protecting-code-quality%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
@Downvoters please let me know how I can improve the question
– soft dev
5 mins ago
Good question but a little too broad for this site format
– solarflare
5 mins ago