Skip to content

Instantly share code, notes, and snippets.

@fogus
Forked from jasonrudolph/about.md
Created August 11, 2011 00:28
Show Gist options
  • Save fogus/1138647 to your computer and use it in GitHub Desktop.
Save fogus/1138647 to your computer and use it in GitHub Desktop.
Programming Achievements: How to Level Up as a Developer

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
@fogus
Copy link
Author

fogus commented Aug 15, 2011

No, those are just my additions to the original list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment