On a job interview, I saw a new stupid programming management tactic. I hadn’t heard this one before. If one clueless twit is using it, he learned it somewhere. It must be gaining popularity.
It was obvious after a minute of interview that I wasn’t going to be hired. An underqualified boss never hires someone older, more experienced, and smarter. Instead of walking out, I decided to see what he would say.
For some software company interviews, they had a separate install for each customer, plus some custom code. That led to a configuration management nightmare, keeping track of which customer had what version. This startup was a standard Internet store. There was no reason to have more than one “trunk” code branch.
Idiot: Do you use source control?
FSK: I’ve used Subversion and others.
Idiot: Have you used Git?
FSK: Unless it’s a huge project, the differences between Git and Subversion aren’t important.
Idiot: Git supports branching and merging much better than Subversion.
FSK: You only have one website. Why do you branch?
Idiot: Each bug and feature is a separate branch!
He was really proud of himself, when he said “Each feature is a branch!” He thought he was brilliant, for managing his software stupidly.
He’s in the world-class idiot category. That’s unnecessary overhead. That might make sense on a 100 person team. This was a 3 person team! Even on a 100 person team, you’ll be wasting all your time managing merges!
The sane way is one trunk branch only. One version is tagged “production” and another is tagged “qa”. If there’s an emergency production bugfix, you can make a small branch, but also put the fix in the head revision. Major changes might justify a branch. It’s stupid to do it for every bug or feature, not matter how small.
If you branch for every feature, that delays discovering conflicts. If A breaks B, you want to find out right away, rather than waiting for the merge.
If management isn’t completely clueless, two people should almost never be working on the same source file. It’s a 3 person team! It isn’t that hard to coordinate.
By adding management overhead, than creates the illusion of productivity. When people spend time making and merging branches, that creates the illusion of work, when you’re just wasting time. The merge process can never be 100% automated. There will inevitably be problems when merge conflicts are not properly resolved.
“Git makes lots of branching easy!” does not automatically mean “We should make as many branches as we can!” Just because your tools allow you to do something, doesn’t automatically make it a good idea.
Idiot: We’re looking for someone with both PHP experience and Ruby on Rails experience.
FSK: Why are you using both?
Idiot: Before I was hired, version 1.0 was written in PHP. I’m rewriting it in Rails. I’ll be done in a year.
HAHAHAHAHA!!! I’ve heard that one before! It sounds like a disaster-in-progress.
At best, it’ll take him a year to do something that should take 2-3 months. It’s a simple website, an Internet store. With lots of wasted effort, he might get something that mostly works. He also might waste a year and produce nothing, while making excuses to his bosses and squandering their capital.
After some startup interviews, I want to call the investors and say “What is wrong with you? Why are you throwing away your money?”
The hiring manager thought he was a genius, when he really was a clueless twit. A pro-State troll will say “He has a job and FSK doesn’t. Therefore, he is smarter than FSK.” In our society, a good liar will always do better than a good worker. From the idiot’s viewpoint, he should not hire me, because his bosses might wake up and decide to dump him and promote me. Even though I don’t aggressively pursue promotions, a clueless twit is always thinking that when he interviews me. When every hiring manager refuses to hire someone smarter than him, the most skilled workers become unemployable.
When State liars say “8% unemployment”, the correct question is “Which 8%?” In a corruption-based economy, the 8% unemployed people might be the 8% most skilled workers! People say “There’s a shortage of qualified programmers!”, but that hasn’t been my experience. Instead of finding someone who’s pretty good and letting them pick up the rest, employers want a perfect keyword match for their fantasy ideal candidate.
A pro-State troll might say “FSK should learn to bend over more. Hide your competence, so you can get hired.” My answer is “Homie don’t play that!” It’s a waste of time to work for fools. I only need to find one competent employer, so I’ll keep looking. Besides, underqualified managers excel at identifying and rejecting competent people. That’s a key parasite survival skill.
That fool thought he was a genius, when he really was clueless. He thought he was brilliant, making a separate code branch for every bug and feature. That only adds unnecessary overhead. He was rewriting a working website from PHP to Rails. I’ve seen that fail before.