| 
     | 
    @@ -0,0 +1,52 @@ | 
  
    
     | 
     | 
  
    **Learn a variety of [programming paradigms](http://en.wikipedia.org/wiki/Programming_paradigm "Programming paradigm - Wikipedia"):** | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    * Write a program in assembly language | 
    
     | 
     | 
  
    * Write an application in a functional language | 
    
     | 
     | 
  
    * Write an application in an object-oriented language | 
    
     | 
     | 
  
    * Write an application in a prototype-based language | 
    
     | 
     | 
  
    * Write an application in a logic programming language | 
    
     | 
     | 
  
    * Write an application using the Actor model | 
    
     | 
     | 
  
    * Write an application in Forth | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    **Experience the ins and outs of programming for different platforms:** | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    * Write a nontrivial web app | 
    
     | 
     | 
  
    * Write a nontrivial desktop app | 
    
     | 
     | 
  
    * Write a nontrivial mobile app | 
    
     | 
     | 
  
    * Write an embedded app | 
    
     | 
     | 
  
    * Write a realtime system | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    **Enhance your understanding of the building blocks that we use as developers:** | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    * Write a networking client (e.g., HTTP, FTP) | 
    
     | 
     | 
  
    * Write a device driver | 
    
     | 
     | 
  
    * Write a B-tree database | 
    
     | 
     | 
  
    * Wrap an existing library to provide a better (more pleasant) user experience | 
    
     | 
     | 
  
    * Write an application or framework that provides a plugin model | 
    
     | 
     | 
  
    * Write a testing framework | 
    
     | 
     | 
  
    * Write a programming language | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    **Enlighten yourself with koans, katas, and the wisdom of ages:** | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    * Complete five [code katas](http://en.wikipedia.org/wiki/Kata_\(programming\) "Kata (programming) - Wikipedia") | 
    
     | 
     | 
  
    * Complete the [programming koans](http://sett.ociweb.com/sett/settJan2011.html "Learning Programming Languages with Koans - Object Computing, Inc.") for a language that you want to learn | 
    
     | 
     | 
  
    * Attend a [code retreat](http://coderetreat.com/ "Code Retreat with Corey Haines") | 
    
     | 
     | 
  
    * Read [SICP](http://mitpress.mit.edu/sicp/ "SICP web site") and complete all the exercises | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    **Program in the open:** | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    * Contribute to an open source project | 
    
     | 
     | 
  
    * Have a patch accepted | 
    
     | 
     | 
  
    * Earn commit rights on a significant open source project | 
    
     | 
     | 
  
    * Publish an open source project | 
    
     | 
     | 
  
    * Perform a [Refactotum](http://thinkrelevance.com/blog/2007/04/03/twir.html "Refactotum") of on open source project | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    **Learn by teaching others:** | 
    
     | 
     | 
  
    
  | 
    
     | 
     | 
  
    * Present a lightning talk | 
    
     | 
     | 
  
    * Present at a local user group | 
    
     | 
     | 
  
    * Present at a conference | 
    
     | 
     | 
  
    * Deliver a training course | 
    
     | 
     | 
  
    * Publish a tutorial | 
    
     | 
     | 
  
    * Publish a constructive code review of an open source project | 
    
     | 
     | 
  
    * Write a programming book |