michaelochurch
Joined 15 years ago
Joined 15 years ago
That said, age is only a small part of the issue. I'm older and there's still a lot more that I don't know than there is that I do know. I don't expect that fact to change in a fundamental way: there will always be far more that I don't know.
The problem is that Silicon Valley people are arrogant and don't listen. They call the rest of the country "the paper belt" and think that regulators are just stupid, without taking time to understand why the regulations exist in the first place.
Also, there are a lot of older, man-child VCs who aren't 20-somethings and ought to know better.
Much of the youth/inexperience image that Silicon Valley wants to project is out of an intention to create plausible deniability when these companies do wrong. (The same with "Aspie chic"; Evan Spiegel is a lot of things, but I don't think that he has Asperger's, and I wish these people would stop using a real disease that they don't have to justify assholish behavior.) In comparison, if you're 55 and your company is at the center of a sexual harassment scandal, you can't use the "I didn't know any better" excuse or the "I was crushing code 20 hours per day, but I'll create a token 'Chief Cultural Officer' position and pretend to have solved this" justification.
True in practice, but there is risk.
Plus, it's just a shitty conversation to be compelled to have when you're trying to convince someone to hire you. ("One last thing, I'm under this non-compete, so can I get a written agreement to cover legal costs?") An executive can probably get that protection. For a junior, that's a deal breaker. And typically, the vindictive or paranoid firm won't actually sue your next company, they'll just ask your new firm to fire you... and often (for low-level people like software engineers) they will.
Tech is diverse enough and "competition" generally amorphously-defined enough that junior engineers rarely get strung up on non-competes. It's more of an issue in finance.
The only time it happens in tech is when there's a deliberate attempt to destroy someone's reputation, like what a few people (none especially important) from Google tried to do after I left that place.
Non-competes, non-solicits, and (except in a severance) non-disparagement clauses are shitty practices that deserve to die in a taint fire.
I generally say that, all else equal, and if I were to use a GC'd language-- obviously, there are projects that mandate C or other low-level languages-- then I would use: Python for a short-term (days) project, Clojure for a medium-term (< 3 months) one, and Haskell for a long-term (> 3 months, or multi-developer) one. You don't find yourself needing static typing if you're doing a small, self-contained, line-of-business task like a script. You start to really want it for multi-developer programs and for infrastructural jobs that'll take months to complete (and, at age 32-- that's ancient in programming years-- the only programming challenges that really interest me are the hard ones where Haskell's type discipline pays off in a major way).
Haskell will probably never beat Python in terms of ease-of-use, and (while I would prefer Haskell over other offerings for hard-core machine learning infrastructure) it has a ways to go before it can take over the exploratory data science world (we need data frames, and it's not at all clear what the "right" way to impose type discipline on such beasts is).
All of that said, Haskell is way better than it used to be in terms of user experience. It's gone from god-awful (circa mid-2000s) to hard-but-acceptable, and in the context of a longer-term project (i.e. at least 2 months) the uptake is a rounding error and the pain is paid off.
Furthermore, I don't think that Haskell's opt-out approach to laziness is more than a cosmetic issue. You can have as much strictness as you want; you just have to ask for it. However, high-performance programming in other languages (e.g. Clojure, Python) is also deeply technical and warty. When you start adding type hints and using Java arrays in your machine learning code, it doesn't look like Clojure anymore. My point in all this is that HPC is technical and rough in all of the major languages, and Haskell's laziness is just a small part of that.
Absolutely correct. It also begets the False Poverty Effect, in which negative, antisocial, and even unethical behaviors become more acceptable because people think of themselves as poor relative to where they belong.
You see the same thing (False Poverty Effect) in startups. Plenty of startup CEOs and founders feel like it's OK to be unethical because, at a salary of a "mere" $150,000 per year, they're practically performing charity work. When people like they're underappreciated or behind where they "belong" in terms of money or status, they're more willing to do things that aren't exactly legal or ethical.
At least in startups, as you noted, there is upside. In academia, the reward for busting your ass and beating the piss out of the odds is... a middle-class job where you can't be fired. If you'd worked as hard in finance, you'd be able to retire at 40. The stakes are small, the rewards are meager, and this gives the people who are in that game a huge sense of moral superiority.
Did you get your degree from Phoenix, the for-profit college? No? Because its not as legit somehow? That's the real issue. Ivy-league schools are the way they are, because we keep throwing money at them.
And, sadly... we'll keep doing so. If I ever have kids, I'm going to have to spend six-figure amounts on what is, in essence, a socioeconomic advantage under the name of "education". Schools have become a socially acceptable form of inherited wealth that looks like meritocratic academic admissions because, for the outsiders, it legitimately is very difficult to get into the top schools, hence the mystique and prestige.
I think it would be better if we replaced this socioeconomic "black box" of educational admissions with a purely test-driven system. Sure, there'd be really smart people with mediocre test scores who can't get into top schools... but that already happens, just for different reasons (socioeconomic ones rather than flawed testing). However, you'd kill that stupid mystique about Harvard and Stanford having some supernatural ability to select future leaders and people could just say, "yeah, my test scores weren't great", and that would be that. It wouldn't be some huge shame for a valedictorian to get shut out of the top schools; it would be, "I'm not great at standardized tests" (and smart people who aren't good test takers do exist) and that no one would care after age 19. It would work out well for the students at the Ivies who actually want to learn because, on average, they'd have better colleagues. It would probably end the 6- or 7-figure per child, pay-for-socioeconomic-advantage racket surrounding the top colleges and prep schools (and, in New York, grade schools and fucking pre-schools).
Academia's one imploded guild system, but venture capital is just as bad. The transition from a "what you know" to a "who you blow" culture happened a long time ago, and I don't think there's any turning back for the Valley. It's one of the most corrupt economic ecosystems known to humankind. VCs collude and arrange outcomes based on prior socioeconomic value to them rather than allowing the market to determine the actual merit of a company or product, and most of what Silicon Valley-style venture capital is, is taking behaviors (insider trading, market manipulation, anti-competitive collusion) that are illegal on public markets and applying them to unregulated private equities.
The trillion-dollar question is whether it's possible for something else (possibly outside of the U.S.) to emerge that outperforms the Silicon Valley nonsense. Academia itself is done, as far as I can tell. It selects for a naive lack of humility (as does the Valley, where people honestly believe that their engineer positions on 0.02% will lead to investor contact and founder status in their next gig... and, of course, that never happens for socioeconomic reasons) because anyone who is capable of getting a realistic picture of his or her probable future in that game is going to exit.
To be blunt, I don't think that the current generation's academics are at fault at all. This rotten system was built decades before they came on the field, and they're just trying to survive in it.
I'm putting blame, mostly, on the older generations: the Boomers, the Silents, and the "Greatest" Generation. They had it so good that they must have assumed that they could just ignore the teaching part of the job, so they devalued it, creating a state where even those who want to focus on teaching aren't rewarded for it.
I don't even fault specific people. I fault the tenure system. I understand its value, but I also see how it allows the older, comfortable generation to behave in a way that hurts the young. The blow-off-the-teaching attitude isn't something I see in most 30-year-old professors (and, to the extent that it exists, it's a rational response to a system that doesn't reward it at all). It's something that started decades ago. The tenured professor, who could blow off his teaching and administrative duties with minimal consequence, could say to his juniors, "I get five papers out per year, so I don't see why you can't do it." Academia has this weird dichotomous system where you're either almost impossible to fire (tenured) or treated as human garbage, with nothing in-between.
Of course, university administrators and politicians are also at fault, but one has to wonder why they've decided to impoverish academia. Many of those administrators are ex-academics, and the politicians' anti-intellectualism and resentment of academia has to come from somewhere. To blame academics entirely is to miss a lot, for sure, but one has to assign to them (again, with blame falling most on the older or retired ones who were most influential when this mess began) a fair share of the responsibility.
Getting broad-based membership is much harder. This is an industry full of (a) young people who think they'll have investor contact in 6 months and be founders in two years and retired in six, and (b) indentured servants on H1-Bs. Even if we get 95% of the top 50% of programmers (and that's wildly optimistic) as members, most managers will just ignore their need for talent, in that case, and hire bottom-rung engineers, preferring that over being responsible for bringing in a union. It (that is, hiring bad engineers to avoid bringing in represented ones) won't work, but it won't hurt those managers' careers personally, so nothing will be done about it.
All of that said, the ivory tower brought that upon itself. Or, to be more precise, the tenure system killed it by allowing older generations to cannibalize their young, not only by refusing to retire, but by blowing off the work that kept academia relevant. At some point, academics began to openly cop the attitude that research and publication were the real work and that teaching and outreach were just grunt work. The tenured people didn't even bother hiding this shitty attitude, knowing they couldn't get fired for it as long as they had the connections to get their papers published in a timely fashion. A generation later, you had state legislators who went to college but remembered 200-student lectures and professors who obviously didn't care about undergrads, who didn't think much of the experience for that reason, and who cut funding for state universities and public research grants in response, because they saw no value in higher learning or what academia studies because it had never been really shown to them. The big crime here is that, due to the tenure system, the people who originally copped that attitude (being established and hard to fire) kept their jobs and it was the rising generation (which played no part) that got stuck with an imploded job market. A tenure system allows the established generation to put a funnel over the next generation and shit right into it.
What I think is hilarious about academic conceits about "life of the mind" is how opposite it is to the truth. Academics portray non-academics as philistines concerned only with money. In fact, they think about money all the time, whether they're grad students who don't have enough of it, or writing grant proposals, or trying to manage their careers in a collapsing industry. On the other hand, those of us who've left academia think about money much more rarely: it gets put in our bank accounts every couple of weeks, and we don't have to constantly write grant proposals to make that happen. Sure, we have to roll our eyes through meetings about "quarterly KPIs" when the unambitious don't care and the ambitious only care about their personal careers and visions... but that's way better than having to fret constantly about fucking grant proposals like a high school student mashing out a five-paragraph essay about some dead famous person and what it means to him personally. It's hard as hell to have a true life of the mind no matter who you are, but most modern academics are hyperspecialized and so enslaved by the grant-money treadmill that the main difference between them and corporate serfs is that they work 3 times harder for half the salary.
Managers benefit from a seniority system at places like Google because you get automatic level bumps after so long. Sure, the ladder will get longer at the top (there will be VPs and SVPs and EVPs and SEVPs and CVPs) as they have to invent new levels up there, but the fact is that it's just much easier for you if you're a Google manager with guaranteed promotions for average performance, as opposed to an engineer who has to do something special to get Principal+.
You could be right, though. Google may have to do an honest layoff (as opposed to the dishonest stack-ranking/PIP bullshit which is a layoff masked as a "low-performer initiative") and, when that happens, a lot of managers are going to find themselves on severance packages. The ones who manage to hold on will still be getting the guaranteed title bump every 2-3 years, unlike engineers to whom no guarantee is made, but it won't be the same, and being a manager at Google won't be the cushy, write-your-own-performance-reviews job that it historically has been. The churn will free up positions, but the game will (as you noted) feel more zero-sum than it is when it's expansion that creates them.
You think so? Why do you think Google will be dead in the next few years? I'd bet on it being around, in some form, even 50 years from now.
A halfway competent manager at Google will make Director in 5 years and VP in 10. That might be, in part, because Google has so few competent managers that a "5" or a "6" is a local 9.75. And (for as much as I trash Google) I think the odds are that Google will be around in 10 years.
All of that said, I'd imagine that there are plenty of VPs and Directors at Google who are not making 8- or 9-figure packages. You can get VP on seniority alone at Google, just by not making mistakes once you're on the management ladder, but the 8-figure RSU packages require a bit of luck.
You're talking about anecdotes with regard to those highly-compensated engineers. They exist, but I don't think that anyone entering Google at 2015 has any real chance of becoming one of those 9-figure engineers from a SWE-3 start.
No, seriously. We allow side effects. We have the STM monad, the ST (single-threaded) monad, and the IO monad if you really want to go wild. And almost no one seriously argues that the IO monad is "dirty" and should be avoided. In fact, the type signature of a top-level executable's main is IO () by mandate.
I want to make a proposal, which is that we ban the term "side effect". It doesn't mean what people think it does.
For example, the print function puts output on the console but that's not a "side effect"; that's the main effect. I would argue also that non-detectable stateful effects (e.g. building up a large dictionary mutably) shouldn't be called "side effects" (although they are stateful effects) if they're purely implementation details that are hidden behind an interface.
"Side effect", I think, is a case of a term that used to resemble either a design flaw or a non-intuitive behavior (i.e. reading your command-line arguments deletes the strings, which is something that I encountered in one system) that is tolerated for performance's sake; but that has now been expanded to include stateful main (i.e. desired) effects as well.