12.11.2013

Thoughts on Writing Applications with Flow

  1. If the problem is too hard, you're probably thinking about it wrong. The easiest and least effective answer to complexity is complexity. The hardest and best response is something simple. The first approach requires intelligence, the second, mastery. 
  2. Question your questions. Some of the ugliest answers come from questions with unchallenged assumptions. Keep asking: what am I really trying to do here, and watch out for local maxima.
  3. After an original inspiration for a project, wait for at least two more inspirations on the same topic before diving in too far. The new inspirations will be marked by the feeling that you would have regretted not waiting for them, because they vastly simplify/deepen/enhance the original idea. 
  4. Meditation is helpful in the mornings before beginning work on an application; as is starting on it first thing, before any other work related tasks. Re-engineering your own routines complements completing projects well. Find a playlist for the day that meshes well with your energies and the tasks at hand.
  5. What does/will your application say? Every application has a statement and a voice. Let it get sassy with you Unless it's a business app, then it should just repeat back everything you've told it. 
  6. Keep balance. Don't work or think about the application all the time when writing it. you need refractory periods and these improve overall quality. Use the periods to enhance/develop other areas of your life, particularly healthy ways of relaxing. Stop working each day while you want to do more. This is a gentler and more life friendly alternative to intensity/vegetation cycles. 
  7. Focus on the essence...the thing that defines or makes the whole application possible...it will usually be a small core of functionality. Get that working bare bones for the first step. It is the strongest indicator on whether or not the project has legs.
  8. Use and develop skills with tools that can "sketch" ideas to tinker in abstract domains... like ChuCK, Processing, graphics tools, mind maps, etc. These tools will open new ways of thinking about what's possible and how and help explore problem subsets.
  9. If you enter a domain purely for exploration, you will like emerge with many concrete ideas and projects. Some ideas can only be discovered in this way. If you want to blue sky games, for example, try physics engines, particle systems and complexity simulations for starters. 
  10. Best practices are the feng shui of development, but if you don't understand a best practice, don't implement it. You are, of course, free to disagree if you have a way that's proven better for you at this time. Good enough is perfect when it lets you invest more value elsewhere. But understanding the intention of a best practice, can raise your game. It will come naturally with experience.
  11. Keep a diary of what you learn and take some time at points to summarize hard won techniques and discoveries so you can bootstrap yourself in future projects. You don't even have to type it, hand draw a sketch and scan it into Evernote under the project tag or notebook. Or make an audio note with your webcam microphone and do the same. Make capturing ideas and making notes a seamless process. If you want to keep a set of knowledge current that you don't use regularly enough to do so, use a tool like Anki.
  12. With the right tools and the right approach a company of one can equal and exceed the productivity of a company of 12 or more. And a company of 1 capable of orchestrating and integrating the delegation of asset creation becomes a Spartan, a company of 100.  
  13. Technology has always been about leverage. A horse replaced 5 humans. A tractor replaced 50 horses.Some fields are impacted by technology but programming is its wild child. Consequently, tools can be fabricated from scratch that multiply a programmers effort. This is why an individual skilled in using tool-fu, can compete toe to toe with larger, more unskilled groups. The later is more common than the former, and as a boon, programmers like to share their tools, so keep on the lookout for those that mesh with your workflow and multiply your effectiveness.

No comments:

Post a Comment