Not all projects are created equal. There are large projects and small projects, complex projects and simple projects, short-term projects and long-term projects, top secret projects and open source projects
Editor's Note: This article is excerpted from chapter 3 of Fundamentals of Technology Project Management, by Colleen Garton and Erika McCulloch.
The list could go on and on. There are many different perspectives on which projects belong in which categories. If a company usually works on projects with a duration of three to six months, it would consider a year-long project to be long-term. An organization such as NASA would likely consider a year-long project short-term. A long-term project for them might be twenty or thirty years! Complexity is also subjective. What one company would consider complex another may consider simple. For these reasons, I am not going to try to specify what these terms mean. Each company will have its own definition for these terms and their meaning within the organization. If you are starting a new job as a project manager, you will need to ask for clarification on the terminology used within the organization. That way you can be sure that you are using the correct terminology and categorization for projects.
There are some categorizations of projects that are common across companies, such as internal and external projects, desktop, web and mobile projects, and software and hardware projects. I explain these in more detail in the following sections.
Internal vs. External
An internal project is a project in which the client is a person or department inside your organization. An external project is a project in which the client is a person or company outside your organization. When I refer to the client, I mean the person, department, or organization that is funding the development of the project. The end user of a product is not necessarily the project client or the customer.
Some companies almost exclusively develop internal projects. Technology, Internet, and software companies such as Microsoft, eBay, and Dell primarily develop internal projects in which they are their own client and the end user is the general public. If your project is internal, it is important to remember that you do have a client, and you have the same responsibilities to that client as you would if you were working on an external project.
Let’s assume the company owns and develops a web product/service with product releases on a six-month project cycle. The client could be a product management group, a business development group, or perhaps even the CEO. The client will provide requirements and will be the person or group who signs off on the deliverables. It can be trickier keeping the floodgates closed to midproject requests for additional features and enhancements when working on internal projects. If you do not have a contractual agreement, it can be harder to say no and to justify why you are unable to fulfill a request. Remember that a project manager has the same responsibility to his or her team members to not work them into the ground as he or she would if the client were an outside company. Project managers must not allow themselves to be bullied into taking on a lot more work than the team can handle due to pressure from senior management. If there is a release due in six months, there needs to be a project plan and schedule that can be accomplished in a six- month time frame. Believe me when I tell you that no project manager will enjoy working on a never-ending project. It can easily happen if the same discipline is not applied to internal projects as to external projects.
It is inevitable that if you keep adding more and more features and pushing out the delivery date, before you know it, your six-month project lifecycle is going to be in its fifteenth month with no end in sight! If you see this trend starting to occur within your company and on your project, you should meet with the project team and the sponsor to reevaluate the goals of the project. If the expected outcome of the project keeps changing, you will be unable to deliver on it effectively. A disciplined approach to project management is a necessity for each and every project in order for them to be delivered on time, within budget, and with high quality. Having some flexibility with the completion date can also work to your advantage. If you do not have a legal responsibility to complete the project on time, both the internal client and the project team have the option of asking for more time to add or enhance features if it is going to add significant value to the project.
The quality of your product or service is a major success factor in both internal and external projects. The project manager of an internal project has the same responsibility to both define and achieve quality in the product as the project manager for an external project. Accountability may not be as formalized for an internal project. However, maintaining a high level of professionalism by ensuring that you are developing and delivering a high-quality project is of the utmost importance.
Another issue that can occur with internal projects is the lack of a standard budgeting process. If you do not know how much money is in your budget, how do you know whether the projects you are managing are cost efficient? Your internal client may assume that since you are not tied to a budget, you can just keep adding things to the schedule as you go along with little or no impact on the project outcome. This is not the case. The resources required for projects are not limited to money. People and time are also limiting factors. You may have the funds to pay for more people, but it is not always possible to divide a two-week task for one engineer into two one-week tasks for two engineers. There is a limit to how many people can be working on the same piece of code at the same time. This looseness around budgets can work to your advantage, however. If you want to use new development tools or environments it will be easier to get funding than if an outside client were being asked to foot the bill. You may have more flexibility in your estimates. If you have underestimated costs by 40 percent, it may not be a huge problem if the costs were not tied to a strict budget in the first place. Regardless of these advantages,
I would advise that you try to stick to a standardized process for your projects as much as possible. It is a good discipline to learn early on, and it will serve you well in the future regardless of whether you are working on internal or external projects. Learning sloppy project management skills is not going to help you in the long term with your personal career development. It is very difficult to unlearn bad habits!
External projects have their own set of unique problems and advantages, too. Working with outside clients where you are restricted by very specific contractual agreements can reduce the flexibility that you have in how you implement and manage your project. Your accountability is going to be to a wider group of people and departments. There will be a more formalized process for reporting the status of your project, and it is likely that you will be expected to follow a standard reporting process. You may find that you have less autonomy managing an external project than you would have managing an internal one. Your milestones and deliverables will have high visibility. Client interaction can be time-consuming. The client’s company likely uses some different terminology than your company does, so miscommunication and misunderstandings are common pitfalls. Every detail of the project should be documented, including the definitions for terms used. The client may be very demanding and not sensitive to the fact that you have other clients and other responsibilities.
The benefits of working with external clients include the fact that you must have a clearly defined and documented budget for your project. The client has a project completion deadline and a contractual agreement detailing exactly what is included in the project. Changes must go through formal change control, as it is the only way to ensure that costs are kept within budget. Though the client might be a pain in the butt to work with, you always have your contract as ammunition to back up your reasons for denying a request or referring it to change control. Your relationship with a client is very different from your relationship with someone who works for the same company as you. The relationship is much more formal with an outside client, and communication will be subject to specific standards and guidelines as defined by your company. It is good practice to ensure that you keep your client relationships as formal and professional as possible. It will help you avoid situations where the client employs the use of emotional blackmail tactics when requesting additions and changes. By “emotional blackmail,” I mean using personal friendships or favors as collateral. It is hard enough when you have to deal with this internally; do not fall into the trap of letting it happen to you with external clients, too!
If your company works primarily on external projects, it is very likely to have some internal projects, too. For example, it must have business/desktop systems that employees use for development and administrative purposes. It may have a company website and/or an intranet site. Some companies develop their own proprietary tools and applications for use by their employees. In addition, system and software upgrades are managed by internal support groups such as IT, IS, or desktop service teams. If you are working on these internal projects, ensure that you are using the same project methodologies as you would if you were working on a product development project. All projects must be managed effectively if they are to be successful. It is easier to hide inefficiencies when working on projects for internal groups that do not affect a product or service that is destined for sale to an outside client. Do not allow yourself to fall into the trap of embarking on projects with no real plan, unrealistic time lines, or without an approved budget. It is your responsibility to set the standard for how your projects will be set up and managed. Set the bar as high as you can, and expect others to follow your lead. Lack of accountability is a poor excuse for executing substandard projects.
Desktop vs. Web vs. Mobile
There are quite a few differences between managing projects for desktop software, web products, and mobile applications.
Desktop products, whether they are single install or enterprise-wide software programs, have their own unique challenges. Web-based products are much easier to update than desktop software, especially desktop software that is purchased as a CD. Once the CDs are burned, the product is going to stay exactly the way it was when it left the manufacturer unless the user has Internet access and is able to download updates via the web. Even for desktop software that is delivered as a download from the web, the customer has to participate in the downloading and installing of updates. Each fix requires that every user update their product individually. The biggest problem with this is that there is no way of ensuring that all users download the upgrades. Many of them won’t, so you have lots of customers out there all using different versions of your software.
These days, customers are not prepared to pay for a new version of software just to fix bugs. They expect to be able to download those fixes via the web. This means that desktop software development teams need to be doing some ongoing web programming. They also need time and resources for testing the download and installation of updates on multiple platforms.
Programming code to run on different hardware and operating systems can be quite challenging. Deciding minimum requirements requires finding the delicate balance between a broader potential customer base and the increased costs of coding and testing of the supported configurations. Different versions of the product will need to be developed for different platforms. Backwards compatibility is also an issue. If a user upgrades to a new version of the product, there is a possibility that his or her files from the old version may not work with the new one. If a user upgrades his or her operating system (OS), will the product still work? If it will not work with the new OS, will the user be able to download an upgrade free or will he or she be required to purchase a new product? You need to decide how long you will continue to test your software on newly released OSs, who will perform the testing, and who makes the decision about what to do if there are issues.
Developing and testing a desktop product goes beyond making sure that the product runs on the system that the engineer is using for development. Your engineering team is very likely developing on rather expensive high-end computers. Many of your end users may be using much cheaper lower-end systems. You cannot assume that what appears to work well on the developers’ computers will work well on the majority of your user’s computers. Do you have sufficient test systems for your developers to test that their code runs optimally on the older, slower machines with less memory and different OS versions? Will you make assumptions about some configurations or test every single one? During the planning stage of your project, you must ensure that you take all these things into consideration. Ask a lot of questions and document the answers. Make sure that what is documented in the technical specifications and test plans is congruent with the requirements in the Marketing Requirements Document.
One of the biggest advantages to developing web-based systems is the ability to roll out upgrades and fixes to the product for every user all at the same time. One update to the website changes the product for everyone. One caveat here is if the system is not entirely server based and requires a client-side installation, this may not always be the case.
If a lot of different combinations of platforms, OSs, and browsers need to be supported, this can create a high level of complexity for web projects. In addition to ensuring that the application is designed for, and tested on, numerous combinations, there is also significant system and load testing required to support a web product. This multiplatform coding and testing needs to be taken into account at the project planning stage to be sure that you have allocated sufficient time for the deployment tasks.
One challenging aspect of developing for the web is coding the graphical user interface (GUI) to look good and work well across different platforms and browsers. The same code will display very differently on a PC than on a Mac and differently in different types and versions of browsers. Graphically rich websites may be very slow to load on slower systems. Some effects and functionality may require that the user installs specific add-ons and browser extensions. There will be different versions of these available, too, so this adds even more configurations to test. Then there is the issue of screen resolution, affecting how the site displays and scrolls. Decisions have to be made concerning which platform/OS/browser/RAM/connection speed combinations the site should be optimized for. It is almost impossible to optimize a website for everyone.
Developers need to develop and unit test their code often using just one system configuration. Quality assurance teams then have their work cut out testing the numerous different combinations. If an end user is on a slow connection, his or her system may time out on some CPU-intensive screens, making the product unusable for them. If you test your web application using only your corporate high-speed Internet connection, how will you know how well it performs on a more typical home computer setup? It is possible to get around some of these problems by supporting a very limited number of OS/browser/connection speed combinations, but this can sometimes backfire. If the majority of your prospective end users are using an unsupported system configuration, you risk losing a lot of potential customers. The early adopters who are quick to upgrade to the latest versions of firmware and software will be disappointed if your web application stops working when they upgrade to the newest OS or browser.
Load and stability tests are critical for web-based products and services. Unlike desktop products, which are generally designed to run on one computer with one user at a time, a web product needs to support multiple users with a user count that may vary greatly from hour to hour, day to day, and week to week. There are many bottlenecks that can be encountered over which the user has no control, for instance network problems caused by the user’s Internet connection or at the facility where the site is hosted, a high number of users on the site, or reduced website capacity due to technical problems/system crashes.
Load testing is often more of an art than a science. Numerical models and statistics play a big part in figuring out how to best test for load and stability. However, without an in-depth knowledge of the product and how it is likely to be used, those models may not give very accurate results. The higher the application complexity, the more difficult it is to create an accurate model for testing. You need to know what percentage of your users will be using which browsers, OSs, and connection speeds.
People on higher-speed connections may perform functions at a faster speed than those on slower connections. More computer-savvy users may use the site differently than novices. Users with slower connections or systems may stay on your site longer because pages take longer to load, or they may get bored and leave more quickly. You cannot assume that your daily users will be spread evenly throughout the day. There will be peak times during each day and each week and possibly each month or each year. These peak times will depend on your product and your users. Will they be using the product during work hours or during their free time? In which time zones are they located? To build accurate statistical models, you need a really good understanding of user demographics, who they are, how and when they will use the product, and what systems they are using to connect. The more you get into the details of load testing, the more mind-boggling it gets. Suffice it to say, if you have a web product, make sure that you have adequate time for testing and that your load-test engineers are experienced and knowledgeable in the tools and techniques for effective load testing.
If end users are playing around with the product and either intentionally or accidentally crash the system on a desktop product, they are going to crash their own computer and it will not affect anyone else. If they are using a web product and manage to crash the application, it is possible that they could also crash the server. There is a potential that hundreds or thousands of other users could be affected by a situation like this. The web application needs to be designed to handle these types of problems in a graceful way with minimum impact to other users.
Security and privacy for web-based products is another area that needs adequate attention, documentation, and a lot of specialized testing. A denial of service (DoS) attack could bring down your whole system and perhaps even your business systems if they are running on the same network. There is a lot more to developing products and services for the web than just writing a few lines of HTML and adding some video.
Remember that it is much easier to track down the cause of a critical problem before your website is live than afterwards, so check and double-check your test plans for both functional and performance testing before you sign off on the project plan!
Mobile Applications and Websites
At the time of writing this book, mobile applications and mobile versions of websites are still relatively new. The technology is in the adolescent stage, in the middle of being an innovative new technology and a mature product. All the cool tech companies have released their own apps. Even the not-so-cool companies are releasing apps. The quality of the apps ranges from excellent to appalling, and unfortunately many of them are closer to the appalling end of the scale than the excellent one!
Everyone is scrambling to develop an app even if they are not really sure why they need it or what it should do. The same thing happened in the mid-1990s when the World Wide Web came into existence. It was important to have a web presence even if you had no idea why you really needed it. Often the decision to move into a new realm of technology is made in the boardroom. Someone on the executive management team asks, “Do we have an app?” and before you know it, a project has been approved and funded to create a mobile app. The business case, in many cases, is not very strong. This can leave the project manager in the unenviable position of trying to figure out how to turn this into a successful project and product!
Just because your company currently does something successfully using the web, it does not necessarily mean that a mobile app will make it better or more profitable. Without a strong business case, you risk creating something that is functionally weak. Even if it is technically well designed and stable, if it doesn’t do anything useful, why develop it? There are too many mobile apps out there designed to replace web applications that have stripped out so much of the original functionality that they are almost useless. Functionality appears to have been secondary to performance in the design. This is likely due to the pressure to move quickly. If left to engineers to make the decisions about how to get it done in the shortest amount of time, they will strip out the CPU-intensive functionality, and what is left is what is included in the app. Oftentimes the CPU-intensive functions are the most important features. Make sure the sponsor and the project owner know what is important to the end users. If they can do two simple things with the mobile app but have to go to the full web application to do most of what they need to do, the mobile app is going to be a waste of time. There is not such a shortage of mobile apps that users will love anything you give them. They have a lot of choice, and they have seen what a well-designed and functional app can do. They expect quality. The need for speed sometimes blinds business and product managers to the need for quality.
Just because the app is for a small device doesn’t mean that you should skimp on the design, development, or testing of the product. If you finish your project on time and within budget but the product fails, is it your fault? If you were responsible for deciding the functionality, you probably need to take responsibility for that. If you did not make those decisions but you did not try your best to educate the decision makers on the dangers of cutting corners, you also need to take some responsibility. If you do your best to steer things in the right direction but are not able to influence decisions, then absolutely you are not to blame for any failure of the resulting product.
Once the decision is made to create a mobile app, you have to decide which device(s) you will build it for. The more combinations of devices and OSs you select, the more programming and testing will need to be done. As the mobile market continues to increase, the complexity of mobile app development is going to increase also.
Most mobile device users expect that when they connect to websites using their mobile browser, the sites will be usable. Some are and some are not. Often the same problem occurs as with the mobile apps, where the most important functionality is missing. If the website does not include the option to view what is referred to as the full, or desktop, version of the site, the user may be unable to use the site at all without connecting via a regular computer. That rather defeats the object of being mobile! Some website owners create mobile versions of their sites and then include multimedia content that cannot be viewed on many mobile devices. It is a simple fix to add a transcript of a video or a short article containing the same information for mobile users whose devices are not compatible with the multimedia content. Many business managers are not aware of the difference in technology between different devices so may not explicitly ask that content be made viewable in one form or another for all mobile users.
In some cases, a mobile version of a website may be a better solution than developing a mobile app. Many times a company does both. This can be good and bad. If both are stripped of functionality with no way to access the fully functional website from a mobile device, you may be making the mobile experience worse for your users than it was before you decided to create that mobile app and website!
Software vs. Hardware
Many projects contain a combination of both software and hardware, but they will likely be primarily focused on one or the other. For instance, a hardware project may use software to support the hardware development and vice versa.
Examples of software projects include desktop programs (one user), enterprise software (multiple users on a network), web and mobile products and services, telecommunications, and databases. Examples of hardware projects include desktop/laptop computers, servers, networking, backup systems (tape drives), storage systems (flatfile and databases), consumer electronics and telecommunications, and aerospace.
Most of the examples used in this book relate to software projects. There are differences between managing software and hardware projects. However, the similarities far outweigh the differences. The following table shows a basic comparison of the lifecycle phases for software and hardware projects.
Hardware projects are generally less complex than software projects due to the use of standard components. For example, a company who manufacturers servers will usually purchase the disk drives, power supplies, and some circuit boards from a manufacturer who specializes in those specific components. The components are built to standard specifications and meet the compliance criteria. Less complex they may be, but mistakes can be much more costly. If you burn 400,000 CDs and find that there is a bug in the code and have to recut a master and reburn the CDs, it is going to eat into the bottom line a lot less than if you have 400,000 high-availability servers just off the production line and find a design flaw that makes them low availability and they have to be rebuilt with newly designed components. That kind of mistake could bankrupt a company overnight.
One anomaly that is interesting to note about hardware versus software is the apparent inability of these two technology disciplines to work together effectively. I am not sure whether this is due to a rivalry between these two distinct disciplines or a lack of understanding of how much each one impacts the other. I suspect the latter. It is often the case that we think whatever we personally are doing is the best, the most important, the most challenging, and so on, when, in fact, we just don’t understand enough about what others do to truly appreciate their challenges and achievements.
In my observations, it seems that hardware developers tend to be totally hardware focused despite the fact that their products usually require the use of software to work. The same goes for software developers. They are so focused on the software that they often forget to take into account the different kinds of hardware that the product needs to run on. Neither can work without the other, but there is not much evidence of integration between these two groups in today’s technology companies. Some companies may have both hardware and software departments or teams, but it is often the case that they do not work together on one project team for a specific product. The hardware is kicked over the fence to the software department (or company) and vice versa. What great strides could be made in this area if the project managers working in these two disciplines had a greater understanding of the challenges that each faces. We could see a lot less “install and setup” time for products if they were truly designed to work together!
Want to learn more about project management best practices now? Pick up your own copy of Fundamentals of Technology Project Management, by Colleen Garton and Erika McCulloch - available and on sale at the MC Press Bookstore today!
MC Press Online