DEV Community

What kind of programmer are you?

Arandi López on January 30, 2018

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 stat...
Collapse
 
programazing profile image
Christopher C. Johnson

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.

Collapse
 
arandilopez profile image
Arandi López

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. 😀

Collapse
 
programazing profile image
Christopher C. Johnson

Sorry, I know my reply was short and to the point but I did enjoy your post.

Thread Thread
 
arandilopez profile image
Arandi López

Don't worry about that. I learned something. I feel nervous when I write something in english.

Thread Thread
 
suedeyloh profile image
Sue Loh

You did fine. :-) Keep practicing and you'll get more comfortable!

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

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:

Junior knows and applies the design patterns, algorithms, protocols, and principles of their branch of the field, and applies this knowledge alogside other techniques; he/she is an excellent learner. Uses third-party APIs, libraries, and the like.

Collapse
 
arandilopez profile image
Arandi López

Thanks for your comment Jason

Collapse
 
synergistcomp profile image
Synergist Computing

"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!

Collapse
 
alainvanhout profile image
Alain Van Hout

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.

Collapse
 
arandilopez profile image
Arandi López

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

Collapse
 
alainvanhout profile image
Alain Van Hout

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:

  • not yet married
  • married but not yet having had children
  • married and having had children And stating that you’d love be maried and have children.

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.

Thread Thread
 
woodsie351 profile image
Woodsie • Edited

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.

Collapse
 
khmaies5 profile image
Khmaies Hassen

I don't know what i am,i copy past code from internet but i know the basic of MVC, REST, CRUD, ORM, SQL Injection, XSS, I / O Sanitization...
And i know design patterns and i used them in some projects i worked on.
The main reason i copy past code is that i have bad memory, i easily forget what i wrote yesterday or in the morning

Collapse
 
workshopcraft profile image
WorkshopCraft

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.

Collapse
 
biros profile image
Boris Jamot ✊ /

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.

Collapse
 
catriname profile image
catrina

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?)

Collapse
 
davkas2005 profile image
davkas2005

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!

Collapse
 
siddefinition profile image
SidDefinition

Almost at the end of the bridge between Apprentice and Junior. 😅

Collapse
 
presto412 profile image
Priyansh Jain

Same

Collapse
 
guppygab profile image
Gabriel M.G.

Soft skills and English proficency (offshore jobs) are also taken into account when it comes into salary ranges.

Moreover, I'd add knowledge of Design Principles like the ones you find in books like Clean Code, Clean Architecture, etc. in the Senior level description. Perhaps you included them when mentioning "facilitate their work and the speed of their deliverables".

When it comes to "Senior" levels, there are people who are really obsessed with performance, they believe that every programmer should be a rock-star, making code changes that make a project diffcult to read and follow ("separation-of-concerns" no longer exists..., violating DRY an SOLID principles, etc. ). In fact, it becomes really difficult to work with them when it comes to negociate alternatives.

In my case, I'm not and will never be a Master, Core "type" of programmer and also lack some of the Senior "skills", as I don't have any interest in "contributing with code in different projects and communities." and yet I have a high salary because of skills my employer considers add value to their company.

Collapse
 
bousquetn profile image
Nicolas Bousquet • Edited

I kind of get the Apprentice/Junior/Senior... Even if I agree it is too specific on the technologies.

But I don't get Master and Core. Working on an open source project, performnce optimization, the programming language... You can be part of the team doing that, provide valuable contribution and be an apprentice or junior. Actually many of the great things we actually use and all were designed by apprentices and juniors. Student not even having their diplima first. Why ? Not because they are super smart, they may very well be, but mainly because it is their assignment.

And quite often there a master or senior behind, you may not even see or know about. The professor maybe, or an experienced dev in the company, that guide and help the junior.

Where I work there junior and senior in every domain.

If I want to impress you I'll say I designed software for controlling spacecrafts, and that I did greatly improve a search engine widely used today worldwide that I designed processors, did quite some artificial intelligence stuff, before its current come back and all. And that also I did quite a few time performance optimization...

This is all true, but this doesn't mean I am kind of super human. I was not alone and the most crazy looking stuff I did when I was clearly a Junior ;) And my colleagues did it too. They are not super human neither. Or kind of master hidden in a cave.

As for conferences and all, it sound nice, it is. But after some time, you discover that many of the guys there, not all, they have to be great presenters, teachers. But they don't have to be master, they may be, or may be not.

A Junior is enough, and there many there too. Actually, if you spend most of your time going to conferences, you don't really have time to work on projects, make them live or improve on advanced topics. You often go on to teach and advertise hello worlds example or report what fantastic stuff your company/university whatever has done. I know people they do that most of their time. And that's okey. But they are not necessarily master. or super senior.

Collapse
 
asao_jp profile image
asao kamei

I'd like to add a "good engineer" between Jr. and Sr.
Good engineers know what they can do and cannot, easy/fun to work with, and are dependable that when they say "done", it means done well. When they have some problem or questions, they ask for some advice from more senior engineers.

Collapse
 
hydrogen2oxygen profile image
Peter • Edited

I miss Test-Driven-Development, because this is what makes the difference between a Junior and a Senior.

Collapse
 
arandilopez profile image
Arandi López

You are so RIGHT!

Collapse
 
axelledrouge profile image
AxelleDRouge

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

Collapse
 
iamakashk profile image
Akash Kamble

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 ! :)

Collapse
 
smgardner59 profile image
scott m gardner

What about the programmers who have been doing the same thing for years, and has mistaken repetition for expertise.

Collapse
 
hydrogen2oxygen profile image
Peter

Like programmers who embeds JDBC database connection in a JSP?
I call them "terrorists".

Collapse
 
blonkm profile image
Michiel van der Blonk

Too much emphasis on performance as some holy grail. In 99% of software performance is never an issue.

Collapse
 
angelitodiaz1 profile image
Angel Diaz

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????

Collapse
 
petarprok profile image
Petar Prokopenko • Edited

But, what if I'm between junior and senior?

Collapse
 
ritchieeinstein profile image
Ritchie Einstein

I'm semi Junior & semi Senior. Maybe I'm currently under evolution.

Collapse
 
coolshaurya profile image
Shaurya

An Apprentice here.

Collapse
 
uegnet profile image
uegnet

Hmm, feel like Rookie, but according to this I guess Apprentice.
I've never blindly copied anything from stuff I find online, seems insane to me.

Collapse
 
nattyxd profile image
Nathaniel Baulch-Jones

I would say I'm currently somewhere toward the end of junior, thanks for your post! 😊

Collapse
 
chrherbert profile image
Christoph Herbert

Thanks for the nice post! 😊 A small reminder where I stand at the moment and what is missing for the next level.

Collapse
 
dominusx profile image
Dominus

i'm an Apprentice! xD

Collapse
 
chrisvasqm profile image
Christian Vasquez

I would say I'm between Apprentice and Junior at the moment :D

Collapse
 
meredevelopment profile image
Mere Development

Interesting... this year it’s coming up to 21 years that I’ve been paid to build things for the web. 23 years as a ‘hobby’. And I’m pretty sure I’m a Junior. Oh dear...

Collapse
 
h3is3nb3rg27 profile image
Christian Vallejos

I start like a Rockie, now i consider myself an apprentice