Archive for October, 2009

Not Just a Software Engineer

October 27, 2009

While my official job title is Senior Software Engineer, many times I’m also:

  • detective, historian,
  • logician,
  • aesthetic judge and grammarian,
  • and salesman and/or marketeer

There are other roles I play, as well.  Sometimes as maintainer of existing software, less often as initial designer, but still…

Although it is not, in the general sense, productive to figure out “whodunnit,” it is sometimes necessary and useful to find out who did the original writing of this piece of software, or who was the last person to change it, in order to answer why was this done — there may be a reason, which is important to preserve, and not simply undo the effect.

Frequently, at least in my work, the answer to the preceding involves digging thru history, recreating the past — fortunately, modern software development entails using a  version control system, which tracks who changes what, when.  Just recently it was the case, not uncommon, that the problem was not caused by any particular change, but the cumulative effect of several changes — and those are not always related!

In some situations, more often than not long after deployment to a production environment, the process of debugging involves a strange mixture of “reading tea-leaves” and guessing, based on extrinsic information (by “reading tea-leaves” I mean guessing about the current state of affairs by viewing only partial, random, sometimes seemingly meaningless bits of information).  Many times it becomes necessary to deduce the scenario causing the problem based on contextual information and situational data, and interpolating the flow of a program with incomplete knowledge — then it is almost like solving a sudoku puzzle: “the actions taken in the intervening time (where we have no direct knowledge) must have been thus because the information at the beginning and the results indicate that this is the only possibility.”  (“The number in this square must be six, because that is the only remaining value for this row/column and square of nine.”)

Let me add here two personal notes: first, none of this is a shocking revelation — not to those who do this work regularly; secondly, this is sometimes the interesting and exciting part of my work — sometimes, decidedly not, but at times, historian/logician is an exciting occupation of my time!

There are times — more frequently during initial development of new software — when the right choice of various competing alternatives, is determined not by logic alone, but by what “looks pretty” — at least in some sense, what is aesthetically pleasing — or what will, in the long run, prove “easier.”  The reasoning may run like this, “yeah, you could do it that way, but no one looking at this later will find it intelligible.”  Sometimes like grammar rules, the justification for a choice is, “that way is the one which flows easily and nicely, and according to tradition (not always a bad thing).”  In the past, more than today, I rebelled against this idea: “why did I spent years learning how to do this [complex technique, or obscure solution] only to continue coding at a ‘high-school level’?”  But age and experience have softened this: someone else will come after me and, if I make things difficult, curse my work.

Finally, salesman and/or marketeer: none to infrequently, I need to sell my idea to others — persuasive skills are usually required, be it a fellow developer, or a business user, a client or other co-worker.  I find myself more often than not more than just presenter of options, but also advocate.

But here’s my point in all this: they don’t teach you this in school! Computer Science education almost never covers most of the debugging skills you need almost immediately when you enter the work-a-day world.  My high-school and college did little to prepare me for a career in convincing other people to my point of view — oh, I did get that education, but not formally in a classroom (save one experience in a speech class, and that not very well!).

No one told me, when I was learning any programming language, that there is more to it than actually designing and coding — you have to pitch your ideas to others, work with people, and work after people; we never did anything even close to that in any class I can name — with people, once, my senior year, but after other programmers, doing maintenance and debugging?  Not at all!

So I’d like to hear your experiences, esp. other computer programmers, but any engineers, or, for that matter, others in any field who happen to read this.  Please give me some feedback; I may incorporate your comments here, and expand on what I’ve said.


Poor Customer Service

October 5, 2009

I recommend that you do not do business with Nature’s Stone.

Here is the (only) correspondence I got from them — see at the bottom it is an automated response [and there are typos in the message!]:

I sincerly appologize for the inconvieninece caused in regards to your granite purchase.
Natures Stone prides itself in creating an affordable and conveinient experience for all of our customers.  We have read your comments and will take immediate action to correct any and all problems at Natures Stone.  We do appreciate your business and hope to work with you again in the future.
— On Sun, 9/6/09, <> wrote:

From: <>
Subject: Nature’s Stone Web Site Inquiry
Date: Sunday, September 6, 2009, 3:19 PM

This is a comment or question from the Nature’s Stone Web Site:

Greg and Lana Parks
Phone: 952-xxx-xxxx
Email address:


I just want to inform you of the poor customer service we received
while purchasing granite from your company (at the Burnsville
location).  We came to your company to purchase a granite countertop
for our bathroom and was greeted by Chuck. He showed me the pricing,
etc, then led me to the back where there were remanents of granite
that he said were at a reduced price. He said that anything that
didn’t have a tag on it we could choose from. He was very kind at
this point and pulled out some slabs with a machine, etc. We chose a
granite slab that would work and he marked our name on it, told us
that he would generate a sales receipt, and assured us that he would
save it for us. I informed him that the contractor that we had hired
would be contacting him in the next few days. (This was a Thurs). The
next Tuesday — only five days later, our contractor contacted Chuck
and he informed our contractor that he did not remember me or my
husband (we were both there — and he shook our hands), that our name
and information was not in your computer system. Fortunately, I had a
sample I had gotten with the name of the color we had chosen and was
informed that there was a slab that would work.  We were not informed
that the original slab we had chosen had been sold; we were not told
that we would be paying full price at this point or we would not have
gone through with the sale. While this was an annoyance, things seemed
as though they would work out.

A few days later, our contractor informed us that your company did
not have a big enough slab of the granite we had wanted in the
remanent selection, so we’d be paying full price ($7 more a sq ft).
Nevermind that originally the slab we had chosen was more than enough
yardage and that now it was too late to even go look at other slabs
that may have been more to our preference if we were paying full
price. (“Bait-and-switch” is illegal and unethical.  At this point it
was too late to change — the project was underway, the old counter
removed) Our contractor was informed that our slab would be cut and
ready by the next Tuesday He called Tues. and was informed that it
was not ready, but would be by Wed. He called Wednesday and was
informed that it was all ready to pick up, so he drove from Woodbury
to your Burnsville office and it wasn’t ready. The backsplash hadn’t
been cut, so our contractor waited. By this time, my husband, usually
a very trusting man, even asked our contractor to confirm that the
color was right — he doubted anything was accurate any more.  The
contractor eventually took the counter and backsplash to our home to
install and as he was installing it found that though the sink hole
had been cut, the faucet holes hadn’t — this despite the fact that
he gave you the faucet and was given it back when he picked it up.
Yes, he had informed and laid out for your workers where to cut them.
He called your company and was informed that someone would need to
come out to our house and cut the holes for the faucet. So, we made
arrangements and your company gave us a 2 hour window. (Do you really
need a 2 hour time window?? Do you have that many jobs that you forget
to drill holes and have to go fix the problems??). The person from
your company didn’t even knock or ring the doorbell. He walked in.
Yes, our garage was open as we had our contractor here, but as I’m
home, working in our living room suddenly there is a strange man in
my house. HOW RUDE!  Not to mention that he barely spoke English.
Fortunately, our contractor was here and informed him of what to do
and was able to supervise.

Needless to say, we will NOT be using your company ever again and
will let everyone we know of our experience. We’re more than happy to
recommend to family, friends and acquaintances good service, and
willingly warn everyone about the bad.  But we thought there might be
someone at your company who would like to know — and perhaps make

This is an automated message from the Nature’s Stone web site.

No follow-up, nothing.
On the other hand, we know an excellent contractor for home repair work, and will gladly give out his contact info, and recommend his work.
Contrast this with — the other day I was shopping there, and realized I forgot to check some detail, so I abandoned my shopping cart… and got an e-mail the next day because they “noticed” that I hadn’t checked-out and were wondering if there was something they could do to help.  Now, I know that some will not like that, but I thought it was a nice touch.  I know it was automated, but it still was a step they didn’t need to do, and it showed a consideration — I replied to that message and got a human answer (someone was checking the reply e-mails!).
Also, I have another example, a store my wife and I shop at frequently failed to properly honor some coupons my wife tried to use — the store manager didn’t understand corporate policy, either, although my wife, a serious couponer, knew exactly what they were supposed to do.
Later, my wife called the corporate office, and got a person who also didn’t understand, but my wife wouldn’t let it go and escalated the issue to a supervisor.  When she left a voice mail message, she forgot to leave a phone number, but that person (turns out, a V.P. or some division), has voicemail that recorded the phone number that the call was from, and just to be sure, called back, talked to my wife and understood exactly the problem, agreed to have a “chat” with that store and with the person she spoke with who also didn’t get it…
Now, it would have been reasonable for that woman to say to herself, “well, she didn’t leave a phone number, and I’m not sure I know who called, so I’m going to drop it.”  But, being a responsible person, who knows the value of customer relations, she tried every avenue available to her to correct a problem, and earned our respect (and continued business for the store she represents).