Levels of Developer Expertise

This is a light-hearted attempt to classify developers. Enjoy…

 1. Newbie

  • Knows the syntax of one language and thinks he’s a master.
  • He might also think the language is the best one in the whole wide world.
  • Full of passion and excitement about programming.
  • Writes code that ‘seems’ to work – it compiles after all – doesn’t necessarily knows why it works though.
  • Uses bad variable names.
  • Programs are likely to be be a single file.
  • Doesn’t know anything about testing.
  • Likely languages: PHP or Java.
  • Likely Reads: Learn Java in 21 days or something similar.

 2. Amateur

  • Learns another programming paradigm/language.
  • Uses better variable names – must have been hurt by evil names.
  • Has developed one or two relatively decent working systems.
  • Writes spaghetti code.
  • Re-invents the wheel.
  • Probably has a huge ego.
  • Only knows how to use IDEs.
  • Tests? They are just a waste of time and delay the release of his ‘one-of-a-kind’ software.
  • Still dives into code without proper planning.
  • Likely Reads: Advanced Java.

 3. Intermediate

  • Becomes language agnostic.
  • Knows multiple languages, tools and paradigms – their strengths, flaws and best uses.
  • Has worked on bigger projects – understands the importance of design and flexible code.
  • A bit of spaghetti code here and there but he tries to avoid this.
  • Understands algorithms and data structures.
  • Can use text editors.
  • Uses version control.
  • Designs code before starting and tries to avoid code duplication.
  • Probably has his own blog or contributes to open source projects.
  • Likely Reads: Pragmatic Programmer.

 4. Advanced Intermediate

  • Codes defensively – using asserts, unit tests and checks.
  • Really cares about his code; refactors aggressively until it is clean.
  • Toying with building his own language or at least understands how languages work.
  • Can ‘smell’ bad code.
  • Interested in reuse and sees patterns in software engineering.
  • Understands design patterns.
  • Knows about methodologies like Agile, Scrum, Kanban.
  • Likely Reads : The Mythical man-month, Clean Code, Code Complete, the Java language specifications.

I don’t know much about master programmers – am not one yet though I pray I do get there.

I am curious about what you think, let me know in the comments.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s