Some programming links and reading

On loving what you do and practice

I love what I do. That doesn’t mean I don’t recognize it as hard work – but I do believe I am one of the few lucky ones who has found a career that challenges, excites, and pays the bills. I repeat however – it is hard work. There are no free rides in life. You need to work at what you do in order to be a success at it.

Coding Horror: Programming: Love It or Leave It and the thread at Joel on Software that inspired the post – “Thinking of leaving the industry”.

Tim O’Reilly: Hard Work and Practice in Programming – an email thread discussion about programming, learning, and practice. via rc3.org.

On constructive criticism and feedback

ThousandtyOne!: Leadership, Constructive Criticism And Not Playing The Blame Game:

In the world of software development most managers are taught the blame game, right when they are young and budding management students, business analysts or programmers taking their first fumbling steps at managing a team. For most managers, blaming the process, an individual’s incompetence or the whole team’s incompetence is an easy excuse for all failures; including theirs. I’ve hardly ever seen managers personally attached to team members, spending genuine effort in trying to help them find their core competencies and coming forward to blatantly own up failures and take responsibility when things don’t work out.

I’ve hardly ever seen managers lending constructive one on one direct verbal criticism followed by genuine help. I’m not talking about a generalized you-need-to-get-better-at-coding-email followed by be-careful-next-time-email followed by I-am-going-home-but-check-in-the-code-and-email-me-the-status-as-soon-as-possible kind of criticism here.

I’m talking about the blatant and precise your-use-of-object-orientation-in-the-administration-module-sucks said with empathy, followed by a joke, followed by lets-go-out-for-a-cup-of-coffee, followed by lets-stay-late-and-refractor-together kind of constructive criticism. Or for that matter, let’s-meet-during-the-weekend-and-fix-this kind of constructive criticism; and that dear reader, irrespective of what they tell you, is not a waste of your time; it’s what you were hired to do; especially If you were hired to lead a team. If you weren’t specifically hired to do that, I suggest that you do it anyways.

If you work with a team, don’t criticize ruthlessly; if you lead a team don’t play the blame game; and remember, it doesn’t matter what they teach you in management schools or tell you at your workplace, if your project isn’t cruising along successfully, it’s always your fault.

If you must criticize, do so constructively, followed by empathy, followed by genuine help. I can’t teach you how to do that. What I can do, however, dear reader, is end this post abruptly and rather dramatically, leaving you with words of wisdom worth pondering on, from one of my all time favorite movies. Here’s Wishing you, good leadership, healthy teams and a good life.

Jonathan Lange: Your Code Sucks and I Hate You: The Social Dynamics of Code Reviews:

Code reviews provide an amazing opportunity to grow as a programmer and to improve the software we make. There are many choices that a project can make about how reviews are done and what they can achieve. By thinking carefully about how technologies and processes affect the basic human interactions involved in code review, open source projects can avoid traps that scare off newcomers or wear down longstanding contributors and instead focus on building the best software possible.

Some unrelated additional links

devChix: Beautiful Python: The programming language that taught me how to love again

Software for Civic Life: An Interview with Mike Mathieu of Frontseat.org