In her Personality Matters series, Leslie Sachs examines the personalities and people issues that are found in technology groups from cross-functional, high-performance teams to dysfunctional matrix organizations.
Developing software in the cloud involves working with people who are likely in a different location and possibly employed by an entirely different company as well. These folks may have very different priorities than you do, and getting what you need from them may be quite a challenge at times. Development in the cloud involves development in an environment where you do not always have full control of the resources you need. You may feel that you are the customer and you deserve service. But the reality is that interfacing with all of the stakeholders in a cloud-based development environment presents unique challenges. Your people skills may very well determine whether or not you get what you need. Read on if you would like to be more effective in developing in the cloud.
Control of Resources
Development in the cloud has a number of challenges, but none more apparent than the obvious loss of control over essential resources. Development in the cloud involves relying upon another entity and the services that they provide. This may work out great for you, or it may be the worst decision of your career. One issue to address early on is how you feel about having to rely upon others for essential resources and the resulting loss of control. This situation may create considerable stress and even anxiety for technology managers who are responsible for the reliability of their companies’ systems.
Anxiety in the Cloud
Seasoned IT professionals know all too well that bad things happen. Systems can crash or have other serious outages that can threaten your profitability. When you have control over your resources, you may have a stronger sense of security. With the loss of control, you may experience anxiety. As a manager, you to need to assess your tolerance for risk. Risk is not bad, but it needs to be identified and then mitigated as best you can. One way to do that is to establish a service-level agreement (SLA).
Setting the SLA
The prudent manager doing development in the cloud will examine closely the SLA that governs the terms of the cloud-based resources upon which you depend. You may have to choose, however, between working with a large, established service provider and a smaller company that is willing to work harder for your business. This is where you need to be both a savvy consumer and a technology guru. If you think that ironing out all of these terms is going to be easy, then think again. However, you can always be certain that communication is key.
Communication Is Key
Make sure that you establish an effective communications plan to support your cloud development effort, including announcing outages and service interruptions . You should consider your service provider’s established communications practices within the context of your organization’s culture. Alignment of communication styles is essential here. Realize that you must not only plan to receive communications but also to process, filter, and then distribute essential information to all of your stakeholders. Remember, even weekend outages may impact the productivity of your developers. The worst part is that you may not have a specific dedicated resource at the service provider with whom to partner.
Faceless and Nameless Partners
Many large cloud-based providers have well-established service organizations, but you, as a manager, need to consider how you feel about working with partners whom you do not know and may never actually meet. The faceless and nameless support person may be just fine for some people, especially if they do a great job. But, you need to consider how you will feel if you cannot reach a specific person in charge when there is a problem impacting your system.
If you are paying a service provider, then you will most likely expect to be treated as a customer. Some Internet service providers (ISPs) may have excellent service, while others may act like they are a utility with an absolute monopoly. For example, at CM Best Practices Consulting, we've had some experiences with ISPs that provided horrible service, resulting in an unreliable platform supporting the website for our book on configuration management best practices. Poor service aside, there are certainly advantages to considering cloud services as a utility.
Cloud as a Utility
When you need more electricity, most of us might assume that the electric company will provide as much as we need. So the cloud as a utility certainly has some advantages. If you need to scale up and add another hundred developers, giving each one a virtual image on a server farm can be as easy as providing your credit card number. However, you should be aware that knowing that additional resources are available might lead to your failing to adequately plan what resources will be needed. A good manager should still have a plan in place to meet these requirements.
Planning and Cost
Planning and cost can be as dangerous as running up bills on your credit card. In fact, they may actually be on your credit card. From a personality perspective, you should consider whether or not using cloud-based services is just a convenient excuse to avoid having to plan out the amount of resources you really need. Frequent upgrading can get expensive and ultimately impact your project’s success. Development in the cloud does not mean that you have to stay in the cloud. In fact, sometimes cloud-based development is just a short-term solution to respond to either a seasonal need or a temporary shortage. You should always consider whether or not it is time to get out of the clouds.
Bringing It Back In-house
Many cloud-based development efforts are extremely successful. Others are not. Ultimately, smart technology professionals always consider their Plan B. If you find that you are awake at night thinking about all of the time lost due to challenges in the cloud, then you may want to consider bringing the development back in from the cloud. Just keep in mind that every approach has its risks and you probably cannot implement a couple hundred development, test, or production servers overnight, either. Many managers actually use a hybrid approach of having some servers in house, supplemented by a virtual farm via a cloud-based service provider. Having your core servers in house may be your long-term goal anyway. Smart managers consider what works best from each of these perspectives.
Being pragmatic in the cloud means that you are willing to employ any sound technology effort while keeping both eyes open to the risks and potential advantages of each approach. Cloud-based development has some unique challenges and may not be the right choice for everyone. You need to consider how these issues fit with you and your organization when making the choice to develop in the cloud.
 Aiello, Robert and Leslie Sachs. Configuration Management Best Practices: Practical Methods that Work in the Real World. Addison-Wesley, 2010, p. 155.