Earlier quoted context omitted.
Any decent project manager who wants to keep their job will acquiesce to people further up in the org chart who want deadlines, not estimates, and who consider the difference between the two to be as fuzzy as it needs to be.
> Any decent project manager who wants to keep their job will acquiesce to people further up in the org chart In my book, that project manager is not "decent". A decent project manager would recognize the situation for what it is and leave.
Dear Agile, I’m Tired of Pretending (2018)
411–420 of 420 posts
Re: Dear Agile, I’m Tired of Pretending (2018)
#412In my experience, these discussions boil down to anecdotes at twenty paces. I've seen software development done very poorly and done very well, sailing under a variety of flags. But on an eyeballing there are far more bad experiences than good that get labeled "Agile". Whether this is because of causal differences or because it's easy to affix any label to anything (and most experiences suck regardless of the label)…
How do you like agile at Pivotal? I'm curious, they have some really strongly heard opinions about how to do agile correctly.
Sometimes it goes off the rails. That is in the nature of things. But it goes off the rails as an exception, rather than as a rule.
If there's a key to the magic it's (1) hire for empathy as well as smarts and (2) reflect on what can be done better.
Re: Dear Agile, I’m Tired of Pretending (2018)
#413Earlier quoted context omitted.
You're abdicating your responsibility of developing working software. Your job is to solve problems, using code where appropriate. Your job is to understand the entire system and explain how the corporate system above interacts with the technology you are tasked to develop. If you can't do that, what is the difference between you and a group of outsourced employees making pennies on the dollar?
you’re presupposing he wants to fit into that holistic model, as a senior person. maybe he is fine plugging away at code, the task defined, like a monk transcribing texts. the world needs both kinds, and a range in between.
But if one kind can do both types of tasks then you only need that kind.
Re: Dear Agile, I’m Tired of Pretending (2018)
#414The best way I've seen agile described is "designing code in a way that acknowledges change.' I think there's a lot of value in understanding that you may have to go back to the drawing board when designing parts of your program. I have little regard for the entire industry that has risen up around agile, however.
Re: Dear Agile, I’m Tired of Pretending (2018)
#415I agree that almost all of the orgs I encountered that were Doing Agile were pretty horrible. On the other hand, I've also been in orgs that were very successful in developing software in a way that we would recognise as being agile. We just didn't make a big deal out of it. And we didn't do standups (most of the time), or 2 week sprints, or retrospectives. We didn't even pair consistently: we split up on trivial stu…
Got any insight as to why TDD is such a great thing? From how Ive heard it described it seems to be a way for management to impose rules on how developers can approach writing a feature and not necessarily a benefit to the devs. If I understand it properly, it's essentially write a test so it fails then fill in the feature gap. The whole write first bit is just so you don't have to retest later to verify that your te…
TDD was discovered as technique by developers, for their own benefit. Management imposing it can be a bit of an anti-pattern, though it may be well-intentioned. I have certainly pushed teams to TDD, though primarily by example and by the positive experience you quickly get.
Anyway, TDD has nothing to do with management imposition. It is really diametrically opposed, at most orthogonal.
2. "test didn't hit a false positive"
Yes, that's a good thing, though hardly the main point. You write that a careful person does this anyway. I'd rather have a machine do that for me, and have less of a requirement on me to be careful. Computers are much better at being careful, and I want them to do the tedious stuff.
I also am wary of claims of "you just need to be careful". Probably lots of bugs ahead!
3. So why is TDD so great?
First, it's a design technique. Writing the test first forces you to think about how your new production code will be called. It also forces you to be clear about what the code is supposed to do, precisely, before you write the code. Writing the test tends to be significantly less difficult than writing (correct) code to solve the problem. You then write only the minimal code that is required to pass the test, which surprisingly also tends to be fairly trivial. Also, you know when you're done: when the tests are green again.
So you've transformed one difficult step into two fairly trivial steps. Which sounds weirdly magical, but actually works in practice. Also, since you only wrote the minimal code that was required for the tests to pass, you know that you have good test coverage.
After you've done a few, you're in a place to detect duplication and eliminate it by refactoring. This tends to be somewhat more intellectually challenging. However, you are truly refactoring, that is not changing the functionality, so you have a great safety net with the good test coverage you achieved before.
So you get this small steps that are fun and easy, and you tend to not regress.
Psychologically, it's also very pleasant, compared to the usual flow, which goes somewhat as follows:
1. I have a rough understanding of the problem,
2. I code a solution, which is at the limits of my understanding
(because everything is up in the air)
This part feels very good, "I am the master of the universe"
3. Then I should write some tests, but the incentives are a bit negative
-> if the tests all pass, nothing happens, so why did I write the tests?
also if nothing happens, how do I know I actually tested something?
(not by "being careful")
-> if the tests do show a failure, it's a distinct downer from step 2
(and so I probably subconsciously write my test so they don't fail)
4. I don't really want to refactor, because my solution from step 2 was already awesome!
TDD: 1. I write a test. It fails appropriately. That makes me happy.
2. I write minimal code. Tests go green. That also makes me happy.
3. I refactor. The code now is much nicer and tests still green. More happiness.
So with most normal development flows you get that initial rush and then a lot of downers. With TDD, you don't get quite the same initial excitement, but instead you get these nice regular dopamine hits without really much downside.Re: Dear Agile, I’m Tired of Pretending (2018)
#416Ah, yes, the old "you're not doing it right, so read these 3 books and follow 10 bloggers every day" argument.
Re: Dear Agile, I’m Tired of Pretending (2018)
#417Earlier quoted context omitted.
It's even worse when your lead is giving timeframes for you...
I used to think that too, but is it really? If estimates are always wrong, then is there really much of a difference? Besides, the lead often has business related information that informs his decision of "this feature must take no longer than X amount of time or we're going to have problems with Y" where Y is often political and not technical.
Re: Dear Agile, I’m Tired of Pretending (2018)
#418Earlier quoted context omitted.
False equivalence. You planning 'how to put fuel in a nulean aircraft carrier'. For most software projects the equivalent question being asked is 'can you put some fuel in this thing we have'. When asking things like * what kind of fuel * is the thing a container or a vehicle * etc The response is often 'isn't it obvious, you're the developer you should know'. Can you tell I'm in the middle of training coworkers to o…
I'm going to steal this if you don't mind.
Re: Dear Agile, I’m Tired of Pretending (2018)
#419Earlier quoted context omitted.
I used to think that too, but is it really? If estimates are always wrong, then is there really much of a difference? Besides, the lead often has business related information that informs his decision of "this feature must take no longer than X amount of time or we're going to have problems with Y" where Y is often political and not technical.
It just goes against agile development so it seems like if we're doing that, we're not doing agile. Then again, nobody is it seems? :)
Re: Dear Agile, I’m Tired of Pretending (2018)
#420I've been developing software for over 20 years, and I still can't estimate how long something will take me when I've never done it before. This uncertainty needs to become more than just a stick to beat developers about the head and shoulders with. Most of the time the PMs understand this, but there have been many projects where they just don't get it. I have suffered great anxiety from being forced to give estimate…
After many years in large infrastructure transformation projects, Johnny’s Rule of Threes now goes like this: 1. The first time you do something, you can guess how long it will take and what the detailed steps will be, but that is all. You should still plan it, but during execution of this phase you must take copious notes. Do not expect it to be correct. 2. After you have done something for the second time — using w…