Uh, oh. I think I’m way too young to sound like such a curmudgeon, but I just can’t help myself. Before my recent move to a post-sales role, I spent 15 years writing software professionally. I thought at this point in my career I’d qualify as “the wise elder” – instead, I guess I’m just “the crazy old man who mumbles to himself.”
Remember the days of eagerly poring over core dumps to quash that nasty bug? The fascination of learning something new? The determination to write code properly so it could be maintained and easily understood by others? Remember when “so what? it works” just wouldn’t cut it for maintainable design?
I loved it. So, what is it with kids these days?
A colleague of mine noted that the best programmers have a raw enthusiasm about their work. They’re not 9-to-5 coders. They’re driven incessantly to learn new things – to do things right. They play with ideas in their off hours and on weekends. They’re geeks. Total nerds. And, they’re proud of it.
From gearhead to bit twiddler
My degree is in mechanical engineering, but my first love was software. I was writing BASIC on my family’s TRS-80 back in late elementary school. I shunned a formal education in computer science because the curriculum, at least in the late 1980’s, was almost pure theory: optimizing data structures, theory of languages, operating system design, etc. All noble causes – and certainly a worthy field of study. But, I wanted to build something!
As I finished my degree, it was clear that, despite my enjoyment of mechanical engineering, my true passion was for software. I abandoned my quest to apply my degree and began looking for pure programming work. I knew there was more out there than just writing a better compiler. I could make applications that normal people could use and would make the world better.
From the late 80’s to early 90’s, a great transformation had occurred. Once, software was written only for very narrow problem domains and computers were found only in special rooms. Maybe administrative assistants had one for word processing (anybody remember WordPerfect?), but that was it.
By the time I graduated, PCs were beginning to permeate the workplace. Office workers had PCs as surely as they had a chair and a desk. It would be only a few more years until Netscape, the Web, and the Internet explosion wowed us all. Even the bursting dot-com bubble couldn’t stop this new era.
Software wasn’t just about scientific calculations and data retrieval anymore – it was about information management. I just knew that massive, ground-breaking systems were waiting to be built.
Sorry, your real world experience doesn’t interest us
So, there I was in the university placement office trying to get a programming job without a germane degree. I had spent the last several years building software for a million dollar research project in the mechanical engineering department. I was kicking butt at the job that had washed out two computer science majors. I had mastered C++ in a real world application while the ivory tower academics were poo-pooing the burgeoning relevance of object oriented programming. Yet, I could barely get my foot in the door with any employer.
Despite years of experience and demonstrable ability, I was self-taught and had never set foot in a computer science class. In the eyes hiring managers, I was a mere hobbyist without hardcore credentials.
Then, one icy morning in a tiny interview room, I once again began the spiel that was beginning to bore even myself: “No, my degree isn’t in computer science, but I built these engineering applications, see…” The interviewer nodded knowingly and said “oh, no need to explain, my degree is chemical engineering”. This big-wig IT guy from Citicorp was another engineer! Better yet, he understood! He understood that passion and enthusiasm – drive and determination – are what make the grade.
I got the job, and my career began. Through years of C++ followed by years of Java, I’ve encountered countless code wizards who coached me, learned with me, and sometimes learned from me. They had degrees in physics, history, English, theater arts, and marine biology. They all came to the software field from seemingly unrelated paths. They learned their trade through energetic devotion to the beauty of their creations. They were geeks in the purest form.
All of this fascination with software as an art form meant one thing: a team of people dedicated to doing the best job possible – not because it was good for their employer, but because they loved their work. They were, and are, the “old school” programmers.
I mean no disrespect for computer science majors
Yes, I also met some hot shot CS majors who leveraged their book smarts along with a keen sense of design to help bring triumph to the team. But, remember the tech bubble? Companies were spending billions automating every business process. There just weren’t enough people with CS degrees to staff all of the projects. Progressive companies began casting a wider net and bringing on the eager but self-taught. As a group, this would be the motley crew that lived on pizza and No-Doz to build the systems that made startups and large companies thrive.
So, what happened?
As the IT bubble began to rise, salaries went stratospheric. This created two problems.
First, every college freshman saw IT as a path to riches – guaranteed employment with high starting salaries. Colleges and universities now turn out legions of just-in-it-for-the-paycheck programmers. Writing code is tedious, and doing it right requires extraordinary patience. It often means rewriting working code as requirements change or better solutions reveal themselves. If your heart isn’t in it, it’s going to drive you nuts. You’ll do the bare minimum, then clock out at 5:00 and forget about it.
The second problem is companies clamping down on salaries. Yes, tech salaries of the late 90’s were obscene and needed to be addressed. But, the effort has gone too far. Companies now staff up on low cost, inexperienced, and poorly motivated drones with little desire for excellence. There’s no effort to hire real talent. HR departments recruit solely by filtering thousands of resumes based on keyword searches and then sorting by salary.
There’s a misconception that developers are plug-and-play. Somebody whined about wanting more salary and quit? Replace them with someone cheap! Companies place little value on experience.
Companies round out the team with one or two superstars – either old schoolers, or young heroes with passion. Too bad they give these champions no authority over architecture or design. Misguided flat team structures mean the hot shots must rely solely on persuasion to have any influence. They are generally shouted down by sophomoric colleagues too lazy to learn anything new or too insecure to entertain any ideas other than their own.
The hot shots get their life and enthusiasm sucked out of them! They’re left to support and maintain the wreckage left behind by the loudest code slinger. They quit under the naive belief that “this must be the only company this dysfunctional!” They soon discover that their new job is no better. The madness is everywhere these days.
Oh, I still work on my pet projects at home. It’s partly because my job requires me to keep my skills sharp despite leaving the day-to-day programming behind. It’s mostly because I still get a kick out of making creations and making them better.
Some of my “old school” former colleagues have moved out of development, too – some to eagerly pursue other career goals, others with great reluctance and resignation. I know at least one who left software entirely to become a high school teacher. The rest slog through the nonsense, cuss under their breath, and long for the early days when the work was still fun.
Will the corporate world ever start valuing experience again? Will they truly trust a project to the “best and brightest” and not just the “cheapest and most readily available”? Maybe. I think it still works that way in the Silicon Valley where true software companies that understand the challenges of the trade still thrive.
Unfortunately, it’s the companies whose core competencies are not software related that’ll continue to burn out and demoralize the up-and-coming software gurus. Telecoms, banks, and airlines, for example. They all see techies as a pure expense – not specialists who can efficiently automate and streamline their businesses. They’ll burn through millions of dollars on failed digital monstrosities by scrimping on their most vital employees and driving off their best talent.
These companies don’t need an army of unmotivated minimum wagers. All they really need is a handful of old schoolers, pizza, and little No-Doz.