Series "Developing My Own Blog Website" is generated by ChatGPT.

Welcome to the final post in the series about developing my blog website. If you’ve been following along, you’ve seen how I took this project from scratch, building a basic Spring Boot application with SQLite, adding security, implementing Test-Driven Development (TDD), and even Dockerizing the application. But here’s the twist—throughout this project, I’ve been experimenting by using ChatGPT to assist me in making decisions, generating code, and writing these blog posts.

In this post, I’ll reflect on this experiment, discussing how ChatGPT helped speed up the development process and where it fell short, especially when it came to code quality and production readiness.


Why I Used ChatGPT

As a software engineer, I was curious to see how AI could assist in real-world coding projects. With so many tools available that claim to boost productivity, I wanted to explore how effective ChatGPT would be in a solo project, particularly with technologies I’m already familiar with—Java, Spring Boot, and SQLite.

The idea was simple:

  • Use ChatGPT to speed up the coding process by helping me with boilerplate code, explaining complex ideas, and offering recommendations for best practices.
  • Let it generate blog posts along the way, documenting the progress.

The hypothesis: Could ChatGPT reduce the time spent on common development tasks while still maintaining a good level of code quality?

The Good: Speeding Up the Process

One of the standout benefits of using ChatGPT was speed. Here’s how it helped:

  • Quick Guidance: When I needed a refresher or clarification on a specific concept, such as Dockerizing a Spring Boot application or implementing security, ChatGPT provided fast and accurate answers.
  • Reducing Boilerplate Code: ChatGPT was excellent at generating repetitive boilerplate code, like setting up basic CRUD operations, service layers, and even tests. This saved me time from writing out the same patterns over and over again.
  • Project Setup: From deciding on the tech stack to configuring security and databases, ChatGPT offered suggestions that helped streamline the initial setup process.
  • TDD Integration: Incorporating Test-Driven Development was made easier with automated test generation and the overall structure ChatGPT proposed.

The Bad: Code Quality and Production Readiness

However, the experiment also revealed some significant limitations:

  1. Poor Code Quality: While ChatGPT did generate functional code, the quality wasn’t always up to par with what I would consider production-ready. There were issues like:
    • Over-simplified implementations that didn’t account for real-world edge cases.
    • Boilerplate code was sometimes overly verbose or not adhering to clean code principles.
    • Some generated code lacked proper exception handling or validation, which could lead to issues in production.
  2. Security Concerns: When implementing security features, especially around authentication and authorization, I noticed that ChatGPT’s solutions were very basic. They lacked deeper security best practices that are essential for a production-ready application. For example, brute force attack prevention and more robust password encryption were not fully addressed.
  3. Test Coverage and Depth: While TDD was integrated into the project, the tests generated were often superficial. They tested the happy path but missed out on more complex cases, such as edge cases, negative tests, or handling unexpected inputs.
  4. Lack of Contextual Understanding: At times, ChatGPT suggested solutions that didn’t fully align with the existing project context. For example, when discussing database configuration or testing strategies, it occasionally suggested approaches that were overkill for a simple project or didn’t mesh well with the technologies we were using.

Final Thoughts: A Useful Tool, but Not a Replacement

In conclusion, ChatGPT significantly accelerated the development process, helping me save time on boilerplate code and providing quick advice. However, while it excelled at speeding things up, the generated code was not at a level that I’d consider ready for production without further refinement.

This experiment highlights an important point: AI can be a useful assistant but not a replacement for human developers—at least not yet. For rapid prototyping or getting a quick start on a project, ChatGPT was very helpful. But when it comes to writing clean, maintainable, and secure code, AI-generated solutions still require a lot of oversight and refactoring by an experienced developer.


What’s Next?

With this experiment complete, I’ll be taking the lessons learned and applying them to the project’s next phases with more hands-on coding, focusing on improving the quality and robustness of the application. For anyone following along, I’d recommend using tools like ChatGPT as a way to get unstuck or automate repetitive tasks—but always remember to review, test, and refactor the code carefully before using it in production.

Thanks for following along on this journey! This experiment with ChatGPT has been insightful, and while it’s been a great tool for speeding up the process, it’s also shown the importance of thoughtful, manual development when building a high-quality web application.

Stay tuned for future updates where I’ll continue improving this blog website!


That concludes the blog post series and this experiment with ChatGPT. While I’ll continue working on the project, it’s clear that, for now, AI is more of an assistant than a replacement for software engineers.