I've been thinking about how people learn new technologies full-time since I joined Nubank in 2022 to lead the Technical Learning team. My goal with this essay is to give humans who are not Software Engineers and are interested in AI Code Generation some pointers on how to make the most out of this technology.
Why now?
AI code generation tools are reducing the barrier to entry into software development. This means you will be able to independently solve some of the problems that, in the past, would have sat in the technical team's backlog, hoping to be prioritized. It can also mean that you will be able to write software to solve some of the problems that you wouldn't even consider asking the technical team to work on. I suspect that most of the productivity gains for non-technical folks will come from this second group of problems.
You have access to a bunch of new tools. What should you do with them? How should you go about learning how to use them?
Find a community
Software development geniuses that emerge from their cave with perfect new software exist, but they are the exception. For most of us, software development is a team effort.
Find a software engineer or someone who has been experimenting with AI for longer than you and ask them for advice. In your company's chat, there is likely a channel where AI enthusiasts gather to ask for help and share successes. Join that group. Participate. Don't be afraid to ask questions that may seem dumb. In most places, you'll find a welcoming and understanding community.
Don't let the AI be your only partner in this learning process.
Pick a problem to solve
Before you start to type the code or ask the LLM to write code for you, you need to have some understanding of the problem at hand. It can be helpful to start your AI coding journey by solving problems you are familiar with. Is there something annoying and repetitive that you need to do at work? Do you often find yourself creating similar documents or spreadsheets? Spend some time thinking about what could be improved. If you can't find a clear problem right now, as you continue doing your regular work, pay attention to signs of things that could be improved. You'll likely notice some interesting problems to solve.
Break your problems into smaller, more manageable problems
Spend some time thinking about the distinct parts of the problem you are trying to solve. It can be overwhelming to try and solve a very complex problem all at once, but often, when you break it down into sub-problems, it becomes much more manageable.
Let's imagine that you receive an email with an Excel file from a supplier every month. You need to transform it into a specific CSV format and manually upload it to an internal system. Sometimes, you forget about the email. The conversion process is tedious because the columns don't match. You need to reorder and delete a few.
That is one somewhat complex problem to solve. You could break it down into a few smaller problems.
- Figure out if I received an email from email@email.com with an attachment
- Send me a Slack message letting me know about the email
- Convert an Excel file with structure X into a CSV with structure Y
- Upload a CSV file into a system
- Integrate all the steps above so they happen automatically
Pick one tool, spend some time with it
Cursor, Copilot, and Windsurf are popular AI coding tools you can use today. Whatever tool you decide to use, stick with it for a while. It will be very hard to make progress if you are resetting and learning a new tool from scratch every day.
Check if your company has a preference for a particular tool. Using a company-approved tool can simplify your life and increase the likelihood that your colleagues will be able to support you.
Start exploring other tools if you feel that your current one is limiting your progress or when you are comfortable enough with AI coding to assess what's the best tool for you.
Commit to one programming language for a while
If you are leveraging AI to gain software development skills, it is a good idea to stick to one programming language so that, over time, you can assess the quality and correctness of the code that the AI generates for you. Pick a language used in your company, ask a friend for suggestions, or ask your favorite LLM.
Start with scripts
A script is a small program that automates a specific task. Scripts are great for beginners because they're usually short, focused on one thing, and you can see results quickly.
This concept is similar to breaking a large problem into smaller ones. Before you create your first complex application, experiment with making a few simple scripts.
Continuing with the previous example, you could create a script for each of the sub-problems:
- Figure out if I received an email from email@email.com with an attachment
- Send me a Slack message letting me know about the email
- Convert an Excel file with structure X into a CSV with structure Y
- Upload a CSV file into a system
Start your first application from a template
Ask your coding tool about frameworks you could use in the language you chose. Learn more about them, pick one, and use it for a while.
For example, if you are building a web application in Javascript, you could use a framework like Next.js to structure your application. This will enable you to leverage Next.js's documentation and community resources.
Build prototypes, delete most of them
Building software is an iterative process. Your first attempt at solving a problem will not be perfect, and that's okay.
Don't get attached to your first attempts. Most of the code you write as you're learning will be thrown away and rewritten. This is normal. The goal is to learn and understand the problem better with each attempt.
Think of it like writing a first draft of an essay - you write it to understand what you want to say, and then you rewrite it to say it well.
Understand the limitations of the technology
AI coding tools are powerful, but they have limitations.
They can generate code that looks correct but doesn't work. They might use outdated libraries, suggest incorrect solutions, or miss edge cases. Always test the code they generate.
Most of the time, the AI will agree with you, even if you have a terrible idea. They are not great critical thinkers, at least not right now.
Review the code
Take time to read and understand the code that AI generates for you. Try to understand what each part does.
If you see something that doesn't make sense, ask your AI assistant to explain it. It's perfectly normal to not understand every detail. Focus on understanding the main purpose of the code and how the different parts work together. Build your understanding gradually.
Do some quality assurance checks
Check that your code works as expected. Try running your code with different inputs. What happens if you run it twice? What if the input file is empty or missing?
Finding and fixing bugs is a normal part of programming, even for experienced developers. Testing helps you catch bugs before you rely on the code for important tasks.
As the joke goes:
A Software Quality Assurance engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 99999999999 beers. Orders a lizard. Orders -1 beers. Orders a ueicbksjdhd.
Conclusion
Start with simple automation tasks that solve real problems in your daily work. As you become more comfortable with the basics, tackle more complex problems.
Remember that every expert was once a beginner. The key is to start somewhere and keep iterating. Your first script might be just a few lines that save you five minutes a day, but those small wins add up.
Focus on developing technical literacy to work effectively with AI tools and understand what's possible.
Pick a problem, grab your AI coding tool, and start building.