Author Archives: bill

Life Short, Call Now

You never know where the inspiration for an entry is going to come from, but this one really doesn’t surprise me. I went to a Bruce Cockburn concert on Saturday night. He’s an amazing performer and at 63 is still energetic, relevant, and inspiring. His latest album is entitled, “Life Short, Call Now.” This combined with a phone call from a friend who was recently laid off from a company that he spent 10 years writing software for. As when I left the same company, I knew how much the help and support of friends would be in finding new work and determining what direction his career and life might go.

You hear people talk about networking all the time. Here’s a simpler and less buzzwordish way of putting things: make friends at work and stay in touch with them. The first part is easy. I’ve got friends from every place that I’ve worked. Spending at least eight hours with people, it’s hard not to become friends with many of them. The important thing is to keep in touch with them. Besides just keeping your friends, you’ll also have contacts later. I’m not saying that you should keep in touch with people purely for future contact reasons, although you can. Keeping in touch is simply nice and it has the fringe benefit of helping you in the future.

I’ve lost touch with many of my old colleagues due to moves and generally being busy. What I’ve found, however, is that every time I return to a town where I used to work and get in touch with an old friend, I’m always glad I did. Usually it’s like I’ve never left and the conversation is at the same comfort level as if we just saw each other yesterday. Do yourself a favor for both your personal and career health – give an old friend a call.  Bruce had it right: Life Short, Call Now.

Toolkit or Not Toolkit?

In every programming activity there are decisions to make. Do you add a small bit of code here that’s an exceptional case or rewrite the code to be cleaner? Do you use an IDE, wizards, toolkits, or code on your own and build your own tools?

I ran into this most recently while producing this web site. The first incarnation was handcoded html. You can still see it if you go to It wasn’t too hard to write it up (the site’s just not that complicated), but the real issue came with maintenance and updating content. My internet connection in my upstairs office is glitchy – sometimes it works, sometimes not. So, this means I often have to come downstairs to update the files, then ftp them to the site. I’ve found the ftp server and my link to it to be also glitchy and incredibly slow. On top of that, every new post required an addition to the main page, the archive page, and adding a new page for the new post. Nothing horrible, but more stuff to maintain. Allowing people to add their own comments would have required more coding (and not in html), so that would have meant more work as well.

I’ve been reading through other blogs lately and have heard good things said about many blog sites and software. I tried one out myself and created It was simple, allowed me to generate something that was more like a complete website than just a blog, and had lots of available themes to let me change the style of the site without more handcoding. Nice. Since it was a breeze to install on my web server, I decided to give it whirl.

Now, updating the site is a cinch. All the files are on the site. WordPress handles the updating, archiving, menu additions, and styles (although I may do some handcoding to make the site more unique and stylish).

Every decision you make in your work involves tradeoffs. Will this toolkit save time or take time? Is this reinventing the wheel or not? Be sure to include both design, learning, and maintenance time in your evaluation. Still not sure? Do a rapid prototype by starting your own design – just a few days at most – to see how hard it’s really going to be. Start recording all of the things you’ve learned and develop a list of tasks you’ll need to do to make it complete. You can also start using the alternative toolkit and see how progress goes there. Make this a rapid prototype as well. Chances are, you’ll make more progress using the toolkit or other automation device. Remember, however, that this exercise is to make an informed decision. The real analysis of the toolkit is to understand how you’ll really be implementing it. What is it missing? What does it do that’s set in stone and what’s flexible? What will maintenance be like? Is the company supporting the software stable? Where are the gotchas? Are there any showstoppers?

When you’ve compiled a list for both alternatives, sit down with someone else and explain the choices. They should play devil’s advocate with you and help you really sort out the best answer without your initial biases. Then you’ll feel like you’ve made a more informed and intelligent choice.

Blather Control Problems

A few years ago, I worked with a woman who had what I’d call “blather control” problems.  Basically, she talked too much.  What came out was a steady, uninterruptible stream of consciousness.  It was like listening to telemarketers who call during dinner and won’t stop talking long enough to tell them you’re not interested.  You don’t want to be rude and interrupt them, but they’re being rude by not letting you get a word in edgewise.

At one point, I had an issue with something she had done.  I wanted to fix the problem and went to talk to her about it.  Well, the stream of blather started flowing and I never got a word in about why I wanted to do what I was going to do.  After a few minutes, I had to make my change or it would be too late.  So I left and went to do it anyway.  The next day, she was really angry about what I had done and complained to my boss.  I explained what happened and the boss was very supportive and understanding about what I had done.

The real thing to take away from this story is that listening skills are extremely important.  Conversations are two-way streets.  If someone comes to tell or ask you something, make sure you understand the what and the why.  Reflect the other persons words back to them by paraphrasing.  This will ensure that there’s real understanding.  You might also consider interrupting the person who’s blathering.  Waiting for a break in the stream can be difficult, but if you’re in a hurry, or simply don’t want the conversation to take an hour before you can say what you have to say, then it may be your only option.


Cover Your Ass(ets)

About a year and a half ago, I had a problem with my telephone company. It was my fault, actually, but that’s beside the point. My dialup connection (I live in the boonies) had dialed a number that was “local long-distance”, i.e. still in my area code, but technically fell under the long distance plan. The phone line was connected for a few thousand minutes, resulting in a phone bill of $1000!

I called the phone company to try to work out something reasonable. For example, my other phone line has unlimited long-distance, so I knew that this really wasn’t costing the phone company any money to be nice to me. I finally got one guy to reduce the bill in half, but that’s still a lot of money. I wrote a letter to the President of the company, who simply sent it to Customer Service.

Now here’s the best part – I actually had two people tell me that it was their job to protect the company’s assets! At that point, I had two landlines and two cell phones with the same company, costing me around $2000 in yearly phone service, which I still think is ridiculous. However, if a company told you that they had to protect their company’s assets and you felt they weren’t being reasonable, what would you do? I felt it only right to remove myself from their asset acquirement rolls at my earliest convenience. As of now, I
have one landline left with the company – essentially removing $1400/year from that company. Now which move would have actually protected their assets better, being nice or keeping a windfall?

The moral of the story is simple: do everything in your power to keep your customers happy. Apparently this company had never heard the old adage, “The customer is always right.” Make your customers happy and you’ll keep their loyalty, make them angry and they’ll look for their first opportunity to find an alternative and leave you. I’m now getting daily calls from the Wireless portion of the company asking if I’d like to come back. Not a chance. Can you hear me now ?

Non-stop Action!

Cover me, I'm going in!

Maybe I just watch too much television, but it seems to me like every doctor, lawyer, and policeman (or woman) has an incredibly complicated and exciting career. Almost every one of them also has a deeply complicated personal life, perhaps accompanied by a serious personality flaw or internal conflict. On the other hand, every time I go to the doctor it’s about something mundane that involves listening to me breathe, poking a Q-tip down my throat, or examining other things I’ve since repressed, but will doubtless come out in a revealing and exciting therapy session with my TV psychologist. I swear that doctors just use cold stethoscopes on purpose so they can share a laugh with their colleagues later about how a patient screamed, just to relieve the sameness of every day work.

The same is true about life in software development. Some days are great, some are dull. The fun can go on for weeks, but so can the dullness. Few things are more boring than the days between the final testing of the software, when you’re not even allowed to fix a bug (even if you have an easy fix for it), and the new feature coding of the next release. The marketing and product design people are always running so far behind that you can spend a couple of months without coding anything real.

The fact is that not all of the things you do in software development are fun. Some people love bug fixing time while others hate it. Some people love spending months doing up-front design work with little coding,
while some people would rather be doing incremental prototyping and design.

What can you do to make every day a little more exciting when things are slow? Here are a few ideas.

  1. In a branch project, fix some of the bugs you want to fix and prepare them for integration in the next release.
  2. Clean up some code you hated in the previous release.
  3. Read up on something you might be able to use in the next release and experiment with it.
  4. Refactor some code into a toolkit that might be useful to other developers. This is especially valuable if you’ve got lots of code that was cut and pasted out of expedience.
  5. Do some experiments with features that you’d personally like to have in the software. You might
    end up with something really cool or it may get tossed in the wasted basket. Either way, you’ll keep up your coding chops and may end up with some useful code you can use or reuse later.
  6. Investigate the functionality of other similar software. Maybe you’ll think of a way to trump the
  7. Learn a new programming language or technology. Even if it has nothing to do with what you’re doing, you may get some brilliant ideas about your code, code designs, or functionality for your software.
  8. Build a small application. Several times, I’ve used slow times to build myself a little application that does something that I found personally useful, like my own sticky note application. I wrote the first one in 1990 on my SparcStation (a Sun Unix workstation) and wrote a Windows version years later.
    Why? First, I thought it would be useful. Second, I learned about pieces of the technology that I might not have otherwise learned. If you spend most of your time working on the internals of your code,
    how much time do you get to spend learning about user interface development? You might find it fun or may at least learn why some of the code in your system looks the way it does.

You Can’t Do That

A while ago I ran into a woman I know at the grocery store. We got into a conversation and she asked what I was up to. I told her that I wasn’t crazy about my current job and was thinking about doing something different. She asked what else I might be interested in doing and I ran across a list of several things. To each idea I had, she had a reason why I couldn’t do that. For example, I’ve been interested in trying some voice-over work. “Only celebrities do that. Haven’t you heard all of the commercials on TV, they’re all done by celebrities,” she countered. Nevermind that the most famous voice-over guy in the world is Don LaFontaine, who’s now a celebrity because of his voice-over work. At any rate, you get the idea of the conversation.

In my career and my life, I’ve dealt with many nay-sayers and dream-killers. I should take this job because otherwise, I might not have one at all. I shouldn’t have been a manager because… I shouldn’t take this job because… I shouldn’t take a shot at trying this because… The list goes on and on.

My advice is this: Take these people with grain of salt. They may offer you sage advice, they may just be play-it-safe people who would never take a risk themselves, or they may just be a nay-sayer. The simple fact is this: It’s your life, not theirs. Can you afford to take a risk? Do you want to try something new? Will you learn something about yourself or just learn something at all if you try and fail?

Sure, ask for advice from your friends and family before you try something that might be risky with your career. But, in the end, the risk and reward are yours, not theirs. And if you run into a nay-sayer or dream-killer kind of person, just cross them off the list for future advice. It just isn’t worth the trouble of arguing with them.

Truth In Advertising

Please buy me.

I saw a great Toyota commercial on TV a week ago. The gist was: “At Toyota, we have six different SUVs, one that will fit every family or personal lifestyle. Come in a try one on for size – we’re sure you’ll find one that you like.”

I started laughing and thought about the real message and what Toyota really wanted to say: “Look, just two years ago all you gluttonous Americans wanted was a giant gas-guzzling SUV. Even as gas prices were climbing to $3 per gallon, you still wanted them. But, now that we’re pushing $4 a gallon, suddenly you’re having second thoughts? What’s the matter with you people. You don’t care one bit about this stuff do you? Are you really going to let a little thing like money get in the way of your true desires? You’re mortgaged up to your eyeballs, have crippling credit card debt, and probably had to finance most of your last SUV, surely you want to buy another one. Think about driving over monster rocks in your $40,000 Land Cruiser or driving through seven foot high piles of snow in your RAV-4. Just look at this cool video of our SUVs sliding sideways on the sand-covered road we built for this commercial. Or picture yourself drinking beer with your buddies and this group of great looking bathing-suit beauties and hunks in the beach parking lot or maybe right on the beach! Please don’t let Toyota go bankrupt just because you’re fickle. Buy a new Toyota SUV now!”

Pimp My Salary

Please, Sir. May I have some more?

Let’s start with a short story – I promise I’ll get to the salary part soon. I’m trying to sell a house. It belonged to my mother-in-law and it’s in another town. It’s paid off and costs little to keep, so we’ve been kind of stubborn about price slashing to get it sold. We received an offer for the house (it’s listed at $139,900) for $100,000. Now that’s quite a bit lower than what we wanted, so we made a counter offer of $125,000 (the market is pretty crappy right now after all). The buyer countered with $105,000. We came down to $120,000, our current bottom line. They said, “no way.” We came down to our bottomest line – $110,000. They came back with 108,500. We said, “no way.” Our realtor kept telling us that the market is awful, we should just take it and be happy, yada, yada, yada, but we held our ground. Anyone who’s going to nickel and dime you is going to keep doing so. In the real estate market, it’s a matter of who’s in the driver’s seat. Since it’s a seller’s market, right now they are. We were told that they buyer was simply going to bid on another house and we would lose out. We said, “fine, go ahead.” The next day, we got an offer for $112,000 from someone else. Sounds good, eh? But, now the original buyers really did want the house and came back with $115,000! Guess they were bluffing and we called them on it.

So, what’s all this got to do with your salary. Well first things first. If a company asks you what salary you’re looking for, tell them that it’s too soon to discuss that. You’d like to learn more about what’s entailed, what the total compensation package is, what the potential for growth and development is, etc.

Now the company you’ve interviewed with has decided that it wants you and it makes you an offer. They want you to be happy, but not so much that they break their budget. When you get an offer from a company, you must realize that it’s just that, an offer. The offer is not always final; it’s the beginning of a negotiation. There’s a lot to a job offer, after all. Vacation time, stock options, pay grade, as well as salary. Companies will often give you their first offer that’s below what they’re really willing to pay you. Feel free to counter their offer. You should be polite about this, but tell them that you’d like more. After all, you want to be totally committed to their organization and have several other companies who are interested in you, too. Visit a website like so you know what’s reasonable to ask in your field and in your geographical location. If you’re moving from the Midwest to California, for example, the cost of living is drastically different and so are the salaries. Ask for an extra week of vacation – telling them that of course, you won’t be using it for quite a while, as you are a hard worker. A higher pay grade won’t necessarily change your salary, but within companies, this can mean a bonus as a higher percentage of your salary, or more stock options that may be given on a yearly or more frequent basis. Additionally, companies strive to get their people moving towards the middle of their pay grade. If you start out as a junior, associate, or level one software engineer, the pay range for that grade might be $50,000 to $70,000. An offer of $60,000 already puts you in the middle. However, if you can convince them that your experience and potential warrants the pay grade of a staff or level two software engineer, the range for that might be $60,000 to $80,000, putting you at the bottom. Next year your company reorganizes and you have a new manager. At raise time, he looks at your salary and says, “Hmm, you do great work and you’re at the bottom of your pay grade, you deserve a good bump in salary. Oh, and since you’re at grade two instead of grade one, I can give you a better bonus, too.” Sweet.

One final word of advice. Like the house story above, you have to decide what your bottom line is. This may change depending on market conditions in your area, what the general economy is like, your other prospects, your possibility for growth with the company, the total package they offer, etc. Be nice, be knowledgeable, be confident, and you may get a better starting place with your new company.