What’s wrong with software development? I am technical debt
Tech debt tends to be associated with a project within a company. An entire company can be in tech debt. A project or company is said to be in technical debt the moment it starts using technology [software, code, hardware] which will be difficult to maintain.
Maybe technical debt should extend to any software or hardware usage, since all tech carries some overhead the day you install it, even if it seems perfect at the time it is sold to you. However, for now, let’s simply talk about that which will be difficult to maintain for very obvious reasons. I’ll be considering the type of technical debt which outsiders shrug at and ask why you’re still doing that.
Obvious signs of technical debt include using an outdated platform [software language or version of software language, application version or application], or even using a recent platform only a small minority of developers know.
Imagine, for example, when I was an Oracle Applications developer: If I had added customizations to a version of Oracle Applications which was no longer supported and my customizations caused the Application to fail or to get into a state which I could not correct, then the company would be in trouble. An unsupported Application gets, worst case, no help from the Application vendor, or, best case, expensive help.
The moment their Applications were not supported, the team I was working for would have been in tech debt. Maybe even before then: the very day they were notified their version of Oracle Applications would not be supported in the future, they became in obvious tech debt just by my adding customizations to the Applications. In addition, they were relying on my knowledge of an unsupported of Oracle Applications suite to maintain their customizations. Finally, if they were to upgrade to a supported version of Oracle Applications, they would need to upgrade any customizations I made which relied on deprecated or discontinued features of the unsupported [or soon to be unsupported] version of the Applications I wrote for.
Or imagine someone who rushes to solve a problem and puts together unreadable code. That puts the company or project in tech debt. The same holds true for a project which makes an awesome in-house tool but fails to document it. Why? The whole company is beholden to word-of-mouth knowledge transfer, which is interest paid on technical debt.
Or imagine if a company is programming in an otherwise free language, but they keep programming in a version of that language for which fewer and fewer developers are programmers: like Python 1.8.
All these are examples of companies putting themselves in technical debt.
However, as a programmer, I am able to put myself in technical debt, too.
The world of Oracle Applications development has changed a lot since I first started programming in it. Yes, I knew about the rise of Java development, even within the Oracle Application Framework, but as a core Oracle Applications Developer, I didn’t need to learn Java.
In fact, even when I wanted to learn new tech, my employers, including a couple of big name consulting firms and a large American manufacturing firm — they told me to stick with Oracle Applications and Oracle SQL because they had needs there, rather than take on challenges in tasks which would keep my skill set relevant.
Meanwhile, I saw the number of jobs decreasing for the skill set I was most knowledgeable in. The reasons are many: the cloud [SaaS] either wiped out or is wiping out large scale implementations teams in that area, the company size which could afford and was interested in Oracle and Oracle applications made them a target for big consulting firms which were skilled at reducing the cost of labor, and Oracle applications development itself continues to become a field with more and more built solutions, needing less and less custom development.
One big break I got was a single project outside of my wheelhouse in 17 years — a Salesforce.com project. That was when I saw for real I needed to stop being an Oracle database developer. Salesforce.com, as breathtakingly awesome as it is to behold in action, has represented the future of large companies reducing their cost of programming labor, not going through outsized upgrade pains, not hiring squads of developers to get them up-to-speed.
I like to tell people about how, when I graduated in 1995 with a computer science degree at an accredited state school which had fantastic professors [think Hogwarts, but for programming!], I could walk into a shop that was hiring, show them my degree, and get a job. Companies were flying me places for in-person interviews, footing the bill for expensive hotel rooms and meals, promising training in exotic locations and other perqs to accept the job.
I didn’t know a practical programming language, besides C, and I had never done database work before. My free time was consumed with anything but programming and computers.
Three years later, I did the same thing: No Oracle experience? No actual SQL experience? No Oracle Applications experience? No manufacturing background? Here’s a big pay raise and a Oracle Applications Developer title. Within a month, I was doing the work of their Senior developer. That’s what a person with even a basic computer science background and some solid programming experience can do — learn quickly. In my current role, because the stakes are so low, I distinguish myself only because of my ability to lead and my experience with problems so that I can anticipate what might go wrong, not in development — a programmer with 4 years of experience on the team knows enough tech to keep up with me on the only tech challenges in the project. (Really, employers, we can learn your stack quickly, even folks new to the field.) Good software engineers adapt, even ones with little professional experience, and in 1998 the market understood that.
I had been programming since I was 9. I was self-taught prior to the prevalence of computer books and the internet on an Apple II+ and an Apple IIe, with Applesoft BASIC and Logo. My dad wasn’t an engineer, but, in ’85, he suspected computers were going to be big, so he spent too much money for his meager teaching salary to buy the family Apple products. (My mom had been told by her family they wouldn’t pay anything towards a college degree, as she was a woman. They paid for my uncle’s college degree, a guy I still love despite his multiple prison-stints, his failed marriages, his kids out of wedlock, his drug addictions, and, ultimately, an inability to find work now in the field in which my mom’s parents paid for his college degree.)
Then, right before college, I got a PC, and I taught myself Turbo Pascal. With Pascal, I had a chance to teach students more senior than I how to finish their homework.
In college,I learned languages which would not help me in the real world, not for the jobs I’d seek: quickly, I was adept in Modula, in COBOL, in Fortran. I also learned C, some C++, Perl, and Lisp in college. It was the early ’90s. We were approaching the dot com bust.
Anyone out there program in COBOL, Fortran, C, C++, Modula, Lisp, Perl, or Pascal any more? Some, sure, but they definitely aren’t the top of employer searches, and some of these languages would date you on a resume, so I’ve heard, so you won’t get a job.
There were a proliferation of new languages and tools then, in the heady days of the tech boom leading to the bust. [Does anyone recognize a pattern which mirrors the world today?]
My first memories of web browsing for real were once I was out of college, in ’96, at work. Three years later, I was teaching myself Cold Fusion [anyone programming in Cold Fusion nowadays?] in order to get into the future of programming. Cold Fusion… the future of programming… anyway —
My dot com and internet stocks took a 30% correction — making me feel as sick as any cryptocurrency owner might feel after a 30% loss — but I got out of the stocks, having doubled my money, even after the 30% haircut, in one year, not that I’m drawing any parallels between today and then, or anything :)
It was 2000.
I was stuck for one reason or another at the job then for 13 years. During that time, I knew all I could about the parts of Oracle database and Oracle Applications development my company utilized. I had no reason, really, to explore newer versions I didn’t have access to through my company, and I sure wasn’t going to try to spend money to stand up a newer version of Oracle on my home machine!
Through three enterprise-level Application upgrades and multiple enterprise-level changes, my skill set had not broadened to grow with the market for software development jobs, even within Oracle Applications knowledge.
In fact, my employer hired a data warehouse expert rather than hire a junior developer to take my place and then train me to be a data warehouse expert, so I didn’t get the benefit of learning a new and important skill. In fact, whenever they tried to cross-train me, they simultaneously pulled me out of cross-training to work on something I already knew.
Some of those reasons I stayed with that employer, using the same limited skill set, were outside of my control, especially the last 7 years. [Silence]
During my tenure with that employer, I was witness to the dot com bust; I saw my web developer friends who had moved to big cities to make their fortunes with tech giant names become destitute, looking for a way to escape being pigeonholed as the Web Masters which had earned them so much on their resumes in previous years; and, as revealed below, I saw many changes to the business industry I worked in, to America, and to software development — but my skill set didn’t broaden or deepen, due to the tasks I was assigned.
I watched 9/11 make America look progressively less and less like the America I felt comfortable with as a young adult.
A few years after the dot com bust, telecoms busted, and I was working IT in my 13 year stint at a manufacturer of fiber optic cable in that industry. With the destruction of dot com company prospects, at least temporarily, there was a lot of fiber without usage, and so the big firms weren’t buying fiber from the firm I worked for. I survived wave after wave after wave of layoffs as a senior engineer in the Oracle applications development space.
Then came the Great Recession. [Silence.]
It was a depression both personally, and, in effect if not technically in name, economically, which still affects me and the country and the world, even today.
We might have regained jobs, but they have been Uberized, outsourced, and H1B-visa’d into pale remnants of what they used to be. Companies, under the guise of reducing costs by outsourcing and by using H1B-visa labor, are actively engaging in wage theft, which erodes the earnings of my industry while it abuses the lives of the foreign nationals it affects directly. I have watched as my friends and colleagues in India and who held H1B visas were asked to work ridiculous hours, destroying their work-life balance as it eroded the overall prestige and earnings for the entire industry. We Americans think we’ve got it tough when our jobs get outsourced? Sure. We do. But try being someone whose visa depends on employment with one firm, a firm which asks you to work 14 hour days every day. Imagine being an Indian employee who is asked to go into the office every day, whose only bus in runs at 7am and whose only bus out runs at 9pm. We Americans, losing our jobs to corporations hungry for cheaper labor, are unlucky, but not like that.
When I moved to Boston, it was again as a Senior Oracle Developer, but with a firm large enough that I thought I’d finally escape the database developer pigeonhole, to give myself options. I thought a firm like the firm which hired me would bounce me from role to role, teaching me the vital skills I needed to update my skill set and get me out of the quagmire of technical debt I found myself in as a developer in what could be considered an unsupported version of the software developer industry.
I took a pay cut to move up to Boston for more job opportunities, for more learning and growth opportunities in the next job, to see a major metro area, and for a relationship which turned out to be DOA by the time I made the move.
The new job had all the promise of extending my skill set, moving me into management or business analysis or even teaching me other languages or platforms — where I could take my leadership skills or new tech and be portable from shop to shop.
Four and a half long years later, I left that company earning less than I had in South Carolina, but with a much steeper average rent profile [double the rent for a Dickensian apartment!]. I had witnessed first hand the devastating effects of wage theft, of visa abuses, of how labor in India was being exploited to reduce costs for owners at the expense of developers like me. The company didn’t want to teach me new things: they could hire freshly minted graduates for that at a fraction of my cost, especially graduates from other countries. The company didn’t want to take its experienced Oracle developers and teach them relevant skill sets — it could acquire small firms to obtain those skills. It was only at the end that I got a shot to learn Salesforce.com, programming in Apex, which I considered relevant. That was when I made my escape to a new firm. Prior to that, every year, my Dice, Indeed, and Monster searches were yielding fewer and fewer hits for “Oracle developer”, and the interviews were more competitive, yet for salaries which were not themselves increasing.
You might wonder now what new skill I’m working in at my new job? I’m not. I got hired as an Oracle developer. This job is better than the last one because I can’t travel now in my life, and my last job was forcing me to travel because of lack of Oracle developer opportunities in Boston.
I refer to Oracle development work as commoditized now. Maybe it’s an unfair characterization. However, my new job involves very little actual development. I’m mostly working on an in-house data warehouse whose proprietary systems will not help me grow my skill set, or even maintain my current skill set. On-the-job learning and effort does not combat the lack of relevance I found during my job search.
Had I ever had a job search like the 2017 job search? Never.
So few Oracle jobs. My percentage of responses to resume submissions went from about 100% out of college, to about 100% for my second job in 1996, to about 50% in 2012, to approximately 20% in 2017. I was assured this was a good percent, an enviable one, from other developers out of work. See, programming is no country for old men or women. The kicker was when a person my age, a programmer, killed himself in Spy Pond, near where I rent an apartment now. It is an apartment I would have never considered living in prior [steam heat I can’t control, 1950’s furnishings, a Dickensian management team] for a price well above my SC mortgage on a 2500 sq. foot house. There are older software developers I know, a lot of them, living on unemployment, searching jobs far and wide now. Their pedigrees should earn them jobs in management or in tech they would need to come up-to-speed in quickly, but the relevant experience part of their resumes use words like Perl, or C, or database developer which no longer find footing in today’s job market.
We’re all drowning in tech debt, so many of us, even though the amount of training needed to get us out of debt might be one to two months of on-the-job learning and experience.
I took the first offer I got, the one which seems regressive to me now. It’s the I’m working in now, and I’m grateful. It pays the bills and keeps me from being an unemployed job-seeker.
Well, tech debt is an eyesore. I can’t help the people I meet: either as colleagues, or as a future employee [unless they’re willing to be patient as I learn for a month], or to teach them the skills they are going to meetups to learn. I can’t turn the other folks like me there, desperately seeking relevance, into machine learning experts or data science gurus, designers of AR, or wave a wand and give them the full stack knowledge which makes them just perfect for that one job which is looking for that particular full stack: a complicated lock seeing a very specific key.
Sure, people are friendly and helpful. I love being around folks who get who I am, or at least my personality. And I am learning! It is exhausting, but I’m trying to pay my way out of technical debt by ruining personal relationships and sacrificing work-life balance to learn programming languages which hopefully will help me catch up to recent college grads, at least in the eyes of hiring managers and HR departments intent on getting top talent for the best, most affordable price.
Now, I have over 10 years of non-career oriented programming experience [before the end of college, including student jobs and self-taught hours]. I also have over 21 years of professional, career-oriented software development experience. Combined, I have been either teaching myself to program and working pre-career jobs, or have been working career software development jobs, for over three decades. I’m an accomplished team and project lead, yet I don’t get call backs on resume submissions to companies looking for professional or academic experience in the languages I only have taught myself in.
I am also technical debt incarnate, and I am not alone.
The next step? Build portfolios of free work in languages I am learning on GitHub and try to pitch these portfolios to employers as substitutes to actual work experience or academic experience. Still, the learning curve for true machine learning, data science, or other cutting edge fields is pretty steep, and my current employer has as little interest in training me in those areas as prospective employers seem to have in knowing I could teach myself under their employment, and with some gentle guidance, those skills.
This is what it means to be technical debt in America, and I am not one of the tons of people whose jobs will be automated away in customer service, trucking and transportation, and other areas in the next decade — people whose jobs, unlike mine, don’t resemble the skills they will need to find jobs in the next decade. At least I am a programmer now.
Here is the plea from one person, one expression of technical debt, to employers: don’t listen when they tell you America doesn’t have the skilled resources to fill our most technical jobs.
Our corporations need to be patient and compassionate, and we need to be willing to pay people to learn and to reward them for their learning.
More of the people around you are drowning or haven’t even had a chance to feel the pressure of water on their lungs due to technical debt, and our corporations can do something about it.
In fact, they are the only ones who can.
America has another debt problem than our recognized National debt problem, and it is technical debt. And the only way to get out of it is for our corporations and our job-seekers to pay it off through sacrifice and effort.
It won’t be easy, but it will be critical to do to escape the feudalistic oligarchy our country threatens to progress even further into being.
Thanks for reading! When I see applause for a piece of mine, I want to write more pieces! Please applaud if you appreciate people writing about topics like this.
If you enjoyed this piece, you might consider reading some of the other stories I wrote for this series. Thanks!
Disclaimer: I am a senior software professional with experience as project lead, team lead, and lead engineer in the greater Boston area. I am actively seeking a job while currently fully employed. The world of software development can be an ugly place, and I hope to expose some of the more bewildering and uncomfortable corners in the hopes of improving the industry and the craft. Out of respect for current and former employers, I will keep the names of employers and/or clients scrubbed and anonymized as best as possible in these reports.