By Robert Bogue
The deployment role is a role that is often overlooked much to the pain of the users. The actions of this role are the final step before being able to hand over the code to the users for their first real road test of the solution. It is the deployment person who can have the largest impact on the initial perception of the software for the people who are first trying it out.
Success here can hide quirks in the solution but failures here can give the wrong impression about the software.
What’s the Deployment role?
A software solution of any complexity will have dependencies that must be present before the solution can be used. Many of these dependencies go unstated. For instance, a Java program needs a certain level of the Java runtime environment installed to be able to run. .NET based applications require a specific version of the .NET framework and common language runtime to run. In the case of database applications specific versions of the software drivers to connect to the software to the database are required. Click here to see how the the Deployment role fits within the full organizational chart.
In addition to these software dependencies, there may also be hardware dependencies. This could include a minimum amount of member, a required amount of hard disk space, access to multiple machines (such as a database server versus an application server), access to the Internet, and more.
The more complex the solution, the more prolific the requirements are. Solving that problem is the role of the deployment professional. It is the focus of the deployment role to create a program that constructs the operating environment that the solution needs. This includes installing prerequisites, making necessary configuration changes, identifying conflicting software, and manipulating any other components of the environment that the solution may need.
The first step in the deployment role is to identify and test by hand all of the steps necessary to make the software work in an environment. These instructions are often written as complete documentation so that even without the installation program they can install the software. These installation instructions sometimes serve as the early procedure for installing the software through alpha pre-release program and even throughout the life of the software if it is installed to a small enough group of clients.
From the installation instructions, an installation program is constructed to automate the steps identified during the creation of the installation instructions. The program must do more than just install the system, it must also, in today’s world, be able to uninstall the software once it has been installed. This must also be done in a way that is respectful of the other software that is already installed in the customer’s environment. Figuring out how to be a good software citizen with an installer is one of the most challenging things that any software development team can do.
It is challenging for a variety of reasons but none more important than the need to understand both the software development process as well as an understanding of the operating system and the network infrastructure that may be used to deploy the software. The requirement for understanding the software development process may seem obvious. They’re a part of the process so they should understand it; however, the required understanding goes deeper than this. They must also be able to identify inherent dependencies created by the development process that may not readily be obvious.
A command of the operating system (or systems if the software is to be used on multiple platforms) is also necessary since it will be the deployment professional role to manipulate the operating system from their installation program. The subtleties of whether to register a .NET assembly in the global application cache or not is an important thing for a deployment specialist to know. Considering all of the code access permissions and learning how to setup those permissions so that the user will be able to run the application is also important.
The final component that the deployment professional must understand is how automated deployment tools, such as Group Policies in Active Directory and products like Microsoft’s Systems Management Server, deliver software to the clients and how the installations must be constructed when being deployed via these mechanisms. This is a critical consideration when the software will be deployed across the enterprise since it’s not feasible to go install the software manually on each machine.
The final consideration for what the deployment professional will do is creating patches. Software teams necessarily create updates to their solutions. These updates need to be deployed to systems just as the original program was. Most consumers expect that the patches that they receive today will integrate into the existing installation rather than being another program that must be added or removed. Deployment professionals are entrusted with developing strategies that deliver patches efficiently.
Getting Started as a Software Deployment Professional
With the broad range of skills and the extensive experience requirements you might think that getting started as a software deployment professional might be hard to do. In truth there are two paths that can be used reach the software deployment professional role.
The first way to start is to work on the help desk, servers, and networking side of an IT department. In this role dealing with installation problems, trying to find workarounds for issues, the intimacies of the operating system and the network are revealed. From there it’s simply a matter of volunteering to work with the software development team to help software get installed in the environment as well as possible. Since many software development teams, particularly those inside of an organization, don’t have a dedicated person filling this role they often welcome the help.
The second path to becoming a software deployment professional is to work as a developer and focus on identifying issues that may become challenging during deployment. That means paying attention to the steps to setup a developer box and documenting them. It means looking for things in the code that may create deployment issues. From here it’s natural to get involved in troubleshooting issues when deployments are done. Once you’re troubleshooting the problems of deployments the role of the software deployment professional is in easy reach.
The deployment professional role is often combined with one (or more) other roles. Because deployment isn’t always what is called for, deployment professionals may fill the quality assurance role, a developer role, or other roles along the way. The deployment role may be one that you’ll find yourself volunteering for from your primary role.
What’s in their Toolbox?
The toolbox of the software deployment professional is a grab bag of small tools that can help work around limitations and quirks with deployments and a few larger tools designed to construct the installation programs themselves. Following are a few of the tools useful to the software deployment professional.
- Batch files — Batch files, which are the legacy inherited from DOS, is the most basic way to string together a set of commands. Batch files are showing their age with minimal error handling, messaging, and branching capabilities. However, they work on nearly every system so they are often a quick way to work through problems and are a quick way to glue together different operations.
- Scripting Languages – The inclusion of WSCRIPT and CSCRIPT utilities in the operating system have made it possible to use VBScript as a way to create more robust strings of commands with better error handling and a better ability to message. Many other, proprietary scripting languages exist as well. These languages typically require the installation of a tool on the workstations to be able to run the script. Scripts are used because they are able to do things that are not possible from batch files and are still easy enough to put together that they can be used quickly.
- Packaging Tools – The core tool for the software deployment professional is a packaging tool. In Windows these tools create a Microsoft Installation (MSI) files and can create patch files (MSP). These tools create a specifically formatted database that the installer service in Windows can read and perform actions. Extensions in the installer format allows for user provided code to be run. Wise and InstallShield have been the historical leaders in this market. Microsoft has recently released a Windows Installer Xml (WIX) project to open source that is very promising.
- Package Management Tools – Occasionally it’s necessary to snoop on the package that was created. It may need to be taken apart, monitored while running, or unwound into a set of related files. In the MS Platform SDK you’ll find a set of tools for opening, reviewing, and manipulating MSI files. These tools are invaluable for troubleshooting problems with MSI files.
- Virtualization software – With software such as VMWare and Microsoft’s Virtual PC, the deployment role has gotten easier. Rather than having to have numerous machines with different configurations to leverage as a test, the deployment engineer can have several virtual environments. This saves time because they can simply fire up the virtual machine and go. It’s even more useful in keeping the amount of space required for the deployment engineer down since they won’t have to have a dozen or more computers that are used infrequently for testing.
- Disk Image Software – Virtualization software have features that allow users to undo changes that can be very useful for testing. It allows you to try different variations without having to reinstall between attempts. If it is necessary to work on physical hardware instead of virtualized hardware then a software which copies the drive image into a file which can be restored to the machine after a test, such as Symantec Ghost, is a must. It substantially cuts down on the time spent rebuilding test systems.
Where’s the position heading anyway?
More and more consumers are getting computers. The average level of knowledge on computers is decreasing while the total number of customers is still increasing. Because of this the demand for software deployment professionals is growing. Instead of software being installed with a batch file the program must today be installed through a large number of slightly changing steps. The larger number of installations requires more sophisticated handling. The lower tolerance for problems with software due to lower knowledge requires that installations be more bullet proof. The good news is that this means a greater need for software deployment professionals. It’s more important than ever to be able to deploy software quickly and easily.
The difficulty level is going down even as the complexity goes up. The installation tools, often the last thing thought of by the industry, have been making good progress to get better. The release of Microsoft’s Windows Installer XML (WiX) toolkit is encouraging since it is making it easier, and less expensive, to develop installation files that the Windows Installer service can install.
The Good, the Bad, and the Ugly
The deployment professional can often times experience the good, the bad, and the ugly of their role all in one day. They can see the software get deployed across the organization – only to find out that here was one application it wasn’t tested with, and that one application is one of the mission critical applications for the organization – which the installation just broke. Here are just a few of the good, bad, and ugly things about the deployment role:
- Good: High Impact – The role is one of high visibility and high impact to the user community. When done right it’s easy to save hundreds of hours time for the users.
- Good: Often get to use a number of different systems with a number of different configurations. This can be fun!
- Bad: Never Enough time – Being near the tail end of the process the installation often gets rushed. The testing time to ensure that the installation doesn’t break other applications is often hard to come by.
- Ugly: Difficult to get right – Building good installations is still very technically challenging today. Over time good deployment processionals learn how to avoid big mistakes, however, even veterans are known to make mistakes that has huge impact.
- Ugly: No matter how many systems you test your installation against, it always seems that a user will have a system that is slightly different. When something goes wrong with the installation, this person gets blamed.
The deployment role is one that is critically important to the initial impression of the software being delivered. A bad installation experience can sour just about anyone’s taste. Because of this the role of the deployment professional is increasing. Although professionals are still often shared with other roles the deployment role is one which continues to grow.
Wrapping up the software development lifecycle and turning over the completed product to the users is the training role. The training professional is the last one in the process since they are the ones who get the mass of users to use the software that has been created. Their purpose is to help the users understand how to use the software that’s been created.
What’s the Training role?
The training professional first and foremost creates the materials necessary to train users how to use software. For that reason, training professionals are often tapped to create user documentation and help files in smaller organizations.
The training professional is ideally someone who has an instructional design background and therefore understands how to create materials that are effective in helping adults learn. They are also, ideally, someone who can approach the problems that the software solves in a way which makes sense to the users.
Training materials range from slide decks to handouts for training sessions to self-study guides. No matter what the material type the focus is on creating a situation where the user will find it easy to use the software – even if the user interface isn’t perfect. The trainer needs to find a way to communicate what the product does and how it does it. Whether the medium is a standard printed manual or an interactive video the goal is still the same – efficiently convey how the user can best use the solution. The trainer’s role is often the role of the super user. Because they must instruct on the software’s use, they need to have a detailed understanding of the software across nearly every feature.
In addition to the creation of training materials the training role also often delivers training. The training can be instructor lead training like the traditional classroom, an Web cast, or one-on-one sessions with key users. Performing the actual training sessions often provides invaluable feedback to the continuing development training materials themselves. It helps to expose the kinds of questions that are in the minds of the users – the kinds of questions the trainer must be prepared to answer. The author teaches most materials at least once.
In some cases a special form of a trainer may evolve in the software development process. The special form is an evangelist. An evangelist is a passionate, charismatic individual who evangelizes the product in the market. Evangelists are almost universally someone capable of filling the training role but whose passion and charisma make them stand out as advocates for the product. While they can and often do perform roles similar to the rest of the professionals filling the training role, they often side step or short circuit detailed training and answers in favor of engaging the user in the vision of the solution.
Getting Started as a Training Professional
Getting started as a training professional is often easier than other software development lifecycle roles because the primary ingredient to success is communications skills. The ability to communicate complex topics with precision and understanding separates the mediocre training professional from the stellar. The beauty of this is that everyone has experience with communicating. The powerful communicators that are successful training professionals can write as well as speak and have learn how to really connect with the people that they speak with. Getting started doesn’t take the awe inspiring communications skills it relies on a strong desire to help others learn about the solutions being created and an enthusiasm for the process that students can feel. The mechanical skill of how to engage the audience comes with experience and coaching. They require as a raw ingredient a passion for learning.
While the role may be about training users in a classroom style setting or more focused on the creation of materials, it’s the enthusiasm for helping others learn that will make the next training professional stand out.
Although an understanding of instructional design is greatly appreciated in the training industry it is usually not a prerequisite. If the role is primarily focused on delivering content that has already been created then the ability to speak comfortably in front of a group is often the only requirement. These are roles are often entry roles in an organization. More advanced candidates will have the ability to anticipate what the group of students will need and have the ability to "think on their feet." The training role is filled with twists and turns as students ask sometimes blindly simple questions and other times ask the most arcane trivia. Learning how to control the students is yet another skill that develops for most professionals over time.
What’s in their Toolbox?
The training professional’s toolbox is a bit more organized than the toolboxes of other members of the software development process. In fact, they often subdivide their tools into content creation tools and tools for instructor lead training.
In the content creation category the toolbox contains:
- Word Processing – the same word processing program that was being used by other members of the software development team but perhaps with a deeper understanding.
- A layout or publishing program – this type of program may also be handy if the type of solution lends itself to quick guides, keyboard shortcut sheets, or other kinds of highly formatted handouts.
- Presentation software program – Presentation programs, such as Microsoft PowerPoint, create the ability to generate slides for teaching the material.
- Virtualization technology – Although all training professionals do not use this technology, virtualization technology can be immensely powerful. This technology allows for the program being trained can remain unaffected by changes on the core system that they use. VMWare and Microsoft’s Virtual PC are good examples of virtualization technology that can be valuable in creating a repeatable environment for training.
In the instructor lead training side of the tool bag there are a completely different set of tools. They are:
- Presentation Software – This may include software such as Microsoft Power Point for creating slides to use for live presentations. It can also include Web casting software as well as video recording and editing software.
- Telecommunications software – If the presentation is being done remotely either completely or where some of the parties are not local, then telecommunications software may be an essential part of the toolkit. Whether the favorite software is Microsoft LiveMeeting, WebX, or another one of the presentation and conferencing software getting virtually connected to the audience is essential. Of course, these presentation and video conferencing programs are bandwidth hungry so plenty of Internet bandwidth will also be required. If a face-to-face interaction is required a video camera, which can be attached to the computer, may also be required.
- Hardware devices – Trainers are known for their toys. Little gadgets can make their job easier. Here are just a few of the devices that may be found in a trainer’s toolbox.
- Remote Clicker – Good instructors don’t want to be separated from their audience by a computer. Remote slide advance and mouse movement devices are available to allow a presentation to be run remotely. These devices occasionally have built-in laser pointers that allow the training professional to point out or highlight important information.
- LCD Projector – Whether the room has the LCD projector or if it’s brought into the room, the training professional who’s leading a class will need a way to display the content. Understanding how to setup LCD projectors is essential if instruction is a part of the training professional’s role.
- Thumb Drive – An instructor never knows what’s going to happen. It could be that the instructor’s notebook fails or the materials that were supposed to be loaded on to a computer in the room aren’t available. Carrying a USB thumb/flash drive can get the training professional out of a jam.
Where’s the position heading anyway?
There are more training materials today than there has ever been in the history of computers and yet there is still a need for more and better training. Because of the increasing complexity of software the need for good training is becoming substantially more important. Because of this the need for future training professionals is well assured. Add to this the proliferation of different mediums for training including various electronic learning formats and it’s easy to see that there’s plenty of work to be done.
Training is also a part of the process that will always be personal and therefore often face-to-face. Learning is a sensitive process. We like to learn from instructors that we can trust. In many people trusting in an instructor requires seeing them. In a globally oriented economy the trend is to source talent from the most inexpensive location. However, because training is so focused on conveying information it’s often difficult to relocate. In other words, it’s unlikely that the positions will be transferred to areas where cheaper labor is available.
The Good, the Bad, and the Ugly
The training role, like all of the roles has its ups and its downs; here are a few of the highlights.
- Good: Get to see the results – More than anyone else in the software development process, the training professional gets to see the real results of the work. The training professional gets to see the smile (or frown) on the faces of the end users when they are introduced to the solution.
- Good: Get to meet and interact with lots of people.
- Bad: End of the lifecycle – Training is at the end of the life cycle. It’s the last thing that has to happen to get the system fully functional. Because of its location training is often compressed into less time than it should have both from a content creation perspective and from the training delivery standpoint.
- Bad: Thankless – Often the trainer has the thankless job of working with users who are frustrated because their process is changing. It may take a great deal of energy to keep the users happy with the solution that is being delivered to them.
- Ugly: A wide variety of users – Training means working with all kinds of users including both highly respectable users and crackpots who will have to be suffered.
- Ugly: Some trainers are required to do a lot of traveling.
Training is without a doubt the most extroverted role of the software development process. Even the functional analysts don’t have as much contact with people as the training professionals do. Key communications skills are essential to getting the role and staying in front of the best customers.
The Project Management role is the first role in the software development process that isn’t on the main line. The project manager isn’t a person doing "real work." The project management role is one that is designed to help ensure that the software development process works as it is intended. The project management role works closely with the development management role in order to facilitate, encourage and prioritize the process.
The project management role is perhaps the most clearly defined role within the software development process due to the development of project management as a profession.
While the software industry is nascent, the project management industry is enjoying the advancement of a powerful organization in the Project Management Institute . They have assembled a guide to the body of knowledge for the project management profession that is often referred to as the PMBOK Guide. This organization has developed a widely recognized certification, Project Management Professional (PMP), which has both practical experience requirements as well as traditional testing requirements.
What’s the Project Manager role?
The PMI’s PMBOK Guide defines the project management role via definition of a project manager by defining what project management itself is. Their definition is:
"Project management is the application of knowledge, skills, tools and techniques to project activities to meet project requirements. Project management is accomplished through the application and integration of the project management processes of initiating, planning, executing, monitoring and controlling, and closing. The project manager is the person responsible for accomplishing the project objectives."
You can go to the PMI website (pmi.org) to download sample content from the PMBOK Guide, buy a copy of the guide, or sign up to become a PMI member.
Within the context of the software development process the project management role is responsible for driving the work through the process and to completion. Starting with the earliest requirements discovery sessions and ending after the training has been completed, the project manager is the one role that should be consistent throughout. Project managers work with both the development team and with business stakeholders to ensure that what is being built will match what the customer expects and that this development occurs within the expected time frame. Click here to see how the Project Manager role fits within the full organizational chart.
In that the project manager is often intimately involved with the business stakeholders they are often working closely with the functional analyst during the early stages of a project. The functional analyst is focused on getting the details of what the system must do and the project manager is focused on determining what the success criteria are and helping to educate the stakeholders about how the process works.
The project management role is generally responsible for status reports, which are frankly more tools about instilling a sense of urgency and demanding definite answers than they are a process for generating reports. They expose resource and scheduling issues as well as provide a communications vehicle for issues as they begin to occur. The project management role is typically spreads across several projects and potentially development teams. The project manager is frequently working on more than one project at one time – unlike many of the other roles in the project who may be dedicated. The project manager need not be an IT specialist, although this is helpful. The nature of their role is to provide broad based oversight.
In the software development process, the project manager is one part prodding and one part smoothing over problems in the process. They’re there to make sure that the process goes forward and they use a variety of processes, meetings, and documents (artifacts) to ensure continued forward progress and to identify problems as soon as possible.
The project management role must be capable of executing details with regular consistency. They must also be able to take a step back from those details to look at the big picture to evaluate things like risk and the accuracy of time estimates. All of this takes a measure of restraint and good listening skills. The restraint prevents the project manager from jumping in before it’s time and the listening helps to ensure that the real problem is eventually understood – and can be disseminated to everyone.
Project managers are the keepers of the process. Whatever the process is they’re responsible for making sure that it executes well. In some organizations this includes the software development methodology. The project manager is the one that makes sure that the process is adhered to so they can get the predictable results they desire.
Getting Started as a Project Manager
Being a project manager more often happens out of necessity than it does out of design. More often than not the project manager becomes a project manager because they see and understand the challenges that are being faced by the software development team and believe that they have the ability to help prevent them. This is the spark that generates an interest in taking a project management path.
One of the paths that can lead to the project management role is the functional analyst. The functional analyst bridges the gap between the business and the software development team. This is a critical skill for the project manager as well. The other skills, such as being able to generate the status reporting and communications, are necessary to maintain control of the project but they can be taught and learned with some coaching.
The project management role is one that is sometimes split into senior project managers and junior project managers. This allows the more senior staff to work on larger, more mission critical tasks, while monitoring the smaller projects through junior staff. If your organization has a project management mentoring process with junior and senior project managers getting started is best handled by approaching a senior project manager and asking what you can do to help. If no such structure exists within your organization then you’ll just have to volunteer for tasks that are traditionally project management focused such as taking meeting notes and circulating them to verify consensus.
The preparation that you should do to become a project manager includes reading the Project Management Guide to the body of knowledge (PMBOK) as well as developing your own set of templates and processes which can be leveraged in the management of a process. Templates such as a project charter, which indicate an overall vision for the project and an agreement to get started, are a standard tool that should become second nature to you.
Ultimately getting into a project management role can be easy, in the case where no one is really filling that role or where there’s a structured mentoring process, or it can be difficult where there are strong people leading the role of project management but who do not have a mentoring structure in place. If project management is important, you may need to prepare by reading the appropriate material and developing the appropriate templates and then make a change that allows you to try out your new learning.
Occasionally, getting started as a project manager is done completely by accident. A solution architect, development lead, or developer gets noticed for adherence to process or the desire to move the project forward and are encouraged to seek the position. This can be a problem for those who still want their hands on the code.
What’s in their Toolbox?
Each project manager, it seems, manages projects slightly differently. They have their own specific way of making sure that it will work. However, there are many common themes that run through the project manager’s toolbox. Here are a few:
- Project Management Software – Project Management software, like Microsoft Project and Microsoft Project Server are important tools for the project manager who must keep tight control of timelines and budget. Project management software helps document dependencies and status so it’s clear where a project is and what impact someone missing a deadline has. Most, if not all, project management software is capable of generating Gantt charts (timelines), and PERT diagrams (dependencies). These are essential tools in their own right.
- PMI Membership – Most serious project managers are a member of the Project Management Institute. Their membership magazine and local PMI chapters have a great deal of value in their ability to demonstrate new ideas and provide connections to others when you need advice on a problem.
- PMIBOK Guide – The Guide to the Project Management Body of Knowledge provides foundational knowledge that is important for all project managers and can provide sometimes not so gentle reminders when you’re project isn’t on track as to why it’s not.
- Templates and Processes – Project management can become overwhelming with the amount of artifacts (documentation) that is created. Having tools to ensure that the process itself is as efficient as possible is in every project manager’s toolbox.
Where’s the position heading anyway?
The project management role has gained a lot of ground over the past five to seven years. It’s become well recognized within IT circles that project management is a necessary discipline that is a necessary catalyst to keep the software development process running. With the hard work of the PMI the role is becoming more standardized and can therefore be more readily purchased by business users.
In short, the future looks bright for the project management role. As more organizations realize the need for a dedicated project manager and due to the continuing need for software development project managers are dearly needed.
Because of the dual role that the project manager has in managing the software development process and managing the expectations of the business customers there are often two project managers. One who works with the software development team in whatever geographic location they are in and another project manager who is more closely positioned with the business stakeholders. Sometimes the role of the project manager on the development team side is filled by a solution architect or development lead. However, this still means that there should always be project management positions wherever you are.
The Good, the Bad, and the Ugly
The project management role, like other roles has its high point and its low points. Here are some of the key things that this role has to offer both positive and negative.
- Good: High Visibility – The project management role is a high visibility role. Because it has a part in so many different projects the role is often involved in reporting to executive management in an organization so it has the potential to demonstrate good work to important people.
- Good: Key Role – The project management role is a key role to the project — one that can have a great impact on the overall success or failure of the software development process. If you like influence this is a role for you. Additionally, the project manager is often considered the person within IT that owns and is responsible for the project.
- Good: Sense of accomplishment – Because a project management role is one which works with a large number of people there’s constantly progress being made. When a project gets shipped or even when the first beta comes out there can be a great sense of accomplishment in that the project was moved forward because of the role that you played.
- Bad: Tight timelines – The project management role is at its most crucial when the project has gone awry or when the timelines are too tight. Unfortunately with the pace of business accelerating it seems like every project has a tight timeline and doing what is necessary to ensure that timelines are met often creates a high degree of stress.
- Bad: Overworked – The value that project management can bring to the software development process can’t be understated nor can the amount of work that it takes to create this value. The artifacts that drive consensus also require time to create. However, there’s not a solid understanding of the amount of work that is required to create the value and because of this project managers often find themselves stretched too thin across too many projects.
- Ugly: Politics and People – Perhaps the most frustrating thing about the project management role is that it is focused on fixing political turf wars, keep people working with teach other and moving forward. This means that there’s a heavy dose of pop-psychology that must go on to get the project done. The drain caused by so many whining people can be overwhelming at times.
- Ugly: The project manager is the one that may have to make the decision to have people work extra hours to meet deadlines.
- Ugly: The project manager is the one that has to maintain a projects scope – what will or won’t be included. They are often caught in the middle when decisions need to be made on what can be completed within the given time frames.
The project management role isn’t for everyone. A strong ability to adapt to an ever changing environment and the ability to work through internal politics are critical for success in this role. However, the ability to right a project that has gotten off track is a much sought after and highly valuable skill.
It is possible to believe that there is nothing left to be done. That all of the roles outlined thus far is all that is needed to make the process work. However, the role of the development manager is critical to the long-term success of the software development team. The role that the development manager plays – particularly when interacting with the project manager – is essential to a continuously improving process.
What’s the Development Manager role?
The development manager’s role can be described as "everything else". Although accurate this description is not very illuminating.
The development management role is the role whose purpose it is to keep the vision on track. This is much like a CEO, who sets the vision for an organization. This of course differs from the COO, who-like a project manager-ensures the day-to-day operations. While it’s the project manager’s goal to get the project to the finish line, it is the Development Manager ‘s responsibility to look ahead to make sure that the finish line is the right finish line to be reaching. While the project management position is a management position, the development manager role is a leadership position. Click here to see how the the Deployment role fits within the full organizational chart.
The development management role works closely with the project management role to ensure that the projects are completed. They also spend time working with the business owners on planning and preparing for new projects that will soon be consuming the group. They’re constantly making small changes in the current project to get a better product, develop a better skill set in the group, or just generally preparing the development team for the next hurdle that they must face.
While the project management role is dutifully executing the current process, the development manager is examining, evaluating, and assessing the impact of potential changes in the market. The development manager is constantly evaluating ways to improve the skill set of the group. That can be through the use of a new tool or technique, or additional training on fundamental skills that the group already knows but doesn’t execute consistently. The project manager’s short-term focus allows the development manager the ability to focus on longer-term objectives.
In addition to the long-term objectives the development management role is intimately involved with prioritizing multiple, nearly always conflicting, priorities across software development projects. With the help of the project managers, the development manager intertwines the activities of multiple projects to improve the efficiency of the team.
In some organizations the development manager is also responsible for evangelizing to business leadership. While the training role was responsible for evangelizing to the "rank and file," the development manager evangelizes the solutions, the process, and the team to business leadership and customers. This portion of the role is more marketing than development, but is an essential part of ensuring that the business is aware of the value of the software development team.
The development manager also is often the cheerleader that pumps up the development team, encouraging them to remember the vision, to be a part of greatness, and generally be excited about the work that they’re doing. Great teams work hard but have fun with each other and believe in what they’re creating. It’s the development manager’s role to create that shared destiny that the group needs to be truly powerful.
In non-software development or consulting companies, the development manager role is often played by the IT management. Often times the IT manager leverages the strengths of a project manager or a solutions architect to fill the needs of the development manager role, retaining tasks such as cross prioritization of projects.
Getting Started as a Development Manager
The development manager role is at the top of the food chain, so to speak. Because of its position at the top of the IT organizational chart, it’s a role for which there is generally great competition. One of the most important parts of preparing for this role will be differentiating you from the competition. (See Standing out from the crowd )
People filling the solutions architect role or the project management role have the best chance of moving into a development manager role. The development manager who comes from the solutions architect position generally leads from technical strength. Conversely, the project manager who moves into the development manager role leads from a process strength. Neither is better than the other, however, the approaches to the role will be different. Understanding that both can be successful is important.
To prepare for the development manager role, you should be primarily concerned with learning how to communicate with the business leadership and learning how to adapt software development priorities to match the business goals. Offering to get involved with business management meetings in lieu of the development manager – or in addition to the development manager to take notes or document action items – exposes you to the kind of discussions that the development manager must be able to be effective at.
Communication is more than just one directional, however, while learning to understand the business goals and the impact on the software development process is important, it’s also important to be able to communicate with business management about the state of the software development group, good or bad. This includes the state of software development projects. Volunteering to present or prepare status reports helps to encourage this kind of communication.
Ultimately, becoming a development manager is demonstrating these communication skills, gaining the respect of others, consistently delivering, and a little bit of luck since development manager positions don’t come around that often.
What’s in their Toolbox?
The toolbox of the development manager is less about the kinds of "hand tools" that most other roles are intimate with. The development manager’s tools are more about "power tools" and "automated machinery" which the development manager leverages to transform the group. Here are some of the tools the development manager will use:
- Methodologies – Development managers have their own methodologies for developing software. The ability to execute that methodology or their methodologies is a great tool. Some development managers may use existing methodologies derived from the Capabilities Maturity Model Integration (CMMI) framework created by The Software Engineering Institute (SEI) at Carnegie Mellon University in Pittsburg. The SEI web site at http://www.sei.cmu.edu/ has a wealth of information about the metrics for ensuring that the processes that are in place at an organization are effective.
- Practices – Development managers need more than just broad methodologies they need a practical guide to understanding what does and doesn’t work in Software development. The Guide to the Software Engineering Body of Knowledge (SWEBOK) contains the high level overview of software development best practices and is freely available at http://www.swebok.org. The development manager can also use the guide as a tool to identify gaps in the team’s knowledge and develop strategies to fill those gaps.
- Career Development Process – Development managers are responsible for developing the group. That means a firm understanding of how to develop people in the organization. The development manager may be familiar with one or more than a dozen approaches to developing the careers of the people that work for him (or her).
- Scheduling Tools – The development manager is adept at scheduling multiple conflicting priorities and as a result is skilled in the use of a resource scheduling tool. Whether a simple Excel spreadsheet or a deployment of Microsoft Office Project Server 2003, the development manager knows how to ensure that resource management is well taken care of.
Where’s the position heading anyway?
Even the staunchest of organizations are beginning to realize that IT is necessary to function and it is software which allows them to leap frog their competition in terms of features and efficiency. Growth for development managers is steady but not at a breakneck pace.
Development managers are being asked to become more a part of the business management to better understand the business drivers that the organization is facing. This brings with it the opportunity to better learn the organization and the industry. This leads to other opportunities outside the software development world.
As technologies become more advanced and the options become greater it will be necessary for the executive management to have a liaison between the business and the technology to help them understand what is possible. The software development manager role is often the key person to fill that role since they have the broadest understanding of how the organizations’ systems work.
The Good, the Bad, and the Ugly
The development manager role has a great deal of perks but still a few downsides. Here’s the good, the bad, and the ugly:
- Good: Develop People – The development manager, more than anyone else, has the ability to help Shepard people through their careers. This can be an immensely rewarding experience.
- Good: Hiring Authority – Often the ultimate decision of who to add to the development teams resides with the development manager. It means that more than any other role the development manager can shape the dynamics of the team.
- Good: Company Impact – Done right the development manager role can have a huge positive impact on the organization’s growth.
- Bad: Reports – The development manager is often saddled with creating and presenting reports of various types on the development process. The project manager may help but the development manager often gets stuck presenting the reports to executives.
- Bad: Responsibility – The development manager is often the key person responsible for a project’s success or failure. If a project fails, it can potentially cause the termination of the development manager’s job.
- Ugly: Letting People Go – No one likes to admit that they made a mistake, but ultimately someone’s got to rectify it. The development manager often gets the unenviable task of eliminating people from the team when they don’t achieve the team’s standards.
Development managers come in all shapes and sizes. Each background brings a unique flair to the role. However, learning how to communicate and evangelize to the team, to management, and to the rest of the organization can help you find your way to the development manager role.
About the Author
Robert Bogue, MCSE (NT4/W2K), MCSA:Security, A+, Network+, Server+, I-Net+, IT Project+, E-Biz+, CDIA+ has contributed to more than 100 book projects and numerous other publishing projects. He writes on topics from networking and certification to Microsoft applications and business needs. Robert is a strategic consultant for Crowe Chizek in Indianapolis. Some of Robert’s more recent books are Mobilize Yourself!: The Microsoft Guide to Mobile Technology, Server+ Training Kit, and MCSA Training Guide (70-218): Managing a Windows 2000 Network. He was honored to become a Microsoft MVP for Microsoft Windows Server – Networking . You can reach Robert at Robert.Bogue@CroweChizek.com