Long-standing readers will know that when I write a blog post, it’s something long and usually a project. Recently I have been subscribing to more indie web (aka: the old style internet) authors who write about all manner of stuff. This is possibly the first, or the last post in my new style of smaller more frequent blogs, still relating to tech.

What’s my beef with AI

Since AI became a thing back in around 2023, I’ve used it cautiously. I made a decision to not let AI take over large portions of my work like writing pull/merge requests. My primary use of AI is one off scripts I do not care to sit down and write properly. These are things like “Download all files from this website using cURL in batches of 1000”

Since 2023, AI has been on the up. Everyone and their fish seems to be using AI.

Agentic AI became a thing where we’re letting AI control other AI “Agents”

The next step of the AI boom was letting people use AI in their IDE’s to write code. This is where I draw issue from

Do not send me your AI code to review

In my job as a Security Engineer, I am in a lot of Slack channels with lots of different engineers. Most of these engineers are absolutely amazing, and it’s a real honour to work with them.

The past couple of months, I’ve been seeing a lot more AI written code. Which naturally raises the question “How do you know it’s AI written?”

Look at the below, and you tell me if a Human would write this?

Example Python script
# ==============================================================================
# SCRIPT NAME: add_numbers.py
# PURPOSE: Calculate the sum of two numerical values.
# AUTHOR: An overly thorough, hyper-documented AI collaborator
# PARADIGM: Imperative / Procedural
# COMPLEXITY:
#   - Time Complexity: O(1) - Constant time operation
#   - Space Complexity: O(1) - Constant memory allocation
# ==============================================================================

# We begin by defining our function using the 'def' keyword.
# 'def' is short for 'define'. It tells the Python interpreter that a reusable
# block of executable statements is about to be declared.
def calculate_sum(
    # --------------------------------------------------------------------------
    # PARAMETER 1: number_one
    # TYPE: int or float
    # ROLE: The augend (the primary quantity to which another is added)
    # --------------------------------------------------------------------------
    number_one,  # Represents the first input value

    # --------------------------------------------------------------------------
    # PARAMETER 2: number_two
    # TYPE: int or float
    # ROLE: The addend (the secondary quantity added to the augend)
    # --------------------------------------------------------------------------
    number_two   # Represents the second input value
): # The colon ':' signifies the end of the signature and the start of the indented block.

    # --------------------------------------------------------------------------
    # EXECUTION STEP 1: ARITHMETIC OPERATION
    # Here, the binary addition operator '+' is used.
    # Python evaluates the expression on the right side of '=' first.
    # It fetches 'number_one' and 'number_two' from local scope memory,
    # computes their sum, and then binds that value to the variable 'total'.
    # --------------------------------------------------------------------------
    total = number_one + number_two  # Addition happens here!

    # --------------------------------------------------------------------------
    # EXECUTION STEP 2: RETURN RESULT
    # The 'return' keyword terminates function execution immediately.
    # It passes the value stored in 'total' back to whichever line of code
    # originally called this function.
    # --------------------------------------------------------------------------
    return total  # Handing the calculated value back to the caller.


# ==============================================================================
# USAGE DEMONSTRATION
# The code below demonstrates how to invoke (call) the function defined above.
# ==============================================================================

# Declare a variable 'first_value' and assign it an integer literal '10'.
first_value = 10  # 10 is an integer object in memory

# Declare a variable 'second_value' and assign it an integer literal '20'.
second_value = 20  # 20 is another integer object in memory

# Call 'calculate_sum', passing 'first_value' (10) and 'second_value' (20) as arguments.
# Store the returned result in a brand-new variable called 'final_result'.
final_result = calculate_sum(first_value, second_value)  # Function invocation

# Pass 'final_result' into Python's built-in print() function.
# This writes the string representation of 30 to stdout (the console).
print(final_result)  # Output: 30

From my time observing developers using agentic coding agents/ AI IDE’s it usually goes like this

  1. Open an AI IDE
  2. Type a prompt like “Design and code the new Twitter but make it less racist, auto accept every change. I want you to use COBOL for the backend and raw HTML for the front end”
  3. Walk away or watch YouTube

After this process is done, they get their AI to open a merge request and then send a message to Slack.

Message sent on slack using Claude

A developer or a Security engineer then has to spend their human time reading the code, understanding it and working out if this will actually work; after you’ve put minimal effort or time in.

It just feels rude to ask someone to dedicate a lot of time to review something you spent no time on

If I had to put on my thinking cap, I believe AI Vibe coding is the modern version of the IKEA effect

The IKEA effect is a cognitive bias in which consumers place a disproportionately high value on products they partially created.

What is my actual issue with this?

Human to human connections are becoming less and less. We’re treating our collegaues like AI agents when we send them an MR to review. Input in, expecting a response quickly.

When it comes to code reviews, something I am seeing more is using AI to also review it. At what point are we going to have the AI completely write the code and ship it, with minimal input from the human? If it causes an outage, who is responsible for it?

Closing notes

Be kind to your colleagues.

How would you feel if they sent you a wall of code to review, and you found out they spent most of the time walking about their home whilst a Clanker wrote it all.

Disclaimer

The opinions expressed here are my own and do not reflect the views of my employer, adjacent employers or otherwise.