Maslow’s Hierarchy of Needs: DevOps Edition
Maslow’s Hierarchy of Needs: DevOps Edition
An interesting implementation of Maslow's Hierarchy of Needs, focused on DevOps.
Join the DZone community and get the full member experience.Join For Free
American psychologist Abraham Maslow is best known for his concept of a “hierarchy of needs” explaining human motivations. In his framing, fundamental biological needs for sustenance and a safe environment are a baseline. Once those needs are satisfied, people want to be loved, respected by others and fulfill their full potentials. While the hierarchy of needs may be overly simplistic or culturally dependent, it is a helpful starting point for understanding the ways many people organize their priorities. The same concepts of a hierarchy of needs can be applied to the ways teams prioritize their decision around website development operations.
Humans need to breath in and breathe out. Drupal and WordPress read and write out to databases. People need an environment with water and food for energy. The basic needs of a website include electricity to power a webserver like nginx or Apache. People die without their basic needs met and an error from the wrong version of PHP could be, well, fatal.
Like people staying attentive to threats in the physical world, websites need the latest security updates to avoid exploits. Those releases should first be applied to development and test environments to ensure the changes do not endanger the site. When a team is managing a large number of sites, the odds increase that something will go wrong with the live deployment. When that does happen, safe websites needs backups of their composite elements (code, database and user-uploaded files). It also helps to have change-by-change records of code modification from a version control system like Git.
Plenty of web development teams meet the first two levels of need with stable servers and a backup system. However, they do so in an inconsistent manner with sites scattered across different hosts. Each site might have a slightly different deployment procedure. Maybe there is even one site that everyone on the team is reluctant to touch because of a poorly documented or convoluted release process. Such a site will fail to reach the next hierarchy level of belonging. A team can keep all of their sites at this level by having common procedures for each site and a unified tool for viewing the status of each site. Having tools to share code among an agency’s sites like Pantheon’s custom upstreams further enforces community and belonging amongst the sites.
How does a team know their sites are any good? More and more teams are adopting formal code review processes so that they can validate the quality of the changes being made. Tools like Pantheon’s Multidev environments allow each developer on a team to work in their own Git branch tied to its own subdomain. Once the branch is ready, another team member can review the subdomain and do a pull request review on GitHub. There, a tool like CircleCI can validate compliance with code style and team members can review the quality of the code. Each team does their validation differently. By having a process to review changes, whatever that process is, a team can feel better about the sites they produce.
In the previous stage, one developer on the team helps another answer whether a feature was coded right. That is a different question from whether they were coding the right feature. High up on the hierarchy of needs is the concept of actualization. For a site to be actualized it needs user research to validate exactly what the site should be. That research can then be turned into conversations and decisions with techniques like behavior driven development. Tools like Behat make parts of behavior driven development executable. The more complex a site becomes, the higher the need for automated tests to validate that the team’s intentions are continuously fulfilled. In order to know that a site is doing exactly what it should be doing a team needs to be very specific,down to the level of executable tests, about what is expected.
Years after first writing about the hierarchy of needs, Maslow discussed another stage to further highlight the importance of altruism. For Drupal and WordPress websites this concept can take the form of open source contributions to the community. For many developers the question when writing code is always “how could this code be more contrib-friendly?” This stage highlights how a team does not necessarily need to perfect each stage before thinking about the next. Few teams use test driven development for all of their work. They still share quality code with the world. For the people behind the code, the welcoming, friendly Drupal and WordPress communities are usually a major part their own personal hierarchy of needs. Joining and contributing to open source communities is a great way to find belonging common goals.
While it is not strictly necessary for the needs at each level of the hierarchy to build on the one before, it does usually work that way. Just as most people need food, water, and safety before focusing on intellectual pursuits, most websites need a stable server and reliable backups before implementing behavioral tests. By being intentional about moving themselves up the hierarchy of needs, developers can improve the work they produce. Websites, like everything else, reflect the people who made them in surprising ways.
Published at DZone with permission of Emily Miller , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.