24 yo CE here with FE here, the question becomes do you think a test can be designed for something as large as software to accurately judge competency. Competency in code comes from getting stuff wrong and having to live with it and fix it, that stuff isn't super easy to test.
You're right, it would be pretty difficult to make a test that actually gauges competency. That shouldn't necessarily be a reason not to try though.
Honestly, it might be easier to adjust the hiring process. If the hiring process were able to easily select driven individuals who retain "software engineer" as part of their identity, and people that take pride in their work, seek constructive criticism and want to learn, then that would be good enough.
I should also clarify that being self taught isn't necessarily a bad thing (one of the best coworkers I had was self taught), lacking any of the above traits is.
>That shouldn't necessarily be a reason not to try though.
I'd argue that if a test could select good SEs then companies would be giving tests (or outsourcing such tests) as part of their interview process. It's not like a lot of thought, effort and experimentation hasn't gone into figuring out how to hire software engineers.
>Honestly, it might be easier to adjust the hiring process. If the hiring process were able to easily select driven individuals who retain "software engineer" as part of their identity, and people that take pride in their work, seek constructive criticism and want to learn, then that would be good enough.
I'd like to note that a test would not select for any of those things except the ability to study hard.
Self taught programmer here, criticism is something I think is harder for self taught people. I think it stems from never having an authority over you when you initially learned, and that sort of becomes enshrined as part of your identity. If your not reviewing someones code formally, just ask questions that could lead them to what your trying to suggest. Pretty commonly used method but just having them logically work it out sort of quails the knee jerk reaction to criticism.
Also maybe a lot of people are self conscious about no formal education as well? That wasn't an issue for me but I imagine it is for some.
TL;DR: The transition from learning the hard way always, to allowing someone to try to prevent it is tough.
You don't even need a test. Just drill down on one particular area and see how much they know.
For example, get them to explain a model they would use to represent user login. Then get them to explain how that would link to their use info. Then how they would display that on a login screen. Then how they would save that into the database. Anything to watch out for? Any security concerns?