Steps to any new project roughly are:
- Make it possible : You are still learning the problem space, so develop to understand the problem space and get something to work.
- Make it elegant : Now that you have understood the problem space, improve the solution to something beautiful.
- Make it fast : Now that you have understood both the problem space and solution space, improve performance of the solution.
Also See
References