234 karma · joined June 25, 2018
You don't fix every problem yourself, but have someone who can fix it available. Otherwise, people don't grow, and you can't take a vacation. You totally need a general (middle / senior level) understanding of technology, but having a separate person with strong technical chops is key.
> In which company does this happen, I wonder!
As a staff engineer on a design system for a top 50 website, roughly half my job was detailing a tech roadmap and identifying what can break across the codebase, something you can do perfectly well on grass.
My favorite pattern is what I call "code sheriff" lead, who does all code reviews himself to prevent bad code from reaching trunk. Then proceed to complain how you can't go on a vacation because all processes stop.
I come from Russia, we're not exactly known for great people management, and I'd say management up to department head is expected to handle the tech part as well even in larger companies such as Yandex / VK. This fits your definition of normal companies perfectly.
By transferable, I mean skills that are useful outside of our big tech bubble. You might not want to go out as money is very nice, but still good to know you can do something beside computer beep bop.
Big companies tend to be quite prescriptive about role boundaries, so if you're an FE engineer, you can learn design and provide input as much as you want, but you won't likely get to design a new screen from scratch instead of your regular designer.
I mean, over the last few years as an IC I fiddled with CI setups and automated QA, wrote some CLI codegens, but after some time you really notice you start inventing problems to have some fun.
To be fair, some managers over-optimize to protect against people undermining them, not sharing knowledge and responsibility and even actively removing top performers with leadership ambitions
In an organization, you typically have several product teams, some infrastructure teams (like security or dev tooling) that don't directly ship to users, and a management structure of EMs and C-levels on top.
type Output<Fn> = Fn extends ((a: unknown) => infer Out) ? Out : never;
I use excalidraw: https://excalidraw.com/
I think most web-dev bloggers use it, makes me feel very boring
The intersection of all types is never, because, say, number and string don't intersect. The union of all types is unknown.
any doesn't show set-like properties and yields ternary logic in clauses like any extends T, which makes it a paradox.
let danger: any;
// These all compile:
danger(), 9 / danger, danger.access, danger.map(x => x \* 2)
let safe: unknown;
// These all explode in TS:
safe(), 9 / safe, safe.access, safe.map(x => x \* 2)Try this one: A is subset of B iff all the values that belong to A also belong to B. In your example (and in real life), every dog is an animal, so dogs are a subset of animals.
Edit: besides, it's quite unintuitve that "never" is assignable to anything. How can never be something?