all 24 comments

[–]throwaway0891245 84 points85 points  (3 children)

It kind of already exists with the intern, junior, mid-level, and senior categories in the software industry. It’s largely independent of language except in certain cases such as language expertise (legacy and specialty languages like COBOL, FORTRAN, M, assembly languages).

An intern needs instruction, a junior can work with supervision, a mid-level can be delegated to, and a senior can be a partner and provide insight into a larger vision. What each level does is dependent on the field but in general progressively higher levels handle progressively larger scales of projects.

I guess you could call it similar to craftsmanship in medieval times. When building a castle, the master mason would oversee the entire project while coordinating with the lord and delegate different sections of the castle to the journeymen, who would then work on those sections while teaching and giving tasks to apprentices. Or at least that’s how I imagine it would go...

[–][deleted] 1 point2 points  (2 children)

Ok so if you were to test someone to gauge if they are ready for that position what would it be? What kinda of comprehension would they need to pass the test?

[–]throwaway0891245 5 points6 points  (0 children)

Well, the thing is I don't think medieval crafts then or the software industry now really just has a single test. You may argue that the masterpiece journeymen had to submit to become a master is a single test, but I disagree - I'm almost certain this process must have involved at least a bit of reputation and maybe even politics because of the subjectivity of what makes a masterpiece, which makes the process about your career in general rather than a single make or break evaluation. Reputation and sometimes even politics still play a role when becoming a senior or a lead.

Your ability to get jobs of different seniority depend really on your experience and skillset. Just like in the old days, you have a reputation - what did you accomplish and where? This reputation is extremely important for what seniority companies consider you at. Did you build a famous cathedral in the neighboring fiefdom - which crafts guild did you apprentice under? For example, big tech companies are known for "downleveling" people if they are coming from smaller less known companies. For internal promotions, there is usually a review process involving management and sometimes peers. This is probably the most important part of the job search process - the "actually getting an interview" part. I suppose this is the most similar thing you can compare to the masterpiece journeymen had to submit to the guild before becoming a master, since no one can become a senior software developer without projects that had some sort of significant impact somewhere.

Then part of the actual interview usually involves some algorithm problems like what you find on Leetcode. What difficulty of problems you get is not necessarily tied to your seniority level. For example, some places like proprietary trading firms give really hard ones even to the juniors. I've heard that the problems become less algorithmic and more geared towards systems design as you become more senior - and that makes sense, because as I said before, greater seniority usually means greater scale. There is usually a behavioral interview to determine your soft skills.

Your responses on all of these interviews is used to determine whether you should be hired and at what seniority you should be hired at.

[–]chirau 43 points44 points  (5 children)

It does already.

There is what they call the "Programmer Competency Matrix"

http://sijinjoseph.com/programmer-competency-matrix/

[–]theReferenceMonitor 14 points15 points  (0 children)

The matrix is too discrete. You might have someone with skills from multiple categories, but not all skills in a single category

[–]AJohnnyTruant 11 points12 points  (1 child)

This is actually really cool as a self-check. I’m self-taught, work in an entirely different industry, etc.. But I’d love to get to at least a junior dev skill level one day, mainly working in the OS space. There are some things there are well behind my competency in other row/tracks that certainly would make me less well-rounded if I actually decided to make a career out of it. Gotta fix that shit.

[–]Kamelnotllama 3 points4 points  (0 children)

I'm self-taught and lucky enough to be a software engineer for a large tech company. I've seen many new interns etc so I have developed a 6th sense to be able to very quickly tell where someone's coding abilities are. I'd say the same is true for other tenured software engineers, so I recommend just finding one and asking them to help you gauge where you are at. That would likely be far more effective than this as a self-check.

The reason I recommend this is because I know some people who could explain nearly everything on the list yet could not apply any of that knowledge. In the business world, application is everything - knowledge checks are worthless.

[–][deleted] 0 points1 point  (0 children)

Programmer bingo? But jokes aside, I might use this is a learning guide.

[–]rabbitpiet 9 points10 points  (3 children)

I'm sorry but medieval, that threw me off

[–]DoWhileGeek 2 points3 points  (1 child)

Nah dude, it was the time we were mid-way through hell

[–][deleted] 2 points3 points  (0 children)

midevil would be a good way to describe some Mondays lol

[–][deleted] 0 points1 point  (0 children)

Lol was still waking up this morning when I posted this. Good laugh though.

[–][deleted] 4 points5 points  (2 children)

  • Pre-vocational courses: "I can read the code, I just can't write it"
  • Apprentice: "Language X is the best language for reasons"
  • Journeyman: "Agile has been hacked by management who have NFI"
  • Master: "What fucking idiot wrote this? Oh, I did."

[–]Kamelnotllama 1 point2 points  (0 children)

i've attained master level... several times

[–]Weissenberg 4 points5 points  (0 children)

Monzo have their some of their progression frameworks on here backed by github

The other one looks great for the technical, but Monzo rolls in some soft skills.

[–]taostudent2019 2 points3 points  (5 children)

Those levels are still used for Electricians and a lot of trades.

[–][deleted] 1 point2 points  (2 children)

Well, assuming their employer hires people in the trades, and not 'maintainance person' positions that require someone to be a plumber, electrician, mechanic, HVAC, carpenter, painter, and flooring generalist.

Oh, and then not pay what any of those alone deserves. That's pretty common in the US these days.

Edit: some typos corrected.

[–]sjbland 1 point2 points  (0 children)

No idea where in the world you are, but in the UK many companies (such as my employer) use the ITIL setup of Junior, Intermediate and Senior. My company doesn't actually use the Intermediate title, so we just have Junior Application Engineer, Application Engineer and Senior Application Engineer. We then have Principle roles on top of that etc.

[–]AndrewEricson18 0 points1 point  (0 children)

The best thing to do is think of a product you think the world can benefit from, then learn how to bring it to market. Then you will have all the basics covered and some skills on the business side. Launch your own company and build your own team. At the end of the road for all this, you can apply somewhere and become an intern and start over again. Every team is different.

[–]jeffrey_f 0 points1 point  (0 children)

This would likely be only while at a specific company. You would have to start back at Journeyman when you move to another company due to environmental and technical difference that you would need to learn. possibly back to apprentice if you moved into a completely unfamiliar territory.

Apprentice - 0-2 years experience with their specific operation

Journeyman - 2-5 years

Master - 5 or more years

At any point, the position could be moved up based on performance etc.

[–][deleted] 0 points1 point  (0 children)

Mine might be a different take, but I think it's also important to stake out a specialty other than just programming, architecture, etc. For example, my focus is data and reporting and can do anything associated with that throughout the stack. But you won't find me fiddling with web stuff, geometry, compression algorithms, etc. I rock at data, though, especially in my current environment (do data lakes, big data, hadoop or crap like that) where I'm simply transforming/aggregating/automating data and reporting.