Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

What Kind Of Programmer Are You?

by jcwren (Prior)
on Feb 11, 2001 at 01:47 UTC ( #57670=perlmeditation: print w/replies, xml ) Need Help??

I was talking with a friend/old employer of mine a couple of days ago, and he reminded me about an incident where someone misinterpeted some of my often dry, sarcastic (attempt at) humor.

While I never *really* believed that my code was flawless, I used to convey the attitude of "What?!? You think found a bug? What were you doing wrong?" Apparently, more than once, this was interpeted as severe arrogance on my part.

Now, truth be told, since I was writing device drivers and embedded code, I often was finding design flaws or limitations in the hardware. And I've always been willing to accomodate hardware changes in the code, since the code is much more malleable than physical hardware. More than one hardware engineer has been amazed when I would volunteer to add this or that in code, rather than adding hardware (apparently, the software engineers before me were notorious for being difficult about that kind of thing. Even flipping the polarity of an input required a one week conference, and much whining and gnashing of teeth.).

But, even so, I was being misread. Now, I'm normally not that difficult a guy to work with. I'm usually pretty quick to come up with a functional solution, and willing to change code right then and there to prove that some idea may work or not. And if I have to change a protocol to work with someone elses code (particularly if that person is slower to make changes), I'll change my end if at all possible, so we can get product out the door, and get paid (this didn't always work at Hayes Microcomputers)

These days, I still joke occasionally that "It can't possibly be my code, *I* wrote it", but I've found that it's much more effective to be self-depreciating about it. "You found a bug? Only 1? Are you even using this stuff?", things like that.

What have I found? That people accept that a lot more readibly. My experience has shown me that it's better to readily admit that it's your fault (even if it's not), show that it's not your code, or fix it in very short order, and develop a reputation as someone who can turn around a working fix in a matter of minutes (This was more my reputation at Hayes. "Let me get back to you tommorrow.", and come back in 30 minutes with a new build.)

Some might want to label such a learning experience as maturing. For that argument to work, one has to make a distinction between merely getting older, and getting more mature. I've met very mature 20 year olds, and very immature 45 year olds. So while perhaps it is maturing, it's in no way inherently linked to age.

So how do people perceive you? Are you someone willing to make a change, or do you claim it'll take three hours to fix a mispelled word on a menu (I worked with a guy like that). Do you immediately deny that it's your problem, or immediately offer to look in to it? Do you help out other people, just because it's an interesting problem, or if you're work is done, do you just sit and surf the 'net?


e-mail jcwren

Replies are listed 'Best First'.
Re: What Kind Of Programmer Are You?
by Trimbach (Curate) on Feb 11, 2001 at 04:04 UTC
    I think the obvious answer is humility... I mean, who really wants to deal with a smartass? But in a broader context you'll go farther I think if you remember that no matter how sublime your code is, no matter how brilliant you personnally may be, the only thing that really matters is that your program does the job it's supposed to. Solving the problem is what's important.

    I spend about a third of my time providing programming support to over 100 non-programmers. Lots of times I have the skills to solve problems that these people encounter, but I absolutely rely on them to tell me what problems need to be solved. My relationship with them is critical: so long as I'm viewed as "that guy who fixes things" everything is wonderful. But if I copped an attitude, or didn't deliver on my promises, or snapped at people when they changed their mind, they wouldn't come to me, and their problems would still be, well, a problem.

    It's really customer service, I guess. And yeah, I was once told that adding a single line of text to a single web page was "non-trivial" and ended up taking 6 weeks (!!!) so I know what pinheads are like. But that sort of attitude doesn't do anyone any good, and it certainly doesn't solve anything.

    Gary Blackburn
    Trained Killer

Re (tilly) 1: What Kind Of Programmer Are You?
by tilly (Archbishop) on Feb 11, 2001 at 02:25 UTC
    Do you help out people just because it is an interesting problem...?

    Do you have to ask? :-)

    I have to strongly second the suggestion that being willing to admit to being ignorant or wrong up front leads to more respect down the road. In a sane environment people don't care so much about blame as they do about having things work. This is not always true. But where it is wrong and CYA is needed, the best way to CYA may be to leave...

      WARNING: admitting your fault may also lead people to believe that it is ALWAYS your fault. When I used to work in a factory I drove a forklift and would occasionally run into something (like a computer monitor.) I would admit my guilt upfront. Since no one else would admit their mistakes, this led to me being blamed (by the people responsible?) for every forklift accident in the plant, including the ones that happened during my days off. Is there a moral to this story? Have I learned? Nope, I have recently been chided for being too defensive. I have discovered that I am NOT a "people person" so now I just shut up and study at my desk during my downtime, in hopes of a better future; preferably in my own office with the only way people can find me is through email or ICQ.
Re: What Kind Of Programmer Are You?
by mothra (Hermit) on Feb 11, 2001 at 07:43 UTC
    So how do people perceive you? Are you someone willing to make a change, or do you claim it'll take three hours to fix a mispelled word on a menu (I worked with a guy like that).

    Well...I think people percieve me as the newbie I am, unfortunately. I certainly wouldn't claim to take 3 hours to fix a misspelled word on a menu, but it might take me a lot longer to complete a task than the guy next to me who has 2+ years experience in The Industry(TM). Of course, something like that would never take 3 hours. :)

    Do you immediately deny that it's your problem, or immediately offer to look in to it?

    Well, there are two programmers working on the project I'm involved with: me and my supervisor. We know fairly quickly who made what mistake, so "denial" doesn't help (and is so unhackerly anyways :). I look at the problem and fix it as fast as I can.

    Do you help out other people, just because it's an interesting problem, or if you're work is done, do you just sit and surf the 'net?

    Well...unfortunately, every other programmer in the office has 2+ years of experience, so I'm never approached for help. I'm usually the one who does the asking! Unfortunately, I must confess that I used to spend too much time surfing (hmmm...I wonder where? :) This was due in large part to the fact that my job is very much NOT what I was hoping to get into when I finished school, and so my interest in it was and still is fairly low (Powerbuilder..blahhh, why can't I be a SysAdmin or ANY kind of Perl programmer? :).

    That said though, I don't surf the net anymore, because I realize that in the end, I won't learn anything by doing too much of that. I want to someday be the programmer that people look to for answers, and will trust my technical accuracy.

Re: What Kind Of Programmer Are You?
by sierrathedog04 (Hermit) on Feb 11, 2001 at 02:11 UTC
    I avoid blaming anyone else. Even if it is their fault. I have found that in the past some errors which I thought were in another piece of code were actually in my own.

    I think that what users really want to hear is "I will fix it" not whose fault it is.

Re: What Kind Of Programmer Are You?
by extremely (Priest) on Feb 11, 2001 at 02:51 UTC
    I try and put off a "I'm a genius and so lesser bugs are YOUR problem" vibe but it never works. Actually a nice mix between self-deprecating humor and epic hubris has served me well. (and a LOT of sarcasm...)

    $you = new YOU;
    honk() if $you->love(perl)

What people think of me.
by gryng (Hermit) on Feb 11, 2001 at 23:10 UTC
    jcwren, I think your point on people often misunderstanding your intentions, that is thinking you are arrogant when you are either being pragmatic or jovial, is often the case in any work environment (and real life as well). And I also think that joee's comment about forklifts is revealing that you can be misunderstood in the opposite manner as well (presenting a good side, being turned into a bad side instead of vice versa).

    But, while this affects all people, I don't think it concerns me in the slightest. Hmm let me explain :) , I mean that for me personally I do not look at work or other social environments as places of competition. I also do not choose to make many friends, both at work and otherwise (which is entirely separate from being friendly). My goal is to satisfy my responsibilities to people, especially my friends. But foremost, I wish to enjoy it.

    I do not find worrying about what other people think or mis-think about me enjoyable. Nor do I worry what my boss thinks, in terms of promotion, etc. . For those who are my friends I would like them to understand me in this way, so that when I do make a sarcastic comment (such as crazyinsomniac's "I am God, muwahahaha!"), -they- will not misunderstand me.

    I can only hope that my general attitude will not be misunderstood by all others, but this does not restrain me much -- especially in the goal of enjoyment :) (for example, at our cubic-farm office, I enjoy facilitating inter-office communication by jumping on top of desks, regardless of whom is present).

    Hmm, for some reason I feel I haven't explained myself properly, so please excuse me. (My only excuse is that I have just woken up, a very poor one).

    Welp, take care in anycase.


Re: What Kind Of Programmer Are You?
by cajun (Chaplain) on Feb 12, 2001 at 08:51 UTC
    Very interesting thread jcwren !

    Several years ago when I was coding, I took the attitude for the most part, that "What a mistake in MY code ??" "No Way".

    After getting older, but not necessarily wiser, I've since learned what works best for me is to tell the user to "show me what it is doing". This way, you're not admitting anything, nor are you denying anything. You shouldn't be frowned upon for not wanting to be helpful as you're actively investigating the problem with the user. Quite often I've found either they are trying to do something that was not intended, stupid user tricks, or they actually did find a bug. What ever the result, I either patiently explain to them the error of their ways (while silently having other thoughts) or I ask them to give me a few minutes to resolve the problem. YMMV...

      After getting older, but not necessarily wiser, I've since learned what works best for me is to tell the user to "show me what it is doing". This way, you're not admitting anything, nor are you denying anything.

      A very sage piece of advice
      I'm into my second decade of programming and engineering. And a few things still stand true:
    • the basic defect rate is still around one error per hundred lines of code.
      Industrial strength testing and review will get about 99% of those, which means each year of coding I leave about one real bug. Somewhere.
    • Engineers are socially inept.
      Conjugate buggy: my design is perfect; your design is interesting; his design is broken; their design is crap.
(redmist) Re: What Kind Of Programmer Are You?
by redmist (Deacon) on Feb 11, 2001 at 07:24 UTC

    I work on the premise of, "Fuck 'em if they can't take a joke." I try to make fun of myself as much as anyone else. If you can't you are just gonna crack someday. If there is a problem, it's probably my fault anyway.

    Silicon Cowboy
      I like the cut of your jib redmist.

      It has been my experience though, that my code worked correctly most of the time, that is if used correctly.

      I generally don't screw up that much, not that I am being smug, even though I like to jump up and dance when things work and shout "I am God, muwahahaha!".

      If things do go wrong, it's usually because of miscommunication, or because of unrequested features. IE the specs were incomplete or outdated, or, the code was being used wrong.

      However, when I am wrong, I am pretty self-deprecating, and expect to get 'burned' by fellow programmers real good(usually cause I burned them the day before).

      Code and let code.

      "Disclaimer: Don't blame, it came from inside the void"
      #--------------------------------------------- crazyinsomniac

Re: What Kind Of Programmer Are You?
by jepri (Parson) on Feb 12, 2001 at 04:13 UTC
    When my friends and I exchange code we do make all kinds of comments that would be arrogant if we didn't understand each other so well. But we have ten years of shared history, so we do.

    However I have learned to be careful about admitting my mistakes around others, especially management. When you get some tonka who has never had to turn out any code, or in fact do anything useful with his life, even simple statements like "Ooops, my bad, I'll fix it now" can turn into big black marks in your performance review. I have recently been in a situation that illustrates this clearly.

    In our office there is a machine set up to be like the customers machine. It runs complicated mix of Oracle, 3rd party server apps, and 3rd party client software (in the sense that it connected to the server, not that it was written by the client). The database I was using was an old image of the customers data. The machine was a test machine with test data. Completely redundant and not being used for anything important. I was under the impression that everyone in the office knew this. I was told to upgrade it with the new version of the 3rd party software in preparation for the customers site upgrade. During the course of the upgrade, something went wrong. The (redundant) database became corrupted, the client software wouldn't connect to the server, etc. A complete mess which I finally decided was unrecoverable. No worries, we have the originals of everything somewhere in the office so I went a-hunting.

    However in the course of the hunt for the software I had to explain why I needed it to a number of people. I finally ended up explaining it to my boss, but I gave him the abbreviated version ("I fscked the database, need to reinstall it"). I later discovered that I had been about to get into heaps of trouble for "destroying the database" until a cluey management-type person stepped in and explained what I assume everyone here would have figured out from the beginning - the test machine was there to be abused so that I would know everything necessary when we went to do the important upgrade (the clients 'production' machine).

    Possibly I should have spent a lot more time explaining the situation to my boss, but since he's the one who told me to upgrade the test machine in the first place, you'd think he'd understand the situation.

    The moral of the story (for me)? Admitting your mistakes might ok when dealing with co-workers, but you can't show weakness to the management, even for a moment.

    I didn't believe in evil until I dated it.

Re: What Kind Of Programmer Are You?
by LD2 (Curate) on Feb 11, 2001 at 06:55 UTC
    I think it's always best to probably look at the code, before you deny anything that there may or may not be a problem (even if it could have been user error). It's easy enough to see if it was the code. If it was, fix it asap - and if it's not.. show the user or whoever spotted the problem how to use the program or see how they used it to create the error. To have an attitude about one's code can be alright, but often not just causes a problem in communication down the road.
Re: What Kind Of Programmer Are You?
by lachoy (Parson) on Feb 12, 2001 at 23:42 UTC

    As usual, one of my favorite books The Pragmatic Programmer has some smart words to say about this. Check out "The Cat Ate My Source Code" in Chapter 1, which provides the tip: "Provide Options, Don't Make Lame Excuses." (There's also a funny anecdote elsewhere in the book about a programmer becoming convinced that the OS function select must be broken, because his code, of course, worked perfectly.)

    I find it important to remember from time to time that my job involves building software for people, and if person after person doesn't understand what I'm doing or what I've produced then the problem is more likely to be with me, not everyone else.


    M-x auto-bs-mode

Re: What Kind Of Programmer Are You?
by batmonk (Scribe) on Feb 12, 2001 at 00:46 UTC
    I try to be honest about my limitations.

    If I make a mistake; I admit it. If it's not my mistake, I try to avoid making a big deal out of it because there's no sense in upsetting someone else. You never know who's going to have a fragile ego.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://57670]
Approved by root
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (2)
As of 2021-10-16 19:06 GMT
Find Nodes?
    Voting Booth?
    My first memorable Perl project was:

    Results (69 votes). Check out past polls.