Originally published in Dev Knights
A year ago I read an article published in the software magazine Software Gurú by Basilio Briseño where He stated that PHP is one of the least paid languages in Mexico and why. In his article he also published a salary range based for every type of programmer made by the programming group "PHP Mexico".
Although the salary range skill classification is aimed towards PHP programmer, the type of programmer classification
can be applied outside php programming. The following list suggests what a Rookie, Junior, Senior and Master developer skills are expected to get into that classification.
The salary range could be generalized as follows:
Rookie usually writes code without consistency in indentation or conventions and usually copies and pastes anything found on the internet that seems to do what it was asked to deliver and that, according to the forums, is the solution.
Apprentice has accepted that he/she needs to improve and decides to learn the best practices and apply them. He/She consults forums not for searching code that he/she could simply copy/paste, instead he/she analyzes it and asks her/his issues after having investigated by his/her own.
Junior knows what design patterns are and applies them, understands the basics of what MVC, REST, CRUD, ORM, SQL Injection, XSS, I / O Sanitization, etc. are, applies this knowdledge alogside other techniques; He/she is an excellent learner and uses third-party APIs.
Senior is capable of developing his/her own tools and APIs, is aware of how his/her domain language works internally, is highly interested in the performance of applications beyond its ease of development, he/she is not satisfied with the functioning and design of all third-party tools and APIs as they come, and always seeks to innovate and create things that improve performance, facilitate their work and the speed of their deliverables; contributes with code in different projects and communities.
Master is capable of developing his own extensions, gems or libraries, and optimizing them for his/her best use; contributes to Open Source projects and he/she is normally dedicated to improving the performance of high performance applications. Knows the domain language its origin and differences with others languages.
Core contributes to the development of the core of the domain language; contributes in some extensions, gems or libraries and public tools; He/she is a frequent speaker at international conferences and it is usual to see his/her name in the credits of changes of version of his domain language.
So ... What kind of programmer are you?
Many developers are called Senior after years of work, or experts in some framework or language when they only do tutorials; however, your work and contribution and how it affects other's people work (not only in your workplace) tells vastly what type of programmer you are.
Oldest comments (40)
It seems like that scale has a very specific type of programmer in mind, given that 'master' seems to be better than 'senior' by virtue of working on open source projects, which is compounded by 'core' involving development on the language itself.
If I have to, or someone else, classify the kind of developer I am, I 'd love to be classified as how much contribute to the art. That's why I share this.
Thanks for comment
I understand that, and that’s an admirable goal to have.
It’s just that the way it’s put forward is like saying that there are 3 stages to people’s lives:
You (hypothetically) wanting to one day marry and have children is far different from the implication there that this is the specific path that people ‘ought’ to progress along. Some people prefer the single life, some people don’t don’t wish to marry (with or without wanting to have children), and some people people simply don’t want to have children.
Similarly, open source development and language or ecosystem development are praise-worthy endeavours, but they are not inherently linked with greater mastery or greater experience.
But as I said before: it is indeed an admirable goal.
I would agree, this seems very focused on coding, API and tool development, and open source contribution. But it misses other "soft" skills that I feel also contribute to the senior and master levels such as: Mentoring, leadership, planning, negotiating scope vs cost vs delivery time, and quality assurance. Although not strictly programming skills I would expect a senior developer to possess at least some of these.
But maybe it was your intent to place the focus of this on pure coding skills, which I think you have covered nicely.
Nice Post @Arandi Lopez! I am still Apprentice and trying to learn new things everyday. Thank you for letting us know where do we stand ! :)
Almost at the end of the bridge between Apprentice and Junior. 😅
Same
Thanks for the nice post! 😊 A small reminder where I stand at the moment and what is missing for the next level.
By these definitions, I blur the line between Jr. and Senior right now.
You don't have to use "him/her" you can always just use they/them/their if you want to use genderless pronouns.
Thank you so much for that advise. 😀
Sorry, I know my reply was short and to the point but I did enjoy your post.
Don't worry about that. I learned something. I feel nervous when I write something in english.
You did fine. :-) Keep practicing and you'll get more comfortable!
By your chart, I'm apparently Senior level...which I sort of knew, but still blows my mind (imposter syndrome and all that).
Of course, this seems quite oriented towards web app development. Some of us don't ever need to know or care about REST, MVC, ORM, and the like, simply because we don't work with those databases or web development. Not to say that I don't have a conceptual understanding of these issues, but I have literally never had a need to use them in the wild. ;)
In the same way, I virtually never use third-party APIs, again because I don't work in any sector where that matters. The third-party designation is useful, but this goes way beyond APIs.
All that is to say, one should never bind general expertise designation to certain technologies. Someone can be a Core Developer in, say, High Performance Computing, and never once in their career need to care about audio codecs; by contrast, someone can be a Core Developer in multimedia playback, and never once in their career need to care about HPC.
Thus, allow me to suggest a revision to one part of your chart:
Thanks for your comment Jason
"Many developers are called Senior after years of work, or experts in some framework or language when they only do tutorials; however, your work and contribution and how it affects other's people work (not only in your workplace) tells vastly what type of programmer you are."
Agree with this note. I think the title of "Senior Developer" should consider not only years of work or education, but also knowledge, skill set, applicable projects worked on, and contribution to the community as a whole. Great article!
I currently fall near the Junior level it would seem, but I'm starting to get my feet under me in terms of the Senior level. This is definitely a great delineation between skill/knowledge levels, and of course adjustments have to be made depending on the industry and type of development you're doing. Fantastic article!
i'm an Apprentice! xD
But, what if I'm between junior and senior?