To describe someone’s work as half-ass is bad. This got me thinking, is full-ass work better or worse? Perhaps full-ass is redundant and the correct usage would just be ass. As in, “you’ve done an ass job!” Still, is an ass job good or bad? And if an ass job is bad, then that would make a no-ass job good. Right?
“There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.”
— Martin Fowler
It seems to me that many folks believe that regardless of the result or the level (or lack) of contribution, everyone’s a winner. For want of a better name, I call this the sticker-and-a-juice-box phenomena. Here’s why.
Jim is a business partner of mine and one of the most committed individuals I’ve ever met. Anyway, several years ago Jim agreed to be the defensive coach for his son’s pee-wee football team, the Panthers.
On a sunny Saturday afternoon in August, the Panthers played the defending pee-wee champs. From the first possession on, the Panthers trailed a bigger, faster opponent. Then late in the forth quarter, the Panthers’ scored to take the lead. With only minutes left, the Panthers were poised to beat the defending champs.
Jim huddled his defense together and began the “coach speech.” They had practiced hard all week. They knew their assignments. All they needed to do was get out there and play hard for one more series — just two more minutes.
But in the heat of a Georgia August, the last two minutes are about neither skill nor training. They are about drive and passion. In the words of my daughter’s soccer coach, “You’ve got to want it.” And that’s when Jim noticed that one of his players, Carson, was still sitting quietly on the bench.
OK, time out here for just a second, lest you think I’ve lost all perspective. Yes, it is just pee-wee football. Yes, the players are only twelve year olds. No, in the grand scheme of things, even in the small scheme of the day, the outcome of the game is not important. The score should not weigh on anyone: loser, winner, parent, player or coach. In fact, I won’t relay any details about the rest of the game — not even the final score because as I said, the outcome of the game is not important. OK, so back to my story.
Jim calls to Carson to huddle up. Carson doesn’t move, he just looks at his feet.
Jim trots over and says, “let’s go son, your team needs you.”
Carson just shakes his head.
“What’s wrong? Are you hurt?” Jim queries with some concern.
“No coach. I’m OK,” Carson finally answers.
“OK then. Let’s go.”
But Carson doesn’t move. Instead he says softly, “It’s hot coach. I’m tired and I don’t want to play anymore.”
“You don’t want to play? Why not? We really need you,” says Jim.
But Carson replies, “Coach, the team doesn’t need me to play.”
“Sure we do,” Jim replies. “You play a key position in our defense. Without you, I’m not sure we can stop them from scoring. See, we really do need you.”
Carson, looks up from the imaginary spot between his feet and answers with a question of his own. “What happens at the end of the game if we win?”
“You know what happens, Carson,” answers Jim. “The same as we’ve done all season. We’ll shake hands with the other team. Afterwards, the boosters (moms) will have a snack and a drink for you. And everyone on the team gets a sticker for their helmet.”
“OK,” says Carson. “But what happens if we loose?”
“We’ll shake hands with the other team. Afterwards, the boosters (moms) will have a snack and a drink. And everyone on the team will get a sticker for their helmet” answers Jim.
“So either way we all get a sticker for our helmet and a juice box, right coach?”
“Yes,” Jim answers.
“See coach,” says Carson. “It’ll be OK. The team doesn’t need me to play because the score doesn’t matter. We get the same either way.”
And that’s what terrifies me. We have de-emphasized the results so much that our children cannot even comprehend winning and loosing? Everyone wins every time. The reward is no longer connected to the result.
We live in a competitive world. I can assure you that the workforce of other nations plays to win — and for keeps. When contracts go overseas, jobs go overseas. When the factory closes, the jobs are gone and they do not come back. At the end day, we can (and should) congratulate our competitors for their successes. But I’ve got some really, really bad news. There’s no sticker for your hard hat. No juice box will be brought to your cube. And in the global economy, there’s no consolation prize for being second best.
Many software development groups, begin with just a few developers. Usually, neither the development process nor tool set is (or should be) formalized. Eventually, as the development teams grows, a degree of formalization becomes necessary. Source code version control is a good place to start. A basic toolkit will also help. In most cases (except for Winmerge really) there are numerous good alternatives. My experience suggests that a myriad of choices may benefit the experienced but can paralyze teams that are just beginning to mature. In that spirt, here is what I would make sure was in place as step one. I find this a workable set but nothing here should be construed as “the only way.”
This is geared towards a windows shop not a linux shop although the basic tool needs still apply.
Here’s my list.
- Subversion (or Git) for source code management
- Winmerge for comparing files and merging changes. Winmerge is open source but only available on windows.
- A full IDE: Eclipse (Java & Perl) or VisualStudio (.Net) – depending on the programming language.
- Notepad++ – you don’t always need an IDE sometimes you just need a great editor
- Agent Ransack for searching for and through files
- A debugger for your programming language
- A profiler for your programming language
One night while we’re getting ready for bed, my child approached me with her sister in tow. “Dad, have we ever sold anything?” she asked.
It seemed to me like a good time for family discussion about economics or for that matter anything that wasn’t about web site updates. I answered with a question. “What do you mean by ‘sell’?”
“You know. To give someone something and get money,” they answered.
I thought it was a good start so I asked, “Does what you sell have to be a thing like a glass of lemonade or could you sell something that you do like wash the car?”
They agreed that if you washed someone’s car and got money in return, then you did sell something but they weren’t quite sure what. I explained that things like cars and lemonade are considered goods and acts like washing the car or mowing the lawn are called services. And we all agreed that the only things that can be sold are in fact goods & services. [Ok, so there are things like wheat futures and options but …]
Next question. “Do you have to get money for the goods & services in order for it to be considered selling?”
“Yes,” she answered, “If you give away the goods and services, then that’s giving not selling.”
“Great point,” I replied. “Giving things away free doesn’t count as selling. But what if you received something other than money? If you got free ice cream for a week, then would that count as selling?”
They looked suspicious at first but ultimately agreed that it would still count as selling. I then continued by saying that selling is only half the picture. In order to actually sell, someone has to buy. But we already agreed the seller doesn’t have to get money for it to be a sale. Then I hit them with all the economic theory I acquired with one macro economics class. “So selling (and buying) are really just an exchange of value.”
“And yes,” I continued quickly before I bored them to sleep. “You have sold things before. Remember last fall when you collected the apples and sold them?”
“That’s right”, said my six year old. The idea of providing someone an apple for ten cents fits her idea of selling far better than my statements about exchanging value.
“OK. But what was the value that you provided?”
“The apples!” they exclaimed.
“Well, not exactly,” I replied. “Who did you sell them to?”
Uncle Jerry is our next door neighbor. Everyone in our neighborhood calls him Uncle Jerry.
“Where did you get the apples?”
“From the back yard.”
“Whose back yard?”
“Uncle Jerry’s, I guess,” offers my nine year old.
“So you just took Uncle Jerry’s apples?” I ask incredulously, although I knew this not to be the case.
“No Dad. Uncle Jerry said it was OK for us to take the apples.”
“Did you gather up all the apples?”
“No. There were lots more on the ground. We only gathered a few of them.”
“Ok. So, with Uncle Jerry’s permission, you gathered a few apples from his back yard and put them in a wagon. Next you wheeled the apples around to Uncle Jerry’s front yard and asked him if he wanted to buy any apples for ten cents each. They were Uncle Jerry’s apples from the tree in his back yard. He knew where you got the apples and he knew that there were lots more apples under the tree. With all of that information what did Uncle Jerry do?”
“He bought the apples.”
“Not really,” I said. “The apples were already his. So what did he buy?”
“He wanted to make you guys happy,” my spouse chimes.
“Oh. I get it!” exclaims my nine year old.
But to be sure, I posed the following. “Each year I buy life insurance but the insurance company only has to pay if I die. What’s the value? It’s not the insurance payment since I have to be dead for the insurance company to pay.”
My older child’s brow knits momentarily and then she says, “I know. You want to take care of us if you die!”
My younger one thinks for a moment and confidently gives her own answer, “Life!”
And there you have it. Next year, I’m doubling my policy. You can’t have too much life!