Home About Us Services Experience Technology Resources Careers News Contact Us
Mission and Values
Leadership Team
Certifications
Capability Statement
Consulting
Development
Turnarounds
Support
Success Stories
Presentations
Publications
Awards
EDI
RFID
Extranet
Voice and Speech
Natural Language
Handheld and Mobile
Articles and Reference
Code Samples
Downloads
Regular Reading
Email Subscriptions
Services Recommendations
Software Recommendations
Current Opportunities
Careers for Developers
A Plan for Improving Programmer Productivity
"There are over a million ways to lose a work day, but not even a single way to get one back." -- Tom DeMarco and Timothy Lister
  1. Implement Regular Training
    • Begin monthly, full-day, off-site intensive technical training sessions that directly address group and individual weaknesses. This will allow consensus decision-making regarding technical issues and make large steps toward jelling the team. Weekly in-house seminars cannot be controlled very well, due to interruptions.
    • Create a required-reading list for the staff. Purchase the books for them.
  2. Implement Changes in the Leadership Role
    • Write as little code as possible, unless it is for reuse.
    • Spend most of the time thinking about projects and doing code reviews. Set detailed goals and create effective attack plans. Keep schedules on track.
    • Look for foreseeable problems so that they can be circumvented.
    • Protect team members from unnecessary work.
    • Pay attention to training group members, first in skills that are useful to the entire company and second on skills specific to a project. Perpetually raise the standards of the developers; lead them into better habits. Define future IS skill requirements.
    • Ruthlessly eliminate obstacles that keep developers from improving the product.
    • Constantly ask "How can the programmers get more done in less time?"
    • Question all requests.
    • Train a replacement.
    • Prepare strategies for transferring certain tasks to users.
    • Emphasize innovation.
  3. Emphasize Code Reusability
    • Develop code libraries that are mandatory to use and easy to access.
    • Extract extra value from every task by either using existing leverage or creating new leverage.
  4. Document Everything
    • Have each staff member keep a journal.
    • Create a Programmer's Handbook.
    • Create an End-User's Handbook.
    • Create an Infrastructure Handbook.
    • Supply on-line and hard copy versions of the above.
  5. Keep Morale at the Highest Possible Level
    • Recruit your team members every day.
    • Let their work be challenging, meaningful, and important. Make them believe they are changing the world. Bored people don't work hard, don't take initiative, and avoid ambiguous problems instead of tackling them with gusto.
    • Let them take risks; let them learn through their mistakes. Drive the fear out of the staff.
    • Let them work with cool tools.
    • Let them work with smart professionals. Spare them from Luddites.
    • Train them. Mentor them. Let them learn new things each day.
    • Let them have independence. "Ask forgiveness, not permission."
    • Recognize their achievements regularly. Lavish praise on them. Encourage them and raise their confidence levels.
    • Reduce maintenance work.
    • Create a productive workplace environment.
    • Hire coworkers that work well together.
    • Treat them like adults.
    • Reward them with bonuses based on (1) Creating reusable code, (2) Using pre-built code, (3) Low defect rate, and (4) Meeting deadlines. Reward them while the sweat is still on their brows.
    • Don't let them burn out.
    • Make work as fun as possible.
  6. Increase Productive Time
    • Any work that does not result in an improved product is potentially wasted effort.
    • Do not tolerate the NIH (Not Invented Here) syndrome. Promote pervasive plagiarism of stuff that works.
    • Engineer tasks to execute in a scheduled, remote environment.
    • Maximize the use of nighttime and off-peak bandwidth. This is like having an extra FTE to do less challenging tasks.
    • Design maximum flexibility into the software and hardware infrastructure as a hedge against the reduced shelf-life and life-span of today's technology.
    • Reduce interruptions by visit and by phone. Turn off the phone when necessary. Tell others not to page you on your phone. Use Email instead of the phone.
    • Emphasize that it is more valuable to think hard than to work hard.
    • Use powerful Rapid Application Development tools that do not remove us from serious programming.
    • If, in the first 15 minutes, you don't succeed-find someone who knows what they're doing. Use all available resources (outside experts, books, shows, the Internet, cable TV, conferences, CD-ROMs) to resolve business problems.
    • Add value to applications with reusable components such as Email, spell checkers, etc.
    • Absolutely never discourage initiative.
"Diffused knowledge immortalizes itself." -- Vindiciæ Gallicæ
© The Intellection Group, Inc.  All Rights Reserved
Privacy Statement    Disclaimer