Levels of Developer Expertise
This is a light-hearted attempt to classify developers. Enjoy…
- 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 know 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.
- 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.
- 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.