It’s hard in the end to evaluate effectiveness of T-shaped people across a wide spectrum of potential tasks, but I am curious if others have figured it out.
It’s hard in the end to evaluate effectiveness of T-shaped people across a wide spectrum of potential tasks, but I am curious if others have figured it out.
Tiny example: I joined a company and a nightly process was data import. The import was starting to take longer than 25 hours, threatening the “daily” aspect, and on the verge of causing logistical problems because of this.
The problem had been looming for months and has taken more time from multiple folks than anyone anticipated, impacting other projects’ timelines.
It wasn’t on my plate, but I overheard others talking about it. I took a look, and spent a couple days testing out ideas. I got a 25 hour process down to 30 minutes. Had to do it myself first to prove it, because just making suggestions to the “experienced” folks was dismissed with “that’s not how this works, you don’t understand”. After I got it to 30 minutes, the same folks “optimized” my process down to about 25 minutes, then didn’t overly acknowledge the approach I’d used to make this manageable again.
I’ve had pushback on this story like “well, there was probably something you’re leaving out. Everyone likes to think their contribution is the most important, but things are a team effort. We’re not all superheroes”.
If you ask for war stories, be prepared for dailywtf-level stuff sometimes.
That's how people that give no contributions whatsoever would reply, I think. The pattern "identify thing that takes too long, local expert says it's unfixable and you don't understand, you fix it in a few hours, local expert downplays" is VERY common, but until the one controlling the budget is aware of reality I'm ok with it. And in those cases you see the good people because they get excited and want to help improve more things.
* Create new table on disk.
* Create temp table in RAM.
* Start chunked import.
* Import 50k rows in to temp table.
* Dump temp table to new table.
* Clear temp table.
* Import next 50k rows.
* Repeat.
* Drop old table, rename new table on disk to regular name
Each row being imported was updating indices. Just removing indexes, then importing, did speed it up, but not as dramatically. Importing most to RAM table, then chunking to the final table. That was a core key.
I'd indicated early on "let's try temp memory tables". It was dismissed ("we tried that" and also "what's that?"). So I did my own tests, and it was pretty dramatic.
We need people motivated by helping the team achieve success, not only looking good on their individual metrics and deliverables. Everyone adaptively focused on the collective goal can be so much more easily and efficiently aligned with team success.
If someone seems to think like a team member, and apparently can pick up multiple things, at that point, I might just ask them what they think about the role I'm starting to imagine for them.
(I'm thinking like an ideal-ish startup here, because other kinds of organizations in general usually seem too inefficient to bother worrying about whether some person can pick up new things as they're needed.)
Yeah, hire for intelligence and curiosity. An intelligent and curious developer probably studied algorithms to a useful level, if you don't understand them well you either aren't smart or you lack the curiosity to look into new topics.
A generalist developers who isn't even at that level in their subjects isn't worth their salt, I'm not sure why anyone would want those. A person who mainly knows different frameworks like rewact, angular, spring, mongo, sql and rails isn't a generalist, they are just your average specialist web developer, hire them if you want to maintain web stuff but not for anything interesting.
I'd expect most generalist developers to know algorithms well. Why? Generalists steps up when specialists are outside of their speciality. Very few teams has specialist algorithm experts, so instead generalists has to step up and solve those problems. If you don't step up in those situations then you aren't a generalist developer, I'm sorry to say it. Most developers are specialists, like most people, including the people here.
Such people hate to grind, so if they managed to get a technical degree they are smart and interested enough in the subject that they studied for fun or didn't need to study. So either they would gladly study for leetcode, or they would pass without studying it.
This assumes they have a degree though, if you take such a developer without a degree then I'd agree with you. But I wouldn't classify such a person as a generalist developer, they are a generalist who can code.