When my girls were little, they were big fans of  “The Little Mermaid,” so at bedtime I would read to them from a book called “Ariel’s Painting Party.”

The story goes like this: Ariel saw a sunrise that was so beautiful that she decided to paint it. When she was finished, she showed it to her friends. But her seagull friend thought the painting needed more birds, and her friend Sebastian the crab thought more shellfish would make the painting better, and friend Flounder though it needed more fish.

Ariel decided they should all paint pictures and to let her father, King Triton, decide which was best. (Trust me, I’m getting to a point about software development.)  So they did, and Triton, in his infinite wisdom as the ruler of all things wet, said that while all the pictures were nice, no one of them alone could tell the story of how wonderful their world was. He placed them all side by side, creating a beautiful mural, and Ariel and her friends saw just what he meant.

The end. Okay, good night.. I love you! (Sorry.. wrong audience! Muscle memory!)

Anyway here’s why that story is relevant. I hear from developers, data managers, IT Ops people, consultants, analysts and vendors, who see the IT world only from their point of view. Ariel would say you need thingamabobs and whatzits. In IT, they say you need to be agile. You need automated testing. You need CI/CD pipelines and DevOps. You need digital transformation. You need more data. On their own, each of these can improve your IT operations. But when you put them all together, they create a truly beautiful picture of business value to the organization.

With software providers plowing the road ahead, companies are realizing the benefits of microservices and containers in terms of development speed and uptime. Containers are the latest embodiment of the “write once, run anywhere” Java mantra of 20+ years ago.

In a services world, applications are more cobbled together than written from scratch. So APIs are the new currency in development, enabling programmers to integrate pieces of functionality into a living, breathing application. With analytics tools, any service that fails can be easily identified and unplugged from the application, repaired, and plugged back in – without bringing down the entire application.

This change in how applications are developed was led by the Agile movement, first defined 17 years ago as a different way to think about software. The word ‘speed’ never appears in the original manifesto, but through processes like Scrum and Lean, development work has become broken down in smaller, more targeted projects, enabling organizations to rapidly iterate software.

Taking that a step further, testing and other workflows are becoming more automated so as not to be a drag on production.  CI/CD pipelines have been created to allow deployment to keep pace via automated builds and deployments. Automated error detection and repair are replacing manual log files. .

Of course, more end points in an application mean more targets for malicious attacks, so container security – and open-source security — must be addressed.  There’s a booming market in this space, as the major roadblock to adopting cloud and container technology is the fear of having your data lost or stolen.

If APIs are the new currency in development, data are the crown jewels. Today we have the capability and the need to collect, store, analyze and act upon terabytes and even petabytes of data to inform business decisions. With more devices feeding data back to ever-growing data lakes, massive processing headaches can arise. The evolution of edge helps reduce latency by processing the data close to device and only transmitting anomalies to the back end for analysis.

Of course, none of this brings any value to the organization unless the applications being created delight and retain end users. Organizations are realizing the value of UI/UX designers, working in tandem with application developers to create more engaging experiences for end users.

So with that in mind, here is my “Little Mermaid”-inspired Manifesto for Modern Software Development.

  1. Employ loosely coupled services architectures based on microservices and containers.
  2. Agile development and DevOps practices are a must.
  3. Automation is critical.
  4. Security is now foremost on everyone’s mind.
  5. Data is king.
  6. Create value for the business.
  7. First and foremost, it’s about the end user.

Organizations today wish they could be a part of that world.