Skip to content

Latest commit

 

History

History
114 lines (57 loc) · 5.94 KB

brainstorm.md

File metadata and controls

114 lines (57 loc) · 5.94 KB

Brainstorm

The first step is to brainstorm a large number of topic ideas.

We can vet them later. We are just generating ideas and there are no wrong ideas.

Create a new google document that you can use for brainstorming.

Keep the document, even after you think you have chosen and vetted a topic.

  • You may change your mind on the topic.
  • You may want to start a new business later.
  • You may have more ideas in the future that you can add.

First we are going to select a programming language, then a short list of topic ideas for the programming language.

The language and topics can change later. That's fine. But it is important to make decisions, then vet those decisions before changing your mind.

We want to choose a programming language that has growing interest over time, and a topic that has growing interest over time. We want to be part of the upward trend. Ideally, we also want the combination of programming language and topic to be growing over time too.

We want to ride the wave. We want the rising tide to lift our boat.

Let's first choose a programming language.

Select a Programming Language

We are teaching developers a technical skill.

The examples will be code, and you must pick the language for this code.

You could use examples in many languages, but I do not recommend it, because:

  • It will hurt marketing. It's better to call out "python programmers" than "programmings", e.g. to be specific.
  • It will hurt support. It is easier to keep code for one language in your head instead of a suite of languages.
  • It will confuse the reader. They will only want examples for their language, not all languages.

First, select the types of developers you want to work with.

I think it's best to first select a programming language, then a topic for that programming language.

You might want to look at the StackOverflow annual survey for the most popular programming languages, or the TIOBE programming language survey.

They both release new survey results every year.

  • StackOverflow Developer Survey
  • TIOBE Programming Language Survey

Some programming languages are growing, some are dying and some are stable.

I recommend that you select a growing programming language.

For example, at the time of writing, Python is a growing language, Java is a dying language and JavaScript is a stable programming language.

List 5-to-10 programming languages you'd be happy to use or dig into, then check each on Google Trends. Choose "worldwide" and "Past 5 years" and the search terms should be "[name] programming", e.g. "java programming".

Circle back and add more programming languages to the list as you think of them later.

Separate the list into growing, stable, and declining languages.

Rank the programming languages in each group based on your interest.

I like scripting languages because the distance between the blog post and a result is shorter than compiled languages.

Select the top programming language you'd be happy to work with.

Next, let's select some candidate topic ideas.

Generate Topic Ideas

Now generate a vast number of topic ideas.

Start a new page and starting listing ideas. You want at least 50 to 100.

The goal is to keep generating topic ideas until you are reaching deep down into obscure technical topics, or you feel yourself skimming technical books, news sites, APIs, etc online or in the book case to get more ideas.

Don't check the trends for these topics yet, we can do that later.

These should be technical topics that a programmer may want to learn for self-study or may need to learn for an upcoming project. The might be topics that a university student may study, and they may be topics on which academics focus their research.

Topics could be an algorithm or class of algorithms (e.g. binary space partition trees or spatial data structures), a problem or class of problem (e.g. deadlocks or multithreading a program), a functionality or class of functionality (e.g. log to file or error logging), a proprietary tool (e.g. excel), open source library (e.g. SciPy), and so much more.

Also, don't feel like you need to tie the topic to the programming language yet. You may change the programming language later based on the topic.

Some of the ideas will get you excited. You will be drawn to them. This might be because you have worked on the topic before, because you are curious, or for whatever reason.

Separate the ideas you are drawn to from the rest, e.g. move them a small group at the top of the section.

Shortlist

Create a shortlist of 3 to 5 (or more) of the topics that interest you the most.

I like highly technical topics that focus on advanced developers, not beginners.

I also like topics that look like a mess from the outside, or with strong opinions widely held that are not necessarily correct. Most technical topics fit this.

Now, check the topics in google trends to see if they are growing or at least stable, not declining.

First check the trends for the topics themselves, perhaps relative to each other, or perhaps in groups that have relatively the same amount of traffic.

It might be useful to generate a 3 to 5 synonyms for the topic and check hem against each other to see what topic name is most popular.

Then check the "programming language + topic" combination. Use the same keyword convention for consistency, we are just trying to get a rough guide. This is just for interest or reference. Captures the plots in your google doc and provide a cursory analysis.

It may also help to see the relative level of traffic for topics, e.g. you want those topics that are relative larger if possible. That being said, being excited about a topic trumps low search volume.

Use the trend information to help filter your short list down to perhaps 1 or 3 topics you can investigate further.

Keep adding to your list and short lists later as you think of more ideas. While vetting topics you will run into tons of topic ideas that may be chapters of books you're looking at or subheading on blog posts found when googling.