Skip to content

Instantly share code, notes, and snippets.

@lolindrath
Forked from fogus/about.md
Created December 27, 2012 16:29
Show Gist options
  • Save lolindrath/4389611 to your computer and use it in GitHub Desktop.
Save lolindrath/4389611 to your computer and use it in GitHub Desktop.

things that I've added in bold

Learn a variety of programming paradigms:

  • Write a program in assembly language
  • Write a program in an imperative 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 a language supporting the Actor model
  • Write an application in a concatenative language
  • Write an application in a array-oriented language
  • Write a data definition and data access layer for a complex domain

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 a nontrivial game
  • 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 an interpreted programming language
  • Write a compiled programming language
  • Write a logic-based programming language
  • Write an operating system kernel
  • Write a text editor
  • Write a game engine

Get your hands dirty with hardware:

  • Write some code for a single-board computing system
  • Write a CPU emulator
  • Target that same CPU on a FPGA
  • Build that same CPU from discrete parts
  • Build a small machine around your CPU
  • Write a program for your machine
  • Build a robot

Enlighten yourself with koans, katas, and the wisdom of ages:

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 of an open source project
  • Contribute to a standard

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

Learn a variety of programming paradigms:

  • (/) Write a program in assembly language
  • (/) Write a program in an imperative 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 a language supporting the Actor model
  • Write an application in a concatenative language
  • Write an application in a array-oriented language
  • (/) Write a data definition and data access layer for a complex domain

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 a nontrivial game
  • (/) 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 an interpreted programming language
  • (/) Write a compiled programming language
  • Write a logic-based programming language
  • (/) Write an operating system kernel
  • (/) Write a text editor
  • (/) Write a game engine

Get your hands dirty with hardware:

  • Write some code for a single-board computing system
  • (/) Write a CPU emulator
  • Target that same CPU on a FPGA
  • Build that same CPU from discrete parts
  • Build a small machine around your CPU
  • Write a program for your machine
  • Build a robot

Enlighten yourself with koans, katas, and the wisdom of ages:

  • (/) Complete five code katas
  • (/) Complete the programming koans for a language that you want to learn
  • Attend a code retreat
  • (/) Read SICP and complete all the exercises (only 1st edition so far)
  • (/) Read a standard

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 of an open source project
  • Contribute to a standard

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment