Friday, May 26, 2017

Advice to New Graduates

It's now graduation season, time to give advice to new graduates entering the world of work. Every few years, I notice the season and republish some old, but still valid, advice I offered my youngest son, many seasons ago.

Letter to My Son, John
(On the occasion of his graduation with a degree in computer science)

Dear John,
I know some of the other fathers are giving their sons BMWs for graduation, but as a fresh computer science graduate, you're probably going to be earning more than I do as a writer.

It's not totally dishonorable being a writer. Last month, when Dani and I were in Hannibal, Missouri, we visited Mark Twain's birthplace. They've made it into a museum, and it seems to attract a lot of tourists.

Before computer scientists came along, writers used to be pretty famous, and some of them even got rich. So save this letter. You may not appreciate the advice, but someday you might be able to donate it to a museum.

On the wall of the museum, under an old photograph of his schoolhouse, was this quotation from one of Twain's letters:

"I was always careful never to let my schooling interfere with my education."

Being an old-timer in computer science myself, I didn't have to be as careful as Mark Twain. When I went to school, there was no such thing as computer science. There wasn't even a computer—unless you count me (that was my job title).

I made 90 cents an hour inverting matrices for the physics department, using a clunky old Friden, paper, pencil, and lots of erasers. No, I'm not going to advise you to complete your education by inverting some 10 by 10 matrices with a Friden. If I wanted to build your character, I'd buy you a hair shirt for graduation.

Subject Matter
I did want to tell you how lucky you were to have such fine schooling as part of your education. I hope that the next stage of your education will be half as good, which it ought to be, if only you can stay out of the trouble I got into when I was a fresh graduate.

The problems I caused myself weren't due to things I didn't learn in my schooling. As another great American humorist, Will Rogers, said, "It's not what you don't know that gets you in trouble, it's what you know that ain't so."

If my experience is any guide, there are a few parts of your schooling you may want to forget before you report for your first job.

The first and easiest thing you'll have to forget is all the specific facts you learned in your technical courses. If you had majored in Greek grammar, or in the history of rural Belgium in the Middle Ages, you wouldn't have to forget all the facts you so patiently memorized. In some subjects, the facts haven't changed in the past few generations, but you certainly can't say that for Computer Science.

Did you ever stop to think why Computer Science graduates are paid so much more than Greek or History majors? Did you think it was because of the scraggly black beard or your long fingernails? Well, it's not.

It's because Computer Science is high technology—and that means the entire subject matter is changing even as you read these words. The history student is being paid a pittance to remember a body of relatively fixed material, but you're being paid that fabulous salary largely because of your ability to keep pace with innumerable rapid changes.

Being a specialist in information processing, you should be able to understand the process that led to the information you found in your textbooks.  A fact that you found in your freshman textbook would be four years old by now even if it was brand new when you were wearing a beanie. But the book was probably two years old or more by that time, which makes it at least six years out of date.

And you also have to consider that a book takes about a year to publish after it is written, and perhaps two years to write in the first place. You can conservatively add another year for the author's inability to keep up with the latest in new technology.

That makes a nice round ten years for the age of the facts you learned as a freshman. It's not much better for what you learned as a senior—and could be worse, because advanced texts take longer to write, longer to publish, and are too expensive to keep updating every couple of years. Just how long is 10 years of computer technology? Well, I read the other day about the resale value of some System 370 models IBM introduced (ten years ago). Back then, they sold for about $3 million. Today, their book value is exactly zero. The big argument is whether to pay people for hauling them away or to call it even for the scrap value.

IBM used quite a bit of gold and silver in the connectors in these models, which accounts for any value they still have. So, unless you're in collecting precious metals, don't start your career in an organization whose computer is ten years old, either. Keep your gold fillings, but forget whatever facts you learned in school.

But don't worry. It's not so hard to forget facts. Psychological studies show that 24 hours after a lecture, you've forgotten half the facts presented. In the succeeding days, this halving process continues unabated.The same thing happens after an exam—as you certainly must have learned by now.

Once in a while, though, in spite of your best efforts to forget everything, something you learned in school will pop into your head. In that case, just keep it to yourself. The last thing you want to do on your new job is to go broadcasting your ignorance to your coworkers. Instead, close your mouth and open your ears. You might learn something that's new to replace the obsolete fact—which is even better than forgetting.

Telling your coworkers about all the facts you learned in school is almost as bad as telling them about your grade point average. I know it's hard to accept—especially after all the emphasis on grades the past 16 years of your life—but now that you've landed a job, nobody is interested in your college grades.

But forgetting your grade point average isn't nearly enough. You must also forget everything you know about grades and grading. Business is not school. You may be "graded" on your job, but it won't be on the same basis you were graded on at school.

For instance, when you wrote that little assembler for ComSci 321, you didn't have time to finish the macro facility. So you turned in a partially finished job for a B-plus.

Or that time the micro you designed for ComSci 442 gave the wrong remainder on floating point division. You took an A-minus and were glad to be rid of the thing.

Those strategies don't work on the job. There are no B-plusses for partially completed projects. And no A-minusses for hardware or software with bugs. On the job, you finish your tasks and you finish them right, or you flunk.

Or maybe you think you can take an Incomplete like you did when you didn't want to stop working on that really interesting flow tracer. Or the time you spaced off the last program in advanced programming. Well, forget Incompletes, too.

Specific Plans
If you have a good boss and you're sufficiently interested in something to want to continue working on it, you'll probably be allowed to do it—on your own time—and only after you've turned in the project as assigned. As far as other reasons for Incompletes, forget them.

If you flunk, you won't have to worry about going in to argue with the boss about getting a higher grade. Your boss will call you in before you get a chance.

But don't waste your time preparing arguments for raising your grade. Instead, prepare specific plans for finishing the project or getting rid of the bugs. And also prepare plans for improving your performance on the next assignment. If you don't there may be no next assignment.

Oh, you're not likely to get fired—not in today's business world. More likely, you'll get trivial assignments—and keep getting them until you can prove you're capable of finishing something correctly and on time.

There are no A and B grades. Only A and B assignments. Your college grade average might earn you an A assignment for your first project, but it will never earn you a second.

I know it's a bit frightening to learn that you must get an A on every assignment, but once you've mastered the art of "cheating," it's not nearly as bad as it sounds. Actually, the sound of the word "cheat" is the biggest barrier you'll have to overcome. I don't mean it in the sense of "cheating on your wife" or "cheating at cards," but more in the sense of "cheating death."

By "cheating," I mean going outside the rules that previously bound your thinking. Some instructors say it's cheating to solve an exam problem using a method that wasn't taught in class, or even by looking up the answer. In fact, some instructors still consider it cheating if you use a computer to help you solve your homework! But on the job, you're being paid to use any method that works.

You've spent the past 16 years of your life learning to play by the teacher's rules. Now you're expected to invent your own rules, and you're going to find it difficult to use "any method that works." But once you manage to forget about teachers and their rules, you'll find that this kind of cheating is as natural as drinking beer on a warm summer day.

More natural, actually. Drinking beer is an acquired taste, but breaking the rules is the natural heritage of every human being. Indeed, our superior cheating ability is what differentiates us human beings from all the other animals.

A fox is supposed to be a cunning hunter, but human beings can outhunt any fox that ever lived. How? By cheating, that's how. They "cheat" by getting other people to help them and by using tools invented by other people. You may not call those things cheating, but they sure look like cheating to the fox.

The reason you don't consider cooperation and use of tools as cheating is that you're a human being, not a fox. Your teachers had to forbid "cheating" in school in order to create an environment for teaching facts (which you'll have to forget) and giving grades (which are now worthless). They had to make you forget, temporarily, the basic ability that makes you human—the ability to cooperate.

On the job, you'd better remember your humanity. You don't sign an "honor code" saying you have neither given nor received help. On the contrary, if your boss sees you never help anyone else, or haven't the brains to ask for help when you don't know something, you'll be severely downgraded. If you do everything from scratch and fail to use the simplest shortcuts you can find, you'll be consider an ox, not a fox.

It's actually not that hard to work effectively with other people, even after all those years of isolation. Outside the classroom, where most learning takes place, you have plenty of practice getting and giving help—study groups, team projects, or just those endless conversations over cold coffee in the Union. You may have thought you were just wasting time, but you were actually practicing for the world of work.

Well, I know that's a lot of stuff to forget in so short a time, but I know you can do it if you set your mind to it. Underneath that schoolboy exterior, there beats the heart and throbs the brain of a real human being.

Before you know it, you'll have forgotten all that schooling and gotten on with the business of your education. Good luck!

Love, Dad.

Saturday, May 13, 2017

Should I apply for a great opportunity & leave my friends?

The questioner asked: "I found a great job opportunity but I'm currently managing a big project. If I leave now I will leave my colleagues in trouble. Should I apply?"

Here's my answer:

One of my sons was in a similar situation a few years ago. His current job was a dead-ender, but he did not want to leave his friends and co-workers in the lurch. To my amazement, he asked me for my opinion on what he should do.

I told him that the best thing he could do for his friends was model the behavior they might lack the courage to do for themselves—namely, leave.

I told him that once he was at this new, better, job, his former co-workers would start calling upon him, looking for jobs. They did exactly that, and he hired a number of them.

As for leaving trouble behind, first of all if you have been a good manager, then they will do just fine in your absence. (If you have not been a good manager, why would you want to stay there, anyway?)

If you have trouble visualizing how those colleagues will miss you, get yourself a bucket of water. Put you hand in the water. Then take out you hand and notice what happens to the hole you left.

for more information, see Do You Want To Be A (Better) Manager?

Tuesday, May 02, 2017

Why I Stopped Being a Professor

Here's a story from The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully:

A few years back, I thought I had grown wise enough to be a college professor. I treasured that illusion for a few weeks—that is, until I came in contact with the students. From then on, it was all downhill. I did struggle for a long time, even presuming to teach a course in systems thinking—as if I had anything to teach. It was the systems thinking class that delivered the coup de grace to my professorial tenure.

Judy had lingered after class to tell me she was transferring to Oberlin College. Judy's quick, teasing wit marked her as someone exceptional, so I was disappointed to be losing her as a disciple.

"It's not so much the school," she comforted me. "My sister goes to Oberlin, and we're very close."

"Is she an older sister or a younger sister?"



"We were born on the same day."

"Aha," I triumphed. As co-discoverer of Weinbergs' Law of Twins, I was now on familiar ground. "You're twins!"

"No, we're not twins."

"Born on the same day, but you're not twins? Are you stepsisters?"

"No, we have the same parents."

"Then you're adopted!"

"No, we have the same biological parents."

"Hmmnh. Born to the same parents, on the same day, and not twins? I'll have to think about that. What am I missing?"

"Think about it. Let's see you apply some of the principles you've been teaching us."

I'll spare you the agonies I endured rather than say the dreaded words, "I don't know. Tell me." By the time the next class rolled around, my eyes were almost as baggy as my trousers.

Apparently Judy had seen the symptoms before. As a pre-med, she couldn't stand the sight of human suffering, so she came up and spoke without forcing me to admit defeat.

"Triplets," she said, and my ego bubble burst. My mind raced through a thousand reasons why the riddle wasn't fair. It would just never do to be bested by this little snippet of a girl. She might lose all respect for higher education. She might behave badly at Oberlin. What would they think of us, sending them such an impertinent student?

"Don't you think that's a little farfetched?" It was the best I could concoct, but I needed time to rationalize.

"How can it be farfetched, Jerry, when I actually am one of triplets?" I should have listened to those other professors. They warned me that letting students use my first name would soon lead to other liberties. And even worse, there were other students watching. Perhaps I could play their sympathies to my advantage.

"Naturally it doesn't seem farfetched to you, but how many of the people here have ever met a triplet before?" I held my breath. No, I had guessed right. None of them knew triplets. "See, it is rather farfetched, at least in that sense of the word."

That should have taught her not to get into semantic arguments with professors, but youth is not wise enough to admit defeat. "I can't accept that reasoning," she continued. "It could be that you've never before met any sisters who weren't twins even though they were born on the same day. But it could also be that you've conveniently forgotten, just to prove your point."

"I certainly wouldn't forget sisters like that, if I'd ever known any."

"I think you would. In fact, I think I can prove that you would. How about a little wager? Would you be willing to put five dollars on it?"

Now I know that no honorable professor would take money from a poor student. But Judy needed a lesson she would remember once she got to Oberlin, otherwise she'd get in a lot of trouble with professors who weren't as broad-minded as I am. "Okay, you're on. And these are our witnesses when the bet is finally settled."

"Oh, that won't take long. We can settle it right now."

"Right now? How can you possibly prove I've met sisters born on the same day to the same parents who weren't twins?"

"Because you've got two such sisters living in your own house!"

"What? In my own house? Don't be ridi—. Arrrgh!"

That was the sound of the air escaping from my over-inflated windbag. At that moment, I decided that laughing at myself was a great deal more fun than being a professor. Besides, I couldn't help myself.

Weinberg's Law of Fetch

I told the story about fifty times that day (even a retiring professor has some privileges). When I arrived home, I just couldn't resist telling Dani. I also told the two sisters, born to the same parents, on the same day, who are not twins. Although they probably didn't fully appreciate the story, Rose and Sweetheart love to bark and wag their tails when they hear us laughing, so they joined in the fun. Because they hear better than they see, and because "fetch" is their favorite game, I composed Weinberg's Law of Fetch:

Sometimes farfetched is only shortsighted.

I did want to call it Weinberg's Law of Triplets, but that would have spoiled the riddle. Besides, Rose and Sweetheart aren't triplets. I believe there were seven in their litter.

So, for more memorable stories with morals to learn, get yourself a copy of

The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully

Wednesday, April 26, 2017

Tiips on writing your first book

I was asked, "What tips can you give to someone who wants to write his first book?"

Don’t worry about it, because the first book is just practice.

Maybe the first few books.

So stop worrying and write your practice book.

If your first book happens to be a success, that’s gravy. You can control whether you win or lose, but you can control whether or not you learn.

Get the book out there and gather feedback. Then use that feedback to improve your writing for the next book Repeat this process a few times and you’ll become a successful writer.

Do you recognize this iterative development process? You should, because writing a successful book is very much like writing a successful program.

In the meantime, if you'd like some help getting that first book finished, read

Saturday, April 15, 2017

Is it challenging to be a writer?

I'm often asked, "Is it challenging to be a writer?"

Knowing how many books and short items I've published, would you be surprised if I answered "No"?

Unlike many people, I would definitely answer "No." For me, NOT being a writer would be challenging.

Here’s another way to think about the “challenge” of writing:

Is it challenging to be a talker?

YES, for some people, but NO for most. You have something to say, so you open your mouth and words come out attempting to convey that “something.”

Now, the same frame for writing, at least as it is to me:

I have something to say, so I sit down by myself and words come out attempting to convey that “something.”

I suppose if I had nothing to convey, then writing would be a challenge. So far that hasn't happened.

If you're about to feel challenged, try reading Weinberg on Writing: the Fieldstone Method 

This book has given thousands of writers creative and useful “things to do” when they’re about to feel challenged.

For one thing, the book is full of exercises that can get you going. In the simplest of all the exercises, all you do is take out your writing instrument (computer, pen, pencil, typewriter, ...) and write the word, "The ". Now you've started writing, so all you need now is to continue. Try it!

Sunday, April 02, 2017

Complexity: Why We Need General Systems Thinking

It isn’t what we don’t know that gives us trouble, it’s what we know that ain’t so. - Will Rogers

The first step to knowledge is the confession of ignorance. We know far, far less about our world than most of us care to confess. Yet confess we must, for the evidences of our ignorance are beginning to mount, and their scale is too large to be ignored!

If it had been possible to photograph the earth from a satellite 150 or 200 years ago, one of the conspicuous features of the planet would have been a belt of green extending 10 degrees or more north and south of the Equator. This green zone was the wet evergreen tropical forest, more commonly known as the tropical rain forest. Two centuries ago it stretched almost unbroken over the lowlands of the humid Tropics of Central and South America, Africa, Southeast Asia and the islands of Indonesia.

... the tropical rain forest is one of the most ancient ecosystems ... it has existed continuously since the Cretaceous period, which ended more than 60 million years ago. Today, however, the rain forest, like most other natural ecosystems, is rapidly changing. ... It is likely that, by the end of this century very little will remain. - Karl Deutsch 

This account may be taken as typical of hundreds filling our books, journals, and newspapers. Will the change be for good or evil? Of that, we can say nothing—that is precisely the problem. The problem is not change itself, for change is ubiquitous. Neither is the problem in the man-made origin of the change, for it is in the nature of man to change his environment. Man’s reordering of the face of the globe will cease only when man himself ceases.

The ancient history of our planet is brimful of stories of those who have ceased to exist, and many of these stories carry the same plot: Those who live by the sword, die by the sword. The very source of success, when carried past a reasonable point, carries the poison of death. In man, success comes from the power that knowledge gives to alter the environment. The problem is to bring that power under control.

In ages past, the knowledge came very slowly, and one man in his life was not likely to see much change other than that wrought by nature. The controlled incorporation of arsenic into copper to make bronze took several thousand years to develop; the substitution of tin for the more dangerous arsenic took another thousand or two. In our modern age, laboratories turn out an alloy a day, or more, with properties made to order. The alloying of metals led to the rise and fall of civilizations, but the changes were too slow to be appreciated. A truer blade meant victory over the invaders, but changes were local and slow enough to be absorbed by a million tiny adjustments without destroying the species. With an alloy a day, we can no longer be sure.

Science and engineering have been the catalysts for the unprecedented speed and magnitude of change. The physicist shows us how to harness the power of the nucleus; the chemist shows us how to increase the quantity of our food; the geneticist shows us how to improve the quality of our children. But science and engineering have been unable to keep pace with the second-order effects produced by their first-order victories. The excess heat from the nuclear generator alters the spawning pattern of fish, and, before adjustments can be made, other species have produced irreversible changes in the ecology of the river and its borders. The pesticide eliminates one insect only to the advantage of others that may be worse, or the herbicide clears the rain forest for farming, but the resulting soil changes make the land less productive than it was before. And of what we are doing to our progeny, we still have only ghastly hints.

Some have said the general systems movement was born out of the failures of science, but it would be more accurate to say the general systems approach is needed because science has been such a success. Science and technology have colonized the planet, and nothing in our lives is untouched. In this changing, they have revealed a complexity with which they are not prepared to deal. The general systems movement has taken up the task of helping scientists unravel complexity, technologists to master it, and others to learn to live with it.

In this book, we begin the task of introducing general systems thinking to those audiences. Because general systems is a child of science, we shall start by examining science from a general systems point of view. Thus prepared, we shall try to give an overview of what the general systems approach is, in relation to science. Then we begin the task in earnest by devoting ourselves to many questions of observation and experiment in a much wider context. 

And then, having laboriously purged our minds and hearts of “things we know that ain’t so,” we shall be ready to map out our future general systems tasks, tasks whose elaboration lies beyond the scope of this small book.

[Thus begins the classic, An Introduction to General Systems Thinking]

Sunday, March 12, 2017

Classifying Errors

I received an email the other day from Giorgio Valoti in Italy, but when I wrote a response, it bounced back with "recipient unknown." It may have been a transient error, but it made me think that others besides Giorgio might be interested in discussing the issue of classifying errors, so I'll put my answer here and hope Giorgio will see it.

Here's the letter: 

Dear Mr. Weinberg,
My problem is that I’m looking for good way — maybe a standard, more likely a set of guidelines — to classify and put a some kind of label on software defects.

Is there such a thing? Does it even make sense trying to classify software defects?
And here's my reply:

Hello, Giorgio

It can certainly make sense to classify errors/defects, but there are many ways to classify, depending on what you're trying to accomplish. So, that's where you start, by answering "What's my purpose in classifying?"

For instance, here are a few ways my clients have classified errors, and for what purposes:

- cost to fix: to estimate future costs

- costs to customers: to estimate impact on product sales, or product market penetration

- place of origin in the development cycle: to decide where to concentrate quality efforts

- type of activity that led to the error: to improve the training of developers

- type of activity that led to detecting the error: to improve the training of testers

- number of places that had to be fixed to correct the error: to estimate the quality of the design

- and so on and on

I hope this helps ... and thanks for asking.

--------------end of letter-----------

As the letter says, there are numerous ways to classify errors, so I think my readers would love to read about some other ways from other readers. Care to comment?