Professionalism: protecting code quality












0















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:




  1. Lacking documentation/formatting against our guidelines

  2. Lacking tests

  3. Architecture incompatible with what we were trying to achieve in the future

  4. Performance issues

  5. 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?









share







New contributor




soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    0















    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:




    1. Lacking documentation/formatting against our guidelines

    2. Lacking tests

    3. Architecture incompatible with what we were trying to achieve in the future

    4. Performance issues

    5. 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?









    share







    New contributor




    soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      0












      0








      0








      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:




      1. Lacking documentation/formatting against our guidelines

      2. Lacking tests

      3. Architecture incompatible with what we were trying to achieve in the future

      4. Performance issues

      5. 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?









      share







      New contributor




      soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      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:




      1. Lacking documentation/formatting against our guidelines

      2. Lacking tests

      3. Architecture incompatible with what we were trying to achieve in the future

      4. Performance issues

      5. 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





      share







      New contributor




      soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share







      New contributor




      soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share



      share






      New contributor




      soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 4 mins ago









      soft devsoft dev

      1




      1




      New contributor




      soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      soft dev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          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.










          draft saved

          draft discarded


















          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.










          draft saved

          draft discarded


















          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          flock() on closed filehandle LOCK_FILE at /usr/bin/apt-mirror

          Mangá

           ⁒  ․,‪⁊‑⁙ ⁖, ⁇‒※‌, †,⁖‗‌⁝    ‾‸⁘,‖⁔⁣,⁂‾
”‑,‥–,‬ ,⁀‹⁋‴⁑ ‒ ,‴⁋”‼ ⁨,‷⁔„ ‰′,‐‚ ‥‡‎“‷⁃⁨⁅⁣,⁔
⁇‘⁔⁡⁏⁌⁡‿‶‏⁨ ⁣⁕⁖⁨⁩⁥‽⁀  ‴‬⁜‟ ⁃‣‧⁕‮ …‍⁨‴ ⁩,⁚⁖‫ ,‵ ⁀,‮⁝‣‣ ⁑  ⁂– ․, ‾‽ ‏⁁“⁗‸ ‾… ‹‡⁌⁎‸‘ ‡⁏⁌‪ ‵⁛ ‎⁨ ―⁦⁤⁄⁕