My computer science undergrad lasted through both the boom and bust cycles of the dotcom era. I entered as a freshmen in 2000, on the tail end of a multi-year technology bull market that saw unqualified companies force their way public with bewildering valuations. And graduated by 2004, as most of those companies evaporated on public stock exchanges and whatever survived persisted with a fraction of their former market caps.
Within this environment, as you would guess, my incoming CS class had its share of fair-weather tech enthusiasts drawn by prospects of six-figure salaries out of school1—most could not handle the curriculum and dropped out within a year, others were redirected to adjacent majors like Applied Mathematics and Cognitive Science. Those who stayed and meandered their way through graduation had slim job prospects. With a shrunken job market with slashed headcount budgets, companies that still needed software engineers had their pick of the cream of the crop. Faced with no great options post-undergrad, I knew a couple of folks at the time who opted out of industry and instead went on to obtain Ph.Ds.
Of course, in the intervening years, programming and software engineering jobs have only increased in demand, and naturally students are flocking back to take CS classes to set themselves up for lucrative careers right out of college. Much like how the internet itself evolved from its utopian research and communication roots to become the greatest conduit of commerce ever invented, the early ideals of computer scientists—to build on theories of computation and complex systems—has been overwhelmed by students optimizing for programming’s commercial applications; or rather, optimizing for employers continuing to expand their technical footprints.
It should be no surprise, then, that this cohort of newly minted software engineers2 are fixated on how to pass the often-challenging interview process, selecting which firms are the most prestigious as reflections of their own statuses, and then comparing total compensation (TC)—since most tech companies also give out equity as a part of their comp. packages, and some also feature annual bonuses—as heuristics for personal achievement. In some ways, it’s reminiscent of the finance industry’s outsized attention to its year-end bonus programs and how it has become the measuring stick for career success. Never mind the actual engineering of software that said compensation is meant to…compensate.
This naked drive for TC-driven accolades can be jarring for those who appreciated more the science of computing and entered the field as an engineering practitioner of a young and emerging discipline. A cursory skimming of Blind, an anonymous workplace-based forum popular with CS undergrads and entry-level developers, confirms that most people are unabashedly in it for the money. Between specific interview and offer negotiation strategies, internship comparisons and reviews, Leetcoding tips and personal boasts3, the discussions resemble a local watering hole for the latest group of prospectors, trading stories about how to catch those elusive glints of gold, shimmering in the sunlight.
After accounting for inflation, those were truly outrageous new grad packages.↩
Colloquially, “new grads”.↩
Some context: software engineering interviews usually have a component to determine that the interviewee is technically capable, via interview questions that test for foundational CS concepts. It’s well-understood that the interview format isn’t great at simulating real-world work conditions, but nonetheless most companies engage in these practices, and so interviewees practice for these interviews via platforms like Leetcode, knowing that it’s mostly orthogonal to how they’d perform as an employee.↩