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.
Latest comments (40)
By these definitions I'm junior level, yep I knew that but thanks for the article. It help to know where to go from there
I do agree with your classification, but I think it also depends on your maturity in the language. For example, I would say I'm a Senior PHP developer, but as I'm quite new to Go development and still learning every day, I would say I'm a Junior Gopher.
I'm not sure I fit into any of these definitions and i'm not sure what to do about it. I'm 41, married, 3 kids, and i've coded since I was 10. Between 10 and 18 I would consider myself a rookie. I made games and tools in Pascal, Basic and Assembler. After This I graduated to Apprentice but I didn't take my study beyond A level(I'm in the UK). When I left college I got a job in retail and spent the next 15 years in various retail jobs. During this time I taught myself OOP, C, C++, x86 assembler, dark basic, open gl, PHP, Asp, Asp.net(VB, not c#) and continued my learning until about 6 years ago when I decided to enter a competition called ModJam.
This competition challenged coders to build minecraft mod's in a weekend. I had never touched Java but REALLY wanted to create something so during the weekend in question I tasked myself with learning enough Java to create a minecraft mod. This was a very steep learning curve but it paid off. I created a mod that actually ranked. Fast forward a couple more years and I returned to Java to create several more mods. I was more confident now and spent a lot of time getting to know the language. I probably invested somewhere in the region of 500 hours in development and learning time. As of today those mods have had over 3 million downloads. I don't really get much for them but with a limited portfolio, they feature heavily in my job interviews.
Finally 2 years ago I went back to school and as of this year I now have a degree in computing. This would move me into the Junior position?
Now my problem is I have no focus in the technology I use. I've build wordpress sites. I've imported flat file databases from one application to another without knowing the internal format of the database. I've written the odd game here and there. I've modded minecraft. I've dabbled with Android Studio, I've got a raspberry pi running nginx set up to replicate live streams to 2 different platforms. I've build apps in electron and laravel. I've run an online shop with my wife. I've played with react and three.js.
I get phone calls from recruiters several times a week and they all ask me the same question. What level of developer am I. What am I worth, and if i'm completely honest. I have no idea. If I hang the imposter syndrome at the door then I feel like I could be a VERY good fit for the right company, but i've yet to find the right company.
If anyone has any suggestions i'm open to them.
An Apprentice here.
I'd say the jump from Junior to Senior would be not necessarily mastering all the basics mentioned but knowing them well enough, and the company problem well enough, to suggest and CREATE a solution (ie. your own apis, tools). I believe the proposal and creation of that solution might make you senior? (just a theory, thoughts?)
I would say I'm currently somewhere toward the end of junior, thanks for your post! 😊
Too much emphasis on performance as some holy grail. In 99% of software performance is never an issue.
I miss Test-Driven-Development, because this is what makes the difference between a Junior and a Senior.
You are so RIGHT!
I'm semi Junior & semi Senior. Maybe I'm currently under evolution.
Thanks a lot. Very interesting. I'm in second step --> Apprentice. But, I have a question?. What is the best advice to achieve the next level????