I guess nobody will be surprised if I say that everybody is talking about Agile these days. The topic is even reaching another dimension with the grandiose name of "Digital Transformation". Therefore, I think it won't be necessary to explain in this post what Agile development is.
It's not hard to find job offers where companies are trying to find "Agile Developers". And here's when I think that this agile madness starts to be a bit ridiculous. From my perspective, I don't think most of the companies publishing this kind of offer knows exactly the skills that an Agile Developer must have. And I'm saying this because I've barely seen mentions to what I believe are the main skills a developer working with agile needs.
Kent Beck said in Quora that coining "Agile" was probably a mistake when a group of professionals decided to use this name almost two decades ago. What has happened over time is that big enterprises have started to confuse "Agile" with "Fast", so "Agile Developer" is confused with "Fast Developer". Indeed, companies just want people being able to deliver more features in less time, without having in mind the skills that such developer must have. It is frequently thought that following Scrum ceremonies will be enough to reach this higher speed magically.
In my opinion, what defines Agile Development is sustainable pace and constant feedback. In order to achieve both things we need to improve communication and achieve maximum visibility of the work done, but most importantly, we need to have a technical excellence in our development process.
It is with this technical excellence how we achieve, in the long run, to increase the number of features delivered per time unit. Indeed, I'm talking about advocating for the maximum quality in what we do.
Having said this, what are the main skills that a good agile developer must have? I think we just need to master two things:
If a developer is able to deliver software perfectly covered and described by tests, such software won't have any regression in the future (or it will have a very small one), so making the system grow will be much easier, without a notorious decrement in velocity. Having these tests as a safety net will allow us to shape our code using refactoring without being afraid to break anything. And it's this constant refactoring, the adaptation of our code to make it more readable and more maintainable what actually has a huge impact in the quality of the software we deliver.
What's more important, testing or refactoring? I think none is more important than the other, both need each other to create a virtuous circle. Maybe you're thinking about TDD as the best way to accomplish this circle. Personally I'm a big advocate of TDD, and I find it extremely useful, but lastly I don't think is that important to use it as long as we don't stop adding tests and refactoring all the time. This is the only way to achieve the sustainable pace that I mentioned above.
Conclusion: if, in the future, you come across a job offer where somebody is looking for "Agile Developers", but the offer does not mention testing and refactoring as important skills, be suspicious of that offer :).