I had a laugh and imagined that situation as follows: Johannes Link, an old hand when it comes to test driven and agile software development, announced at Germany's leading conference about extreme programming, XPDays, that he considers Java being a Code Smell while him being himself a long time Java developer...
I was quite curious about his opinion, and he was nice enough to answer a couple of questions.
Mr. Link, on your website you write about yourself: "I'm a consultant for agile and test driven software development. A software therapist." Everybody can imagine what a consultant does - but what is a software therapist?
After several years in my occupation as consultant and coach, I came to the conclusion that consulting work is often quite similar to that of a therapist. At the beginning I mostly have to find out where it hurts my customer most. It's usually something that ranges from a lack of technical knowledge in important areas, to problems in team dynamics or a lack of motivation of certain employees. Therefore the consulting which follows is rather comparable to a therapy than a single advice, since the direction can change at any time, the customer's steady observation is the main feedback mechanism, and usually some other problem pops to top priority as soon as the most important one has been resolved.
You have been around in Germany's "agile scene" for quite a while now and have assumed different roles. How did the topic of "agility" develop in recent years in your point of view?
The main development in recent years is the fact that agile software development has become mainstream, whereas it was a movement on the software development side at its beginnings more than ten years ago. The name "Extreme Programming" boldly underlines this. In those years it was mostly my job to help a convinced and excited team to become a bit more "extreme" and to create matching interfaces to the rest of the organisation.
When the mainstream adopted "agile" software development methods, especially "Scrum", I was hired more and more often to help management implementing agile top-down strategies. This is often met by resistance on the side of the employees though, as management neither did consult them prior to implementation nor tried to align management's with employees' goals.
My personal conclusion is this: If I want to change a company I need to change the employees too. This either works by getting new employees on board or by changing the mindset of existing employees - mostly both.
In the end there will always be someone that is doing worse than before. We as consultants have to face this ethical issue.
Another change is the enhanced capabilities that methods of Lean Development and Software Kanban give us. The applicable field for agile approaches has become a lot broader this way, but some agile dreams fall by the wayside too, as not each and every Kanban optimised product development process remains true to Extreme Programming's original humanitarian, individual-centered image of humanity.
So, what is the background of your original tweet: "Got kicked out in first round of DSDAE for mentioning that Java is a giant code smell #xdde12"? I know a few polyglot developers that would very happily agree with your statement, but "giant code smell" really does sound quite feisty - what was this about?
A Code Smell is something that "smells funny" and should probably lead us to make changes in the software (or the process). Whether or not we can detect a smell mainly depends on the training of our noses. The more I'm exposed to a smell, the less I can identify it. And if an action should follow after a smell is detected always depends on the specific context. For instance, Kent Beck lists "comments in the code" as a code smell, but not every comment can be immediately deleted and it often shouldn't be the case either. Some comments only get redundant after lots of refactoring, others stay essential, because it states rationale for a certain implementation.
It's similar with the smell of a programming language: You need to have left it alone for a while to be able to perceive the smelly parts. Java has a whole range of smelly features. A lot of them fall into the category of "unnecessary ceremonies". Despite this fact, there is no need to replace Java in most long running projects with a hipster language.
On the other hand one has to ask oneself, if a new language (maybe one of the 200+ JVM languages) might not be a better fit for the new task at hand. That might even be the case for a subsystem of an existing software. The current trends certainly play a role too, as the quality of a software also relies on the enthusiasm of the participating developers.
Nevertheless I'd like to tell you about the context of the tweet: I was a participant at the evening event "Deutschland sucht den agilen Entwickler" ("Agile Coder Idol") within the scope of the XP-Days in Hamburg this year.
When I had to admit to myself that my late-night-concentration wasn't sufficient anymore to deal with the task ("Look for as many code smells in the given code base as possible"), I chose this spectacular departure.
Last question - the legendary Five Million Euro Question: If someone would give you five million Euros today under the condition that you'd never be allowed to write any software again - would you accept the money? What would you do instead?
I'd accept the offer and continue to lead a secret double life as a programmer. If I would get busted, I'd become a pro basketball player in the NBA.
Thank you very much for the interview, Mr. Link.
Johannes Link works as a consultant and author. He lives in Heidelberg, Germany, and is a board member of Netdosis AG, a spin-off of University of Erlangen-Nuremberg. With his site http://rechnerzeit.net he aims to introduce young people to the topic of programming.