how competitive programming is making engineers obsolete

january 7, 2025

it’s fascinating how the rise of competitive programming has reshaped the culture as an odd inversion of what a young software engineer should aspire to be. this has built a kind of "leetcoding industrial complex" around algorithmic exercises—churning out a generation of engineers optimized for solving abstract problems in isolation, siphoning energy away from the thrill of building something tangible and enduring.

i wonder if this collective fixation on competitive programming has sidelined the art of genuine engineering. for novices, this shift is concerning because it prepares future generations of engineers with a skewed perspective on computer science and engineering. in the formative years, when curiosity and creativity should flourish, many are funneled into the repetitive grind of solving contrived problems.

my early experiences in computer science were filled with tinkering on open-source projects and understanding the interplay of systems, experiences that taught me to see engineering as a craft, rather than just a series of isolated challenges. but now, the emphasis has shifted to endless leetcoding streaks, which feel less like preparation for real-world engineering and more like a kind of intellectual finishing school.

to be clear, i’m not suggesting that algorithmic thinking has no place—efficiency and elegance absolutely matter—but i question whether we’ve let these exercises become a destination in themselves rather than a stepping stone. for juniors, this can be a missed opportunity to focus on broader, more enduring skills like architecting systems, designing collaborative workflows, and understanding how technology interacts with the messy realities of its users.

the deeper issue here is what kind of engineers we are preparing for the future. competitive programming and algorithmic drills reduces engineers to “ticket engineers”. their role is less about holistic engineering and more about incrementalism: optimizing, fixing, tweaking, and testing within the constraints of pre-existing systems. it’s no surprise, then, that this reductionist approach optimizes for roles that ai can increasingly replicate. if your greatest strength is competitive programming, you will soon find yourself competing not with colleagues, but with ai. paradoxically, the very skills that make “ticket engineers” make them vulnerable to obsolescence as ai developments march forward.

for those entering the field today, it’s critical to develop "meta-engineering" skills: blending technical breadth with curiosity, creativity, and the ability to navigate complexity. these meta-engineers will be the ones who harness algorithms as tools. this isn’t just about solving problems but about asking the right questions, designing for ambiguity, and collaborating to push the boundaries of what technology can do. for novices, especially, this mindset can be the key to not just surviving in an ai-driven future but thriving in it.

perhaps it’s time to reimagine what it means to be a software engineer. to steer the next generation away from leetcoding’s seductive simplicity and reclaim the ancient glory of computer science and engineering as both craft and culture. to make building, not just solving, the true measure of mastery.