Leaping to the clouds
Skills and ways of working
- 28 September, 2021
- Article - Software Best Practices
Too often we consider technology without taking the human and team factors into consideration for effective problem solving. We need to leverage people with the relevant skillsets, and create an environment and ways of working that lends itself to methodical but collaborative value creation.
In this fourth and final instalment of our “Leaping to the Clouds” series, we unpack the importance of having the right skills and implementing the correct ways of working as part of your cloud strategy.
Team skills and productivity
Your engineering workforce costs will far outstrip your cloud platform costs. Therefore, productivity and having the correct skillsets need to play a big role in decision making.
Core fundamental engineering
Core software engineering skills include a solid understanding of how software is designed to solve different problems, how best practices are applied, and how to make pragmatic technical decisions in different environments. These skills are applicable in cloud landscapes, and are important when interacting with paradigms heavily used in the cloud like managing asynchronous data communication, handling divergence of data storage mechanisms, caching strategies, integration approaches, and more.
Specialised skills
Some skills are specifically related to cloud architectures and leveraging existing and out-of-the-box components. It’s about knowing when not to engineer from scratch and reuse provided components. You shouldn’t need to architect and engineer components that do no create differentiation for the business. For example, based on the scenario, perhaps effort should not be put into running a database in cloud hosted virtual machines, but leverage the plethora of database as a service (DBaaS) options available.
Cloud experts need to have a deep understanding of the options, technical interactions, costs, advantages and disadvantages.
Creating a shared understanding of why cloud adoption is important for your business will align both business and technical stakeholders.
Ways of working and DevOps
Ways of working and DevOps are not only applicable in general software engineering, but also when transitioning to the cloud or leveraging cloud components. In fact, cloud platforms facilitate these paradigms through providing extensive tooling and control, while managing low-level computation plumbing for us.
Shared cloud strategy and vision
Deploying to cloud can enable multiple business objectives such as improved agility, reduced costs, and faster time-to-market. Creating a shared understanding of why cloud adoption is important for your business will align both business and technical stakeholders, and ensure they are working towards a common goal.
Shared understanding of functional requirements
It is paramount to gain an understanding the existing functional behaviour of the systems and the value they provide – including business rules, data requirements, and security standards. With this grounding, decisions about the future can include cutting the fat and narrowing efforts to the areas that lend best to the overall business-digital vision.
Definition of done: When transitioning to a cloud component, or rearchitecting components, what is the criteria that defines that something is suitable to go to production? Without this understanding, progress is sluggish, completed work is nuanced, and projects often overrun.
Shared understanding of technical components
As a counterpart to understanding the functional requirements, it is critical to understand the solution architecture, options for reusing existing solutions within the organisation’s technical landscape, and employing out-of-the-box cloud components. Recognising not only their technical interactions, but the cost-value benefit to the business and the problems they solve.
An example of this would be understanding existing payroll line-of-business systems: What are the costs? How will we integrate? How does it integrate with other components of the solution?
Understanding the nature of production environments
Development environments can differ significantly in production. Traffic loads are different, people are accessing components from various regions, production might consist of different datasets, and the environment needs to be hardened from a security perspective.
Continuous integration (CI): Quality assurance
Automated and manual testing of real-user functionality and system-to-system interactions before it’s in the users’ hands are important steps in due diligence and ensuring that a working solution is provided to users and partner partner systems. There should be standardised processes for building of artefacts that can be automatically deployed, and tested, to any environment, and a strong level of certainty of the robustness of the solution.
Continuous delivery (CD): Hurdle-free releases
Automation removes any margin for manual human-error. It ensures that problems and interactions are logged and surfaced in meaningful ways to quickly diagnose and resolve, and also allows faster time to market for releases.
Analytics and feedback-cycles
Leverage tooling for strong real-time understanding of what the systems are doing, what users are doing, and how that can influence business decision making and technical component optimisation. Through analytics insights, dashboards, and reports.
Successful problem solving and technology implementation relies on experience, smarts, and problem-solving willpower to create usable and quality systems. Without adept thinkers, poor decisions in these spaces can add up to major issues on a feature or product.
Highly technical roles in the software delivery process are not commoditised, although they are sometimes seen that way because the work can be invisible.
Engineering details will make a substantial difference to the resulting solution and it is not realistic to specify these upfront (or to constantly stop and resolve small issues through a governance process).
The aim is to establish a way of working and automated engineering pipelines to minimise waste in the process of evaluating, adapting and delivering on solutions, whether it’s leveraging cloud components, or not, or hybrid systems with many pieces contributing to the whole.
Create or refine your cloud strategy
Get in touch with us to create a cloud strategy or revisit yours with a complimentary 4-hour lightning workshop.