my experience in the industry of coding has driven home to huge points:
1. that each individual & each team has an enormous amount of leeway & personal responsibility. teams are vested with what power they take & how far they & their environment let them.
2. complexity is everywhere & typically to work, to produce, is to add complexity & create new ways for things to go bad. indeed part of what is most notable about FAANG companies is that they have colossal staffs- & notably many of their senior engineer ranks- working to manage & reduce complexity, by inventing continuous integration/deploy systems, by devising trackers for cyclocmatic code & cyclomatic data-dependency/data-access-pattern complexity, by creating more resilient infrastructure & new ways to administrate systems.
i fully agree that there is a huge opportunity cost. i think it's madness how focused & specific these interview courses are, what a set path they are on. but i also think it's been underspoken that learning algorithms & data-structures & less so systems are fairly core material to the industry, that these are basic truths that underpin every single thing we do. and i think the knowledge is acquireable and important.
and i think just as much, it's unsaid, culturally, a lot of my first point: that individuals in this industry have enormous liberties, that they are sent off to incredible & weird tasks, to go drag something or other back to the company. notably, it's just so so so so hard for a company to take responsibility for "it's" code, to re-integrate, to handle, the new complexity that gets dragged in to base, by each individual contributor. there are so few repeatable processes, so few really good ways for a company to systematically remember what any given thing is, how it works, why it works, what it does. code-bases are bits of the wild, collected from all over, so often from one or a couple of individual contributors who set forth on some expedition. even, yes, the juniors. hacking new tweaks, changes, sometimes it doesn't feel like big stuff, but to software engineer is to set out upon wild land, most every time.
the sociology of this is fascinating to me, the dynamic is incredibly strong, incredibly asymmetric in how much responsibility is given to the developer, how wild the tasks are, & the difficulty & crudeness with which companies step up to re-integrate, take in, take responsibility for, manage the work that gets done.
1. that each individual & each team has an enormous amount of leeway & personal responsibility. teams are vested with what power they take & how far they & their environment let them.
2. complexity is everywhere & typically to work, to produce, is to add complexity & create new ways for things to go bad. indeed part of what is most notable about FAANG companies is that they have colossal staffs- & notably many of their senior engineer ranks- working to manage & reduce complexity, by inventing continuous integration/deploy systems, by devising trackers for cyclocmatic code & cyclomatic data-dependency/data-access-pattern complexity, by creating more resilient infrastructure & new ways to administrate systems.
i fully agree that there is a huge opportunity cost. i think it's madness how focused & specific these interview courses are, what a set path they are on. but i also think it's been underspoken that learning algorithms & data-structures & less so systems are fairly core material to the industry, that these are basic truths that underpin every single thing we do. and i think the knowledge is acquireable and important.
and i think just as much, it's unsaid, culturally, a lot of my first point: that individuals in this industry have enormous liberties, that they are sent off to incredible & weird tasks, to go drag something or other back to the company. notably, it's just so so so so hard for a company to take responsibility for "it's" code, to re-integrate, to handle, the new complexity that gets dragged in to base, by each individual contributor. there are so few repeatable processes, so few really good ways for a company to systematically remember what any given thing is, how it works, why it works, what it does. code-bases are bits of the wild, collected from all over, so often from one or a couple of individual contributors who set forth on some expedition. even, yes, the juniors. hacking new tweaks, changes, sometimes it doesn't feel like big stuff, but to software engineer is to set out upon wild land, most every time.
the sociology of this is fascinating to me, the dynamic is incredibly strong, incredibly asymmetric in how much responsibility is given to the developer, how wild the tasks are, & the difficulty & crudeness with which companies step up to re-integrate, take in, take responsibility for, manage the work that gets done.