Skip to main content

Command Palette

Search for a command to run...

How I Use AI in Software Development

Updated
4 min read
How I Use AI in Software Development
S

Engineer @ ___ | Ex-Ourkive | Ex-Meta

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.

AI for Generating Tests

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.

AI for Naming Things

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.

Learning from AI-Generated Code

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.

Disable Autocompletion

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.

Final Thoughts

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.

AI

Part 1 of 1

This series is dedicated to sharing my learnings and discoveries about AI