Pensando en programar

Just a couple of days ago a tweet brought to my attention the extent of the current trend on easy exits. #NoEstimates, #NoStoryPoints, #NoRetrospectives, #NoProductOwner, #NoJira… Somewhat humorously the #NoPowerpoint seems to have sneaked in there too, but then again it sort of makes a lot of sense for it to be there.

#NoEasyExits

Once, I wrote in some extension about the fundamental failures of #NoEstimates. Basically, the argument is always built on the wrong premises. I have never seen a proponent of #NoEstimates not begin with an incorrect explanation about estimates. And if you don't understand something, well, any arguments you may have for or against it will tend to be as equally flawed as your understanding.

And so I got annoyed and wrote about estimates and it was boring because their mistake is stupid and basic, and explaining stupid and basic stuff tends to be boring. So I won't do that again.

But… looking at it now with a wider angle lens, it's clear to me what #NoEstimates is about. And #NoStoryPoints, and #NoRetrospectives, #NoProductOwner… and how they all clearly relate to #NoPowerpoint in one particular aspect.

What all these trends are about is easy exits. They are also a lot about blaming the floor when you can't dance, yes, but mainly about easy exits.

Programming is hard; let's go shopping

The actual problem goes far beyond the stupid coward hashtags. The hashtags themselves are more of a symbol of the cowardly and unprofessional act of seeking refuge and hide in the warmth of the mass. They are a way of seeking approval to justify your decisions. Meh, if that makes you feel cosy… Sorry to tell you that it will still not mean you're actually right. Million flies and all that.

But beyond the tags, there's the Barbie talk.

I have to confess I'm going through a sort of nihilistic phase. After about 30 years of fighting myself it appears that at the moment I'm quite convinced that there is no future. That we're all going in circles and on different directions and blah blah blah. But even during these difficult times, I still try to fight the fatalism. I felt the need to point that out because what I see in all these trends, and more, is a nihilistic Barbie talk getting hold of the world of software development. Or… or maybe not… Maybe I should see it as hedonistic instead. Yeah, that's probably it, egotistic hedonism. Anyway…

“X is hard; let's just not” seems to be the trend getting hold of an increasing number of aspects in programming. Not only those mentioned in the #stupidTags, but to some extent it has happened also with a number of some, let's say, more technical details. Like inheritance. Oh, it has some shortcomings and risks; let's just not do it. Or the C in CSS. Oh, that's pretty hard; let's just add a ton more complexity just to avoid the cascade. Or even studying. Let's just do these 2 month courses where you learn to be a code robot and call it micro-degree. It also permeates, in part, to other aspects of programming. Mottos about “moving fast and breaking stuff” also reflect to some extent this idea of not being held responsible about problems. Talks where people are proud of deploying to production dozens of times a day -no, not of being able to do it, but proud of actually having to do it- are presented in a way that minimizes or even ignores the fact that they are actually pushing a lot of bugs on production.

Developers are, step by step, setting the stage to avoid all responsibilities. It is, then, the hedonistic search for one of those “safe spaces” where they can focus on the cool and the fun parts of software development. It is the unprofessional stance of people who, facing the not-so-glamorous parts of their job, apply all their effort into avoiding them, instead of trying to understand the need or the usefulness.

It's the tool, stupid

As I mentioned above, I now also get what all this has in common and how it relates to Powerpoint.

The trend against Powerpoint presentations happened in a similar fashion. When Powerpoint came out slides presentations were nothing new. In fact, they had been used for decades with various hardware. Powerpoint (or any of the other computer software available) simply made it easier.

With this easiness came, as it often happens, abuse. Powerpoint particularly included more and more “fancy features” that would not really help communicating better but may indeed hinder effective communication, annoy or even be intentionally used to miscommunicate and confound.

To a certain extent this is indeed the fault of Powerpoint itself. At least for the undiscriminating offer it provided, which did not really guide the user into producing an effective presentation. But this can only be blamed on the tool partly. To a larger extent it is the fault of the user that does not know or care to constrain themselves to the specific goal a presentation should seek. It's also not a thing that is partial to Powerpoint itself. It was the most popular tool, yes, but almost all the others also included these fancies and frolics.

But it is much easier to blame the problems on the tool than it is to actually learn to understand and use it. And so the easy way out is… #NoPowerpoint ever, at all, for anything.

#NoEasyExits

Being a good professional can mean a lot of different things to different people. Some simply don't care, some will say it's “saying the customer is always right” or some other nice-but-trite phrase, some will say it's “caring for your co-workers” or “being a team player” or whatever…

To me, being a good professional means that you strive to do what needs to be done, that you seek no easy exits to weasel out of doing things that you may not like of enjoy. It means accepting that the “cool parts” go along with the “hard work” and that there's no way of doing the first avoiding the second.

It means, then, that when you find some difficult part in your job, when you need to do “hard work”, you do not opt for claiming a stupid #NoHardWork hashtag and instead do make an effort to both understand it and to do it in the most effective way. It also means that you do not blame any shortcomings on the particular tool you used.

Sure, from time to time, you may find that some specific task is not useful or does not produce the expected results. Or that some tool doesn't work as well as it should. But even then, the first action you should take can't be simply discarding the tool or ignoring the task completely. Instead, you think. You analyse the situation, you understand where the problem originates and then solve it. Sometimes it may mean discarding a certain tool or simplifying a particular task or workflow. But even when it does, it pays to know why you're discarding it and that you're doing the correct thing. Otherwise, it's just running around like headless chickens.