Skip to content

Instantly share code, notes, and snippets.

@sookoor
Forked from catwell/about.md
Last active October 11, 2015 03:28
Show Gist options
  • Save sookoor/3796231 to your computer and use it in GitHub Desktop.
Save sookoor/3796231 to your computer and use it in GitHub Desktop.
Programming Achievements: How to Level Up as a Developer

Programming Achievements: How to Level Up as a Developer

  1. Select a particular experience to pursue.
  2. Pursue that experience to completion. (Achievement unlocked!)
  3. Reflect on that experience. Really soak it in. Maybe a blog post would be in order?
  4. Return to Step 1, this time select a new experience.

This gist is part of a blog post. Check it out at:

http://jasonrudolph.com/blog/2011/08/09/programming-achievements-how-to-level-up-as-a-developer

Conventions for this fork:

  • done
  • maybe someday
  • [-] probably never
  • [~] i'm on it

Merges:

Complete interesting programming courses:

  • Structure and Interpretation of Computer Programs

Learn a variety of commonly used programming languages:

  • Write a program in Ruby
  • Write a program in Python
  • Write a program in C
  • Write a program in C++
  • Write a program in Java
  • Write a program in Objective-C
  • Write a program in C#
  • Write a program in PHP 5
  • Write a program in Perl
  • Write a stand-alone program in Javascript

Learn a variety of non commonly-used programming languages:

  • Write a non-trivial program in Brainfuck
  • Write a program in Lua
  • Write a program in smalltalk
  • [-] Write a program in Lisp

Learn a variety of frameworks:

  • Write a web application with Rails
  • Write a web application with Django
  • Write a web application with node.js
  • Write a web application with Tornado
  • Write a web application with Sinatra
  • Write a web application with socket.io
  • Write a program with Mono
  • Write a program with .Net
  • Write a program with OpenGL
  • Write a program with WebGL
  • Write a program with DirectX
  • Write a program with Cocoa

Learn a variety of editors/IDEs:

  • Use vim exclusively for a month
  • Write a package for sublime-text
  • Use TextMate exclusively for a month
  • Use emacs exclusively for a month
  • Use netbeans exclusively for a month
  • Use Visual Studio exclusively for a month
  • Use XCode exclusively for a month

Learn a variety of systems:

  • Build an application using Hadoop
  • Build an application using Mahout
  • Incorporate Chef into a project
  • Incorporate Scout into a project
  • Incorporate leveldb into a project
  • Incorporate Thrift into a project

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 the Actor model
  • Write an application on Forth
  • Write an application in a concatenative language (e.g. Joy)
  • Write an application in a strict design-by-contract language (e.g. Eiffel)
  • Write an application in a array-oriented language
  • Write a data definition and data access layer for a complex domain

Get comfortable in multiple operating systems:

  • Use OSX exclusively for development for a month
  • Use Linux exclusively for development for a month
  • Use Windows exclusively for development for a month

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 an operating system
  • Write a text editor
  • Write a game engine

Get your hands dirty with harware:

  • Write some code for a single-board computing system
  • Write a CPU emulator
  • Target that same CPU on an 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 21 code katas
  • Complete the programming koans for a language that you want to learn [clojure]
  • Attend a code retreat
  • [-] Read SICP and complete all the exercises [already read SICP, did some exercises, there are too many of them :p]
  • 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 about algorithms:

  • Determine the asymptotic running time of an algorithm
  • Implement basic Sorting Algorithms: Bubblesort, Heapsort, Quicksort... Understand their tradeoffs.
  • Implement basic Graph algorithms: Prim, Kruskal, Dijkstra, A*...
  • Create and implement a dynamic program
  • Prove that a problem is NP-Complete
  • Understand the halting problem

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