How I Use AI in Software Development

Search for a command to run...

No comments yet. Be the first to comment.
This year, I decided to attend ETHDenver, one of the most well-known crypto conferences in the world, from February 25th to March 1st. Although I wasn’t there for the entire week, I made it a priority to experience as much as possible within the few ...

Hello builders! I hope you all had a fantastic week. Mine was a bit more laid-back. I decided to turn off my "build mode" and dive into some reading. I picked up two books: one technical and one non-technical (though still focused on NFTs). In this p...
![[TWIL] Week of August 11, 2024](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1724192926501%2F2ba38d69-5f89-4c41-b2fe-7f994fa97f71.png&w=3840&q=75)
Hello Builders! Hope you had a wonderful week! For this week’s TWIL post, I’d like to share a slight change to the series moving forward. As I mentioned in my previous post, I’ll continue writing one TWIL post each week, but the content might shift a...
![[TWIL] Week of August 04, 2024](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1723410046529%2F77c9c1f6-e0e2-4422-aa2c-0b82b769631c.png&w=3840&q=75)
Hello builders! This past week has been one of the most emotionally charged experiences I've had in a while. After much thought, I've made the difficult decision to leave Ourkive, the startup I co-founded alongside two other incredible people. While ...
![[TWIL] Week of July 28, 2024](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1723335244607%2F22b5f8ee-4c35-4cf0-9666-405c09aae03c.png&w=3840&q=75)
AI has become an unavoidable topic in tech, with models like OpenAI’s ChatGPT, DeepSeek, and Gemini dominating headlines. Since ChatGPT’s release in November 2022, AI has rapidly changed how we work and build software. Naturally, I’ve been using it extensively—especially since leaving Meta in 2023 to co-found a startup. After nearly two years of integrating AI into my workflow, I want to share how I’ve been using it in my software development process.
One of the most impactful ways AI improves development is by generating tests. If you’ve written a fair amount of tests, you’ve probably felt the frustration of writing them after implementing a feature. Sometimes, you put it off until the end of the project—or worse, skip it entirely. Writing robust tests requires careful thought:
What are the key scenarios that need to be covered?
What edge cases should be tested?
How should test data be structured?
Are there third-party dependencies that need mocking?
These questions make test writing a mentally laborious process, and it’s easy to see why many developers struggle with it. But this is where AI can make a huge difference.
Let me share a recent experience. While developing a Sudoku game in Go, I wrote a function to generate an initial puzzle. To ensure its correctness, I needed a unit test that verified multiple conditions:
Were the expected number of zeroes present?
Did the board have exactly one valid solution?
Were empty cells editable by the user?
On top of these considerations, I had to manually craft all 81 (9×9) cells as test data, which felt incredibly tedious. Instead of spending hours writing boilerplate test cases, I used o3-mini via Cursor, which generated a unit test that met all my requirements in seconds. Of course, I still reviewed and refined the AI-generated test, but this approach saved me significant time. Instead of getting bogged down in writing tests, I could move on and work on implementing other features.
Naming variables, functions, and classes is a fundamental but often underestimated part of software development. A well-chosen name should clearly convey the purpose of the entity while remaining concise and easy to use. However, getting this balance right is tricky. Without clear naming conventions, inconsistency creeps into the codebase, making it harder to read and maintain.
I've spent a fair amount of time getting stuck on naming decisions. Instead of overthinking it, I’ve started asking AI for suggestions. Since AI models have been trained on massive amounts of code, they can suggest widely accepted, intuitive names almost instantly.
Sure, AI-generated names aren’t always perfect, but they provide a strong starting point. More importantly, using AI in this way has encouraged me to write smaller, more modular functions—because when functions are focused on a single task, AI has an easier time understanding their behavior and suggesting relevant names.
Sometimes, when I need to implement a feature but don’t know where to start, I turn to AI for guidance. It not only provides step-by-step explanations but also introduces new concepts and techniques that I might not have considered. More often than not, the AI’s responses include ideas worth exploring further, turning a simple query into an opportunity for deeper learning.
For instance, while working on my Sudoku game, I wanted to implement a timer. I asked o3-mini to generate the code, and while reviewing it, I noticed an unfamiliar syntax. Curious as a novice Go programmer, I asked follow-up questions and quickly learned that it was using Go channels—a concurrency feature I hadn’t encountered before.
Instead of just copying and pasting the AI’s output, I treated it as a learning opportunity. By engaging with the AI’s response, asking further questions, and reading related documentation, I gained a much deeper understanding of how channels work.
This might just be a personal preference, but I always turn off autocompletion in Cursor. While many developers love it for speeding up coding, I find that it disrupts my thought process. When I’m writing code, I sometimes pause briefly to recall what I had planned to write next. But with autocompletion enabled, suggestions constantly appear, pulling my attention away and interrupting my flow.
Autocompletion undoubtedly has its benefits, but I believe it should be used strategically rather than relied on blindly. Overdependence on it can make it harder to write code independently, and in extreme cases, developers may struggle to recall syntax or structure without AI assistance. That’s why I prefer to keep it off—if I need help, I’d rather ask AI explicitly than have it continuously predict my next move.
AI is a powerful technology that will continue to improve over time. That said, AI is a tool—not a replacement for understanding how software works. Relying on it too much can accelerate development but might come at the cost of deeper learning and problem-solving skills.
Ultimately, the key is balance. Use AI where it adds the most value, but ensure that it aligns with your goals as a developer. Whether you want to speed up your workflow or enhance your learning, AI is most effective when used thoughtfully and deliberately.