Apprentice, Journeyman, and Master: The Medieval Guild (2018)
blog.philosophicalsociety.org
blog.philosophicalsociety.org
With apprenticeships you're really at the mercy of the Master who will instill in you their 'version' of how something must be done, whether you agree with it or them is entirely irrelevant to the process of edification and leaves very little room for creative problem solving and rule breaking that I think the most important work in tech actually requires.
This rigid structure is well suited for certain crafts (like electricians or plumbing) and perhaps some arts (culinary, masonry/architecture), but I fear the power that FAANG already has exerted in corrupting an entire generation of tech workers with salary and supposed prestige has done enough damage already to the World, so to have them act as gatekeepers of information seems entirely myopic and self-serving to an already entrenched Industry.
What's the dominant front-end Javascript framework? React. Made by Facebook. Presumably with Facebook's assumptions about how front-end Javascript should work baked in (not that I'm complaining, really - I like React)
Or Protobuf, Google's idea of how data serialization should work (again, I like Protobuf). Go, too.
Before this you also had things like C# by Microsoft and Java by Oracle (and a whole slew of languages from Apple). Each one trying to impose their vision for software on developers who would use their language. You even see this in LISP, where devotees may look for ways to use other languages in a LISP-like way.
We may not have formal apprenticeships, but we definitely pick up patterns of thinking about software from the tools we use to make our software.
Tech companies could hire and train students straight from high school instead of making them go through the academic priestly class, but nope, everyone wants expensive degrees and pay more for it.
Exchanging that filter for hiring straight out of school but only taking, say, people with top 5% of SAT results (1420) would also demonstrate it, but it would result in even more stark over-representation of Asians (about 20% of them meet the cutoff) and under-representation of Blacks (only 1% of them meet the cutoff).
That is not necessarily true. The German apprenticeship model (which covers a ton of jobs there, not just artistic & blue collar) has a school component, and a shared test at the end of apprenticeship and journeymanship. This ensures a common standard on "how things are done", and a shared toolkit for anybody working in the field.
Incidentally enough, I did my 1st year of apprenticeship (Biodynamische - Landwirtschaft) in Germany alongside University students who are mandated to do one semester of a sort of work study. I began as a person with a BSc in Biology and several years in the diagnostics Industry.
But I was taught under a guy who went through that system you described instead of going through real-schule and he bounced around the system, often misguided, as to what to do because of the aforementioned statement.
I personally decided to continue in other countries in Europe with a stronger culinary history after my first year, but I still think the German/Swiss model is a superior way to teach young adults practical skills in relevant Industries without the need for the debt traps that Universities have become.
Apprenticeships often boil down to grunt work and "watch me do it" for the first few years. This kind of work mode is acceptable as a teenager. But today the apprentice level would probably be until 30 or so. This education phase is currently owned by higher level academia. Many people choose industry over academia to avoid a lengthy education. If industry became the same, I think this would frustrate and burn out many people.
Those running the guild are probably not the best at a craft, just best at politicking and with the most vested interest. Those that would run a guild 900 years ago and VPs and CSuites today.
Also tech is too new. A technology can rise and fall within a decade. This makes lengthy learning periods impractical. We don't value consistency across generations (in-fact this would be now considered stagnation). This also means customers are less able to discern (or even care about) high versus low quality products.
On the flip side, education is much more readily available. A dedicate Master <> Apprentice relationships was key, because they were likely your only source of learning. This is just no longer true. Today we have so many knowledge sources that no single one gets such an illustrious title as master.
Most engineering disciplines have a professional community that requires you to take a proficiency exam (usually on graduation) and continued education. Companies will outright refuse to hire any candidates without the certifications. Programming will eventually have something similar, but the field needs to crystalize more.
This so much, I often see people believe that if things were more organized the best developers would rise to the top, but the fact of the matter is the best developers don't like meetings and positions and what not they like developing. Often times the people that are most eager to tell people how to do their job and run their workflow are those least capable of doing it themselves and as such why they chose a position on telling others what to do rather than doing it themselves, a la the Dilbert Principle.
But that's just my 2 cents maybe I am way off, but it seems to me the people most interested in setting up more structure and organization to "empower" developers are those who I least want to represent me.
Many companies now invent their own proficiency exams. We do.
Medical graduates work in a specific setting under supervision for a period after extensive education. I don't think the conditions of their work are ideal, but many people make it through without burn out.
Although technologies are changing, there are some things that transcend technology. Concepts about like documentation, naming, decomposition, components, interfaces, concurrency, locking, algorithm efficiency, many considerations of user experience.
Companies have to abide by Labor laws and Colleges must have fair admissions, but a private guild could be much more exclusionary without the same legal repercussions.
I think medicine is more unique because it's one of the few fields that customers (patients) consistency demand quality over innovation. Do you want the treatment that works, or the new experimental one? Most people will want tried and true first. Of course there are always exceptions to this.
Companies are not doing it to artificially restrict supply. They have no incentive to raise the cost of labour.
(On the other hand, the process could be captured by incumbent employees who do have that incentive).
That seems to be way more common than most people want to admit. So many software engineering interviews have very little to do with the job. Worse of course is when there is no process and it seems like the whole thing is just designed to get the hiring manager friends hired.
This isn't really true. Most engineering jobs in the US don't require a PE. The main circumstances under which you need to take an Engineer-in-Training exam (which probably requires a 4-year degree) and then work for some number of years in the field--and then I think take another exam--is when you need to sign off on designs, etc. for government regulators.
When I was in the oil business I got an EiT because I would eventually have been signing off on offshore drilling rig design blueprints. (But ended up changing careers so I never got past that point.)
This page has some pretty good info on the whole process: https://www.nspe.org/resources/licensure/what-pe
As someone who took the FE and then went into software, I understand why this is so complicated. The acronyms are hard to understand and the process is very divorced from what software engineers have to deal with in their day-to-day life.
I'm sure there are people at places like Boeing, GM, and so forth who have PEs but I imagine it's a fairly small minority. It definitely isn't like passing the bar if you're a lawyer. I know someone who runs a fairly large systems engineering group in aerospace and they don't have one.
(And my understanding is that the software engineering PE exam has been phased out because basically no one was taking it.)
Now, when a product is ready to go out the door, then it gets reviewed, and the review is signed off by a PE. We typically hire an outside company to do that work.
I don't see this happening and sincerely hope it does not. Computers and programming are too accessible, and I think are the first thing to become so accessible. Proof of competency is related to effort, not the time you spend seeking qualifications.
But are they? Computers have become insanely complicated.
Another important difference between guilds and academia was that you did not have to pay tuition fees to become an apprentice. In some cases apprentices got no salary, but lived in the master's household and had free board and lodging - although their role typically also included some aspects of being a household servant. But you didn't have to pay an extortionate fee to get into an apprenticeship, and you typically did leave with skills that let you earn a living. The apprenticeship system was in other words accessible to a much wider class of people than "good" degrees nowadays are.
Nowadays of course, apprenticeships pay you - not a lot, but enough to survive on.
Similar to the Wikimedia Foundation but specifically focused on programming history, theory, and practice.
We have hired entry-level engineers that went from supporting basic production issues to writing low-level parts of the platform within 2-3 years. At no point was I consciously aware of any explicit knowledge transfer occurring, but somehow these individuals are able to pick up a tremendous amount of capability via proximity to the day-to-day process. One day it clicked for me that a pull request I was reviewing for one of these individuals was something that I would expect to see from a highly-skilled developer on the team. Seemingly overnight, we converted a QA/Support engineer who chases down basic null refs into a proper developer, and all it required was exposing them to the full depth of the process every day.
Perhaps the master/apprentice game doesn't make sense in terms of on-boarding. But, I see massive amounts of value in exposing willing employees to increasingly-difficult problems on a daily basis. Make your most junior employee install the same tools and work through the same processes that your most senior employees do. There is no reason you cannot ramp someone from zero to hero in a few years with passive exposure to your business processes.
I find that this model of constant exposure combined with probationary employment strategies provides an excellent blended approach for ramping in new talent that would otherwise be filtered out by your typical big corp HR department. Just because someone doesn't have a computer science degree or got burned by our incredibly shitty legal system doesn't mean they aren't willing to bust their ass and try to prove something to the world. I would like to give as many people a chance as possible at this. Programming is an art and no one policy is going to be the best. The more perspectives we have the better.
Are we out of imaginative new ideas for organizing society?
We have the ability to organize a social heirarchy more generally across the public thanks to computers. The necessity for highly specialized master/apprentice guilds looks limited to a few areas.
I.e. a case of a phase-locked loop. I think viewing it like this can help spot other such loops in the society.