But coming from the architecture profession, I don't discount encouraging others as a form of self-validation of one's own career choices.
My step-father and brother are both brokers, so I know how they operate, but I somehow missed how agents get a piece of the action.
There are also potential informational advantages to having other agents more tightly coupled to an agents social graph, e.g. it is easier to obtain information about seller or buyer motivation and finances through a back channel.
I can tear apart any engine to understand how it works.
I can rip out the bathroom in my house and install a totally new one.
With closed source, I can't just rip out component X and replace it with component Y. I can't read the binary to understand how it works (Technically I could, but I mean that with modern languages, the assembly looks massively different from the original source).
With a mechanical device, you don't know the dimensions on press fits, you don't know what the aluminum was heat treated to, you don't know the silica to aluminum ratio and how that affects thermal expansion, you don't know what lubricant was used, you don't know what blend the fiberglass insulation is, the list goes on and on. It's not possible to obtain 100% knowledge without the drawings. At best, you make assumptions about material processes, what a reasonable press fit would be, occasionally you can spark test to make a guess at material composition, etc.
There isn't a "holy grail" (1) mechanical equivalent to a hexdump where if you grind at it long enough you achieve 100% knowledge.
(1) Obtaining a complete set of original drawings is, but unlike a hexdump, you can't get the drawings from the finished product.
You have all of the "what" (in an inconvenient format that will need tremendous effort to be useful for most things), but you're mostly guessing on the "why". Tons of information is discarded, and can't be retrieved. Just guessed at. This puts a good bit of distance between what you have access to in the theoretical sense and how useful it is in the practical sense.
I can go to planning offices and see the plans of any building. Almost no-one has "secret painting methods", or "secret plumbing methods".
For plumbing, building codes dictate the range of solutions that are available for any given problem, and they're not secret (but buying a guide can be expensive.) However, painters, plumbers, and other trades definitely have tips and techniques that they've learned through experience and from mentors, and you won't find much of that being given away freely. You've got to learn it the way they did, through hard work and apprenticeship. And that's ok, because those skills require mastery to use properly, and that's true in software development too.
Exactly this. My father is a civil engineer who's now in his early 60s, and he recently got to work with colleagues much younger than him.
He told me that said colleagues didn't know some trade-related stuff which hadn't got covered in university courses (like how to reinforce earth ditches when digging in mountainous terrain with probable heavy rains) but which was paramount in keeping the work going (not much that you can do once a ditch collapses because of heavy rain). He told me that in this instance he had instructed his younger colleagues on what was the correct procedure to take, but he also told me that he's got other professional secrets that he's not ready to share just yet.
I'm curious enough to ask: why?
Do you see musicians making samples and giving them away to other musicians for free? Sure, you can find some online but it is definitely not the norm.
Does Hollywood create stock footage and release it for other production companies to use for free?
Do photographers allow others to use their photos for free?
OSS is very unique to the software world.
Magicians!
(an exception that proves your rule of course)
The difference is that construction has long been a commodity industry and software has not become one yet.
As coders, we do something similar. We show the code and explain how it is put together. We even talk about the theory behind the application. But for them to learn, they have to have the aptitude and the practice.
Coders have the aptitude, and they seem to insist anyone can do it too. Companies go along because it's in their best interest if this is true. The reality is that people have varying degrees of ability for handling abstract logic. Only a small portion of the population is adept enough to handle abstract logic at scale and we need that skill in more fields than just programming.
Reality seems to bear this out as we have increased the amount of recruiting every year at every level of business, school, and government, but with diminishing returns.
I believe that we offer to teach because we like finding people who think like we do (or maybe wish to believe we think the same way as the rest of the world), because we like to believe we are making other people's lives better, and on some level, because it's safe in that the returns are small enough to not threaten our own wellbeing, but maybe I'm just too cynical...