TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Dear Client, Here’s Why That Change Took So Long

464 pointsby jetheredgeabout 6 years ago

45 comments

commandlinefanabout 6 years ago
What gets me is that software has been a mainstay of modern business for _at least_ 30 years. And this whole time, every single professional software developer has been telling every single non-software developer the exact same thing, over and over: this takes longer to do than you think. If, say, 80% of developers were knocking things out, problem free, in an hour or two and the other 20% were hanging back like a 50’s union boss saying, “yeah, that’s going to be an all-day job easy”, then maybe I could understand why they STILL think we’re lying. Even if 20% of the devs could get things done in the time they seem to think it takes and the other 80% were hemming and hawing I could still understand this perspective. But that’s not the ratio. 0% of devs can reliably complete tasks in the time that MBA’s seem to think it should take and 100% of devs take longer than they “wish” it would take and THEY STILL AREN’T PAYING ATTENTION.
评论 #19851224 未加载
评论 #19850995 未加载
评论 #19852076 未加载
评论 #19851359 未加载
评论 #19851016 未加载
评论 #19851130 未加载
评论 #19851133 未加载
评论 #19851132 未加载
评论 #19851973 未加载
评论 #19852829 未加载
评论 #19851763 未加载
评论 #19851541 未加载
评论 #19851977 未加载
评论 #19855538 未加载
评论 #19854912 未加载
评论 #19853739 未加载
评论 #19852274 未加载
评论 #19852430 未加载
评论 #19855744 未加载
评论 #19851307 未加载
评论 #19851194 未加载
评论 #19852781 未加载
评论 #19851065 未加载
评论 #19852899 未加载
评论 #19853522 未加载
jmilloyabout 6 years ago
The idea is sound, but this letter is truly surprising to me. Instead of a succinct summary of what goes into the change, we get a long-winded narrative that reads to me as full of excuses. I think a more useful email would be a breakdown of the time actually spent, and a proposal for improvement, something closer to this (obviously sent after the feature has been deployed, and obviously including additional items for documentation, code review, whatever else takes time in your development process):<p><pre><code> Summary - 0.5 hours investigation and planning - 0.5 hours feature development - 4.5 hours manually testing - 0.5 hours deployment Proposal - 8 additional hours now adding automated testing </code></pre> Obviously, depending on your client, they may prefer a more verbose format or need some more explanation, but probably 3-6 sentences at most.
评论 #19851513 未加载
评论 #19851503 未加载
评论 #19852244 未加载
评论 #19851862 未加载
thaumaturgyabout 6 years ago
No client would ever read this, and much of the language in it wouldn&#x27;t make sense to the kind of client that most needs the explanation.<p>You&#x27;re better off avoiding getting to this point in the first place. Maintain a good relationship with cooperative clients and they won&#x27;t (usually) complain, because they value your work. You should fire uncooperative clients and let them be someone else&#x27;s headache, when possible.<p>Adding a little more detail to line items in invoices helps a lot too. &quot;Fix bug report #493&quot; should usually be, &quot;Investigate report of incorrect discount calculation (#493), modify 1 file, review code, deploy to test, test for regressions (all tests passed), deploy to production.&quot;<p>It seems dumb and repetitive to us, but one of those descriptions looks like 4 hours&#x27; work to the person approving the invoice, and the other doesn&#x27;t.
unreal37about 6 years ago
I worked in software development within companies for 20+ years. The &quot;why does it take so long&quot; conversation has come up a lot.<p>So on one hand, I see the argument. Simply opening unknown code, and making a change no matter how small, is a risky game. You need to research the impacts, test, and walk slowly through a deployment you haven&#x27;y done in ages. I totally get that.<p>But I also see the other side. Why DOES it take 8 hours to do a simple one-line code change? That&#x27;s ridiculous. Somehow, we&#x27;ve developed these fragile systems. We&#x27;ve trapped ourselves in processes that add 7 hours to any change we make, no matter how small.<p>The status quo does not need to remain. It should be easier to make small changes. It should be cheaper to respond to simple requests. The client is actually right to question us when they just want an email to appear a day earlier and it costs them $1500.
评论 #19852268 未加载
评论 #19855286 未加载
评论 #19852250 未加载
评论 #19853244 未加载
评论 #19853732 未加载
raiflipabout 6 years ago
It seems like most of the comments here either didn&#x27;t read or missed the point of the article. Yes, this is a simple change. Yes, pushing a fix out in a day is actually pretty fast. But the author using a simple example to illustrate a point. Better than taking a complex example that takes 5 paragraphs to explain. Moreover you can easily extrapolate all the parameters in the article for complex examples.<p>The primary point of the article is that there are very common inefficiencies in our industry that, if we tackled responsibly, would greatly reduce the turn around time of producing changes to the code base.<p>The point I took away the most from is how much having a single point of change for a single concept and periodically cleaning the code base to keep it this way can dramatically increase productivity.
评论 #19851084 未加载
droithommeabout 6 years ago
When the customer demands a written explanation of exactly why a small change took 4 hours, an engineer has to investigate that completely and write up an analysis in language and sufficient detail for the customer to understand. The given letter would take me a couple hours to revise and get the wording just right and diplomatic. Since the customer is challenging the billing and there is the subtext of fraud, the letter needs to be approved by management and reviewed by legal. The engineer and others are also taken off other tasks to work on this letter project. Providing a legally sound and technically accurate letter of this nature likely costs around $1000 to provide, plus lost opportunity cost.
评论 #19853107 未加载
toddsiegelabout 6 years ago
I do not think that is a good email for discussing a single, small feature. No client is going to want to read it. It&#x27;s too long and detailed (1855 words!) and will probably only _increase_ their frustration.<p>It is a good idea to discuss with stakeholders, at a high level, why things _seem_ to take long, but I find that works best as a conversation. No one wants a tome like this in their inbox.
评论 #19850999 未加载
评论 #19851129 未加载
ghostly_sabout 6 years ago
I&#x27;m not a dev, but this feels like arguing with a strawman. There are really customers who complain that a change to their codebase took <i>a single day</i> to implement? I would be utterly thrilled if I could get a vendor to turn around anything that quickly
评论 #19850952 未加载
评论 #19851173 未加载
评论 #19850914 未加载
评论 #19850937 未加载
评论 #19850894 未加载
munk-aabout 6 years ago
This simple change and the recommended fix has another issue that this post missed or dismissed as a non-issue. What if the deadline is pushed back after the email reminder is sent? Do some users rely entirely on the email reminders and might they need a followup email saying &quot;Just kidding, actually you&#x27;ve got more time&quot; - assuming you resolve that question, when the due date comes up again should you send another email? What should happen (with these daily emails) if a task is pushed back an hour without pushing it out of the 24 hr bound? What should happen if it does push it out of the 24 hr bound but just by a little bit? Should we encode some sort of grace period of ignoring the change? If a due date is scheduled and due to go out immediately should we allow a grace period for canceling it?<p>The technical questions behind why a change takes a long time are legion, but so are the UX changes that all need to be accounted for. In software there is no intelligent actor that can solve edge cases you missed when they come up, instead you&#x27;re building a system that will handle all of those cases (maybe by occasionally crashing, granted) so user stories need to be vetted and resolved.
评论 #19853498 未加载
projektfuabout 6 years ago
Too much protest here. I feel you&#x27;d be eventually judged on those numbers as well. Are you a time &amp; materials shop? The fact is that you either start a clock when you start working on something and stop it when it&#x27;s done or you have standard times that things should take (like an auto shop does.) If you&#x27;re working efficiently, you can tell your client that you work efficiently and this is simply how long the change took. If you&#x27;re procrastinating and charging the client for the time, you should fix that.
评论 #19850962 未加载
评论 #19851033 未加载
Townleyabout 6 years ago
My favorite idea here is how it&#x27;s a developer&#x27;s job to articulate the issues with a client&#x27;s code base to the clients themselves. Some clients just want the problem to go away, but smart ones recognize the importance of a high-level understanding of the state of their code base.<p>If you work for a cheapskate who&#x27;s just nickel and diming about billable hours, the &quot;Why does this take so long&quot; question is nothing more than the rhetorical whining of a bad client. But in a healthy client-developer relationship, the question is important. It&#x27;s a less-articulated, unfamiliar version of the following, which any good developer would find amiable:<p>&quot;I, as someone invested in the success of my company, am seeking insight into a part of that success that only you have. I trust that you&#x27;re not playing Minesweeper on our dime, and yet our current process isn&#x27;t delivering the returns we expect. As someone who knows better than I do, are my expectations unreasonable and in need of adjustment, or are there investments that can be made to get us there?
nocmanabout 6 years ago
I believe I understand what the author of this post is trying to accomplish, but for virtually every &quot;client&quot; I have ever worked for, their eyes would have glazed over by the time they&#x27;d read 25% of this response (if they could even get that far).<p>It is worth it to try to help your client understand why seemingly simple changes take a long time to implement. I&#x27;d just be surprised if the written response in this post would be of much help to most clients.<p>The face-to-face has a much better shot at being helpful, but, of course, that depends a great deal on the client also.
bshimminabout 6 years ago
Part 4: learn to bill by the day and never again have to worry about justifying how long a simple-sounding code change took to make.
评论 #19850825 未加载
ozimabout 6 years ago
&quot;Of course, you can’t just deploy a change to production without, at least, running it locally or on a test server to make sure the code executes correctly&quot;<p>Dear client of course we can, just prepare for commits in history: &quot;That simple fix&quot; 6h ago &quot;Fix the fix&quot; 3h ago &quot;Really fix&quot; 1,5h ago &quot;Really really fix the fix&quot; 10min ago<p>If all goes well enough, we won&#x27;t have to craft &quot;Customer data fix&quot; SQL query commit the next day, just because someone forgot about that totally hidden stored procedure that was not included in the &quot;Really fix&quot;. Which takes another 6 hours to prepare on next business day and invoice instead of being 3-4h of proper fix for &quot;one liner&quot; turns into bill for 12 hours and 2 days of lost production time.<p>Yours, humble developer.
Udikabout 6 years ago
To me the main concern is that this shouldn&#x27;t even be a <i>code</i> change: this stuff should be a matter of configuration. In a well-written system the dev time for it should be zero.<p>But in general, the whole letter feels wrong: either the complications of such a trivial change depend entirely on legacy code that isn&#x27;t responsibility of the current maintainer, and therefore the client knows well how hard and expensive even simple changes are (and this should have been made clear when the project started); or the maintainer is asking the client to pay for developments (refactorings, tests, or a different, more general implementation of the feature) that weren&#x27;t agreed beforehand.
评论 #19853577 未加载
评论 #19851499 未加载
jvagnerabout 6 years ago
&gt; Changing the tasks due email to be delivered a day earlier should be a one-line change. How could that take 4-8 hours?<p>This is what&#x27;s in dispute? Something else in the relationship is wrong.
brlewisabout 6 years ago
On the flip side, when a change <i>doesn&#x27;t</i> take long to implement because of a successful campaign waged against technical debt, it&#x27;s important to communicate that to the stakeholder too, even though they won&#x27;t ask. I implemented such a change on Friday afternoon and made sure to talk about why it went well at sprint review and at sprint retro.
bobm_kite9about 6 years ago
Our internal model of the world is always simpler than the world itself (otherwise it wouldn&#x27;t be a model).<p>This whole article is just saying &quot;Dear client, here&#x27;s why your model is insufficient&quot;.<p>Which is a much nicer email to write than &quot;Dear client, here&#x27;s why my model was insufficient&quot;. Which is what happens when the estimates go south
评论 #19851348 未加载
cromulentabout 6 years ago
Software development is magic to most people. You have the same laptop as them, and somehow you make stuff that works and makes them money by flexing your fingers.<p>They don&#x27;t know how to internalize that - they are dealing with a magician that turns dirt into gold and gets paid by the hour.<p>It&#x27;s totally irrational. If you were a plumber then there would be a physical manifestation of the work.<p>Software managers who have never written code are also often suspect, in my opinion. They can be professionals of magic management without understanding, liking, or even appreciating their field.
deanalevittabout 6 years ago
I&#x27;m a non-technical founder who generally doesn&#x27;t bug my team about why a change took so long but that&#x27;s because they communicate with me.<p>Thing is, working with a developer as a non-technical team member can be a frustrating, opaque experience. Communicating progress is eye-opening for non-technical colleagues but when a programmer does not communicate, then obviously the non-technical members have no idea what&#x27;s going on.<p>Developers can forget too, that the one small change might be holding up marketing, sales and customer support, all of whom themselves are getting flack from above about why X customer is still angry, or why the press release isn&#x27;t being sent out yet etc. &quot;Waiting on a dev&quot; isn&#x27;t an answer that reflects well on anyone.<p>The &quot;Dear Client&quot; letter wouldn&#x27;t be necessary if there was more communication. It can even be automated. Here&#x27;s what I see in a Slack channel with my colleagues:<p>github APP [8:52 PM] New branch &quot;fix-password-recovery&quot; was pushed by xxxx [yyyyyy] Pull request submitted by xxxx #466 Improve password recovery • Fix styling • Ensure the visitor is signed out of all sessions • Redirect to sign in instead of 404 when an old recovery link is visited<p>semaphore APP [9:05 PM] xxxx&#x27;s build passed — d61157d Improve password recovery on fix-password-recovery<p>I never need to doubt xxxx when I can see the myriad small tasks, failed builds, the commits etc.
评论 #19852577 未加载
yebyenabout 6 years ago
&gt; we always include time for writing automated tests in our estimates. It can slow down initial development, but it greatly improves the efficiency of operating and maintaining a software system. It isn’t until a system grows that you truly start to feel the pain of not having tests, and by that point it can be a monumental task to work tests back into the system<p>Not only this, but also: I&#x27;ve recently come to understand the idea that allocating enough time for writing unit tests and integration tests, tends to uncover design issues. If a test is taking longer to write than it seems like it should, or if a particular method or bit of functionality seems harder to test than it was to write, that is a signal that you may have a design issue!<p>Writing the automated tests will help you find out when you have written some code that stinks, if you know what to look for and have the time to step back and think about it. It&#x27;s called &quot;Red&#x2F;Green&#x2F;Refactor&quot; for a reason, it&#x27;s not &quot;Red&#x2F;Green&#x2F;Red&#x2F;Green&#x2F;Red&#x2F;Green&quot; – if your estimates only allocate enough time to write the feature and nominally prove that it works, you&#x27;re missing a critical part of the TDD pattern and you&#x27;re not getting nearly as much long-term value out of your tests as you could.<p>If you don&#x27;t write automated tests at all, it&#x27;s even worse, because those design issues will only show themselves when it&#x27;s time to make a change, and your bad design is now standing in the way, preventing you from iterating quickly when you really need it.
jrochkind1about 6 years ago
&gt; but it could provide a benefit that greatly reduces the effort to make a similar change in the future.<p>Even worse, if we <i>don&#x27;t</i> invest that time, the effort to make a similar change in the future will keep <i>increasing</i>. We need to invest that time just to keep it from getting <i>worse</i>.
WheelsAtLargeabout 6 years ago
Software programming and maintenance is mainly a mind game. The change requestor won&#x27;t see you taking out a bunch of tools to get ready and they won&#x27;t see you make the changes. It&#x27;s hard for them to see why changes take the time they take. Also the time it takes to modify code is relative to the codebase, your understanding of it and the changes needed. I&#x27;ve had situation&#x27;s when I&#x27;ve made changes in minutes but other changes have taken days. There&#x27;s no way to standardize code change. Other professions can set a time on changes because there&#x27;s been plenty of past data that can be referenced.<p>So given this, it is reasonable for requestors to feel like a change should be immediate because it seems simple relative to the way they themselves make changes when they need to. They are trying to use their past experience to come up with the time it should take to make a small change. So many things seem easy when you don&#x27;t have the right experience.<p>The only way to counter this is to define very specifically why it will take a day vs whatever time they think it should take to make the changes. Even then it&#x27;s a hard sell since the requestor will feel that a lot of what you are doing is a waste of time which in their mind equals a waste of money since time is money in business. This is how things have been, are, and will be.<p>I think part of a programmers training should include how to deal with customers since we all have had to deal with this situation and will continue to do so. It&#x27;s part of being a programmer for hire.
nameloswabout 6 years ago
I work on a project consists of tens of devs that continuously delivered applications for almost a decade, and I joined this team 3 yrs ago. At some peaks, there were almost a hundred people. We still continuously deliver new features to the project every day.<p>We bill by hours as a lot of people suggest in this thread. Which works pretty well. We also have flexible iteration plans, the clients can prioritize any feature that is important to them. If a feature does not worth it, it will likely stay in backlog forever.<p>Most things are really smooth IMO, though explaining why technical stuff is costly&#x2F;mandatory is really hard to deal with. Because both of us want the project to be an ever-green project, we need technical advancement, architectural extensibilities. It&#x27;s so hard to even convince myself if I considered myself a non-technical person. Why do you need to split into services? Why things are not immediately synchronized after the splitting? Why do you need a job here, and what&#x27;s a job exactly?<p>At the end of the day, it seems when you are convincing people about things they&#x27;ve no idea, you really need to be trusted -- just like you kind of trust doctor, and being suspicious about witch doctors. To achieve this, it seems better first to be business-focused and solving problems to build trust and reputation, as some kind of credits.
lowercasedabout 6 years ago
&gt; I know that investments like this can be hard to make, precisely because there aren’t any new visible rewards<p>Taken individually yes, there&#x27;s no new &#x27;visible&#x27; reward.<p>Looking at the larger picture, say, 3 months from now, changes that used to take 3 days now take 3 hours, and there are fewer outages, reduced downtime, higher uptime, and fewer (or no) hair-on-fire-we-lost-customers issues any longer.<p>Establishing both short term metrics (request turnaround time) and long term metrics (uptime, data loss, security breaches, customer satisfaction, team satisfaction, employee retention, etc) will help understand justification of effort.
tomcamabout 6 years ago
That&#x27;s an excellent set of explanations. One way to forestall most of them is the magic phrase &quot;change order&quot;.<p>Anytime you get into a conversation where the customers starts off with &quot;Can&#x27;t you just...&quot; then it&#x27;s your responsibility to let them know a change order needs to be filed so you can estimate the new impacts it will have, including cost.<p>Some of the excellent techniques in OP&#x27;s article will be employed, but &quot;change order&quot; terminology and workflow minimize these requirements after you&#x27;ve stepped them through the change order workflow once or twice.
revskillabout 6 years ago
A good software system should be understandable and modified by junior developers.<p>That&#x27;s why most of &quot;advanced patterns&quot; doesn&#x27;t work in real world.<p>Simple, clean, boring code is what a productive programmers should follow.
ww520about 6 years ago
Even with 6 to 8 hours for the change, it&#x27;s far too short. This is not a code change. This is a business process change. The ramafication is far greater than one line change.
nevesabout 6 years ago
Nice. I also like this similar version from Microsoft:<p>How many Microsoft employees does it take to change a lightbulb? <a href="https:&#x2F;&#x2F;blogs.msdn.microsoft.com&#x2F;ericlippert&#x2F;2003&#x2F;10&#x2F;28&#x2F;how-many-microsoft-employees-does-it-take-to-change-a-lightbulb&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blogs.msdn.microsoft.com&#x2F;ericlippert&#x2F;2003&#x2F;10&#x2F;28&#x2F;how-...</a>
te_plattabout 6 years ago
My last two projects have been for the military and a medical device. The example here seems so wonderfully simple (even as an example of how much has to happen on a simple change). Add in all the process&#x2F;design&#x2F;QA&#x2F;validation documents that need to be created -&gt; passed off -&gt; executed -&gt; recorded and you are at much longer than a day.
supernova87aabout 6 years ago
Well, despite all the protestations that the letter tries to surface, some of which are legitimate -- sometimes it really is:<p>&quot;We did not design our system to make simple changes simple, and are now paying the price for it in the gap of we can deliver versus what our customers intuitively believe and should expect as response time for simple changes.&quot;
zghstabout 6 years ago
Mostly during my career, giving the technical explanation to the PM, they are appropriately able to pushback and get the client calm and reasonable, only when the one thing that took long that&#x27;s now taking longer, that&#x27;s when it gets tedious...
donarbabout 6 years ago
I call the the “one little button syndrome”, where a client thinks that just adding one little button to a web page should take a few minutes. They don’t realize that that one little button may require a whole bunch of code to support on the backend.
jermaustin1about 6 years ago
&gt; Actively clean a codebase<p>I&#x27;ve worked for a lot of customers as a developer, I can count on 0 hands the number of times &quot;actively cleaning the code base&quot; would have approved by a stakeholder, especially if there is a budget assigned to the project.
jshowa3about 6 years ago
This post is amazing. I try to explain this all the time. Reminds me of a previous post on HN where people were defending bosses condescending questions of &quot;why does X take so long?&quot;
jorblumeseaabout 6 years ago
Part of the issue is just the siloed nature of many businesses. The business team has no idea what engineers actually do. Marketing just thinks it&#x27;s like editing a complex word document. The clients you&#x27;re working with have never interacted deeply with their own internal dev team. Their interface is always a customer facing position.<p>Getting engineering to understand the business side and the business side to understand how engineering works would go far in clearing up many misconceptions and allowing things such as tech debt paydown, cleanups and refactors, etc.
评论 #19851554 未加载
megousabout 6 years ago
While some of that may be true, it feels ridiculous&#x2F;inappropriate as a response. The customer doesn&#x27;t want a disertation about programming&#x2F;support practices. The customer wants something made cheaper.<p>That can be satisfied to a large degree. You can just as well tell the customer: &quot;OK, I&#x27;ll do the obvious chnage, if something else breaks, we&#x27;ll fix it later. It seems likely all will be fine. Ok?&quot;<p>Some customers will be ok with that. And you&#x27;ll bill for 30mins or whatever and everyone&#x27;s happy.
评论 #19851424 未加载
评论 #19851106 未加载
crikliabout 6 years ago
Good lord, tl,dr. And I&#x27;m a dev. Client sure as hell wouldn&#x27;t read all that. And I know this because at the start of my career I wrote those kind of long-winded explanations before I realized that nobody was reading them.<p>Brevity is a virtue.<p>&quot;Dear client, the change itself took very little time but making sure that this change did not have unintended ripple effects took a lot more. We are careful and deliberate when deploying changes to your production application because in this mission critical application, downtime and errors are not acceptable. If you&#x27;d like more detail I can provide it during our next regularly scheduled catch-up.&quot;
chiefalchemistabout 6 years ago
&gt; &quot;In other words, spending 1&#x2F;2 day to a full day (4-8hrs) on this task is roughly 2x-4x the effort...&quot;<p>My personal rule of thumb is: It either takes 1 minute, 1 hour, 2 hours, 4 hours, or 8 hours. Or obviously longer, but for the back of the envelope type of things these tiers work.<p>There&#x27;s no 3 hours or 5 hours. Nothing ever take 3 or 5 hours. Perhaps sometimes 6 but at that point - due to distractions and side fires - it&#x27;s a full day. Call it 8 and stop kidding yourself.
ashelmireabout 6 years ago
Dear developers and other readers (megous, jmilloy, thaumaturgy),<p>This is probably not a real email to a client or meant to sound like one. Stop responding to it like that&#x27;s what this is (and perhaps also, remember that satire and social criticism exist). It IS meant to highlight one of the common problems of software development for interested readers.
rusanuabout 6 years ago
How many Microsoft employees does it take to change a lightbulb?<p><a href="https:&#x2F;&#x2F;blogs.msdn.microsoft.com&#x2F;ericlippert&#x2F;2003&#x2F;10&#x2F;28&#x2F;how-many-microsoft-employees-does-it-take-to-change-a-lightbulb&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blogs.msdn.microsoft.com&#x2F;ericlippert&#x2F;2003&#x2F;10&#x2F;28&#x2F;how-...</a>
ameliusabout 6 years ago
Just send them a git diff ...
utopcellabout 6 years ago
Chances are, it would had taken me 4 hours to compile that response alone.
breatheoftenabout 6 years ago
It takes at least 2-3 hours just to write that letter to the client ...
jlduggerabout 6 years ago
Quick survey for folks:<p>How long does it take to push a spelling fix out to customers?