Leveling Up
I recently read a blog post by Jason Rudolph about leveling up as a software developer. To paraphrase him, the idea is to:
- Identify the experiences that advance a person as a developer.
- Select a particular experience to pursue.
- Pursue that experience to completion. (Achievement unlocked!)
- Reflect on that experience. Really soak it in.
- Return to Step 2, this time selecting a new experience.
This was along a common vein with some things I had been doing, and generally seemed like a good fit for me, since I'm fairly new to programming, so I forked his list and modified it to suit my circumstances:
Program in a variety of different programming paradigms
- 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
Program for different platforms:
- Write a nontrivial web app
- Write a nontrivial desktop app
- Write a nontrivial mobile app
Enhance my understanding of the building blocks:
- Use machine learning to solve a problem
- Write a networking client (e.g., HTTP, FTP)
- Write a B-tree database
- Wrap an existing library to provide a better user experience
- Write an application or framework that provides a plugin model
- Write a testing framework
- Write a lexer & parser
Enlighten myself:
- 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
Program in the open:
Contribute to an open source project(Added three words of documentation. Ha!)- Have a patch accepted at an open source project
- Earn commit rights on a significant open source project
- Publish an open source project
- Perform a Refactotum of an open source project
Learn by teaching others:
- Present a lightning talk
- Present at a local user group
- Present at a conference
- Publish a tutorial
- Publish a constructive code review of an open source project
EDIT: I have since updated this list.