I haven’t heard so many negative reviews about a single topic as about Adjail. Say, he is ineffective, and does not work, and is suitable for the lazy, and was invented to make money on consultations, and in general, the
Agile is not suitable for us .

I'm not going to dissuade anyone here. I want to share my thoughts on why most
agile companies
are really not suitable .
')
Let's start with what is agile for the developer? First of all, agile is a
discipline . Discipline, which will allow you to work more efficiently, but not for nothing. Adjayl requires something from the developer.
Adjail is a discipline.
In order for information inside the team to spread quickly, and any problems immediately get out, Agile prescribes daily morning meetings - stand - ups , where everyone briefly tells what he did yesterday, what he had time to do and what problems he encountered.
That's a good idea, but ... this is my favorite time, when I first came to work, brewed coffee for myself - it's time for half an hour to run through the news and fresh jokes. And instead, should I stand in a circle and report back yesterday?
The code should be simple and readable so that it can be easily changed, and at any time to different people. To do this, your code must be constantly critically reviewed and refactored . Those who treat their code as a child, the requirement to constantly change the code is perceived as a personal offense. “I tried, I created , and now - to change again? ...”
And of course, few people like the fact that your code is looked at and changed by their dirty paws by strangers.
To make sure that the project works, you have to write unit tests . I mean, the code turns out to be twice as large, and twice as much work is hung on the developer. And for what? All the same, the tests do not give an absolute guarantee and will never find all the bugs. So let the testers look for them, they exist for this!
- To make sure that the project works as the client wanted, you have to write acceptance tests . And with them so much hassle ... They are slow, and they break constantly ... But what the hell is it not easier to call out with your hands? Especially since there are testers for this.
To ensure that the project does not fall apart when integrating changes from different developers, Agile offers a Continuous Integration server. Here's another, come up with our head! Now in my mailbox a lot of some left-handed emails are pouring in that the build is broken. And I have to go to some server and figure out why the tests are red? Yes, I, maybe, have nothing to do with it, why should I waste time!
In order to constantly discuss all design issues, make continuous code review, instantly find errors and write tests to a friend, Agil has prescribed pair programming . Undoubtedly, developers are most afraid of this. Still would! All day, a dude will sit next to me who will tell me how and what to do. Poking my mistakes. Neither you read the mail, no news, no jokes. No, thank you! And if he has a different style? If our opinions diverge? If he likes to put brackets in the same row, and me - in the next? Are we going to argue all day? Thank you, we do not need such good.
In order for the developer to better understand the problem area and to be able to offer simple solutions in a timely manner, direct communication with clients is necessary. Oh, my, my colleagues and I prefer to talk on the phone, and with a client ...
So agile is a discipline that
allows
create a working product with high quality in a predictable time.
But here's the catch. It only makes sense
if you want to
create a working product with high quality in a predictable time.
And here we come to the most important thing: for most developers, this is not a top priority. Yes, that is the sad truth.
Comfort zone

The average developer is interested in writing some complicated intricate module (even if it is not needed by anyone), but it is
not interesting to write a simple to disgraceful, but working product. I know what I'm talking about, I myself was like that. It was more interesting for me to write my own StringUtils class than to use an existing commons-lang type library. Just because it is interesting. Interesting is the process of creating this figoviny. And what about the client? Nothing will happen to him, he has waited for half a year and will wait. Now I will finish my StringUtils and then I will deal with its problem.

And most importantly: an ordinary developer appreciates his comfort at the computer. My workplace is my home. I set up everything here as I want, put my desktop, music, audio player, programs there are different, framed photograph on the table. I even have a separate cup here. Here I have
a comfort zone . It's just me and my computer. Well, yes, sometimes supervisors and testers come in, rush into my little world, but this is temporary. Talk and leave. And peace will reign in my world again.
It is a fact: an ordinary developer does not want to let anyone into this space! What are you saying? Does pair programming improve performance? Reduce the number of bugs? Improve the code design? Hmm ... yes no I do not believe. Yes, anyway, the two of them will do twice as much. This is how conversations are born that Agile is not working.
So:
For most developers, their own comfort is more important than working software, than the success of the company and everything else.
Problem deeper
Therefore, Agile is not suitable for most developers. Agile takes your usual comfort, takes your personal desktop and makes you work according to the rules. And this is only for the company to be better and the customer was satisfied.
While in your company your own comfort for developers is more important than the success of the company, no agile will help you. You do not need all these expensive trainings, violent implementations of Scrum, Lean, TDD, etc. All this is
ni-pa-mo . The problem is deeper.
Where to get motivation?
In addition to the motivation that can come up with the company's management, Agile also offers its own motivators. Believe me, when you get used to it a little, you will understand that Agile practices can be very fun, such as
ping-pong programming . As said
Vlad911 ,
Pair programming is a great way to increase motivation. You can always agree with your partner about what to do and how to do it, so that it does not turn into routine work, you can dynamically change responsibility and not engage in “one and the same”, which you often have to do alone.
Committing the code, being sure that it works as it should - is in itself a great pleasure.
And finally, one of the biggest motivators is, strangely enough, live communication with the client. Compare: when the boss comes to you and asks: “Well, finally completed it?”, And when the client comes to you and says: “Wow, you did it! This is what we need, thank you! ”It is easy to justify before the boss: I was at the rally, mergil code, corrected bugs - anything. With the client, this trick is not a ride. We must either do the work, or ... there is simply no other option.
So if you are interested in the success of the project, use Agile. If your comfort zone is more important to you - well, make coffee and start reading the news. Agile does not suit you yet.