I started learning about Makefiles around the time I was learning about C roughly a year ago. I still don't know much about the Makefiles or C, but I'm revisiting Makefiles because I'm interested in using them for purposes of reproducible research. Initially I thought Makefiles were text files that were mainly used to help compile software. However, as I learned from various Twitter users, they can be used for organising workflows. Karl Broman believes that GNU make (which processes the Makefile) is the most important tool for reproducible research. The main reasons are that GNU make allows you to automate various processes and dependencies are defined within the Makefile.
I have been using simple shell scripts for creating my bioinformatic pipelines. I define variables that can be used as parameter settings throughout the script, use some basic Unix tools for creating my output file names, and simply check the existence of files to see whether a step has been run or not. You can create a temporary file as a store for the results and only when a step has completed is this file moved to its final name; therefore, we can simply check the existence of a file to determine whether a step has completed or not. However, this approach is very basic.