:PROPERTIES:
:ID:       01459b18-3f30-418e-bd8d-42661d5ea223
:END:
#+title: Start with wishful thinking
#+date: "2021-06-21 10:08:01 +08:00"
#+date_modified: "2021-08-07 14:57:10 +08:00"
#+language: en


In other words, start with the end result.
Whether it usually involves something like wanting to create a 2.5D fighting game rivalling [[https://en.wikipedia.org/wiki/Arc_System_Works][Arc System Works]], a gorgeous anime-inspired illustration, [[https://www.youtube.com/watch?v=TF9I1GxNdJQ][a flashy short animation]], or [[https://www.youtube.com/watch?v=ZwR0zFe57Y4][a cool-looking demoscene]].

This is also the core of prototyping, starting with the end product and getting there no matter how badly implemented.

- In [[id:4b33103b-7f64-4b51-8f03-cac06d4001bb][Programming]], we usually call this abstractions where we don't need to worry about the implementation details and whatnot.
  Some would even take one more step by starting with the user-oriented documentation or unit tests.

- In [[id:af0ccefe-c671-47bf-94f7-62243c805745][Skill-building]], we could start with our end-goal dreaming about the completed project.
  This is quite similar to [[https://collegeinfogeek.com/about/meet-the-author/my-impossible-list/][Thomas Frank's impossible list]] that we explicitly say what we want to do.
  We could apply the principle what we want to do when we learn a skill.

However, focusing too much on the destination can block your progress from having a clear sight on how to get there.
It could be just the endgoal is tad more difficult.
[[id:48cef2ac-a941-463d-a07f-6be8349456ad][Diving head-first into a difficult problem makes a bad start]].
We can [[id:92a10fe2-f4d1-4e5e-b5f4-3779db13a2e5][Create roadmaps to stay on track]] and establish milestones.

All of this allows to iterate through the project multiple times as [[id:adefcd38-46a8-4c9c-b609-9d3393b074d0][Consistency over time creates more progress]].
