Project Management In The Age Of Serverless
The practice of digital project management needs to change and adapt in order to keep step with technology advancements. Website and application development tools and practices are evolving in ways that require new approaches and skill sets from the project manager as well as the development team.
Serverless, JAMstack, containerization, headless CMS, microservices … how do these technologies impact the role of the modern digital project manager? In short, these technologies offer great potential for speed of project delivery, reduced costs and the ability to innovate.
Simplicity — the art of maximizing the amount
of work not done — is essential.
— Agile Manifesto
The power and flexibility of modern development frameworks and tools simplifies projects in certain ways — a lot of the work has already been done and new development environments can be spun up in minutes.
It’s a rapidly changing cloud ecosystem that offers some significant advantages for software development projects. To be an effective project manager it’s more important than ever to have a deep level of technical knowledge in order to manage new development workflows.
Before we look more closely at how these new technologies can impact digital projects, it’s useful to set out a pragmatic approach for managing digital projects …
Digital project management in the real world
Agile project management has become the de-facto standard for digital projects. Scrum is a popular Agile methodology. A pure Scrum setup may be the way to go, it suits experienced and multi-talented development teams. But it’s not suitable for all organisational and development setups, not least because there is no official Scrum role for ‘project manager’.
The power and flexibility available from new tools and services leads naturally to an Agile approach because it is easy to dive in and iterate. But at the same time a waterfall approach can still be a rational methodology for projects with predictable development life cycles.
The digital project manager is like a jack of all trades with great communication skills and wide knowledge of technical details, programming, business, design patterns, user experience design, testing and more. In some organisational settings the project manager takes on more of a managerial and coordination role. In small teams he/she may be required to get more directly involved with development and scrum master activities.
Therefore in the real world the best methodology may be a hybrid approach that cherry picks the most effective and appropriate techniques for a particular type of project. If necessary, take from Scrum, Kanban, XP, add in some PRINCE2 or PMI techniques … don’t be too rigid in your methodology, iterate your project management system until it fits, and then keep iterating.
Watch out for ‘Dark Agile’
One of the Agile principles is “The best architectures, requirements, and designs emerge from self-organizing teams.” But this principle can be overlooked when systems and processes from complex Agile frameworks are imposed on development teams from above.
When this happens the development procedures can become overly bureaucratic leading to unhappy and unproductive developers (sometimes known as Dark Agile). But managers like to manage, and so it can be hard for them to adopt a hands off approach and let the development team self organize.
The lesson here is that the project manager should try to ensure that, as far as possible, a healthy Agile mindset is adopted in the team and accepted by the wider management structure. This doesn’t mean that the development team should be left alone to get on with it. A pure Agile setup still has outputs, procedures, systems and controls. The project manager should lay out a system that enables the team to be self organizing while at the same time being clear about the deliverables required.
Defining a project management methodology
So in laying out a project management methodology we should consider a bunch of factors such as:
- How well-defined is the business case of the project?
- What is the level of technical expertise of the development team with modern tools and services?
- Does the project plan detail the desired functionality to a high level of specificity?
- Is the project manager responsible for a single project, or multiple projects?
- Is the development team experienced and comfortable with Scrum?
- How much custom coding is required, and how much integration?
- How large is the development team?
- Is the budget tight, what are the resource constraints?
- Will pair programming be advantageous?
- How technically ambitious or complex is the project?
- Does the organisation have a DevOps mindset or experience?
The truth is that software development is inherently chaotic and every project is different. It’s necessary to embrace the chaos at the same time as controlling it. As project managers we need to make pragmatic decisions to encourage flexibility, creativity and innovation; while at the same time using the systems and controls that we need to meet business objectives.
In order to make these pragmatic decisions correctly we must foster a deep understanding of modern software development tools and workflows … the modern digital project manager must be able to think like a developer as well as a business manager.
Adapting project management for modern development practices
It’s an exciting time to be involved with software development. As cloud computing matures it is becoming easier to build powerful and scalable apps and services more quickly and with lower costs.
It is beyond the scope of this post to describe the modern software development landscape, but the technologies worth paying attention to include:
- FaaS, functions as a service
- Containerization, for example Docker
- Headless CMS
These technologies help teams to be Agile, iterate and deliver products quickly. But to harness these powers effectively the project manager needs to be less focused on traditional PM practices, comprehensive plans, charts and waterfall-type methods and more focused on the actual development activities and release cycles.
To achieve this the practice of project management must become more Agile itself: adaptable and more concerned with delivering smaller interdependent work packages or micro services that contribute to larger strategic themes.
The impact on projects
It’s important to understand how these emerging technologies impact aspects of product lifecycle management:
DevOps. This Agile mindset fits in well with DevOps practices. DevOps and Continuous Integration/Delivery (CI/CD) are well-aligned with Agile project management principles: frequent testing and working products. This will lead to better products and outcomes.
Spikes. The ability to quickly try out microservices means that developers can easily carry out exploratory spikes to test new solutions.
Dependencies. Software dependencies are crucial in these new development methods. Everything has dependencies and as the project manager you will need to understand and keep track of dependencies.
Uncertainty. There can be more uncertainty in Agile/DevOps setups, sometimes things don’t work as expected and unplanned work is created. It is necessary to build in adequate time contingency to account for this.
Scope change. Frequent feedback from testing and deployments can impact the project plan in a way that changes the scope of the project. The project manager must be ready to ascertain these impacts and communicate them appropriately.
Testing. A serverless architecture is an integration of separate services and these should be tested both independently and together. Furthermore, some cloud services are hard to emulate locally. These challenges require a different approach to testing.
Cost. Serverless computing means that you run applications and services without having to do anything about the back end infrastructure. It goes hand in hand with FaaS — functions as a service, for example AWS Lambda. It’s a cost effective and inherently scalable model. However, it’s important to balance this benefit with other factors. For example, there’s a learning curve and this could negate any short-medium term cost savings. In some circumstances it may be better to build a monolithic app to get to market quickly and then gradually transition to a microservices architecture as the app gains traction. Also, bear in mind that FaaS services are billed per second and so a micro service that is constantly or frequently in operation can end up being expensive.
Security risks. On the one hand serverless and containerized architecture can be more secure against malicious attacks because the attack surface that you have to worry about is smaller, but on the other hand parts of the architecture are beyond your control. These modern cloud services change the risk profile of a project. It’s important to understand the impact, adapt your security protocols, and monitor your stack appropriately.
Performance. Serverless architectures can add latency because a function may have to ‘boot up’ if it hasn’t been called for a while (known as a cold start). This may not be an issue for certain types of app, and there are workarounds, but this is an important consideration when defining the technical architecture.
At the end of the day digital project managers are still managing projects and bringing a level of control to inherently chaotic situations. But the way software development is going requires a more flexible, intuitive approach than traditional PM practices: more agile, and with a deep knowledge of the technologies.