Sunday, April 27, 2014

Winning Support

Hi.  My name is Bob Rench, and I've been involved in all aspects of software development since the early 1980s.  I started programming in high school on an Apple IIe, and in college, wrote my first commercial program in dBase II, running on an Osborne 1 luggable.

Since then, I have worked for huge, medium-sized, and tiny companies.  I've worked for multinational corporations, as well as for companies so small that we held all-hands meetings over lunch at Olive Garden.

I have designed and implemented enterprise-level software, both pre- and post-Internet; from old-school fat-client software applications to web sites and web applications.  I'm a survivor of the OS battles of the 90s (hint: OS/2 lost, but shouldn't have), the browser battles of the early 2000s (go Netscape … er … Mozilla ... er ... Chrome), and the managed-code skirmishes between Java and C#.

I've seen a lot of things come and go in the last 30 years, but, no matter what new technology comes along, somebody still has to support the clients and maintain the software.

Support and Maintenance.  Ugh.  (I heard you.)

It’s a necessary job, and isn’t glamorous.  Sometimes, it can be extremely frustrating dealing with all kinds of headaches, from systems that just stop running, to data that gets corrupted, to users who don’t know how to run such well-crafted, thoughtfully-designed, well-engineered software.  If you are lucky, you only have to work on one issue at a time, but typically, it’s more like playing Whack-a-Mole.  On a machine that doesn’t register the hits.  While drunk.

Some days, things can be so quiet, you might say to a friend, “You know, things are really going great!  My queue is empty, so I’m going home early to relax.”

And when you come in the next day, you wish you had not tempted the software gremlins; before you know it, three weeks have gone by with no end in sight.

Even if you love solving problems (admit it: finding a solution when everybody else has failed can be such a rush!) Support and Maintenance roles can often feel like a soul-sucking swamp, and you can’t wait to find another job — any job!

If that is how you feel, then I think you’ve come to the right place.

Maybe you’ve been slogging through the swamp for a while, wondering if you’ll ever get through it to firmer ground.

Maybe you’ve just started your career, and somebody had the brilliant idea of putting you on the Support or Maintenance teams to learn the software, but dealing with legacy spaghetti code is driving you crazy.

Maybe you have a tough support issue and need some lateral thinking.

I know how you feel, because I have been there many times in the past.

Recently, I was asked to take on support for a large, legacy website.  Maybe I had forgotten how much I disliked support in the past, so I said, “Sure, why not?”

Perhaps I’ve matured, or maybe it’s because I love being challenged by multidimensional puzzles, but I can tell you that I don’t feel like I’m stuck in a swamp like I did on my last Support gig.  Instead, I have found that a Support and Maintenance role can be satisfying.

I currently work at the world’s largest digital-marketing company; a company whose clients include some of the biggest names in the airline, fast-food, beer, sports, and financial industries.  I am privileged to be providing support and maintenance for a Fortune 100 company, managing an international website, and supporting content editors who are working in nine languages, including French, Germany, and Chinese.

Like any living, breathing system, our website has evolved over the past few years.  That evolution and growth has required providing creative solutions to meet new business needs, while at the same time, making sure the old business needs are being met, and all the business rules are followed.

But, no matter how well-planned the changes, no matter how creative the solution, no matter how disciplined the developers, no matter how thorough the testing, things happen; things break.

When things break, my job is to fix them.  But I don’t want to just fix them; I want to take the steps to make sure they don’t happen again.

After thirty years, I’ve grown weary of stumbling across the same problems project after project.  And no, I didn’t create all those problems.  Most problems I encounter were created by a combination of poor design, changing requirements, creeping scope, and shrinking budgets.

But, we all know there are better ways of doing things.  Lately, the development landscape has been shaped by powerful forces, such as:
  • The Pragmatic Programmer by Andrew Hunt and David Thomas; 
  •  Clean Code by Robert C. Martin (“Uncle Bob”); and
  • Development philosophies such as Agile, using Scrum, eXtreme Programming, Kanban, or Test-driven Development.
These are great tools to have at our disposal.  But, there is a lot of legacy code around that was not developed cleanly.  Or, how many times have we known that there was a right way to do something, but were forced by budgetary or time constraints to just get it working, and then fix it later?

Usually, “later” never comes.  And, once again, we’ve made the same mistake our predecessors did.

It’s like playing a video game where we have to kill the monsters in a particular room.  We enter the room, turn left, and get pounded by the monsters.  We re-spawn, re-enter the room, turn left, and die once again.  We keep losing the game because we keep making the same mistakes.

Let’s start doing things the right way.

I want to become better at my craft.  I want to become more disciplined as a developer and more creative in my problem-solving.  I want to improve.

I want to provide outstanding service to my clients; after all, they allow me to have two things that I really enjoy: sleeping indoors and eating.

We can do this.

Let’s start Winning Support.