Psygrammer ParadoxPosted: January 29, 2011
Into the world of blogging I step…
I want to explore what I suspect is a paradox that I feel affects the world of software development.
The more that an individual programmer or team treats personality and behavior as unimportant the more likely that “people issues” will cause problems.
A Quick Intro
I have been involved with software development for 30+ years. It started out around 1979 at age 14 with programming the TRS-80 in a local Tandy / Radio Shack shop. I wrote in assembly and basic Basic with a tape drive for storage. Since those early days I have been a developer working in many languages, a team leader, a manager of developers, a software architect, an executive in a software business, created a Java API standard, done numerous technical presentations, done sales and marking of software, written web standards, and even tried my hand as CFO! At the same time I’ve been a user and consumer of software; sometimes awesome, sometimes awful. I feel very fortunate to be working through this period in which computing has transformed the world.
While computers have changed our world immensely, people haven’t changed, at least not fundamentally. Programming remains a human activity and so the people issues of programming persist. Of course, people issues are not unique to programming. So…
Why write about human aspects of programming?
People issues are as widespread in programming as they are in other professions and the nature of these issues is not fundamentally different – programmers are people too. Yet, I think there are reasons to blog on programming and behavior.
First, I feel that the software development community in general tends to underestimate the impact of personality and behavior more than other professional groups (which contributes to the paradox above).
Second, I think it is useful to discuss people issues in the context of programming and of specific tasks involved in programming. For example, software design, coding, architecture and testing can each reveal different personality characteristics and interpersonal issues.
Is Programming Different?
I have spent much of my time in software development dealing with people issues (some days it felt like all the time). In discussions over the years with friends and colleagues, with programmers and non-programmers alike, this seems to be a common experience.
There seem to be many people who feel that programmers are a special category when it comes to behavior and people issues. Here’s a couple of theories I’ve heard many times mixed with my own thoughts…
1. Software development has the characteristics of an objective, logical, rational process with elements of innovation or creativity. Hence there are terms like computer science, computer engineering etc. For some, the next logical step is to conclude that personality and behavior should not have a place in creating software.
2. A corollary of this first point is the aspiration for “egoless computing”. This term was coined by Gerald M. Weinberg in his book The Psychology of Computer Programming. The book was first released in 1971 then re-released with commentary in a 1998 Silver Anniversary edition. Reviews say it remains relevant and insightful. I suspect that common use of this term might have diverged from his intention so I’ve ordered the book and eagerly await reading it.
3. [Beware: unsubstantiated generalization to follow...] Software development has a tendency to attract people who are less “people-oriented”. To use current jargon, many feel that some programmers have lower emotional intelligence; that is, less ability to identify, assess, and control the emotions of oneself, of others, and of groups. I haven’t located research on this yet (but want to) so for now I considered it received wisdom.
A Bold Claim
For many individual programmers and software teams, a modest increase in attention to personality and behavior can improve effectiveness, affect the development process positively and result in better outcomes for the software and the people.
As I start this blog it is my challenge to see if this is true. So the purpose of this blog is to create a resource that some people (certainly not all) find useful once in a while. Perhaps it will help think about issues you encounter as a programmer, as a person who works with programmers, as a manager. Perhaps it will catalyze some interesting discussions on the blog, at the office or some place else. If I am very optimistic, perhaps discussion around the blog can help expand the common language for programmers to discuss human issues.
But to be clear, I don’t think that programmers should be obsessive about personality – just that a modestly better understanding can make a positive difference.
Why am I writing?
First, I’m following a golden rule for authors – write about something that interests you.
Second, I am writing because I have much to learn about human behavior, psychology and its application to programming. Through writing and (I hope) interacting with the community I hope to learn a great deal.
So, I am certainly no expert. I have no background in psychology or similar formal training. Plus I am not a role model behavior and I am aware of many of my own negative behaviors that I continue to seek to improve.
I have thought about starting a blog for a while. I started a couple of times but found I wasn’t sure how to express myself. That hasn’t changed but I’ve now realized that it will be the process of writing plus interacting with readers that will get me there. It’s my hope that my thinking on the topic will evolve (and improve) in the coming months and encourage any readers to engage and challenge! (And I hope that there will be at least a few readers too!)
Andrew H – Psygrammer