Is it unavoidable taking shortcuts in software development sometimes?How, as an intern or summer student, do you deal with a situation where you are denied opportunities because of your temporary status?Returning a favor for the bossHow to cope with a “UX Expert” who has no experience?How to address a manager frequently losing their temperSudden shift in manager's behaviourNo feedback and not included in any project meetingsSupervisor putting me to impossible deadline, ignoring feasibility warnings, and failing to deal with the fallout

What makes an ending "happy"?

How invisible hand adjusts stock prices if company is listed on multiple exchanges, under multiple currencies, and one of the currencies plunges?

How can I return only the number of paired values in array?

Can you mark a new target with the Hunter's Mark spell if the original target shifts to a different plane?

Capacitors with same voltage, same capacitance, same temp, different diameter?

After a few interviews, What should I do after told to wait?

More than three domains hosted on the same IP address

Distance faces never sharp/clear. Too picky?

How would two worlds first establish an exchange rate between their currencies

Lost & Found Mobile Telepone

Is mountain bike good for long distances?

How strong is aircraft-grade spruce?

Leaving the USA for 10 yrs when you have asylum

Are there any space probes or landers which regained communication after being lost?

Features seen on the Space Shuttle's solid booster; what does "LOADED" mean exactly?

Does the 2019 UA artificer need to prepare the Lesser Restoration spell to cast it with their Alchemical Mastery feature?

How there are 3 possible tautomers of 2,2,4-trimethylheptane-3,5-dione?

Bacteria vats to generate edible biomass, require intermediary species?

Stack class in Java8

When calculating averages, why can we treat exploding die as if they're independent?

Are professors obligated to accept supervisory role? If not, how does it work?

2 load centers under 1 meter: do you need bonding and main breakers at both?

Why would an AC motor heavily shake when driven with certain frequencies?

How to set any file manager in Linux to show the duration like the Length feature in Windows Explorer?



Is it unavoidable taking shortcuts in software development sometimes?


How, as an intern or summer student, do you deal with a situation where you are denied opportunities because of your temporary status?Returning a favor for the bossHow to cope with a “UX Expert” who has no experience?How to address a manager frequently losing their temperSudden shift in manager's behaviourNo feedback and not included in any project meetingsSupervisor putting me to impossible deadline, ignoring feasibility warnings, and failing to deal with the fallout






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








2















In my experience as software developer I found work situations where you have to deliver a project in a very short time and with a very small number of resources (included team members). Your boss doesn't really care and understand importance of testing (especially automated) and other quality aspects (or he may understand the importance of those, but may be he is being pushed by his manager to ignore it). Apart from "quitting the job", which actions would you take? shortcuts and which ones? other?










share|improve this question









New contributor



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





















  • The boss may understand the importance of testing, but may be he is being pushed by his manager to ignore it...

    – Solar Mike
    8 hours ago











  • true, that is a possible situation. Let me edit the question.

    – Randomize
    8 hours ago






  • 2





    "Apart from "quitting the job", which actions would you take?" - I would learn that in the real world it's important to determine what "good enough" is, and work towards that.

    – Joe Strazzere
    5 hours ago






  • 3





    Don't think of them as shortcuts, think of them as compromises. The best action you can take is understanding that architectural purity is often sacrificed at the altar of meeting the project's requirements.

    – Blrfl
    2 hours ago











  • Well, it all adds up as technical debt right? Sending emails and leaving a paper trail how this might adversly affect the product, or future releases is very important. This way when this comes to bite the project in the ass later, you can forward all the emails you saved to justify the future issues.

    – Issel
    41 mins ago

















2















In my experience as software developer I found work situations where you have to deliver a project in a very short time and with a very small number of resources (included team members). Your boss doesn't really care and understand importance of testing (especially automated) and other quality aspects (or he may understand the importance of those, but may be he is being pushed by his manager to ignore it). Apart from "quitting the job", which actions would you take? shortcuts and which ones? other?










share|improve this question









New contributor



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





















  • The boss may understand the importance of testing, but may be he is being pushed by his manager to ignore it...

    – Solar Mike
    8 hours ago











  • true, that is a possible situation. Let me edit the question.

    – Randomize
    8 hours ago






  • 2





    "Apart from "quitting the job", which actions would you take?" - I would learn that in the real world it's important to determine what "good enough" is, and work towards that.

    – Joe Strazzere
    5 hours ago






  • 3





    Don't think of them as shortcuts, think of them as compromises. The best action you can take is understanding that architectural purity is often sacrificed at the altar of meeting the project's requirements.

    – Blrfl
    2 hours ago











  • Well, it all adds up as technical debt right? Sending emails and leaving a paper trail how this might adversly affect the product, or future releases is very important. This way when this comes to bite the project in the ass later, you can forward all the emails you saved to justify the future issues.

    – Issel
    41 mins ago













2












2








2








In my experience as software developer I found work situations where you have to deliver a project in a very short time and with a very small number of resources (included team members). Your boss doesn't really care and understand importance of testing (especially automated) and other quality aspects (or he may understand the importance of those, but may be he is being pushed by his manager to ignore it). Apart from "quitting the job", which actions would you take? shortcuts and which ones? other?










share|improve this question









New contributor



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











In my experience as software developer I found work situations where you have to deliver a project in a very short time and with a very small number of resources (included team members). Your boss doesn't really care and understand importance of testing (especially automated) and other quality aspects (or he may understand the importance of those, but may be he is being pushed by his manager to ignore it). Apart from "quitting the job", which actions would you take? shortcuts and which ones? other?







management software-development






share|improve this question









New contributor



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










share|improve this question









New contributor



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








share|improve this question




share|improve this question








edited 7 hours ago







Randomize













New contributor



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








asked 8 hours ago









RandomizeRandomize

1174 bronze badges




1174 bronze badges




New contributor



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




New contributor




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

















  • The boss may understand the importance of testing, but may be he is being pushed by his manager to ignore it...

    – Solar Mike
    8 hours ago











  • true, that is a possible situation. Let me edit the question.

    – Randomize
    8 hours ago






  • 2





    "Apart from "quitting the job", which actions would you take?" - I would learn that in the real world it's important to determine what "good enough" is, and work towards that.

    – Joe Strazzere
    5 hours ago






  • 3





    Don't think of them as shortcuts, think of them as compromises. The best action you can take is understanding that architectural purity is often sacrificed at the altar of meeting the project's requirements.

    – Blrfl
    2 hours ago











  • Well, it all adds up as technical debt right? Sending emails and leaving a paper trail how this might adversly affect the product, or future releases is very important. This way when this comes to bite the project in the ass later, you can forward all the emails you saved to justify the future issues.

    – Issel
    41 mins ago

















  • The boss may understand the importance of testing, but may be he is being pushed by his manager to ignore it...

    – Solar Mike
    8 hours ago











  • true, that is a possible situation. Let me edit the question.

    – Randomize
    8 hours ago






  • 2





    "Apart from "quitting the job", which actions would you take?" - I would learn that in the real world it's important to determine what "good enough" is, and work towards that.

    – Joe Strazzere
    5 hours ago






  • 3





    Don't think of them as shortcuts, think of them as compromises. The best action you can take is understanding that architectural purity is often sacrificed at the altar of meeting the project's requirements.

    – Blrfl
    2 hours ago











  • Well, it all adds up as technical debt right? Sending emails and leaving a paper trail how this might adversly affect the product, or future releases is very important. This way when this comes to bite the project in the ass later, you can forward all the emails you saved to justify the future issues.

    – Issel
    41 mins ago
















The boss may understand the importance of testing, but may be he is being pushed by his manager to ignore it...

– Solar Mike
8 hours ago





The boss may understand the importance of testing, but may be he is being pushed by his manager to ignore it...

– Solar Mike
8 hours ago













true, that is a possible situation. Let me edit the question.

– Randomize
8 hours ago





true, that is a possible situation. Let me edit the question.

– Randomize
8 hours ago




2




2





"Apart from "quitting the job", which actions would you take?" - I would learn that in the real world it's important to determine what "good enough" is, and work towards that.

– Joe Strazzere
5 hours ago





"Apart from "quitting the job", which actions would you take?" - I would learn that in the real world it's important to determine what "good enough" is, and work towards that.

– Joe Strazzere
5 hours ago




3




3





Don't think of them as shortcuts, think of them as compromises. The best action you can take is understanding that architectural purity is often sacrificed at the altar of meeting the project's requirements.

– Blrfl
2 hours ago





Don't think of them as shortcuts, think of them as compromises. The best action you can take is understanding that architectural purity is often sacrificed at the altar of meeting the project's requirements.

– Blrfl
2 hours ago













Well, it all adds up as technical debt right? Sending emails and leaving a paper trail how this might adversly affect the product, or future releases is very important. This way when this comes to bite the project in the ass later, you can forward all the emails you saved to justify the future issues.

– Issel
41 mins ago





Well, it all adds up as technical debt right? Sending emails and leaving a paper trail how this might adversly affect the product, or future releases is very important. This way when this comes to bite the project in the ass later, you can forward all the emails you saved to justify the future issues.

– Issel
41 mins ago










4 Answers
4






active

oldest

votes


















17
















Yes, the real world is a lot different to what you are taught at university.



When you work for a business, the job is to make a profit, not deliver software according to an idealised software development process. A lot of the time these things overlap, but not always.



It is perfectly legitimate to "cut corners" from time to time.



While you may lament that you boss doesn't understand the importance of software testing, he may lament that you are unaware of the business pressures that impact the business that mean things need to be shipped without automated testing. I don't think it's fair to categorize your boss as ignoring the importance of testing, he obviously just assigns it a different degree of importance to you.



Your role in this situation is to highlight the risks associated with not having automated testing to your manager, and allow them to make a judgement call with all information.



(Of course, this answer will get lots of down-votes, because the mere suggestion that software quality isn't the only factor that is important to a business offends the sensibilities of a lot of people.)






share|improve this answer




















  • 1





    yes, in pragmatic terms cutting corners especially with deadlines is necessary from a business perspective.

    – Kilisi
    8 hours ago







  • 1





    To add, testing != automated testing. If extensive refactoring of an existing code base would be needed to automate tests, your boss may (maybe reasonably) prefer a different approach.

    – Joe Stevens
    6 hours ago






  • 2





    "Cutting Corners" is a pragmatic approach, but will result in technical debt and added costs as illustrated by this excellent Steve McConnell article - stevemcconnell.com/articles/upstream-decisions-downstream-costs. The salient point here is the "sails diagram" about halfway down the page which I have frequently used to educate senior management.

    – Justin
    6 hours ago











  • @Justin that comment with the diagram would make a good answer...

    – Solar Mike
    5 hours ago






  • 1





    @Justin I think you are missing my point in that sometimes incurring technical debt is favourable to delays or reduction in scope.

    – Gregory Currie
    4 hours ago


















6
















Software development is about managing risk in unknown or uncertain environments while frequently doing novel work. Making tradeoffs about time, scope, and quality happen all the time. The important thing to do is to help stakeholders understand the impact of their decisions on the project. To me, responses of "quit the job" or "blow the whistle" would be reserved for cases where the decisions made for the project would have severe consequences for life and safety, privacy or confidentiality, security, or some other 'critical factor' (which would vary depending on what you are building).



Unfortunately, there are no best practices or algorithms for making these decisions. Learning comes with time and experience. You can study the experiences of others, but the best experiences are yours and working through these trade-offs with your colleagues to understand the rationale for the decision making process. Decisions like this are highly context-sensitive.






share|improve this answer
































    3
















    Yes, tech debt is a perfectly valid desicion in many cases; just like taking out real debt is a valid business decision in many cases to advance the business goals. (We'll make $$$ if we had $ capital to invest in the business, so getting a loan for $ and paying $$ back still puts us ahead in the long run)



    But in my opinion skipping automated tests is never a good loan to take. The time saved is often used up, not in years or months, but weeks. (And it gets exponentially harder to pay down) Unless the due date is today, don't skip tests, it won't be worth it.



    This is one reason to follow TDD IMHO. Because we are then never in a situation where we can say a feature is "done" but "still needs to be tested". Its just too tempting for a non technical manager to lop off the tests and call it done. They now only have the much better options of cutting scope, rescheduling delivery, or when really necessary using other types of tech debt (abusing state management, skipping robust architectures, etc.)






    share|improve this answer
































      1
















      What actions to take: The first is to explain to your manager what cost the shortcut is likely to make to the company. Worst case the shortcut means endangering and possibly killing people. Most harmless case is that you fix the problem next week and no harm is done. Your manager needs to know what it is to make an educated decision.



      The next action is to take steps that "fix" the shortcut if needed. Sometimes it's not needed. Sometimes you write software for a single use, and it either works or it doesn't, and you can see whether it worked. In that case, if the software worked, then it doesn't matter what shortcuts you took.



      Sometimes shortcuts are justified. Say you are the only developer, and software must be ready at date X. If you are ready at date X, the company makes a lot of money, enough to hire two more developers. If you are not ready at date X, the company makes no money and you lose your job. Clearly you take the shortcut. If everything works fine, the two extra developers can more than clean up all the mess that was created to be fast.



      What is good is if you can educate your manager that if your software is in a good state, then you can take shortcuts sometimes. You may be able to do a job that should take four weeks in one week (but now the software is all messed up). But you can do that only once, then you need to spend three weeks to clean up. If you don't clean up, then the next four weeks worth of work either takes seven weeks including cleanup, or four weeks leaving even more mess, and after that you are in trouble.






      share|improve this answer



























        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/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
        allowUrls: true
        ,
        noCode: true, onDemand: false,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        );



        );







        Randomize 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%2f143651%2fis-it-unavoidable-taking-shortcuts-in-software-development-sometimes%23new-answer', 'question_page');

        );

        Post as a guest















        Required, but never shown




















        StackExchange.ready(function ()
        $("#show-editor-button input, #show-editor-button button").click(function ()
        var showEditor = function ()
        $("#show-editor-button").addClass("d-none");
        $("#post-form").removeClass("d-none");
        StackExchange.editor.finallyInit();
        ;

        var useFancy = $(this).data('confirm-use-fancy');
        if (useFancy == 'True')
        var popupTitle = $(this).data('confirm-fancy-title');
        var popupBody = $(this).data('confirm-fancy-body');
        var popupAccept = $(this).data('confirm-fancy-accept-button');

        $(this).loadPopup(
        url: '/post/self-answer-popup',
        loaded: function (popup)
        var pTitle = $(popup).find('h2');
        var pBody = $(popup).find('.popup-body');
        var pSubmit = $(popup).find('.popup-submit');

        pTitle.text(popupTitle);
        pBody.html(popupBody);
        pSubmit.val(popupAccept).click(showEditor);

        )
        else
        var confirmText = $(this).data('confirm-text');
        if (confirmText ? confirm(confirmText) : true)
        showEditor();


        );
        );






        4 Answers
        4






        active

        oldest

        votes








        4 Answers
        4






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        17
















        Yes, the real world is a lot different to what you are taught at university.



        When you work for a business, the job is to make a profit, not deliver software according to an idealised software development process. A lot of the time these things overlap, but not always.



        It is perfectly legitimate to "cut corners" from time to time.



        While you may lament that you boss doesn't understand the importance of software testing, he may lament that you are unaware of the business pressures that impact the business that mean things need to be shipped without automated testing. I don't think it's fair to categorize your boss as ignoring the importance of testing, he obviously just assigns it a different degree of importance to you.



        Your role in this situation is to highlight the risks associated with not having automated testing to your manager, and allow them to make a judgement call with all information.



        (Of course, this answer will get lots of down-votes, because the mere suggestion that software quality isn't the only factor that is important to a business offends the sensibilities of a lot of people.)






        share|improve this answer




















        • 1





          yes, in pragmatic terms cutting corners especially with deadlines is necessary from a business perspective.

          – Kilisi
          8 hours ago







        • 1





          To add, testing != automated testing. If extensive refactoring of an existing code base would be needed to automate tests, your boss may (maybe reasonably) prefer a different approach.

          – Joe Stevens
          6 hours ago






        • 2





          "Cutting Corners" is a pragmatic approach, but will result in technical debt and added costs as illustrated by this excellent Steve McConnell article - stevemcconnell.com/articles/upstream-decisions-downstream-costs. The salient point here is the "sails diagram" about halfway down the page which I have frequently used to educate senior management.

          – Justin
          6 hours ago











        • @Justin that comment with the diagram would make a good answer...

          – Solar Mike
          5 hours ago






        • 1





          @Justin I think you are missing my point in that sometimes incurring technical debt is favourable to delays or reduction in scope.

          – Gregory Currie
          4 hours ago















        17
















        Yes, the real world is a lot different to what you are taught at university.



        When you work for a business, the job is to make a profit, not deliver software according to an idealised software development process. A lot of the time these things overlap, but not always.



        It is perfectly legitimate to "cut corners" from time to time.



        While you may lament that you boss doesn't understand the importance of software testing, he may lament that you are unaware of the business pressures that impact the business that mean things need to be shipped without automated testing. I don't think it's fair to categorize your boss as ignoring the importance of testing, he obviously just assigns it a different degree of importance to you.



        Your role in this situation is to highlight the risks associated with not having automated testing to your manager, and allow them to make a judgement call with all information.



        (Of course, this answer will get lots of down-votes, because the mere suggestion that software quality isn't the only factor that is important to a business offends the sensibilities of a lot of people.)






        share|improve this answer




















        • 1





          yes, in pragmatic terms cutting corners especially with deadlines is necessary from a business perspective.

          – Kilisi
          8 hours ago







        • 1





          To add, testing != automated testing. If extensive refactoring of an existing code base would be needed to automate tests, your boss may (maybe reasonably) prefer a different approach.

          – Joe Stevens
          6 hours ago






        • 2





          "Cutting Corners" is a pragmatic approach, but will result in technical debt and added costs as illustrated by this excellent Steve McConnell article - stevemcconnell.com/articles/upstream-decisions-downstream-costs. The salient point here is the "sails diagram" about halfway down the page which I have frequently used to educate senior management.

          – Justin
          6 hours ago











        • @Justin that comment with the diagram would make a good answer...

          – Solar Mike
          5 hours ago






        • 1





          @Justin I think you are missing my point in that sometimes incurring technical debt is favourable to delays or reduction in scope.

          – Gregory Currie
          4 hours ago













        17














        17










        17









        Yes, the real world is a lot different to what you are taught at university.



        When you work for a business, the job is to make a profit, not deliver software according to an idealised software development process. A lot of the time these things overlap, but not always.



        It is perfectly legitimate to "cut corners" from time to time.



        While you may lament that you boss doesn't understand the importance of software testing, he may lament that you are unaware of the business pressures that impact the business that mean things need to be shipped without automated testing. I don't think it's fair to categorize your boss as ignoring the importance of testing, he obviously just assigns it a different degree of importance to you.



        Your role in this situation is to highlight the risks associated with not having automated testing to your manager, and allow them to make a judgement call with all information.



        (Of course, this answer will get lots of down-votes, because the mere suggestion that software quality isn't the only factor that is important to a business offends the sensibilities of a lot of people.)






        share|improve this answer













        Yes, the real world is a lot different to what you are taught at university.



        When you work for a business, the job is to make a profit, not deliver software according to an idealised software development process. A lot of the time these things overlap, but not always.



        It is perfectly legitimate to "cut corners" from time to time.



        While you may lament that you boss doesn't understand the importance of software testing, he may lament that you are unaware of the business pressures that impact the business that mean things need to be shipped without automated testing. I don't think it's fair to categorize your boss as ignoring the importance of testing, he obviously just assigns it a different degree of importance to you.



        Your role in this situation is to highlight the risks associated with not having automated testing to your manager, and allow them to make a judgement call with all information.



        (Of course, this answer will get lots of down-votes, because the mere suggestion that software quality isn't the only factor that is important to a business offends the sensibilities of a lot of people.)







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 8 hours ago









        Gregory CurrieGregory Currie

        15.4k11 gold badges59 silver badges78 bronze badges




        15.4k11 gold badges59 silver badges78 bronze badges










        • 1





          yes, in pragmatic terms cutting corners especially with deadlines is necessary from a business perspective.

          – Kilisi
          8 hours ago







        • 1





          To add, testing != automated testing. If extensive refactoring of an existing code base would be needed to automate tests, your boss may (maybe reasonably) prefer a different approach.

          – Joe Stevens
          6 hours ago






        • 2





          "Cutting Corners" is a pragmatic approach, but will result in technical debt and added costs as illustrated by this excellent Steve McConnell article - stevemcconnell.com/articles/upstream-decisions-downstream-costs. The salient point here is the "sails diagram" about halfway down the page which I have frequently used to educate senior management.

          – Justin
          6 hours ago











        • @Justin that comment with the diagram would make a good answer...

          – Solar Mike
          5 hours ago






        • 1





          @Justin I think you are missing my point in that sometimes incurring technical debt is favourable to delays or reduction in scope.

          – Gregory Currie
          4 hours ago












        • 1





          yes, in pragmatic terms cutting corners especially with deadlines is necessary from a business perspective.

          – Kilisi
          8 hours ago







        • 1





          To add, testing != automated testing. If extensive refactoring of an existing code base would be needed to automate tests, your boss may (maybe reasonably) prefer a different approach.

          – Joe Stevens
          6 hours ago






        • 2





          "Cutting Corners" is a pragmatic approach, but will result in technical debt and added costs as illustrated by this excellent Steve McConnell article - stevemcconnell.com/articles/upstream-decisions-downstream-costs. The salient point here is the "sails diagram" about halfway down the page which I have frequently used to educate senior management.

          – Justin
          6 hours ago











        • @Justin that comment with the diagram would make a good answer...

          – Solar Mike
          5 hours ago






        • 1





          @Justin I think you are missing my point in that sometimes incurring technical debt is favourable to delays or reduction in scope.

          – Gregory Currie
          4 hours ago







        1




        1





        yes, in pragmatic terms cutting corners especially with deadlines is necessary from a business perspective.

        – Kilisi
        8 hours ago






        yes, in pragmatic terms cutting corners especially with deadlines is necessary from a business perspective.

        – Kilisi
        8 hours ago





        1




        1





        To add, testing != automated testing. If extensive refactoring of an existing code base would be needed to automate tests, your boss may (maybe reasonably) prefer a different approach.

        – Joe Stevens
        6 hours ago





        To add, testing != automated testing. If extensive refactoring of an existing code base would be needed to automate tests, your boss may (maybe reasonably) prefer a different approach.

        – Joe Stevens
        6 hours ago




        2




        2





        "Cutting Corners" is a pragmatic approach, but will result in technical debt and added costs as illustrated by this excellent Steve McConnell article - stevemcconnell.com/articles/upstream-decisions-downstream-costs. The salient point here is the "sails diagram" about halfway down the page which I have frequently used to educate senior management.

        – Justin
        6 hours ago





        "Cutting Corners" is a pragmatic approach, but will result in technical debt and added costs as illustrated by this excellent Steve McConnell article - stevemcconnell.com/articles/upstream-decisions-downstream-costs. The salient point here is the "sails diagram" about halfway down the page which I have frequently used to educate senior management.

        – Justin
        6 hours ago













        @Justin that comment with the diagram would make a good answer...

        – Solar Mike
        5 hours ago





        @Justin that comment with the diagram would make a good answer...

        – Solar Mike
        5 hours ago




        1




        1





        @Justin I think you are missing my point in that sometimes incurring technical debt is favourable to delays or reduction in scope.

        – Gregory Currie
        4 hours ago





        @Justin I think you are missing my point in that sometimes incurring technical debt is favourable to delays or reduction in scope.

        – Gregory Currie
        4 hours ago













        6
















        Software development is about managing risk in unknown or uncertain environments while frequently doing novel work. Making tradeoffs about time, scope, and quality happen all the time. The important thing to do is to help stakeholders understand the impact of their decisions on the project. To me, responses of "quit the job" or "blow the whistle" would be reserved for cases where the decisions made for the project would have severe consequences for life and safety, privacy or confidentiality, security, or some other 'critical factor' (which would vary depending on what you are building).



        Unfortunately, there are no best practices or algorithms for making these decisions. Learning comes with time and experience. You can study the experiences of others, but the best experiences are yours and working through these trade-offs with your colleagues to understand the rationale for the decision making process. Decisions like this are highly context-sensitive.






        share|improve this answer





























          6
















          Software development is about managing risk in unknown or uncertain environments while frequently doing novel work. Making tradeoffs about time, scope, and quality happen all the time. The important thing to do is to help stakeholders understand the impact of their decisions on the project. To me, responses of "quit the job" or "blow the whistle" would be reserved for cases where the decisions made for the project would have severe consequences for life and safety, privacy or confidentiality, security, or some other 'critical factor' (which would vary depending on what you are building).



          Unfortunately, there are no best practices or algorithms for making these decisions. Learning comes with time and experience. You can study the experiences of others, but the best experiences are yours and working through these trade-offs with your colleagues to understand the rationale for the decision making process. Decisions like this are highly context-sensitive.






          share|improve this answer



























            6














            6










            6









            Software development is about managing risk in unknown or uncertain environments while frequently doing novel work. Making tradeoffs about time, scope, and quality happen all the time. The important thing to do is to help stakeholders understand the impact of their decisions on the project. To me, responses of "quit the job" or "blow the whistle" would be reserved for cases where the decisions made for the project would have severe consequences for life and safety, privacy or confidentiality, security, or some other 'critical factor' (which would vary depending on what you are building).



            Unfortunately, there are no best practices or algorithms for making these decisions. Learning comes with time and experience. You can study the experiences of others, but the best experiences are yours and working through these trade-offs with your colleagues to understand the rationale for the decision making process. Decisions like this are highly context-sensitive.






            share|improve this answer













            Software development is about managing risk in unknown or uncertain environments while frequently doing novel work. Making tradeoffs about time, scope, and quality happen all the time. The important thing to do is to help stakeholders understand the impact of their decisions on the project. To me, responses of "quit the job" or "blow the whistle" would be reserved for cases where the decisions made for the project would have severe consequences for life and safety, privacy or confidentiality, security, or some other 'critical factor' (which would vary depending on what you are building).



            Unfortunately, there are no best practices or algorithms for making these decisions. Learning comes with time and experience. You can study the experiences of others, but the best experiences are yours and working through these trade-offs with your colleagues to understand the rationale for the decision making process. Decisions like this are highly context-sensitive.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 6 hours ago









            Thomas OwensThomas Owens

            14.7k5 gold badges57 silver badges76 bronze badges




            14.7k5 gold badges57 silver badges76 bronze badges
























                3
















                Yes, tech debt is a perfectly valid desicion in many cases; just like taking out real debt is a valid business decision in many cases to advance the business goals. (We'll make $$$ if we had $ capital to invest in the business, so getting a loan for $ and paying $$ back still puts us ahead in the long run)



                But in my opinion skipping automated tests is never a good loan to take. The time saved is often used up, not in years or months, but weeks. (And it gets exponentially harder to pay down) Unless the due date is today, don't skip tests, it won't be worth it.



                This is one reason to follow TDD IMHO. Because we are then never in a situation where we can say a feature is "done" but "still needs to be tested". Its just too tempting for a non technical manager to lop off the tests and call it done. They now only have the much better options of cutting scope, rescheduling delivery, or when really necessary using other types of tech debt (abusing state management, skipping robust architectures, etc.)






                share|improve this answer





























                  3
















                  Yes, tech debt is a perfectly valid desicion in many cases; just like taking out real debt is a valid business decision in many cases to advance the business goals. (We'll make $$$ if we had $ capital to invest in the business, so getting a loan for $ and paying $$ back still puts us ahead in the long run)



                  But in my opinion skipping automated tests is never a good loan to take. The time saved is often used up, not in years or months, but weeks. (And it gets exponentially harder to pay down) Unless the due date is today, don't skip tests, it won't be worth it.



                  This is one reason to follow TDD IMHO. Because we are then never in a situation where we can say a feature is "done" but "still needs to be tested". Its just too tempting for a non technical manager to lop off the tests and call it done. They now only have the much better options of cutting scope, rescheduling delivery, or when really necessary using other types of tech debt (abusing state management, skipping robust architectures, etc.)






                  share|improve this answer



























                    3














                    3










                    3









                    Yes, tech debt is a perfectly valid desicion in many cases; just like taking out real debt is a valid business decision in many cases to advance the business goals. (We'll make $$$ if we had $ capital to invest in the business, so getting a loan for $ and paying $$ back still puts us ahead in the long run)



                    But in my opinion skipping automated tests is never a good loan to take. The time saved is often used up, not in years or months, but weeks. (And it gets exponentially harder to pay down) Unless the due date is today, don't skip tests, it won't be worth it.



                    This is one reason to follow TDD IMHO. Because we are then never in a situation where we can say a feature is "done" but "still needs to be tested". Its just too tempting for a non technical manager to lop off the tests and call it done. They now only have the much better options of cutting scope, rescheduling delivery, or when really necessary using other types of tech debt (abusing state management, skipping robust architectures, etc.)






                    share|improve this answer













                    Yes, tech debt is a perfectly valid desicion in many cases; just like taking out real debt is a valid business decision in many cases to advance the business goals. (We'll make $$$ if we had $ capital to invest in the business, so getting a loan for $ and paying $$ back still puts us ahead in the long run)



                    But in my opinion skipping automated tests is never a good loan to take. The time saved is often used up, not in years or months, but weeks. (And it gets exponentially harder to pay down) Unless the due date is today, don't skip tests, it won't be worth it.



                    This is one reason to follow TDD IMHO. Because we are then never in a situation where we can say a feature is "done" but "still needs to be tested". Its just too tempting for a non technical manager to lop off the tests and call it done. They now only have the much better options of cutting scope, rescheduling delivery, or when really necessary using other types of tech debt (abusing state management, skipping robust architectures, etc.)







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 4 hours ago









                    KallmanationKallmanation

                    1,3902 silver badges8 bronze badges




                    1,3902 silver badges8 bronze badges
























                        1
















                        What actions to take: The first is to explain to your manager what cost the shortcut is likely to make to the company. Worst case the shortcut means endangering and possibly killing people. Most harmless case is that you fix the problem next week and no harm is done. Your manager needs to know what it is to make an educated decision.



                        The next action is to take steps that "fix" the shortcut if needed. Sometimes it's not needed. Sometimes you write software for a single use, and it either works or it doesn't, and you can see whether it worked. In that case, if the software worked, then it doesn't matter what shortcuts you took.



                        Sometimes shortcuts are justified. Say you are the only developer, and software must be ready at date X. If you are ready at date X, the company makes a lot of money, enough to hire two more developers. If you are not ready at date X, the company makes no money and you lose your job. Clearly you take the shortcut. If everything works fine, the two extra developers can more than clean up all the mess that was created to be fast.



                        What is good is if you can educate your manager that if your software is in a good state, then you can take shortcuts sometimes. You may be able to do a job that should take four weeks in one week (but now the software is all messed up). But you can do that only once, then you need to spend three weeks to clean up. If you don't clean up, then the next four weeks worth of work either takes seven weeks including cleanup, or four weeks leaving even more mess, and after that you are in trouble.






                        share|improve this answer





























                          1
















                          What actions to take: The first is to explain to your manager what cost the shortcut is likely to make to the company. Worst case the shortcut means endangering and possibly killing people. Most harmless case is that you fix the problem next week and no harm is done. Your manager needs to know what it is to make an educated decision.



                          The next action is to take steps that "fix" the shortcut if needed. Sometimes it's not needed. Sometimes you write software for a single use, and it either works or it doesn't, and you can see whether it worked. In that case, if the software worked, then it doesn't matter what shortcuts you took.



                          Sometimes shortcuts are justified. Say you are the only developer, and software must be ready at date X. If you are ready at date X, the company makes a lot of money, enough to hire two more developers. If you are not ready at date X, the company makes no money and you lose your job. Clearly you take the shortcut. If everything works fine, the two extra developers can more than clean up all the mess that was created to be fast.



                          What is good is if you can educate your manager that if your software is in a good state, then you can take shortcuts sometimes. You may be able to do a job that should take four weeks in one week (but now the software is all messed up). But you can do that only once, then you need to spend three weeks to clean up. If you don't clean up, then the next four weeks worth of work either takes seven weeks including cleanup, or four weeks leaving even more mess, and after that you are in trouble.






                          share|improve this answer



























                            1














                            1










                            1









                            What actions to take: The first is to explain to your manager what cost the shortcut is likely to make to the company. Worst case the shortcut means endangering and possibly killing people. Most harmless case is that you fix the problem next week and no harm is done. Your manager needs to know what it is to make an educated decision.



                            The next action is to take steps that "fix" the shortcut if needed. Sometimes it's not needed. Sometimes you write software for a single use, and it either works or it doesn't, and you can see whether it worked. In that case, if the software worked, then it doesn't matter what shortcuts you took.



                            Sometimes shortcuts are justified. Say you are the only developer, and software must be ready at date X. If you are ready at date X, the company makes a lot of money, enough to hire two more developers. If you are not ready at date X, the company makes no money and you lose your job. Clearly you take the shortcut. If everything works fine, the two extra developers can more than clean up all the mess that was created to be fast.



                            What is good is if you can educate your manager that if your software is in a good state, then you can take shortcuts sometimes. You may be able to do a job that should take four weeks in one week (but now the software is all messed up). But you can do that only once, then you need to spend three weeks to clean up. If you don't clean up, then the next four weeks worth of work either takes seven weeks including cleanup, or four weeks leaving even more mess, and after that you are in trouble.






                            share|improve this answer













                            What actions to take: The first is to explain to your manager what cost the shortcut is likely to make to the company. Worst case the shortcut means endangering and possibly killing people. Most harmless case is that you fix the problem next week and no harm is done. Your manager needs to know what it is to make an educated decision.



                            The next action is to take steps that "fix" the shortcut if needed. Sometimes it's not needed. Sometimes you write software for a single use, and it either works or it doesn't, and you can see whether it worked. In that case, if the software worked, then it doesn't matter what shortcuts you took.



                            Sometimes shortcuts are justified. Say you are the only developer, and software must be ready at date X. If you are ready at date X, the company makes a lot of money, enough to hire two more developers. If you are not ready at date X, the company makes no money and you lose your job. Clearly you take the shortcut. If everything works fine, the two extra developers can more than clean up all the mess that was created to be fast.



                            What is good is if you can educate your manager that if your software is in a good state, then you can take shortcuts sometimes. You may be able to do a job that should take four weeks in one week (but now the software is all messed up). But you can do that only once, then you need to spend three weeks to clean up. If you don't clean up, then the next four weeks worth of work either takes seven weeks including cleanup, or four weeks leaving even more mess, and after that you are in trouble.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 2 hours ago









                            gnasher729gnasher729

                            102k48 gold badges184 silver badges323 bronze badges




                            102k48 gold badges184 silver badges323 bronze badges
























                                Randomize is a new contributor. Be nice, and check out our Code of Conduct.









                                draft saved

                                draft discarded

















                                Randomize is a new contributor. Be nice, and check out our Code of Conduct.












                                Randomize is a new contributor. Be nice, and check out our Code of Conduct.











                                Randomize 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%2f143651%2fis-it-unavoidable-taking-shortcuts-in-software-development-sometimes%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

                                ParseJSON using SSJSUsing AMPscript with SSJS ActivitiesHow to resubscribe a user in Marketing cloud using SSJS?Pulling Subscriber Status from Lists using SSJSRetrieving Emails using SSJSProblem in updating DE using SSJSUsing SSJS to send single email in Marketing CloudError adding EmailSendDefinition using SSJS

                                Кампала Садржај Географија Географија Историја Становништво Привреда Партнерски градови Референце Спољашње везе Мени за навигацију0°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.340°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.34МедијиПодациЗванични веб-сајту

                                19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу