Don’t automate garbage. Automation in software development

Don’t automate garbage. Automation in software development

Software development automation is no new invention.

However, as generative AI tools took off, the potential to make things even more mechanical skyrocketed.

Yet, it is not a panacea, and not every automation makes sense.

This article delves deep into the nuances of automation in Agile software development.

So, what should you (not) automate, why, and how?

The key thing about automation you must understand

Fact: developers have an inherent bias towards automation.

The IT industry is all about automation so we have a bias for automating things. We like automating things, and consider automation mostly as good.

This inclination is understandable. After all, automation promises faster development cycles, reduced human error, and the ability to scale operations efficiently.

However, blindly embracing automation is definitely a bad idea.

As Gojko said:

Automation itself is not good or bad, it’s just faster. If you automate garbage, you just get more garbage more quickly.

This is key for development teams to internalize. Automation boosts existing processes – both good… and bad.

Software development automation done right?

So, how do you automate software development RIGHT?

In this part, we’ll discuss what to automate, how, and whether AI can be helpful here.

What can be automated?

Automation in software development speeds up coding:

  • Code generation: Automating boilerplate code creation.
  • Code review: Automated code quality checks and style enforcement.
  • Automated testing & QA automation: Unit tests, integration tests, end-to-end tests, and performance tests.
  • Continuous Integration/Continuous Deployment (CI/CD): Automating build, test, and deployment pipelines.

Yet coding alone is not all there is. Automation encompasses various aspects of project and product development, as well as the business side of software creation, including

  • Requirements gathering
  • Project management
  • Design processes
  • User feedback
  • Performance monitoring
  • Business analytics…

… and, of course, other aspects of running a business. AI can be used to automate accounting, HR, marketing, etc.

Coding automation tools

If you’d like to explore specific AI coding tools (AI automation tools like GitHub Copilot, Aider, Cursor, and more), we recommend and do not recommend, check our quarterly report:

tierlist ai dev tools 2024

What should be automated?

If nearly everything can be automated, not everything should.

Just as with deciding whether you need custom software or not, you need to first ask yourself: Does a problem exist, and is it even worth solving?

A process is worth automating if it’s

  • So big it affects a lot of people and the need to repeat the same actions over and over again makes their life much harder–to the point it makes YOUR business lose money because of their poor productivity, and/or
  • So frequent it keeps happening daily or every few days, and there’s no sign it will ever end.

Additional aspects to consider are:

  1. Time-consumption: Tasks that take significant manual effort.
  2. Error-prone areas: Processes where human error is common or costly.
  3. Scalability needs: Functions that need to handle increasing loads.

What is “garbage” in automation then?

In the context of automation, “garbage” refers to:

  • Bad processes
  • Bad data

When we talk about bad processes, we’re looking at workflows or procedures that are fundamentally flawed.

These might be inefficient processes that take more steps or resources than necessary to achieve the desired outcome. They could be inconsistent, varying depending on who’s performing them, which leads to unpredictable results. Sometimes, they’re simply outdated, not reflecting current best practices or business needs.

Bad processes are often poorly defined, lacking clear start and end points, or having ambiguous steps in between. They might not add value, failing to contribute meaningfully to the end goal or customer satisfaction.

These problems apply to data as well. Bad data refers to information that’s inaccurate, incomplete, inconsistent, or outdated.

Bad data also includes information that’s poorly formatted and not structured properly, that is: in a way that’s easily readable by automated systems. Duplicate or redundant information that can lead to confusion or errors is problematic. Even data that’s technically correct but irrelevant to the purpose of the automation can be considered “garbage” in this context.

The danger of automating these bad processes or using bad data is that you’re essentially scaling up the problems.

Again: if you automate garbage, you just make more garbage quicker.

AI & automation

Artificial intelligence and automation seem like a perfect match, and the possibilities they come with are immense.

Yet, there’s a key challenge to be aware of–and if you’ve been using Chat GPT for more than 15 minutes, you’re perfectly aware of that: hallucinations.

What can AI do for automation in software development?

There are multiple ways in which AI-powered automation can benefit the product development process:

  1. Cost savings: AI can automate tasks, improve resource allocation, and reduce labor costs.
  2. Improved quality: AI can detect bugs early, assist in code reviews, and use predictive analytics to enhance quality.
  3. Faster time-to-market: AI can automate routine tasks, streamline project management, and enable rapid iterations.
  4. Increased innovation: AI can free developers to focus on innovative features, improve user experiences, and adapt to market trends.

Here’s more about how we automate product development to generate more value for our clients: How to use AI in software development? Saving money & time with AI

Impact of AI on Software Development at Pragmatic Coders (1)

While we use artificial intelligence to work faster and more efficiently, we know very well how deceptive it can be.

The AI problem

Let’s go back to our interview with Gojko to give an example of that:

 

In England, there’s the gambling sector; I spent a bit of time working there, and this friend of mine works there. They have these horse racing rules, and Rule Number Four is really complicated. It gets people to recalculate history, and that’s a good test for a business analyst to explain this complicated rule in a simple way. It’s often used in interviews.

I got GPT-2 and said, ‘Look, explain Rule 4 with examples.’ It did a perfect job, absolutely perfect job, and my friend was like, ‘I’m going to lose my job now.’

I said, ‘No, no, but wait a minute,’ and I said, ‘Explain Rule Number Five.’

Rule Number Five does not exist, but GPT brilliantly explained Rule Number Five with interesting examples – complete random garbage.

I think that’s the problem with these things.

If you use them as inspiration, if you use them as something that helps you speed up your process, then I think that could be quite powerful. Of course, you need to revisit what they are creating and check if it’s true or not because, as you said, AI is still hallucinating, maybe less than GPT-2, but still, you need to be aware of that.

 

AI is great as a source of inspiration. It really can speed up whatever you’re doing. However, it must not be left without control and human oversight.

Trust AI too much, and you can expect:

  1. Mistakes scaled up faster than ever before because of flawed data.
  2. Over-reliance on AI & critical thinking skill atrophy.
  3. Loss of context and nuance.

But why is automation in modern software development even important? Benefits

Taking the benefits, but also the potential risks mentioned earlier into consideration, should you even care about implementing automation?

The answer is: YOU DEFINITELY SHOULD.

Below, we’ve listed three insights from people who experience the benefits of automation themselves.

Automation in software development

Test automation not only help maintain consistency across changing technologies but also prevent developers from becoming bottlenecks in the process.

What’s more, these tests can become an institutional memory that won’t get lost within your organization.

Automation in fintech

More than half of banking CEOs plan to streamline operations with automation.

McKinsey predicts that AI will handle 10-25% of banking tasks.

Simon Dawson, the Head of Engineering at Atom Bank and our current client, marked the same tendency within his organization: We’re not looking to massively scale the workforce as we scale the customer base because we want it to be an automated, lean back end.

Automation in Elon Musk companies

The concepts of data, AI, and automation are closely related. Data fuels AI, which powers automation – and these are key factors behind Musk’s success.

A lot of people think the Musk companies are fast because people work so hard… but so much of it’s automated.

The decision-making process in Musk companies is based on data and heavily automated (You have no boss; your boss’s data).

That’s why, according to Joe Justice–the man who operated Agile at Tesla– companies that aren’t using AI are behind, and those that aren’t using their own AI have missed the opportunity to start training it.

How to automate your software development process right?

Let’s sum up what we’ve discussed.

To ensure you’re not automating garbage and are focusing on the right things, check the following approach:

  1. Don’t force AI. As Joe said in the interview with us, companies that aren’t using AI for automation are already behind–that’s how important it is. Still, just as you shouldn’t implement gimmicky AI features in your product just to get on the hype train, you shouldn’t blindly force AI-powered automation in your organization.
  2. Start with a thorough assessment of your current processes and data. Take a step back and critically evaluate what you’re doing and why. Involve team members from different departments to get diverse perspectives on your workflows and data quality.
  3. Prioritize processes that are stable and well-understood. As Gojko pointed out, If this is something that needs to stay with you for the next couple of years or something where the core of your business is going to be built on then it needs to be sustainable. Focus on core business processes that have stood the test of time and are unlikely to change dramatically in the near future.
  4. Start small and iterate. Don’t try to automate everything at once. Begin with a small, well-defined process, automate it, learn from the experience, and then move on to more complex tasks.
  5. Implement continuous validation. As Adzic suggests, The idea was basically to automate the validation of that so we can keep a check on reality and we can make sure that the documents are kind of in sync with the code. Set up systems to continuously check that your automated processes are still aligned with business needs and produce the expected results. Of course, businesses themselves change over time, too. Regularly review if they are still up-to-date.
  6. Maintain human oversight. Automation should support human decision-making, not replace it entirely. Adzic warns, “For me, saying ‘Oh, we had this like hallucinogen AI robot write our specifications’ is insane because who knows whether they’re right or wrong.” Always have human experts reviewing the output of automated processes.
  7. Focus on value, not just efficiency. Sometimes, a less efficient software development process might actually be more valuable because it includes important checks or produces higher quality results. Don’t automate solely for the sake of speed.
  8. Clean and validate your data. Before automating any process that relies on data, ensure that the data is accurate, complete, and consistent. Bad data will lead to bad automated outcomes.
  9. Consider the full lifecycle. Think about how the automated process will be maintained, updated, and eventually retired. If the long-term costs and complications outweigh the benefits, it might not be the right candidate for automation.

Conclusions

The key to automation? To enhance software quality and critical thinking, not replace them.

Our team of expert software developers can work with you to implement automation strategies that boost efficiency without compromising quality. Reach out to us now.