Archive for July, 2009

An Itch = A Niche

In my book, Design, Code, Test, Repeat, I talk a lot about the things that make you a better and more valuable software developer (or other related software person). Many of these things are the intangibles of what makes one developer better than another. It’s hard to quantify software development. Joel Spolsky notes in his post on measurement that people usually work towards what’s being measured, making the original goal of improving overall performance using measurement, useless. This is one reason why I always hated performance reviews – you were always supposed to have measurable goals included for the year. If you were able to add a few, they were usually either bad goals that had little to do with what your job was really about or they weren’t measurable, which was more likely.

So, getting back to the intangibles. On numerous jobs, I have found myself drawn to niches. It’s not uncommon to find that one aspect of programming or your product seems to beckon. Maybe you like fussing with the UI to make it more beautiful or usable. Maybe you like the API layer because that’s what other programmers (or even your fellow programmers, plus you) will see of your product. Maybe you enjoy working more on the internals – providing core functionality, improving speed, finding new ways to solve the fundamental problems that your software is supposed to address.

These itches that pique your curiosity and passion become your niches. They become part of what make you valuable not only to your current company, but also your next potential company. When you advertise yourself on your next performance review or on your resume, be sure to include things that make you unique. They will become talking points for you in your interactions that relate to your career.

It’s important to keep your niche(s) current and flexible. Being the renowned expert in writing FORTRAN on punch cards isn’t really all that useful anymore (yeah, that’s an extreme example). Try this one – how about being an expert on a now defunct database engine? Hitching your niche to a particular technology isn’t the way to go either. It is a way to develop in-depth knowledge of an area, but it’s important to advertise the field as opposed to the specific brand. So, you’re an expert in database customization, not an expert on Debacle DataKing 5.0. The latter is something you mention later when you’re providing proof that you are a master of databases.

The final word here is to keep your niches vital. It doesn’t do any good to be the last surviving employee who remembers a particular product or technology. OK, maybe it will keep you in the company and deliver you a paycheck, but it’s unlikely to benefit you in the long-term. Keeping your niches current, finding out where your company or the industry is going, and adding them to your repertoire is what makes you valuable in the future.

Rules

We all know the adage about rules: they are made to be broken.  Rules exist to keep behavior consistent.  I don’t mind most rules when they make sense.  It would probably be frustrating if every time you called a company to ask about something, you got a different answer depending on the whims and moods of the managers or workers there.

However, rules are one thing and guidelines are another.  Recently, I’ve been calling a few companies trying to use some gift certificates.  The response has been varied.  The first company was fantastic.  I swear that everyone who works there must be taking happy-friendly pills because they have been a joy to work with.  Company #2 had more rules, but the worker bee that I spoke with decided to go the extra mile and checked with the executive management who were feeling benevolent that day.  Company #3 was a bunch of automatons.  They had similar rules to Company #2, but weren’t willing to go the extra mile.  Directly communicating with management yielded the same rule-bound thinking.  They were putting good will on the back burner.

Offering superior customer service is one thing that keeps people returning to your company.  I remember one particular CAD software company that had a superior product to everything on the market at the time.  Their salesforce, however, was arrogant and hated by their customers.  They lost the opportunity to grow because their customers didn’t want to deal with them.  In my book, Design, Code, Test, Repeat, I tell the story of another company that wanted so much money for their product that one of their customers decided to simply start their own company to compete.

In the software field, customer service, especially for smaller companies is vital.  The problem is that it can suck up vast resources before you know it.  Having your developers answer customer questions will get customers the answers that they need, but has a real drain on development productivity.  In addition, once a customer gets the direct line to a developer who was able to help, they will almost always call that developer back directly the next time they have a question.  This makes customers very happy in the short term – they get their answer.  What they don’t see is that in the long term, they may be helping that same developer work significant overtime to catch up to a schedule or slip the schedule – bad for the customer in the long term.

To help with these issues, establish fair, but flexible rules for dealing with customers.  How much does it hurt to extend a trial license for another week, for example.  Isolate your developers from direct contact, if this becomes an issue by using online forums, or by having customers call a helpline number.  Having a customer liaison, if you can afford one, will eventually make the liaison very knowledgeable (he or she will have to get the answers), but he will then be able to share the information with all customers who have the same problem (and chances are, more than one person will hit the same problem).  A liaison will also provide a more consistent experience for all of your customers – some developers should definitely not be talking to customers directly.

Keep your customers happy and you give your company a shot at repeat business and future or continued prosperity.  It only takes one bad experience to make your customers hate you and look for another place to do business.

Is It Time To Go?

Not every day is going to be a good one, but not every day should be a bad one either.  Some days it seems like you get up and follow the same routine, almost mindlessly.  You get to work, your boss is an as***le, your work is boring, blah blah blah.  A steady paycheck is good, but you can’t wait for the weekend to come.  You spend half the weekend de-stressing from the week and worrying about going back to work.  It sounds like an advertisement for an anti-depressant, doesn’t it?  All you need is a hound dog to stare at you and the picture is complete.

I’ll be the first one to tell you that the grass is not always greener.  Sometimes, it’s just a different kind of grass.  Sometimes, it’s AstroTurf.  It’s natural, however for a relationship with your company to run its course.  You’ve developed the same kind of code and done the same thing over and you need a change.

Remember, it’s easier to look for a job when you already have one.  Why?  Well, first, you’re less desperate to jump at the first opportunity.  Second, you’re clearly employable.

Life’s too short to be miserable for a long period.  Now, what’s a long period varies from person to person.  Even so, if you’ve been miserable for more than a year, it’s probably time to at least start putting your toes in the water to look for something different.  You may want to switch domains, learn new skills, switch to management or QA.  You might think that your company is looking out for you, but rest assured, unless you’re a part owner, the company is looking out for itself.  If profits are down or the stock price is down, the CEO is going to be looking to boost both, because his or her income is usually based on stock options.  When the price is down, so is the income.  If your company is looking to downsize, or already has, you can never feel safe.  Even if you’re the best coder in your group, who’s to say that the whole group isn’t going to get chopped.

It never hurts to have your resume up to date.  Keeping it fresh and current takes time, so don’t hesitate to get started today.  If you’re looking around, look for somebody who’s hiring.  Sure that sounds like a “duh” thing to say, but they may not advertise jobs in your field.  However, if they’re looking to expand in any area, then they’re thinking about the future.  Richard Bolles (author of What Color is Your Parachute) recommends that you find a company you want to work for, find the proper managers (start calling your network of friends and colleagues to get the names), and give them a quick call.  Even a friendly conversation if they’re not hiring right now can pay off later when they are hiring and remember you.

I don’t think it’s unhealthy to say “Is it time?” now and then.  If the answer is an absolute “no, I love my job”, that’s okay.  If the answer is “maybe”, well then maybe it’s time for a little exploring.  Keep your eyes open, sign up for some automated job board emails, talk to your friends and have them tell you when they run across another software engineer.  Build your network.  And good luck.