In my 43-year programming career, I've been lucky enough to work with some very fine managers. Unfortunately, however, only a few of the hundreds I've seen in action could be deemed excellent or great. Most of the rest were competent enough, but they routinely failed to take advantage of the training and productivity tools that would have made their IT departments vastly better. And some managers I've had were, I regret to say, simply clueless.
All of the managers whom I'd call great have shared similar leadership attributes and management styles. All enjoyed working with people, encouraged open communication, believed in giving positive feedback, acquired the latest productivity tools for their staffers, devised programming standards, and encouraged their programmers to attend seminars and take new courses. And all of them honed their management skills through study and schooling.
For most of my 43 years in the field, I've been a corporate programmer and consultant--first at IBM and then at scores of other firms. But I've done time as a manager, too--as vice president of the software firm I co-founded and as the president of my own software companies. After four decades of experience as both programmer and manager, I've formed several conclusions as to what makes a good manager, what managers regularly do well, and what they too often do wrong. Here's what I believe corporate programming managers need to do to become the best managers they can be:
Be Prepared
The problem for managers these days--especially the new manager promoted into his or her job from a technical programming position--is that unless the company is a Fortune 100 company, with formal, mandatory management training programs, first-time managers normally get on-the-job training--which means no management training. But management requires different skills and goals than does technical programming. How can you, a manager with no training--and no consciousness that you even need any training--possibly succeed?
The answer is, you can't--and won't. Without training and study, you will spend your working career continually making the same mistakes with staffers and overlooking opportunities to make your IT department more productive. The key to the effective management and motivation of corporate programmers is proper preparation.
Fortunately, this is not hard to achieve. Many great managers have written books that unveil the secrets of successful management to those ready to absorb them. And--perhaps surprisingly--reading these books may also help programmers acquire the skills they need to excel in their jobs.
If you're a new (or doing-the-job-by-your-gut) manager, I believe you should immediately buy and read several books that will provide you with the basic mind-set all successful managers show. I suggest these books: The Success Principles (2004, Collins), which shows you how to set ambitious goals and how to treat people and events, and The One-Minute Manager (1982, William Morrow & Company), which shows you how to actually manage a team. A third suggestion is They Made America, (2004, Little, Brown), a book about how the great inventors and innovators accomplished what was thought to be impossible, overcoming huge obstacles and succeeding by asking "Why can't I?" These books will inspire you and help prepare you to be an effective manager. Put these books in your IT reference library and suggest that every member of your team, including your programmers, read them all to see how significant success is attained.
One of your first tasks should be to find out what your management expects of you and your team and inventory the resources, documentation, and budget available to you. Write down your goals and brainstorm how you and your team might accomplish them. If your successful predecessor is still available, ask him or her for advice and guidance on how you can succeed and avoid failure.
Train Every Programmer to Become an Expert
I was recently a consultant at a very large, worldwide pharmaceutical company when a senior programmer unexpectedly resigned. She had eight years of experience in key business applications. However, virtually none of the knowledge and expertise that she had developed had been documented and captured as a valuable company asset, an asset possibly worth hundreds of thousands of dollars.
A manager with foresight would have captured her knowledge in print or on CD or DVD. No employee's departure should leave any other programmer in the dark about how to do any part of the departing programmer's job. Too often, I have seen IT departments devastated by the decampment of one or two employees. This managerial blind spot is all too common.
You should implement a formal knowledge-capture and knowledge-transfer system. Document, record, and make available the skill, techniques, expertise, and application knowledge of the best team member in every functional area, including every technique, programming standard, model production program selected as the prototype for a programming technique, and, particularly, the application business logic flow of every application that you now support. I believe that in-house-produced DVD or CD presentations are the very best way to accomplish this permanent knowledge capture. Knowledge transfer is then simply making the IT reference library of DVDs available to all programmers and requesting that they all fully utilize that new and incredibly valuable resource.
Implementing the knowledge-capture-and-transfer DVD library will allow you, the manager, to understand all of the critical business applications for which you and your team are responsible. This process will also help you understand just how your technical team actually operates. Like you, new technical members to your team and new programming consultants have no knowledge of how to program in your environment or in your specific business applications. Knowledge- transfer DVDs illustrating and orienting exactly how a new programming-team member should operate and how your business operates will save literally weeks of time for your new programmers. Indeed, this savvy management technique will save you time over and over again. Using it will reap more productive, higher-quality output in your shop, give your new programmers a feeling of confidence, and trigger their respect for a manager who is clearly effective and cares about their success.
Keep it simple and focus on the business needs. Your smartest, most talented, most sophisticated, most knowledgeable programmer will eventually leave. You are responsible for making sure that other programmers can pick up all your team's responsibilities. My experience has always been that the best way to achieve consistency, increased productivity, and excellence in programming is by implementing reasonable and understandable programming standards and using actual production programs to illustrate the implementation of those standards.
Provide easily available technical second-level support (mentoring) when a team member can't solve or understand some issue. I have personally wasted days of expensive consulting time trying to ferret out some obscure technique or in-house-developed function or application that was undocumented, because there was no one available to whom I could ask the question "How do I...?"
Provide Your Team with the Best Productivity Tools
Giving your programmers the best productivity tools and techniques available can easily double or triple their capability and productivity. Unless you and senior management provide those tools, your company, you, and your team members will not be able to compete with companies that do provide those tools or with expert SEI level 5 offshore software companies.
If you want to run a successful department, you need to be an advocate for your team members, actively lobbying to provide them these tools:
- Current, blindly fast computing capability. Computer hardware is about 1 billion times faster than it was when I wrote my first program on the IBM 650 at Drexel Institute in 1960, and over the next 50 years, computers will become about another billion times faster than they are now. Having a fast computer multiplies your productivity and your capability more than any other factor except education.
- Current and complete computer operating system software.
- Vendor-purchased packages that are current and on maintenance.
- Current productivity tools that can multiply your programmers' efficiency. A typical large corporation will have at least 10 key vendor-supplied software productivity tools. You and your team should be proactive in finding them, implementing them, and encouraging their use.
- A comprehensive program change management system. Promotion to the production environment is to be accomplished only by IT management (who have not performed the change). This is a Sarbanes-Oxley requirement.
- Full file journaling on all production and test libraries. This is or will be a comprehensive external IT audit item, providing not only a wealth of auditing information but also recovery capability.
- A full test environment for every production environment. The production environment must be secured from access by all programmers. This is a Sarbanes-Oxley requirement. The programmer works only in the test environment, although production data files may be copied into the test environment.
- A comprehensive Electronic Support Desk, including complete data for projects, tasks, ticket tracking and reporting, and attached tests.
- A formal electronic programming task document that clearly states the request and contains an electronic attachment with the specifics of the task (report, menu option, program name, with the screen or report included). When estimating the hours it should take to complete the task, you should include testing, documenting, getting user approval, and implementing this task. Require that the person estimating the hours include a paragraph on how he or she envisions this task being accomplished (the basis of the time estimate). This gives the programmer a clue as to how management anticipates the task will be accomplished. The person estimating the time and method to accomplish the task must reference previous electronically documented tasks that are the same as or very similar to this new task. The tenth Excel spreadsheet upload to the Fixed Asset file should be a snap--quick, low-risk, and easily accomplished--rather than a high-risk, completely new work, even for a new programmer unfamiliar with that technique.
- A complete, comprehensive, and prominently displayed IT reference library that contains technical books, DVDs, and reference manuals on every technical discipline, vendor product, and business process installed at your company. Include additional books on important aspects of programmer and management success, including project management.
Encourage Regular Two-Way Communication with Your Team
Your success as a manager is based on the success of your team, the success of your customers, and particularly on the way senior management perceives you and your team.
The excellent managers I've worked with all had an open-door policy; they encouraged questions, required progress reports, and expected no surprises. I had the good luck to have these communicative managers at the beginning of my career, when I worked for IBM. The worst managers were the ones who made it clear that we programmers were not to bother them. The sense of isolation and the wasted time that were engendered by these poor managers were for me terrifying; I understood that difficult times were ahead and that I had to move on.
If you're not comfortable with this sort of interaction with your staff, take a look at The One-Minute Manager, which offers outstanding techniques for achieving daily (or at least weekly) face-to-face contact and communication with and feedback from your team.
Here are my suggestions for good communication with your employees, based on being on both sides of the manager and programmer relationship and on observing what is successful and what leads to failure:
- Make yourself proactively available to each team member every day. As appropriate, ask team members these questions: How can I help you? What do you need to be successful today? What is the most difficult and frustrating thing for you now? How can we do things better?
- Meet with your team weekly as a group, perhaps even over lunch, and ask the same questions. Ask for direct feedback, communicate directly with them about what you want them to know, and listen to what they want you to know and act on.
- Weekly, meet individually with every team member for perhaps a 10-minute review and summary of the week. Have each team member write a weekly electronic activity summary of his or her accomplishments, issues, and suggestions, and address issues needing your resolution. Ask the same questions as above and encourage team members to write them on their weekly activity summaries. This information and feedback is critical to you as input you'll need when you meet and communicate with your management. Proactively discuss these topics with each member: continuing professional development, opportunities and skills needed for promotion, customer and management feedback, and particularly whatever else the member wants to communicate to you.
- Periodically conduct an informal team brainstorming session where almost anything goes, where staffers can venture opinions about how really significant advancements can be accomplished. The book illustrating how the great inventions were conceived and accomplished, They Made America, makes clear that many (perhaps most) inventors and innovators get started on their path because they ask themselves, "Why can't I...?" That question is the starting point for all the great things that your team will accomplish. There are valuable techniques and inventions waiting to be created inside and outside your company when someone with passion and persistence asks, "Why can't I...?"
- Ask your team members to focus on what your customers really want and who your customers are. Communicate that your team's customers include all levels of corporate management and every level of user, and that none of your customers (from the CEO on down) knows about or cares about IT internal programming techniques, since they see only the cost or value of the finished IT product and the interaction they experience with IT.
- Develop education, professional development, and promotion plans for each member, with the input and support of the member. Work toward developing and promoting team members wherever their skills and opportunities may take them.
- Delegate the technical work rather than doing it yourself, even if you can do it better and faster. Your goal is to develop your team members to be able to do technical work better than you could ever do by providing them with the knowledge, tools, training, direction, support, and appreciation that perhaps you never had the luxury of having.
Reward Your Team Members
To succeed, you and your programmers must embrace significant change, focus on education, develop personally, increase your knowledge, strengthen your interpersonal skills, and raise your goals.
My years in programming and management have taught me that showing team members that you appreciate their efforts is vital to a programming department's success. Take a positive approach with your programmers every day.
The Success Principles backs me up: The author declares that for employees, appreciation is the single most important and powerful desired result from management--more powerful even than compensation and all other tangible possibilities.
Demonstrate your sincere appreciation to each team member and to the team as a group for their extra efforts and focus on increased success.
Be sure to tell your management that your success is based on your team's efforts, and ask them to recognize and reward outstanding performance and accomplishment by your team.
Show your appreciation by providing tangible financial benefits to those who have done their work well, beyond the expectations of your customers.
Reward your team as a group and individually. IBM was a master at recognizing and rewarding us for exceptional efforts, both as a group and especially individually. This positive reinforcement worked wonders in spurring me on toward even more extraordinary efforts. I still treasure my IBM awards and the IBM award symposiums I attended; I have happy memories of my years of working with wonderfully dedicated and motivated people, all employed by the greatest American corporation of the 1970s. IBM gave me the opportunity to splash in the Fontainebleau Hotel pool in Miami on a fabulous three-day recognition experience and to meet with top IBM executive management because they considered my work exceptional. That recognition drove me to ever greater efforts to help IBM achieve success. If you effectively communicate to your company's top managers that you believe that exceptional effort should be rewarded, you will produce similar dedication in your programmers.
So my counsel is this: Inspire and motivate your successful team members by sending them to off-site conferences, schools, and seminars for their professional development. The semi-annual COMMON Conferences can be a refreshing and motivating experience for your technical staff and IT management members. If your company can't afford the expense and time away for personnel for a full week of COMMON, then send them just Sunday through Tuesday to attend the first two days of the sessions, the keynote speeches, and the exhibitors' Expo.
Be a trusted mentor to your team members. Nothing that you can do will ultimately prevent your best and brightest members from moving on when it is their time to do so. Open and honest communication and a sincere concern for their future will help you retain team members, rather than unexpectedly lose them.
Never be satisfied with and complacent about your own performance or your position. Your significant and recognized success at your current management position means that you are a candidate for more senior management positions everywhere.
Like the great inventors and innovators, ask "Why can't I...?" Then, relentlessly and resolutely pursue your path to success and great accomplishment.
Relish your shared success. You and your team deserve it and have earned it, so you have a right to enjoy it and prosper from it.
Paul H. Harkins is president and CTO of Harkins Audit Software. Inc. He has worked in corporate IT for 43 years, starting with more than 21 years at IBM, where he was a Senior System Engineer and where he authored several IBM software products. Paul holds U.S. and international software patents and is the author of How to Become a Highly Paid Corporate Programmer. You can reach him at
LATEST COMMENTS
MC Press Online