Timeline for Overcoming slow problem solving due to increased knowledge of what might go wrong
Current License: CC BY-SA 3.0
37 events
| when toggle format | what | by | license | comment | |
|---|---|---|---|---|---|
| May 22, 2014 at 7:53 | comment | added | Morg. | You underestimate technical debt. Coding without prescience means creating technical debt, and your "4 months" example seems to imply that it takes more than 4 months to have technical debt worth managing. In my experience and from a pure sprint productivity optimization standpoint, it takes about five days of coding to create enough debt to justify one day of cleaning up. That's with someone like me who likes to plan and do things right the first time. | |
| May 20, 2014 at 14:49 | comment | added | DXM | @Morg - it is unfortunate that every software professional doesn't use exactly the same definition of words and phrases, but such is life. I agree that the way you defined technical debt in your mind, it is more vicious than what I'm describing. But you'll have to agree that between myself, Jeff Atwood and the author of that msdn that Luke posted, and Luke himself, our definition of "techincal debt" is different than yours. $20 loan with 5% interest is still a debt, but if I choose to have extra $20 today, it is my choice to take on that cost, which ain't that severe | |
| May 20, 2014 at 12:38 | comment | added | Morg. | Technical debt is more vicious than that. | |
| Apr 7, 2014 at 12:29 | comment | added | Mahdi | @BrianDHall If your app doesn't work in IE6 it's probably the IE6 bug! | |
| Apr 1, 2014 at 18:41 | comment | added | Luke Puplett | @Dunk You may find this video series really interesting as it discusses such things as technical debt, cost of delay and over-utilisation etc channel9.msdn.com/series/Fundamentals-of-Lean-Software-Delivery/… - it may open your eyes or it may horrify you, in any case, I think lean or something like it, is how things will be done, more and more in the future. | |
| Mar 31, 2014 at 20:34 | comment | added | DXM | @Peri - and how is that any different from someone who took out too much money at the bank and now drowning in interest? Have you read the above comment thread? If yes, do you disagree that every unfixed ticket is a chunk (could be very small or not so small) of technical debt? And if you don't disagree with that part, do you disagree that just about every development team will ship products with open known tickets just about every time? blog.codinghorror.com/paying-down-your-technical-debt -- "...accruing technical debt is unavoidable...". I think I'm good with my understanding | |
| Mar 30, 2014 at 14:52 | comment | added | Piotr Perak | You are misunderstanding what technical debt is. It is exactly what causes your next feature to be ready in 2 years instead of two months. | |
| Mar 28, 2014 at 21:10 | history | edited | samthebrand | CC BY-SA 3.0 |
Great answer that will be featured at Ars Technica this weekend. A few minor edits and rewordings.
|
| Oct 14, 2013 at 18:37 | comment | added | DXM | @Dunk: Completely agree with you. And the way I would find what a reasonable level is would be by performing rough cost-benefit analysis in my head. How much effort would I have to put it in to get to next level vs. how much benefit would I get out of it. I'm pretty sure you and me are both on the same page here. Maybe my example above was a bit made up, but I never meant to imply that you should write code with no error handling. If you want to keep talking we should move to chat, otherwise, I just hope you see this response before mods delete this entire thread | |
| Oct 14, 2013 at 17:49 | comment | added | Dunk | @DXM:We certainly don't fix every single bug and tie up every loose end and I don't think I ever implied it. I said to consider all of the reasonable issues that are likely to occur. It is doubtful that this can be accomplished by taking 5 minutes to implement the fictional file-thingy. In the prototype stage, 5 minutes may be plenty but once you get to the "this is the implementation" stage then there is a degree of professionalism that should be expected out of a sw developer. Reasonable error handling is in my list of professionalism. Obscure error handling not likely to ever occur, no. | |
| Oct 10, 2013 at 20:14 | comment | added | Fabricio Araujo | So the discussion is lost forever, so moving it is equivalent to lose it. And this discussion is MUCH better than the answer. | |
| Oct 10, 2013 at 20:07 | comment | added | Fabricio Araujo | @WorldEngineer, the sad thing is that chat is not tied with the question and, by the last time I looked at, content there is transient... | |
| Oct 10, 2013 at 19:08 | comment | added | user28988 | Take to chat please if you want to continue discussing, Thanks. | |
| Oct 10, 2013 at 14:32 | comment | added | DXM | @Dunk: Do you guys actually fix EVERY SINGLE bug and tie up EVERY LOOSE END every single time you ship? I'm not saying it's bad or wrong. Clearly different industries/environments need different levels of quality. Would you mind telling me what company you work for? Now I'm kinda intrigued to check you guys out :) | |
| Oct 10, 2013 at 14:19 | comment | added | DXM | ... more than the bugs they were fully aware of. They'd simply work around the bugs or decide that feature X which is broken wasn't that important for them, compared to new functionality that they needed. | |
| Oct 10, 2013 at 14:19 | comment | added | DXM | @Dunk: My first job was doing plant control software that ran things like oil refineries and nuclear power plants. And we absolutely had a quality standard and everyone understood definition of "DONE". But we still never shipped with 0 bugs. Our customers knew what was done and which features weren't working and they made the call whether to get current release or stay with the previous one. But we still made regular releases even though there were still bugs. Not every defect causes catastrophic failures. Some are just not that important. Some times we'd work on features customers wanted... | |
| Oct 10, 2013 at 14:15 | comment | added | Dunk | @DXM:I never said the developer lied. He just has a different perspective on what DONE is. Similar to the view that you expressed. That may be ok if you are working an internet site or internal app where getting a new version distributed costs next to nothing. Not so if a customer is paying you to do a job for them and they expect it to be done "right" when you deliver it. Even more not so when costs are high to update software. | |
| Oct 10, 2013 at 14:11 | comment | added | Dunk | @DXM:I guarantee we work in different environments and completely different kinds of customers. Bugs cost us or the customer lots of time and money. Doesn't seem to be the case for you. We also have very different outlooks on acceptable. Regardless of how you determine tasks at some point a task or module is assigned to someone. My view is that when you assign a "professional" a module they deliver it in a professional manner, which means it works for happy day AND obvious error scenarios. And at least some thought is given to the non-obvious scenarios to determine if they are likely to occur. | |
| Oct 9, 2013 at 18:56 | comment | added | DXM | @Dunk: I think you and I work in very different environments. My backlog is team's backlog. It is visible to the entire company. And because we (at least try to) follow agile, decisions like breaking down large tasks prioritization are done together. We do not do politics and I've never been on a team where team members lie to each other. But our philosophy in my team and the company is very simple: do most important things first. And simple facts: some bugs are less important than other bugs and some bugs are less important than new features. | |
| Oct 9, 2013 at 18:42 | comment | added | DXM | @Dunk: You might be projecting that guy onto me and I'm not that guy. I am "management". I've held team lead or supervisory roles for a while now and this is the message I've always sent to the guys below me and managers above me, which is actually very similar message as what kriss mentioned in post below this one. The key is that I'm talking about minimizing costs across the board all the way to the customer. Not doing shitty job and just making everyone else around you suffer. | |
| Oct 9, 2013 at 18:35 | comment | added | Dunk | ..His attitude is fairly common AND seems to inevitably end up with the same results. These people become a cancer because they are frequently good at office politics and are able to transfer any blame to others. Especially when management thinks they are so wonderful because they keep hitting their schedule. Of course management is blind to his negative impact on others and the fact that he didn't really meet the schedule. | |
| Oct 9, 2013 at 18:33 | comment | added | Dunk | @DXM:I'll grant you that I "embellished" upon your description but I finally got a guy off my project who held a "similar" philosophy as you expressed. He gives the impresssion that he is making great progress, management is thrilled with him, but then you discover that he is making progress because he always assumes happy day scenarios. Other people suck in his code, start implementing and spend a few hours before tracking it down to one of his modules that didn't think that maybe the file didn't exist yet.... | |
| Oct 9, 2013 at 0:46 | comment | added | SplinterReality | This answer closely mirrors my own experience and take on Technical Debt. More than intentionally creating it, simply by entrusting the work to junior staff, you end up with technical debt naturally, which must be fixed later, educating them in the process. Basically once you reach this stage, you MUST invest in learning about tradeoffs, and think in terms of borrowing debt which must later be repaid. This because you MUST entrust work to junior staff simply because there's only one of you, and even if what you get is lower quality, you can deliver what would be impossible for you alone. | |
| Oct 8, 2013 at 20:13 | comment | added | DXM | @Dunk: you just twisted my words. Let's say I build a file thingy. If everyone can move on, the next story to cleanup and tighten security might get done 2 weeks from now. It might also get done by a co-op. However, I WILL NOT release a feature if it breaks other people's work. That would make "cleanup" task much more important, and it will get done ASAP or part of original work. At no point did I tell you I will ship unusable code. When I say look at the costs, I didn't mean be selfish and just cut down your own work. I mean look at the cost for your team and your company as well. | |
| Oct 8, 2013 at 19:54 | comment | added | Dunk | @DXM:So using your own example. You build a simple and quick temporary file thingy. Oh great, now everyone who needs it can get to work using it. Eveyone starts using it and their code isn't working. Low and behold, it was your quick and easy 5 minute implementation that is broken. It took several developers quite a few hours before they realized the problem wasn't in their code. Tell me again how much time you saved? | |
| Oct 8, 2013 at 19:41 | comment | added | DXM | @Dunk: I will then look at the state of my software as a whole and determine if it's good enough for Beta or production and if it is, regardless of how many bugs are still open, I will ship version 0.9, 1.0... etc and continue working on the backlog. Each open bug/feature/improvement will get prioritized based on cost to me and value to my customer. | |
| Oct 8, 2013 at 19:35 | comment | added | DXM | @Dunk: I'm one of those people, who builds a backlog of work I have to do and if a story takes too long, I split it. I will then work on the most important story first. Often times after the split, some sub-stories will get prioritized much lower than original story. The bottom line is that I deliver value and rest assured I care about quality but each story will get priority based on its relative value. Important bugs will absolutely get fixed. But I will never spend a solid week working on ONE TASK and tying up every loose end I can think of. But if they are important, they will get fixed. | |
| Oct 8, 2013 at 19:23 | comment | added | Dunk | Oh jeez, so you are one of those people who force projects to spend 90% of their time finishing the last 10% because it doesn't work. | |
| Oct 8, 2013 at 18:36 | comment | added | DXM | @R.Schreurs - that was just a figure of speech :) | |
| Oct 8, 2013 at 18:35 | comment | added | R. Schreurs | @adj7388: how did you award +100?? | |
| Oct 8, 2013 at 17:33 | comment | added | adj7388 | +100 for your take on technical debt. Like the OP, I've been trying to eliminate all technical debt. I had never considered the idea that technical debt is fine, until the interest starts killing you. Now I see that managing the debt is much more important than eliminating it. I had never thought of it in those terms before. (btw I also use the pomodoro technique.) | |
| Oct 8, 2013 at 16:22 | comment | added | BrianH | Creating a bug "deliberately" would mean the bug itself was intentional - which is not the same thing as being aware of the possibility or even specific existence of a bug or incompatibility. I have an HTML5 app that doesn't work right in IE6, I'm aware of it, I even suspected that would be the case when I made it - it's just that "those that matter don't mind, and those who mind don't matter". You can knowingly build a bridge that won't withstand a nuclear attack, and that's OK. | |
| Oct 8, 2013 at 16:19 | history | made wiki | Post Made Community Wiki by Captain Kenpachi | ||
| Oct 8, 2013 at 6:50 | comment | added | DXM | @scai - you pick your battles. I've been in the industry for 15 years and I have not seen a single release in 3 companies that I worked at to date, that shipped with 0 bugs. It just doesn't happen in the real world. I'm not saying you intentionally introduce broken code but there's a level of perfection and bullet proofing which simply doesn't pay off | |
| Oct 8, 2013 at 6:39 | comment | added | scai | So according to you, deliberately creating bugs is acceptable as long as they occur rare enough? | |
| Oct 8, 2013 at 6:27 | history | edited | DXM | CC BY-SA 3.0 |
who spells "dept"??
|
| Oct 8, 2013 at 3:04 | history | answered | DXM | CC BY-SA 3.0 |