Learn a variety of programming paradigms
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 a nontrivial web appWrite a nontrivial desktop appWrite a nontrivial mobile app- Write an embedded app
- Write a realtime system
- 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
- Complete five [code katas](http://en.wikipedia.org/wiki/Kata_\(programming\)
- Complete the programming koans for a language that you want to learn
- Attend a code retreat
- Read SICP and complete all the exercises
- 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 of an open source project
- 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