The problem to solve
Before we even start thinking about writing the initial version of our code, we need to understand the problem we're trying to solve.
Given the scope of the book, a full-blown application might be too big an undertaking, so we'll focus on a small task. It'll give us better control over what we want to do, and we won't run the risk of having too many things to optimize at the same time.
To keep things interesting, we'll split the problem into the following two parts:
Part 1: This will take care of finding the data we want to process. It won't just be a dataset we download from some given URL. Instead, we'll scrape it from the Web.
Part 2: This will focus on processing the data obtained after solving the first part of the problem. In this step, we may perform the most CPU-intensive computations and calculate some statistics from the data gathered.
In both cases, we'll create an initial version of the code that solves the problem without taking performance into account. Afterwards...