For novel ideas about building embedded systems (both hardware and firmware), join the 35,000 engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.
I'll present my Better Firmware Faster seminar in Melbourne and Perth, Australia February 20 and 26th. All are invited. More info here. The early registration discount ends January 20.
By Jack Ganssle
15 years ago a single mom whom we have long been close gave up on her 17 year old daughter. Teenaged girls are tough, but Joey had her mom totally exasperated; the girl followed no rules, mouthed off constantly, and made it nearly impossible for mom to take care of the two other kids. We offered to take Joey in, and obtained legal guardianship.
Alas, little did we know just how hard things could get. Joey, it turns out, was pregnant. Her mom snuck her out of our house for an abortion without our knowledge, and tried to slip her back in a few hours later. Then her boyfriend slugged her. Later he broke her arm. I went to our lawyer to press charges, but Bob took me aside and said: "Look, in two weeks Joey will be feeling sorry for the boy and won't go through with the case." That was inconceivable to me and I told him we wanted justice. Turns out Bob predicted her reaction perfectly, but as the parent-figure I overruled her immature sympathies and eventually the moron of a boyfriend served a year in jail.
Things went downhill from there.
A year later, at our wits end, we convinced her to join the Air Force. Today, Joey is the mother of three, happily married, still in the service, and has shed all vestige of those long-ago problems. The military saved her in a way we could not, by imposing a rigid discipline that brooked no transgressions, and that kept her doing the right things the right ways.
Then there's Jeremy, the 20 year old pal of my middle son. He's so bright I'm sometimes astonished by his insight into the nature of technology and science. Yet he dropped out of high school and only recently, if he's to be believed (not always wise), has gotten a GED. Also the product of a single-parent family, also more or less abandoned by mom, Jeremy now drifts from crummy job to crummy job, doing lawn maintenance one week and automotive audio installations the next. Yet he has the soul of an engineer. Despite my repeated urgings, which he does take as coming from a friend rather than from a parental figure, he seems unable to start doing anything that might have some long-term benefit. When he expressed an interest in going to a community college I offered to write the checks. But the benefits of college are years away, and his girlfriend wants attention today. The car payment was due yesterday. And his pals are off having fun now. why shouldn't he?
Famous author Ernest K. Gann in his fascinating autobiography "A Hostage to Fortune" notes that writing was the hardest thing he ever did. At times, to insure he stayed in the office focused on putting a certain number of words on paper each day, he'd literally tie himself into the chair! Gann succeeded because he used this and other strategies to discipline himself to do the right thing at the right time. The Air Force did this for Joey, and I keep searching for something to help poor Jeremy find the same sort of success strategy.
After 12 years of Catholic education under nuns who wielded corporal punishment with seemingly savage delight and rigorous Jesuits whose had an unbending stance on, well, everything, I entered adulthood abhorring the word "discipline." Yet life's never-dull twists and turns have convinced me that discipline is indeed a critical component of getting anything done in a consistent manner. Woody Allen said that 90% of success in life is just showing up. Too often even showing up - which I take as a metaphor for being there and simply doing the right things - is more discipline than many can muster.
In software engineering discipline is even more important than in most other professions. We build intricately complex systems which are invisible; no one can "see under the hood" to get a sense of how well the system was constructed. Other kinds of engineers are held accountable by customers who can see that the system looks like junk. Not so with code. Only engineers who are highly disciplined can consistently construct software of beauty that's well-behaved.
Discipline. It's not just for the Jesuits or the military. None of us like it, but I think it's the most important tool in our arsenal.