Some scenarios:
a script to extract some data from a file one time
a data integration pipeline to merge information from multiple sources
analysis tools that do not exist (in my language/in a way that meets my needs)
a graphical interface to communicate information to non-technical users
a smartphone game where people move pixels to make the screen flash and this makes me rich
an operating system
Research software is often trying to do something new, and new endeavors don’t always succeed. It is more likely that you will have to stop and re-plan at some point in the middle of your project.
A critical aspect of doing research is repeatability. Write your software in a way so that you and others will be able to re-create your results. Sometimes you need to do this in order to sort out a bug; othertimes you want to repeat the analysis on a slightly different problem.
Licensing for research software tends to be easy, because it is usually (and should be!) open source. You can often use other open source software without problems, just remember to give appropriate credit to other software developers.
For each of the following projects, take a few minutes to answer my list of questions.
The projects:
command line tool that takes a URL and writes plain text to disk
library that compares non-standard place names to a curated dictionary and does smart-matching
real-time prediction of match outcomes
battery tracker for smartphones that identifies events that affect battery life (like software updates, new apps, usage changes)
predictive elephant movement simulator