Columns

Greenhorns and Warhorses

Joseph Ruffolo is a solutions architect at Born Information Services.

Today's IS organizations are operating in perhaps the most challenging environment in their history. A tight labor market, combined with the proliferation of new technologies and a lack of senior developers trained and experienced in those technologies, has strained many an organization's ability to manage the resources and skills that help support its business strategy.

How tight is the labor market? So tight that companies are doing everything from setting up recruitment booths at rock concerts to offering signing bonuses just to attract entry-level developers. According to a study by Meta Group Inc., a Stamford, Conn.-based research firm, there were 200,000 unfilled IS jobs in 1997. And the problem isn't likely to end anytime soon; the same study projects that the demand for people with IS skills will grow faster than the supply until at least 2002.

To compound the situation, the cutting-edge development skills that are most in demand - Java, HTML, XML, OO tools - are those that are in lowest supply among senior developers. Programmers fluent in these critical skills - or eager to learn them - are frequently less experienced and usually lack an understanding of the business issues and user needs driving new development projects. Very often, junior staffers are also deficient in the project management skills required to keep development efforts on track.

Fortunately, there are ways to bridge this "experience/skills gap." The solutions require IS management to pursue new ways of working to better leverage the most valued attributes of contributors - senior and junior.

Learning any new technology requires, first and foremost, a willingness on the part of the trainee to embrace change. Business and technology are moving far too quickly for anyone in IS to become complacent or resistant to change. Unfortunately, some senior developers view new technologies and development approaches with the jaundiced eyes of skeptics who have seen many other "hot" innovations come and go.

What's especially unfortunate is that these senior contributors are essential to any IS organization's success. Besides developing applications, they've developed an in-depth understanding of their company's business, industry, processes and priorities. They know exactly who their users are and what they need. For these reasons, their knowledge is invaluable to the organization.

In contrast, less-experienced developers are often more open to learning new techniques and tools. To them, learning new technologies is not only intellectually stimulating, but can also lead to greater recognition and faster career growth. For an IS manager, enthusiasm alone may be enough reason to focus new technology training efforts on junior staffers.

Another incentive to invest more effort in training less-experienced developers is the problem of "unlearning" among senior employees. Often, new technologies require not only the learning of new languages and syntax, but also the "unlearning" of old procedures and methods. For example, object-oriented programming is more modular than the traditional linear programming of COBOL or Pick/ BASIC. An object programmer needs to approach a project with the intention of identifying discrete tasks or operations that can be saved and reused elsewhere in the same project, later in application updates or in subsequent applications. Before linear-oriented developers can learn such object-oriented programming methods, they must "unlearn" the methods and processes that served them so well in the past.

The following tips can help IS managers bridge the "experience/skills gap," while building and retaining a better trained, more collaborative and more productive development team.

Make training an ongoing, integral part of the organizational culture.

One way to minimize complacency and resistance to change is to ensure that training and skills development are integral to the culture of the IS organization. Organizations that include training as part of an IS employee's performance review and professional goals will reap lasting rewards. Employees who are directly exposed to new ideas on an ongoing basis are less likely to rely solely on the tried and true, and are more willing to consider other alternatives.

Incidentally, when I say "training," I mean actual courses with "live" trainers and hands-on instruction. It may seem easier and more convenient to hand a developer a book on, say, Java and ask them to absorb it. But most introductory programming language books focus more on the basic "how-to's" than on the more valuable aspects of the language: for example, taking advantage of particular features and functionality, applying the language to real-world problems, using shortcuts and avoiding common problems. A proper training course gives developers what they need to become more productive in the language.

Many vendors offer training courses that transcend their products. At an organization where I worked recently, we used Forté Software products to develop financial management and distributor service applications, and to integrate SAP with other corporate systems. To assist in the learning process, both senior and junior developers took Forté training courses. Course selection included a broadly focused OO design class that taught our programming staff the fundamentals and essentials of this indispensable skill.

Besides fostering an atmosphere of openness and a respect for continuous learning, ongoing training lets developers know that their employer values them and is willing to invest in their long-term success.

Reduce the number of development tools.

Left unchecked, the number of tools used in a development organization can grow into the dozens - and no single developer can be expected to be proficient at more than two or three at most. As a result, IS organizations often have several groups that are organized around different languages, business functions or even hardware systems. This impedes an organization's ability to manage development resources, and to move team members from one project to another without major retraining and ramp-ups. By standardizing on a smaller number of development tools - preferably tools that enable programmers to describe an application logically without regard to target language or hardware system - IS organizations gain tremendous flexibility while simplifying training requirements and encouraging greater skills sharing.

Exploit the advantages of inexperience.

To most employers and employees, a lack of experience is nothing but a liability. But inexperience does have its advantages. For example, developers with less than five years of experience tend to learn more quickly and more willingly. More often than not, junior developers have the time and the enthusiasm to take on new challenges. For all of these reasons, it is best to give less-experienced developers the bulk of the coding work for projects using new technologies.

Temper novice enthusiasm with a liberal dose of mentoring.

With their knowledge of the business and its processes, as well as their ability to anticipate problems, senior developers can act as effective mentors to less-experienced staffers. Additionally, senior staffers can effectively translate business needs to system design or project management, help define the scope of a project and avoid the headaches of scope creep.

When senior and junior developers are teamed in pairs or small groups on projects, they quickly learn to rely on each other's strengths to overcome their own weaknesses. By acting as mentors, senior developers can share the benefit of their experience - thereby building junior team members' knowledge - while getting close-hand exposure to newer technologies. It's a win/win situation.

Find the right role for each contributor.

Everyone wants to feel valued and that they're contributing. People who feel they are valued contributors in an organization are easier to retain. That's why it's important to recognize the attributes, strengths and preferences of each member of the development team. For example, not every senior developer wants to - or is equipped to - be a mentor or project manager. Some people are invariably unwilling to embrace change; they may prefer to remain solitary programmers specializing in traditional languages. Very often, organizations can find a role for these holdouts as maintenance programmers of legacy applications.

Organize for interaction.

In an ideal situation, everyone learns from everyone else. An important way to foster this interaction and skills exchange is by structuring the organization around projects, not functional areas. When organizations standardize on a small number of platform-independent development tools, they are freer to assemble project teams composed of junior programmers, senior mentors and project managers. This mix can create a stimulating environment in which all contributors learn, share and build valuable relationships.

With the IS skills shortage, however, some organizations may make some ill- advised resource decisions. Here are examples of what not to do from both ends of the spectrum: 3Never turn project management responsibilities over to a developer who is unfamiliar with the technology. I know of one instance where a senior developer was put in charge of an object-oriented project - a technology he was just learning. The result? Huge cost overruns and failure.

Never expect a novice developer to learn your business on the job.

In another case, a junior developer was assigned an important Web project. He did a great job of learning the technology, but the project didn't succeed because he had no understanding of the company's business and processes. Once a mentor was assigned to the project, the work was completed quickly and with more professional results.

Results on time and within budget

Bridging the "experience/skills gap" is well worth the effort, on any number of levels. The most important result is one we all strive for: "Good code ... fast."

The cultural results are no less impressive. When all team members know that they're expected to keep their knowledge of new technologies updated and refreshed regularly, they are less likely to become "stuck" on one tool and resistant to change. Learning - not only in the strict sense of training - becomes part of the organizational culture and an important stimulant for new ideas and innovations.

One of the current buzzwords in corporate IS is "knowledge management." The concept is built around the idea that a company's knowledge is one of its most critical assets, and it's been used to sell everything from groupware and messaging to data warehousing. But you don't need a sophisticated software system to achieve true knowledge management on a smaller scale within your IS organization. All it takes is an understanding of the relative strengths of senior and junior team members, and the right environment to get them sharing their knowledge - and achieving your business objectives.