Writing software is like solving puzzles with creativity. You have to find the right pieces and fit them together in a smart way