Do you feel confident? Try this quick 2 minute Test of Confidence before continuing.
One of the first pieces I wrote in this blog, The Flow – Programming in Ecstasy, explored the factors that help us get into The Zone. Most writing on this topic emphasizes the need for silence and lack of distractions. While that is important, I learned of other important factors beyond the ability to concentrate: serenity (the absence of worries), direction (a sufficiently defined task and path to progress), confidence (to accomplish the task) and competence (again, to accomplish the task).
The last two factors, Confidence and Competence, weave their way through most articles I have written. Despite confidence and competence being different in reality they are often confused. So confidence and competence deserve some focus in their own right.
Warning: this blog includes actual codes of ethics. Reading codes of ethics may result in drowsiness. Do not read this blog while driving or operating heavy machinery.
Last week’s psygrammer post, Sharing Benefits Increases Cheating, was a glimpse on how people make (un-)ethical judgements and creating a working environment that fosters ethical behavior. As I reflected on that post I realized that ethics was rarely an explicit part of my working environment: no employer had a code of ethics (that I knew about) and it was rarely a direct topic of conversation in the workplace. Sure, I faced many ethical dilemmas and I feel that I have sought to act ethically throughout my career. But what are the ethical principles that I am supposed to uphold? Will it make it easier to recognize ethical dilemmas and make ethical choices if I know the individual “ethical lemmas“?
Today’s post is a thought bubble on honesty and cheating in the workplace following two articles I read recently. The first is an interesting report on how people are more likely to cheat if the benefits of that cheating are shared with another person, even with an anonymous stranger. The likelihood of behaving dishonestly doubled (21% to 43%) when participants could point to another’s benefit from their own unethical behavior.
The report was based on experiments involving word games and other online activities in which the researchers left opportunities for participants to over-report their performance. Splitting the benefits of cheating was considered less unethical by participants than taking the benefits all for themselves.
I think we are all entitled to some basics in our working environment; to be rewarded fairly for our contributions, to work safely, to be allowed to act ethically, amongst others. There are some people who, however, hold an exaggerated sense of entitlement. They might feel they have a right to be given things which others believe should be obtained through effort. They expect favorable treatment. They can expect others to automatically comply with their wishes. Working with or managing the entitled can be demanding for colleagues and managers alike.
Where the sense of entitlement is greater we are talking about narcissism. Narcissist behaviors can be particularly difficult to deal with. From my own experience and from researching on this article I have heard many stories of the destructive impact that narcissists can have on colleagues, managers, teams and even entire businesses.
How do you recognize and deal with somebody who lives with a sense of entitlement or has a narcissistic personality disorder?
As the cliché goes, there are few certainties in life. For programmers, bugs are one of the certainties. How we react to bugs matters.
There are plenty methodologies, processes and technologies that deal with bugs. These are all important and are widely written about.
I think that programmers also benefit from a better understanding of behavioral and emotional responses to bugs. These responses can lie close to the surface and affect the performance of individuals and teams. This post looks at both constructive and negative responses to bugs as a kind of “field guide” to identifying these behaviors in yourself and others.
Here’s a story I have heard many times about programmers.
“I asked Joe to write a simple bit of code to do <xyz>. It should have taken a few hours, maybe a day at worst. He took several days, he wrote a general framework that was far more complicated than we needed. Why does he keep over-engineering his code?”
It could be that Joe is an Abstract Oriented Programmer. Here’s a few snowclones…
If you often over-engineer your software, you might just be an Abstract Oriented Programmer.
If you spend more time thinking about tomorrow’s problems than today’s, you might just be an Abstract Oriented Programmer.
If you love looking for deeper patterns, get thrills from unconscious insight or talk in analogies, you might just be an Abstract Oriented Programmer.
In writing the last blog on motivation my mind was drawn repeatedly to thoughts about performance. After all, motivational techniques are primarily about boosting performance. But as I put “pen to paper” for this blog it turned out harder to write than I expected. Human performance is a squiggy topic but unquestionably important.
I start out with some classic performance curves that apply to factories, motors and other mechanical systems. Next I move to the human performance curve and then consider the large variability of the performance of programmers, the Elo rating system for rating chess players and musing on its relevance to programming. I close with sage advice to programmers from Captain Barbossa and Dirty Harry (who, as far I know, are not fictional programmers).