Software Craftsmanship North America – a community of software professionals focused on the skills and craft required to produce enduring proficiency in software development – hosted their annual conference at the Town and Gown facility at USC on Friday October 21st, 2016, followed by a “day of code” event on Saturday October 22nd. Luckily for me, my company, the engineering team at CJ Affiliate, has always emphasized this aspect of software engineering excellence, and was one of the main sponsors of the event, so I was able to attend the Friday conference.
In the rush to cover the many new tools and techniques that are released every few months, there aren’t so many conferences or meetups that dedicate time to the art and mastery of writing code. So it was refreshing to come to this gathering, where software craftsmanship was important to everyone there.
Some thoughts gleaned from the morning talks:
Michael Feathers made the charming suggestion that we “anthropomorphize” our code – look at it fondly and ask “what does this code need right now?” By appreciating and empathizing with what we create, we will naturally be moved to write better code. I might give that a try.
Audrey Trout presented a very illuminating talk on learning together. Did you know that anywhere from 20% to 70% of project time is taken up with learning? Learning effectively ought to be of prime concern to any project team.
Mined Minds revealed yet another take on expanding software skills to a diverse and unlikely community – that of former coal miners. The point was not just that these people get a chance to pull themselves out of poverty and unemployment – which they do, and that by itself is a laudable achievement. On top of that, in introducing these individuals to the software development profession, that profession is gaining a much-needed injection of diversity – diversity of thought, and diversity of backgrounds. If 80% of a profession is made up of relatively affluent white males, who chose it because they like playing video games, then that profession cannot escape being limited in its creativity, blinkered in its vision, and lacking in its understanding of the world and the people that live in it. Who would want to work in a limited, blinkered and lacking profession?
Carina Zona‘s talk: the Consequences of an Insightful Algorithm, was a timely and revealing reminder that we writers of algorithms and interpreters of data are not infallible, we are not prescient and we are definitely not precise. Ignoring this fact can lead to “Inadvertent Algorithmic Cruelty” among other faux pas (examples: the mislabeling of images from Nazi concentration camps as children’s playground equipment, or Facebook’s “on this day” feature that invokes the memory of some terrible personal tragedy, with no way to turn it off). Such outrageous algorithmic blunders might have elicited a ranting, righteous screed; but Carina’s delivery was more effective for being measured and empathetic.
This subject matter suggested to me that I should occasionally look beyond the lines of code and ponder other aspects of our profession. But, while I found that refreshing, some of my colleagues who had attended last year expressed disappointment in this year’s content. Last year’s conference was a more code-based focus on craftsmanship, so some people naturally had expectations that this year would be the same. I didn’t mind. In software conferences, just as in our daily software development endeavors, sometimes it is necessary to look up from the IDE, and look out at the world we are attempting to change with lines of code.