My dad who was a quite successful artist back in the day said something I’ll never forget. “Son, I’d like to work on that painting forever, because for me it’s never finished. But I have to stop and sell it because I have to feed the 3 of you children”. His sole source of income was his art, and we grew up not wanting anything, because he was pragmatic enough to understand at some point he had to ship his art to surv…
Is management pressuring you to deliver unfinished code? (2020)
21–30 of 78 posts
Re: Is management pressuring you to deliver unfinished code? (2020)
#22Earlier quoted context omitted.
There is another thread on the front page about every engineer having to try out consulting. This is one of the ways to learn how to use language that business gets the point across.
Didn't quite parse your second paragraph. Missing a few words?
Re: Is management pressuring you to deliver unfinished code? (2020)
#23One of the problems I have found is that we don't talk the same language when communicating with the business, we use terms like "Technical Debt", "Test Coverage", even "Minimal Viable Product". In my opinion the universal variable across all these is risk, and it's easy for all to grasp what we mean when we say the word "Risk". There is delivery risk, will be get this out in a timely fashion for the market. There is…
I am not versed enough in car things, but it seems to me this would be something maintenance shops nailed down decades ago. How would they convey that your car is lacking maintenance even if you can still drive it to work ? Perhaps we should go with "needs repair" or something like that ? "Risk" feels like insurance territory (which goes along with "there is always some risk"), and a lot of people beautify the notion…
Re: Is management pressuring you to deliver unfinished code? (2020)
#24One of the problems I have found is that we don't talk the same language when communicating with the business, we use terms like "Technical Debt", "Test Coverage", even "Minimal Viable Product". In my opinion the universal variable across all these is risk, and it's easy for all to grasp what we mean when we say the word "Risk". There is delivery risk, will be get this out in a timely fashion for the market. There is…
On the other hand, in not a trivial number of cases, you'll be working with people who get all the upside when things go right and the blame the tech side successfully when they don't. Their interests do not align with the interests of the business either but since the business side consists of their bros, they all instinctively align on that.
So, you keep talking about "risk", that gets portrayed to upstairs as "I am doing my best, but so and so here is throwing technical minutiae at me which is slowing us down."
They are used to being graded on the curve where your position gets better if everyone else does worse and taking advantage of that system.
Among the many reasons I never graded on a curve, but you can't do that with upper management in business.
I say this as a person who believes business cost/benefit calculations trump everything else. However, decisions must be made by people who understand the tradeoffs and are accountable.
Re: Is management pressuring you to deliver unfinished code? (2020)
#25This is wrong. You can and should deliver "by the date", but you should also prioritize ruthlessly, and ship at least the top of most-important-features list with reasonable quality when time runs out.
Of course, this implies that both managers and engineers have to understand deeply, what value each feature brings, and communicate among themselves and with their client continuously.
Re: Is management pressuring you to deliver unfinished code? (2020)
#26The first one is called requirements gathering (the method, requirements engineering). I was wondering how far I was going to have to read to find someone mentioning that.
It can be as simple as writing down a list of things the software has to do. It could be one afternoon brainstorming meeting, to start. But we don't even bother. Why? Because this discipline is not engineering, not science, not manufacturing. One my darker days, I think we are just playing in the mud.
I am grateful to work on virtual machines and compilers. They at least have functional requirements--an input specification--and a well-specified target machine. The rest in the middle is a fun design exercise, but there is a crucible at the end of the day. If you can't run the programs without bugs, you have failed. That makes it easy to put functional correctness first and performance second, as it should be. We need to find more ways of translating problems into requirements in order to reduce black art to science to practice.
Re: Is management pressuring you to deliver unfinished code? (2020)
#27> The top two sources of failure in software development projects are failing to discover what is actually needed and failure to eliminate chaos in the software before delivering it to the customer. The first one is called requirements gathering (the method, requirements engineering ). I was wondering how far I was going to have to read to find someone mentioning that. It can be as simple as writing down a list of th…
Requirements gathering works wonderfully for internal projects with a fixed set of stakeholders and a well defined problem with measurable outcomes. Product development is a whole different world whose outcome is the much more vague "generate profit for the developers". Particularly in the realm of B2B software.
You need to find some local minimum that will meet the needs of thousands of organizations in order for development to be worthwhile.
You need to get many busy people who don't know you to actually talk to you.
You need to talk to multiple different stakeholders within the organization.
And even after you group all your stakeholders into some kind of user personas, you still haven't accounted for what the larger organizational behavior will be, as B2B products generally require large-scale buy-in.
And at the end of the day, no matter what people say they will do, the true test is when a company actually opens their coffers and pays your invoice.
We've arrived down here in the mud through years of experience of doing requirements gathering, building to a spec, and then finding out that we built the wrong thing and nobody will pay us for all our hard work.
Sometimes you really do have to build it to see if they will come. And the more formalized (ie expensive) you make the requirements engineering process, the more compelling the iterate and start getting paying customers asap plan becomes.
Re: Is management pressuring you to deliver unfinished code? (2020)
#28One of the problems I have found is that we don't talk the same language when communicating with the business, we use terms like "Technical Debt", "Test Coverage", even "Minimal Viable Product". In my opinion the universal variable across all these is risk, and it's easy for all to grasp what we mean when we say the word "Risk". There is delivery risk, will be get this out in a timely fashion for the market. There is…
This is a common theme but I don't believe it's true. It mirrors all of those twee blog posts that come up with Yet Another Metaphor for technical debt as if people with MBAs would then just "get it". It's not really about finding the right metaphor it's about lacking a common, shared unit of account. Risks can't really be factored into decision-making unless you can measure them. Theyre not risks otherwise theyre ju…
They can be measured. Lots of companies don't, which is mind-boggling.
When a release goes sideways and has to be rolled back, you figure out why. Ah, you launched a feature that revealed an intersection of edge cases in your testing? That's n developers * m hours * p dollars of blended dev salary down the drain.
When your feature delivery slows to a crawl over time, you dig in – your programmers aren't getting worse over time... are they? No, you find that a ticket that took your average developer x hours to deliver at the beginning of your development now takes 2x or 3x. Make a value stream map and you'll find out that your test suite has become so sluggish that your developers can't iterate quickly, that QA now measures regression time in days not hours, and as a result your developers are taking on less work to compensate. X dev hours * Y blended rate in ongoing waste, plus factor in the value of missed sales because of missed features if you want to really put a point on it.
> It's not really about finding the right metaphor it's about lacking a common, shared unit of account.
Name the local currency you get paid in – dollars, Euros, pesos. That is the shared unit of account. If you don't care about it, start walking up the org chart. You won't have to go far before you realize that's what actually matters, and that engineers who can translate technical risks and inefficiencies in their world to dollar values are highly valued.
Re: Is management pressuring you to deliver unfinished code? (2020)
#29Earlier quoted context omitted.
This is a common theme but I don't believe it's true. It mirrors all of those twee blog posts that come up with Yet Another Metaphor for technical debt as if people with MBAs would then just "get it". It's not really about finding the right metaphor it's about lacking a common, shared unit of account. Risks can't really be factored into decision-making unless you can measure them. Theyre not risks otherwise theyre ju…
> Technical debt and code coverage "as risks" cant be factored in either. They can be measured . Lots of companies don't, which is mind-boggling. When a release goes sideways and has to be rolled back, you figure out why. Ah, you launched a feature that revealed an intersection of edge cases in your testing? That's n developers * m hours * p dollars of blended dev salary down the drain. When your feature delivery slo…
Good luck trying to accurately measure technical debt in dollars.
Re: Is management pressuring you to deliver unfinished code? (2020)
#30Earlier quoted context omitted.
> Technical debt and code coverage "as risks" cant be factored in either. They can be measured . Lots of companies don't, which is mind-boggling. When a release goes sideways and has to be rolled back, you figure out why. Ah, you launched a feature that revealed an intersection of edge cases in your testing? That's n developers * m hours * p dollars of blended dev salary down the drain. When your feature delivery slo…
>Name the local currency you get paid in – dollars, Euros, pesos. That is the shared unit of account. Good luck trying to accurately measure technical debt in dollars.
"I can't outrun a bear, I just have to outrun you" ;)