Some guys have all the luck. You know the type. He's got a wide screen flat panel monitor on his desk that you could use for the screen at a drive in movie. The computer tucked under his expensive oak desk has more processing power than the WOPR out of the old War Games movie. And of course, let's not forget that this is all tucked away in a real office, with a door that even locks (no doubt for some very valid reasons). As if this weren't enough for those of us who live in Cubicle City, this guy is always in charge of the coolest projects in the shop, working with the latest and sexiest bleeding edge technology on the market. The sort of stuff that lesser mortals have to play with at home in their spare time, instead of sleeping. How is it that this guy is always so darned lucky, anyway?
The problem with most programmers is that they've lived a rather monochromatic life. Hammering away at a keyboard, basking in the glow of their monitors, these geeks are technical wizards and yet often know little of the outside world. If you really want to know why the Super Geek in our previous example is so lucky, you need to do something that most of us would never consider in our wildest dreams. You need to go have a couple of drinks with the guys in Marketing. Really. I'm serious. And no, I haven't started drinking already. Honest.
By now, I can see most of you in the back rows reaching for your slide rulers and trying to do the math on just exactly how all of this fits together to somehow relate to your Dream Project. Particularly that last bit about Marketing. Well, much as I'd like to keep you in suspense just for the fun of it, here's the secret the folks in Marketing know that most techies just never grasp - if you don't ask, you don't get. No, this isn't one of those Zen-like statements that's so simple it's profound. In fact, it's the very model of practicality.
Your lucky friend, who's ushering you out of his plush office even as we speak so that he can close the door and talk to one of his girlfriends, didn't get all this cool stuff because the winds of fate just happened to blow in his direction. On the contrary, if you were a fly on the wall during a typical day, you'd find that he's the poster boy for self promotion. Every bit of the goodies he has came as a direct result of his either asking for them outright or preparing a context for management to come up with the idea on their own. You, on the other hand, have been slaving away working countless hours of unpaid overtime and expecting that one day management will magically recognize all your hard work and reward you for it. If you listen carefully as Mr. Lucky closes his office door, you'll hear him joking with his girlfriend about his suspicion that you probably believe in the Easter Bunny as well. Real life just don't work that way.
Are all of us lesser mortals doomed, relegated to a fate of doing the heavy lifting while someone else gets all the goodies? I think not. I don't know about you, but I hate to lose. And here's the key thought to remember - you can't win if you don't play. Tired of working 20 hour days maintaining someone else's nightmare code? Bored with using technologies that were popular when they landed the first man on the moon? Long to rekindle the excitement that you felt when you were constantly being challenged with new languages and Killer Apps? Then grab that cup of cappuccino, come with me, and for heaven's sake, put down that slide ruler. People are watching.
What do you want?
The first question isn't always as easy as you might think. Want to work on your Dream Project? Quickly, then. In highly detailed and explicit language, write down the definition of all the cool stuff that would, for you, comprise the ultimate fun programming gig. Okay, pencils down, time's up. What's that you say, you only got two items down? That's the point. The very first step in getting what you want is making sure you really know what it is. So, grab that pencil again, and this time take as many hours or days as you need to make a detailed list. Here's just a few questions to get you going.
- What languages do you want to use?
- Which APIs?
- What Internet capabilities?
- What application functionality?
- Which clever little UI gadgets do you want to play with?
- Speech recognition?
As you can see, the list can easily go on. But that's not all. A great project is more than just the technologies involved. Do you want to be the project manager, team lead, or just the grunt in the back banging out code? How much design input do you want? And let's not forget about toys. There's computers, networking issues, printers, broadband Internet access, laptops, PDAs and a host of other little gizmos that you may lust after. And hey, you in the back - yes, you. Put down that slide ruler! I have a white board eraser, and I'm not afraid to use it! Now, where was?
Of course, these aren't the only issues that make for a cool programming gig, but you can no doubt take it from here. The point is to know exactly what you want. You'd be surprised, both in programming and life in general, how many people don't really know exactly what they want. These are also the people who complain the longest and loudest about being unhappy with their lot in life. Yes, people are curious creatures, aren't they?
Who you gonna call?
Now that you've got a wish list that would make Santa Claus twitch, the next thing you need to know is who can fill it. It won't do you any good to talk to your fellow programmers about the cool project you'd like to be working on. They may sympathize, but there's little they can do for you. Instead, you need to identify the person or people who can truly be decision makers. The short definition of this type of person is that they have the power to authorize work. It can be a project manager, middle manager, VP, or pretty much anyone who's above your particular section of the food chain.
For your first foray into the world of project creation, aim low. You'll have a better chance of getting the attention of and influencing those with whom you're in continual contact. Walking right up and knocking on the door of the company President may well get you little more than an introduction to the security guard's attack Chihuahua. And nobody wants that. Nonetheless, make note of every person in your domain who has the true ability to authorize you to work on a project. Don't forget people in other departments. It's not unusual in the corporate world for resources to be loaned from one department to another. You don't care which flag you're under. You just care about the gig.
What's in it for me?
You need to commit this question to memory, and then learn to apply it from everyone's perspective but your own. Even though there are people who make money and get by in life by scamming and ripping off others, in the long run the only path to true success is that of offering true value to the people you work with. Approaching life from a purely self centered perspective is like standing on one edge of a very small boat. Such an unbalanced scenario will rarely bring good things, and you'll be all wet before you know it. Besides, nobody gives a rat's patootie what you want. They're too busy focusing on what they want. Learn to help them fulfill their own desires and they'll pave your way with gold as you help them. As an added extra bonus, you get to sleep well at night, knowing you're living with honor. You can't put a price on that.
So, having adjusted your point of view to recognize what's important to others, look around your organization. What truly needs doing that would bring value to the party? Are there obvious processes in your business that could be automated? Don't forget to check those areas that have already seen technical enhancements. Are there areas in the current software systems that could be improved? Remember, too, that programmers cost money. That time to market is always a crucial issue, even if the market is just other departments within the company. If you can improve developer productivity with better custom tools, application generators, class libraries, extensions to the development environment and so on, you're bringing a tangible benefit to the party that management will relate to.
There's no such thing as a business with no room for improvement. The important thing, however, is to always focus on what constitutes improvement in management's eyes, not your own. These may be two entirely different things, but there's only one perspective that counts in this regard, and that's management's. If you offer something that they perceive as having value, you're in the game. Talk in terms of what makes your life better and you've lost them in the first sentence. That's not really unfair, either. They pay you to make their life better, not yours. That's why you have a job.
Now that you have a list of ideas that would add value (you are taking notes, aren't you?), let's get a little more specific. What are the actual benefits that each idea brings to the company? Dust off that old Business 101 book you got in college while you're at it, just to remind you that companies are in business to make a profit. That's why they exist, and you must list your benefits within that context if you want to speak management's language. Here's a few ideas to get you started.
- Increased profitability
- Reduced cost of goods
- Improved productivity
- Better time to market (for software or products)
- Greater sales through enhanced tools
- Business agility from flexible reporting
- Reduced technical support costs
- Improved revenues customer satisfaction
- Reduced labor costs
Get the picture? All of these items are things that help your business make more profit, either directly or indirectly. However, it's important to realize that not everyone really cares about how profitable the company is, even if they're in management. In many cases, all that the decision makers truly cares about is furthering their own personal career and agenda. They will nod with approval over all the points in our previous list, but this list will fail to motivate them. Consequently, you need to look at what will bring value to them personally and professionally. Here's another list that speaks to this particular issue.
- Increasing the budget they control
- Improved status among their superiors
- Anything that strokes the ego
- Expanded control (more turf)
- Salary and bonus increases
- Reduced personal workload
- Better path to promotion
- Larger staff
- More company perks (office, equipment, expense accounts)
Making the sale
You now know what you want, who can give it to you, what needs to be done, and what the company or individual really cares about. All that remains is for the decision maker to see that you have the ability to bring this to life and motivate them to let you do so. By the way, I did notice that the moment I mentioned the word "sale" some of you started fidgeting uncomfortably and sneaking your hands over towards the slide ruler. Look very closely and you'll notice that I'm still holding that white board eraser. And my aim is deadly accurate. So relax. This is not as hard as it may seem.
The first thing you need to know about making the sale is you don't want to come off like a salesman. Just be your normal, geeky self. It'll only put them off and raise their resistance if you start acting otherwise. Phoniness is a turnoff for everyone. Besides, you're not selling used cars here. You're simply talking to people you work with every day, and making a casual suggestion or two. What makes it effective is that you're keeping their personal interests, not your own, in the spotlight. That makes all the difference in the world.
The first rule to remember is that you absolutely must, without fail, speak about the benefits and features, not the technology. The minute you start talking about the techie stuff, you'll get sucked into a state where you're focusing on what's cool for you personally. That's instant death, and that's why I've been chasing you away from those slide rulers. It's for your own good.
You're not here to suggest cool new technologies to them, you're here to offer ideas that will improve their personal or professional position in life. That's how you get, and keep, their attention. In fact, as much as possible, avoid even getting into implementation details if you can. That just creates something that they might want to argue about. Also, keep it quiet. You don't want to advertise your campaign to anyone unless they are trusted allies who are absolutely essential in making the sale. Otherwise, you simply create competition as word gets around and others start jockeying for position to get the goodies for themselves.
Get them excited
The next item on our agenda is prototyping. I'm generally opposed to prototypes in production scenarios for reasons I won't get into here. However, when you're making a sale, they can be a great tool. Spend some of your spare time throwing together a purely smoke & mirrors demo to show them exactly what you've got in mind. It works for you in a couple of ways.
First, they can actually visualize the path to the benefits. Secondly, when someone sees a user interface, against all common sense they assume that it's "mostly done". After all, they can select from a menu. How much more could there be to do? It doesn't matter if this is throwaway code. Your job is to get them excited about it, and to show them that it's so close they can almost taste it. Since you're proposing something that benefits them personally, they're going to want to believe in it, and very much so.
Show them how easy it is
Now that they're drooling over the great tool you're proposing that will help them get that promotion they've been dreaming of, you have to show them how you're available to do it for them. I'm assuming you're currently working on a project, since you have a job there. What you do now is give them a road map to success. Either show them the exit strategy you have for your current work ("You know, that new guy is pretty much up to speed on all my stuff anyway") or demonstrate that you can accomplish this without impacting your "real" job ("Look what I've accomplished already by making productive use of the bits of down time we have here & there"). In the case of the latter, don't despair. Part time gigs magically turn into full time ones once your manager starts to see some benefits and gets impatient for the results. Also, know where you can get the additional resources you may need ("By the way, Joe over in maintenance is really in a slow period right now, and I know we could count on his help").
Ask for the sale!
You've now got the decision maker excited about something that you want to do, and you've shown them how you can be available to do it. The critical mistake that even experienced salespeople make at this point is that they forget to ask for the sale. Don't assume that simply showing the decision maker the benefits will prompt him to say, "Hey, that's great, why don't you get started on it?". It doesn't work that way. Instead, you need to close the transaction. The best technique for this is extremely easy, and is known as "assuming the sale". This means that you simply continue on with your conversation as if they already said yes. One of the best ways to do this is to talk about the next step you'll be taking, and just let them bob their heads up and down. By the way, this stuff really does work. Salespeople have been doing it to you for years. Why do you think I had you buy those guys in Marketing a drink, anyway?
Some of this stuff has been rather conceptual in nature, so let me give you a working example to put it into a practical, day to day context that you can relate to. A programmer friend and I were working at a large corporation where our team had to implement a new dynamic link library for data entry forms & validation each time a new sale was made, to match the client's requirements. Each iteration was taking them around 6 months to complete, as the validation logic was complex.
Our project manager was constantly being harassed by management about timelines, missed deadlines, impatient clients, etc. He also had the typical headaches of the requirements changing more often than the wind changes direction. In short, he wasn't having any fun. Neither were we. As projects go, this one sucked.
My friend observed that this was obviously a job for a form generation tool. We brainstormed, put together a quick dog & pony app, and explained to our manager how we could kick out this tool in less time than it took for one customer's form library and that when we were done, what took 6 months to code by hand could be accomplished in a couple of weeks. He only had two words to say to us. "Do it." We then went off and played with the latest technologies and had a blast. When we were done, the tool truly delivered as we promised.
By the way, remember the bit about not advertising what you're proposing? The other programmers got wind of our little scheme after the decision was already made, and were unhappy. They were contractors (as were we) and they were afraid that this would put them out of a job. (I'll skip my normal tirade about ethics for the sake of expediency.) So, after we delivered a killer tool and moved on to the next contract, they scrapped it and went back to 6 months of coding by hand. What did we care? We had a blast, delivered on our promises, and left a project manager with the impression that we were equal to the gods of old Olympus. In fact, the only reason the programmers succeeded in scrapping the tool in the first place is because our manager got promoted. If that doesn't sound like the classic win / win scenario to you, then you've been fiddling with that slide ruler when I wasn't looking instead of paying attention.
One last bit of advice. Start small. You'll get better at this as you go, and nothing increases your ability to succeed like previous successes. You'll soon build a reputation as a "make it happen" person. In fact, before you know it, you'll probably be ushering the rest of us out of your well equipped office and closing the door so you can talk to your girlfriend. Of course, we'll all just think you were lucky.
About the Author
Christopher Duncan, President of Show Programming of Atlanta, is author of The Career Programmer: Guerilla Tactics for an Imperfect World (Apress). He can be reached at Chris@ShowProgramming.com. Copyright (c) 2002, Christopher Duncan.