3 ms·
There's a lot of discussion in this thread around "junior" vs. "senior". This misses the point, which is to hire good programmers and avoid bad ones. It's as if
by gruseom 15y ago
There's a lot of discussion in this thread around "junior" vs. "senior". This misses the point, which is to hire good programmers and avoid bad ones. It's as if the industry has finally burned itself out of the "programmers as replaceable cogs" model and has replaced it with the next-laziest model, "hire senior, not junior". That is an improvement, but it's still so off-base that the words "junior" and "senior" applied to programming make me cringe.
Here are two factors the junior/senior model does not take into account. First, a good but inexperienced programmer will learn so quickly that they will run rings around mediocre experienced programmers in no time. Second, experience isn't only a good thing. Once people have repeated something a certain way enough times (and surprisingly few repetitions are required), they become locked-in and unable to see alternatives. This loss of flexibility is toxic to effective programming.
Of course that happens less to good programmers than bad ones, but that only puts us back at the real question - how do you tell a good one apart from a bad one? - something we have no satisfactory way of answering that is compatible with current hiring practices.
What we need is a healthy culture of interaction between "junior" and "senior". Our industry lacks this. What is our path to learning? We have the sink-or-swim model in which people once hired are installed in a silo and told to work on their tasks. Everyone recapitulates all the classic mistakes and has to figure everything out for themselves. I know I did. It cost me at least 5 years developmentally, and I'm only putting the number that low to save face. This way is so inefficient that it must eventually yield to something better. Hopefully when that happens there will also be less of the prickly auto-didact about most of us - but that's another story.
- akkartik 15y agoWhat we need is a healthy culture of interaction between "junior" and "senior". Reading other people's code is too hard. We go through life trying to do it as little as possible.
- mattmiller 15y agoReading other peoples code is a great way to learn, but often other peoples code is not very accessible. How often do you look at the code written by a star dev in another department on another project. I can't: -identify star devs unless I work with them directly, -look at the code base of the project they are working on if I am not also working on it, -find out which portions of the code they wrote (without looking through commit logs) In many places a <i>healthy culture of interaction between "junior" and "senior".</i> is not facilitated by the employer.
- gruseom 15y agoIn my experience, it happens through personal interaction and is a matter of culture. Facilitated by employers? Most employers are decades away from knowing how to do that. Or rather, most employers that exist today will never do it. The interesting question is how many good programmers would be happier working in such a culture. I believe the answer is significantly many, and that this is a competitive edge waiting to be exploited. We hear so much about perks and benefits. My programmer soul says: fuck perks and benefits. Give me an environment that is teeming with creativity where I get to work with great people that I learn from and am inspired to do what seemed impossible.