Wednesday, August 30, 2017

How Does One Manage an Incompetent Manager?

How Does One Manage an Incompetent Manager?

The questioner does not say whether the manager's is their boss or employee, but I'll answer assuming they're the employee. If they're the boss, they should manage the same way they would manage any of their employees who is not competent to do the job they're paid for.

This is not just one question because there are quite a few different breeds of incompetent managers. To take just two examples, some are incompetent because they don’t interact with their employees at all, while others micromanage with a vengeance. It seems clear that you’d want to handle each situation in its own unique way.

If your manager is invisible, leaving you alone, just be thankful and go about your business. Believe me, you’re lucky.

For me, the first step in managing a micro-manager is to leave. Find another job, with different manager. A better one.

As for other managerial symptoms of incompetence, you can try working with the manager as one person to another, but realize that this amounts to taking on a second job. If you’re not a a trained psychologist, you might be better just leaving this one alone.

But if you decide you have the skills to manage your manager, do it the way a competent manager would. That is, concentrate on the question, “How is this manager interfering with the work we are being paid to do?” If their incompetence isn’t interfering in a significant way, maybe offer a bit of feedback, but only once, and then get on with your paying job.

In many cases, someone you perceive as incompetent can be a lot easier to live with than to fix. They may not even be as incompetent as you believe.

But if you're seeking advice on a particular pattern of incompetence, write me a note or comment. I will try to help you with specific actions to take.

Oh, and by the way, if you’re neither this manager’s boss or employee, then it’s none of your business, so just leave it alone. There are more incompetent managers in the world than you can possibly cure.

Here's a couple of books you might find helpful:

Sunday, August 27, 2017

Am I Boring, and What Can I Do About It?

I was asked, "Am I boring, and what can I do about it?"

The questioner explained, "Everything I have to say seems boring or unimportant. When I talk about my feelings it seems like I'm complaining or too complicated for others to understand. I don't feel like talking to anyone anymore. What should I do?"

I’ve heard this complaint many times, and much of the time, the person’s problem is not talking, but listening.

I advised him to devote some attention to what the others are saying to him and around him. Often they are trying to tell him why they seem bored, but he's not paying attention (which is a common symptom of “boring” people).

So I had him work on his listening for while and see what happened. He discovered some startling changes.

If you think you're boring people, maybe you’ll want to read

p.s. BTW, his question itself seems like he's complaining, and it may be too complicated for others to understand. As an exercise in learning to be less boring, try rewriting it so it’s not complaining and far less complicated.

Wednesday, August 23, 2017

Basic skills of a good programmer?

Many outstanding programmers were asked, "What are the basic skills required to be a good programmer?" Lots of good and useful answers were given to this question, such as, test before coding, use a particular tool, or use Agile methods.

For me, though, with more than 60 years of programming experience, the one thing that made me a better programmer was my ability and willingness to examine myself critically and do something about my shortcomings. And, after 60 years, I'm still doing that. You could say it's incremental development applied to myself.

I also examine my strengths (long-comings?) because I know that my greatest strengths can quickly become my greatest weaknesses.

For instance, one of my great strengths as a programmer was speed. If something had to be done quickly, I was the guy to do it. But the weakness in my speed was my tendency to omit the last few hours of testing that would make the project rock solid. I had to learn the importance of taking the time to do a precision job.

Many programmers do examine themselves critically, but then they work to improve their greatest strengths, to the exclusion of their weaknesses. That practice takes them a certain distance, but the nature of computers is to limit your ability, by highlighting your greatest weaknesses. 

A computer is like a mirror of your mind that brightly reflects all your poorest thinking. To become a better programmer, you have to look in that mirror with clear eyes and see what it's telling you about yourself.

Armed with that information about yourself, you can then select the most useful external things to work on. Those things will be different for you than for anyone else, because your shortcomings and strengths will be unique to you, so advice from others will often miss the mark.

Good programmers make good use of their best tools, and you are your best tool, so sharpen yourself.

See, for example, 

Tuesday, August 15, 2017

Must a Developer Know the Language?

We were asked, "Have you ever applied for a software developer job where you didn't know the language?"

My story is not exactly the same as others might have, for several reasons, but I think it does answer the question.

There are two phases to my story. My first job developing software was at IBM, in 1956. At that time, I didn’t know any programming language, largely because there really weren’t any languages other than machine code. So, I spent two weeks in a closet learning my first computer language.

Actually, it was three languages at once: machine codes for the IBM 704 and 650, plus the wired “language” for the IBM 607.

The second phase of my story takes place some years later, when I became a consultant. In that role, I have helped many, many clients who were using languages I didn’t know—even though I knew quite a few by that time, including LISP, Smalltalk, APL, PL/I, COBOL, FORTRAN, C, Pascal, Simula, several home-grown special application languages, and the machine code for the IBM 7090, 1410, 705, STRETCH, Dec’s PDP-1 and a few other machines. I had also studied in a bookish way quite a few other machines while doing competitive analyses for IBM.

I was able to help those clients largely because their problems seldom had much to do with the details of their chosen language(s). Instead, they were people problems of all sorts. The problems that did wind up with a language embodiment were usually easy to spot using my general knowledge of computer languages and typical errors people made in using them. That’s why I’ve always insisted that professional developers should know at least a handful of different language.

I think there's an analogy here with the term "mathematical maturity," something we might call "programming maturity." Here's how Wikipedia defines mathematical maturity:

Mathematical maturity is an informal term used by mathematicians to refer to a mixture of mathematical experience and insight that cannot be directly taught. Instead, it comes from repeated exposure to mathematical concepts. It is a gauge of mathematics student's erudition in mathematical structures and methods.

For instance, a mature mathematician is able to transcend notational differences, unlike my tutorial student who flunked algebra because he had learned to "solve for x," but said, "You didn't teach me to solve for y."

We could easily use most of those words to define "programming maturity," the ability that allows you to succeed in a developer job using a language in which you have no previous experience.

Monday, August 07, 2017

How Stressful is Software Engineering?

We were asked, "How Stressful is Software Engineering on Average?"

First of all, be clear. *Average* stress is not what an individual should be concerned about. Your concern should be about stress in your particular environment.

Second, you may be confused because of the widespread misuse of the word “stress.” Physicists say “stress” when they speak of applied forces. 

The way a system responds to those forces is called “strain.”

When you are the system subject to stress, you are a human being, not an inert piece of material. Therefore, you can learn to adjust the amount of strain you experience from the stresses in your environment.

Two people working in the same environment can experience widely different strains.

One person can be destroyed by a “stressful” environment while another can be inspired to work miracles. It’s your choice. Instead of worrying about the stress of your environment, work on the strained ways in which you respond to that environment.

Don’t be a victim.

Wednesday, August 02, 2017

Writing without the letter "A"

We were tested to see if we could write blog entries without the letter "A"

Of course we could write them. We could write lots of them. Indeed, I use this exercise in my writing courses, not just with the letter mentioned, but with every letter in English. Try it. Your writing will improve.

By the bye, some people wrote whole books without the letter E.
Weinberg on Writing
Try this test. Choose some letter, some difficult letter. Post some whole blog comment without using your letter.

If you would like to improve your writing, try

Oh, look. I unconsciously wrote the book title without the forbidden letter. It must be some terrific book. Multi-published reviewers think so:

"Don't write your book–build it with Weinberg's Fieldstone Method." - D. Poynter, writer of The Self-Publishing Manual 
"It's changed how I intend to write my next book." - P. D., children's writer
"Buy this book. Work through the exercises…" J.R., techie writer