I'll take an average coder who only codes what is needed over a brilliant one who is constantly going down rabbit holes unnecessarily.
I'll take an average coder who only codes what is needed over a brilliant one who is constantly going down rabbit holes unnecessarily.
We have a 20x (not a 10x) programmer. He closes literally 20 times the number of issues that other programmers close for a given time frame. Plus, his issues are almost always fixed or completed properly without needed to be re-opened. So, his actual throughput is greater than 20x that of others.
He is good at what he does, better than almost everyone else put together. I don't care if he goes down rabbit holes, spends 90% of his time walking down the hall mumbling, or if he sits in the break room staring into space. His salary is higher than others in the same role, but not 20x. He wins and we win.
When you ask him, he just shrugs and says he does his job.
Ha, sounds like an oxymoron
But it's definitely not an oxymoron to say that some brilliant coders can go down rabbit holes at the expense of their own (and company's) time and productivity. They may spend lots of time reading white papers, improving a design/implementation/test-suite beyond what is required, etc. It's just these coders don't place a high value on being as efficient as possible from a PM's perspective, but might be able to solve a problem 10x as difficult as the guy who is closing his tickets within hours of assignment.
> "I divide my officers into four classes as follows: The clever, the industrious, the lazy, and the stupid. Each officer always possesses two of these qualities.
> Those who are clever and industrious I appoint to the General Staff. Use can under certain circumstances be made of those who are stupid and lazy. The man who is clever and lazy qualifies for the highest leadership posts. He has the requisite nerves and the mental clarity for difficult decisions. But whoever is stupid and industrious must be got rid of, for he is too dangerous."
Nothing more dangerous than a smart but bored developer.
At times it really is better for everyone to just move on from a comfortable position and stretch your wings as it where.
I think these guys are totally capable of thinking big picture, but they are often just not in that 'mode' and hence the tendency to inadvertently find themselves writing code that if they took a breather and sat back and re-evaluated, probably wouldn't write.
The largest source of your tech debt may in fact be that brilliant one writing volumes of code destined to become the collective headache of future dev teams.
One of the best pieces of advice you can give to a young developer is to learn about the tools already available on the operating system and how to build solutions by composing them via scripts.
It was really only after being a few years into a job where the primary development environment was OpenVMS with a crusty old manager that knew DCL inside and out that I fully understood - and boy oh boy did people think I was some sort of freak 10x developer when in fact I was just writing a few hundred lines of C to fill in the gaps between what I could get for free.
I really hate developing on Windows, but PowerShell is an amazing tool (I saw an interview with the creator who said that he started trying to do a UNIX-like shell but gave up when he realized that it just doesn't fit in the Windows paradigm. So he modeled it off of VMS. If you want PowerShell to act like bash, you're doing it wrong). The pipeline is passing around full .Net objects and the feature set is amazing. If you program Windows for a living and don't learn PowerShell, you're missing out on a lot of free productivity.
Lately, I've been using Linux more and am all in on shell scripting. I am following some advice I got to explore man pages more frequently and it is paying off. I even found an old System V printed manual and sometimes flip through it, finding random commands that I had no idea existed and thinking about how I could use them.
Once you do tutorial and learn the rules for going between shell and python, it's super easy to slice and dice.
I have always disliked that moment of "yes, a shell script is probably the best tool for this job" that then leads me to banging my head against bash syntax for an hour. Python libraries like `sh` are great, but still a little high overhead. Now the twice a month I have to shell script I find to be pretty fun, and I'd highly recommend xonsh.
Great PyCon 2016 talk on it here: https://www.youtube.com/watch?v=uaje5I22kgE