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;
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
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.
|
show 1 more comment
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
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
|
show 1 more comment
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
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
management software-development
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.
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
|
show 1 more comment
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
|
show 1 more comment
4 Answers
4
active
oldest
votes
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.)
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
|
show 1 more comment
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.
add a comment |
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.)
add a comment |
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.
add a comment |
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.
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%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
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.)
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
|
show 1 more comment
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.)
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
|
show 1 more comment
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.)
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.)
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
|
show 1 more comment
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
|
show 1 more comment
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.
add a comment |
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.
add a comment |
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.
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.
answered 6 hours ago


Thomas OwensThomas Owens
14.7k5 gold badges57 silver badges76 bronze badges
14.7k5 gold badges57 silver badges76 bronze badges
add a comment |
add a comment |
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.)
add a comment |
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.)
add a comment |
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.)
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.)
answered 4 hours ago
KallmanationKallmanation
1,3902 silver badges8 bronze badges
1,3902 silver badges8 bronze badges
add a comment |
add a comment |
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.
add a comment |
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.
add a comment |
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.
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.
answered 2 hours ago
gnasher729gnasher729
102k48 gold badges184 silver badges323 bronze badges
102k48 gold badges184 silver badges323 bronze badges
add a comment |
add a comment |
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.
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.
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%2f143651%2fis-it-unavoidable-taking-shortcuts-in-software-development-sometimes%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
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