Steps to any new project roughly are:

  1. Make it possible : You are still learning the problem space, so develop to understand the problem space and get something to work.
  2. Make it elegant : Now that you have understood the problem space, improve the solution to something beautiful.
  3. Make it fast : Now that you have understood both the problem space and solution space, improve performance of the solution.

Also See

References