A Programmer with a Mac: Contentious Opinions; Nothing is Free

I’ve noticed that many of my professional opinions are [inevitably, to those who know me] out of line with the programming bon-ton, both within Fiverr and outside of it. While these are purely professional disagreements, some of them are quite the touchy subject, and have already earned me (too much?) attention. It seems that ‘plus ça change, plus c’est la même chose’ – this has been the case in every place I’ve ever worked. The recurring theme is that I grow increasingly competent, confident, and (most importantly) emotionally involved (would not recommend this as a best practice). Following a particularly public (professional) discussion that escalated to loud tones, somebody called me ‘Che Guevara’, which might not be historically exact, but that’s not the point: I champion my causes, unpopular as they may be.

As programming goes, since I still consider myself new to the art I try to keep a(n arguably) low profile and accept best practices from more experienced members – being young and learning from others is a privilege quickly and irrevocably lost, so it is worth making the most of it. However, with each passing day I am miffed by certain practices that seem to me to be less than ideal (though usually with their own understandable merit or background). I contend my opinions are and can be articulated and backed by concrete arguments, but still appear to widely differ from the standard wisdom. These topics include preferred languages, coding styles, testing philosophies, and ramp-up procedures, to name a few.

One noticeable meta-opinion I feel keeps coming up in almost every context (beyond just programming) is the people’s amazing tendency to stick to politically ideal notions, without embracing the understanding that resources are limited and that EVERYTHING YOU DO IS AT THE EXPENSE OF SOMETHING ELSE.

Nothing comes for free, and resources are always limited. In an organizational context, this means any measures taken must not only have a net positive impact, but must be considered in terms of how cost-effective it is, and how important it is in comparison to any alternatives. Two examples that we have recently been debating at the office are various types of testing (which everyone agrees might help, but I claim their cost exceeds their value), and Computer Science as a necessary knowledge and skill for software engineering (which I claim can always help, but in 99% of cases is simply either irrelevant, or by far a less necessary commodity than other fields of expertise and experience. I thought this was obvious, but a recent discussion regarding a new interviewee’s skills made me realize this might not be as much in consensus as I had assumed.

These are hard cases to make – in the organization, as anywhere else, touting what good things that ‘need’ to be done is easier than claiming ‘no, this is not important enough to spend our meager resources on it.’ Testing? Yes, it’s good! We must do it! Computer Science skills? Of course it’s crucial!

Everything is crucial. Everything is important. Sadly, your resources are limited, so the wisdom is in being able to define what *doesn’t* matter.