Artificial Intelligence: Brainstorming
After a fulfilling week of bonding with my team in Atlanta, I share tips on using AI for creative brainstorming!
Hello, hello, and welcome to The Balanced Engineer Newsletter!
It has been a crazy week! After spending the weekend before last at Boise Code Camp, I spent a week in Atlanta for my team's offsite. That included roughly a week of socializing, bonding, and asking very big questions that we don't have any of the answers to.
It was such an energizing week, and even though I am exhausted, I am feeling extremely fulfilled!
Highlights
Things I've been doing on the internet
Here are some things I've made on the internet this week! There isn't much since I was out of the office in Atlanta.
- Podcast: Overcommitted Ep. 6 | How we build things - tools, tips, and tricks!
-
Illustration:
Things I've enjoyed on the internet this week
I didn't get into much this week since I was traveling, but have been looking into some product-focused podcasts! Got something you want me to read and feature in this newsletter? Send it to me at brittany@balancedengineer.com!
-
Podcast: Lenny's Podcast: A better way to plan, build, and ship products | Ryan Singer
- I've never read Shape Up but now I plan to. Oh, how I long for something that is actually effective (and not agile).
Onto the content!
Last week I did a breakdown of what artificial intelligence tools are today and how they work. You can check it out here, if you missed it!
I've decided to divide the rest of the AI topics for the month into three categories, which more or less define the boundaries of my own creative process:
- Brainstorming
- Debugging
- Polishing
May Theme: Artificial Intelligence
The ways I have been using AI tools to get more productive and to produce more stuff is to focus on the following:
- Quickly unblocking myself: I have developed the habit of quickly turning to LLMs when I get stuck, which keeps me unblocked and flowing so that I can finish what I'm working on faster
- Create more than I consume: This is key, and I know that it can come off a little bit preachy. But one of the biggest changes I've made in order to create and do more stuff, is to consume less stuff. I don't watch most of the latest TV shows. I have 15-minute limits on my phone for any app that has infinite scroll, to remind myself to not get stuck in a loop of endlessly consuming content. There are absolutely times that I'll just snooze those limits and keep going, but I try to make sure that that is a conscious choice, that I am choosing to spend an hour scrolling on TikTok, and not just doing it out of habit.
Today I will talk about the tools and prompts that I have found successful for brainstorming.
What is context for AI and why is it important?
First, I want to talk a bit about LLMs and context. Context, or adding a LOT of information to go off of in your prompt, is very important to getting usable responses. You should lean towards over-explaining what you need in order to get the response that you want, because the more detail you provide to the LLM, the more likely it is to be on the right track with its responses.
This is something that I've seen a lot of engineers struggle with. I think that is because it is a polar opposite from the way we currently reach for online tools.
When googling you typically want to write a very short message, with as few keywords as possible. I've found that this is more likely to get you a decent response from a search engine. Something like git error cannot lock ref
is most likely to return the results that I want from Google.
When prompting a LLM, however, verbosity is key. If I were to plug that same error into something like GitHub Copilot, I would want to do something like the following:
I am receiving an error when pushing to my git repository called `cannot lock ref`. How do I resolve this?
Providing something that is a bit more human readable, like what you would send to a coworker if you were describing the problem to them, is more likely to get you a good response from the LLM tools.
How I use LLMs to speed up brainstorming for writing
Most of my writing tends to be for this newsletter, but I also occasionally publish blog posts on my website and on the GitHub Blog. I would divide brainstorming for writing up into two parts:
- When I don't know what I want to write about
- When I know what I want to write about but I don't know how to organize it
When I don't know what I want to write about
There are times that I'll turn to Claude (my tool of choice for anything writing-related) when I'm not sure what I want to write about. For example, for my newsletter I write 4-5 newsletters per month on a single theme, and occasionally I know for sure what I want the first few to be about but struggle to come up with the rest.
In that case, I'll turn to my Claude project for The Balanced Engineer Newsletter (where I've provided some additional context like my main goals and some past newsletters for reference) and will do something like the following:
I write newsletters called The Balanced Engineer Newsletter which picks a monthly theme and writes 4 newsletters on that theme. This month I'm picking mentoring. One topic will be about how to be mentored, the other will be about how to mentor. Suggest a few other options that I could use to round out this month's theme of mentoring.
I do pretty well when someone gives me a topic to research and write about, so I've found this really helpful for times when I get stuck while brainstorming topics. Sometimes I have to submit a few rounds to find the exact ideas that I like. Sometimes I will pick a topic that resonates me that the LLM suggests, or sometimes reading through the topics will be enough for me to come up with my own idea.
When I know what I want to write about but I don't know how to organize it
There are other times where I know for sure what I have in mind for a topic, but I'm not sure what the outline should look like.
I'm an outliner when it comes to writing. I like to make sure I write down the rough structure that I want to work towards, as well as the key points, to make sure that the overall document comes together the way that I have in mind.
For example, the outline for this newsletter looked like the following before I started doing any writing:
# Brainstorming
## Writing
## Illustrations
## Development tasks
Then I filled in each of the headings with content as I was writing, and eventually renamed those sections to something a bit more actionable.
When I get stuck in the outlining phase, for example if I've picked a topic that I'm not sure what the key points should be, then I will turn to Claude again with a prompt like the following (again in my project for it, so that it has some additional context to work with):
I write a software engineering newsletter called The Balanced Engineer Newsletter. I am writing a newsletter about mentoring called `Creating effective mentorship programs`. Create an outline for a 5-minute read newsletter with that title that highlights key points like the matching process and measuring outcomes.
How I use LLMs to speed up brainstorming for illustrations
This year I've taken on a lot of new creative endeavors, and one of my favorite has been attempting to better explain thoughts and ideas through illustrations. I am currently adding one to each newsletter, but am looking at doing a dedicated period of time where I create one per day.
There are often times where I have an idea in mind but not fully fleshed out that I would like to turn into an illustration, and that is something that I would turn to a LLM for. Here are a few prompts that I've used that have been useful for me.
When I have no idea what to draw
This prompt is useful if I'm stuck on what I want to draw. It is helpful for getting the creative juices flowing and helping me find an idea that I find exciting enough to work on.
I create simple line illustrations to tell jokes or share ideas about software engineering or parenting. Some of the ones I have done in the past include:
- Where software bugs come from: a pie chart of different sources of software bugs from typos to "it works on my machine"
- What people always say to twin parents: a drawing of a person holding two small children and a speech bubble saying things like "you've got your hands full!"
Suggest some other ideas along these lines that I could draw.
When I have an idea but am stuck on the rest of it
This prompt is one I've used when I know what I want to draw but am stuck on some of the elements of the illustration. In this case I have more of an idea but want some suggestions about other things to include.
I create simple line illustrations to tell jokes or share ideas about software engineering. Help me come up with additional funny things I could include in a pie chart about "Where bugs come from", which includes:
- typos
- "It works on my machine"
Often just seeing the other suggestions that the LLM comes up with is enough for me to either use an idea suggested or to come up with my own idea, which significantly speeds up my creative process!
How I use LLMs to speed up brainstorming for development tasks
I again divide brainstorming for development tasks into two categories: When I have no idea where to start and when I have an idea but need more help structuring something.
My go-to for this is to use GitHub Copilot. It's built into everything that I use and it Just Works. I also get a chance to test out the product for the team and provide suggestions or areas that I got stuck directly to the team that builds it, which is awesome!
When I'm trying to find the problem
When walking through an issue and trying to understand where a bug may be occurring, I'll slowly walk through the code and with example data, when possible. But occasionally I will come across a method or bit of code that isn't immediately obvious. In that case I will either open up Copilot Chat, if I'm in VSCode, or copy and paste the code into https://github.com/copilot to ask about it.
Example prompts for this might be:
Explain in simple terms what this file is trying to do
Tell me what this method does:
<insert method here>
The important point here is that I'm still driving the exploration, but I primarily use GitHub Copilot to help in explaining anything that might take a bit more mental energy to understand if I were to walk through the code path myself.
When I know where the problem is but need help getting started
The other area of brainstorming that I think is useful with GitHub Copilot is when I need to break down a complex task. This has been something that I have done throughout my career, so I'm usually pretty good at it on my own, but sometimes it's useful if it's a big new thing that I need to do.
Here's an example prompt for that:
I need to implement authentication for my NestJS application. What steps should I take to accomplish this?
This helps me take a large and ambiguous task and start breaking it down into smaller, more manageable chunks.
A final note on prompting and brainstorming
One final note on prompting and brainstorming. If you get stuck while trying to write a prompt, try using your LLM tool to help you write the prompt. While this may bring to mind images of that "spider-man pointing at spider-man" meme, LLMs are surprisingly good at writing their own prompts, and can probably help you get unstuck!
Have comments or questions about this newsletter? Or just want to be internet friends? Send me an email at brittany@balancedengineer.com or reach out on Bluesky or LinkedIn.