A Programming Career By The Numbers
As I continue to recover from some health issues that kept me from writing, I thought it might be interesting to describe my long career with numbers. If you wind up working for four decades, your experience may vary.
Years Active: 1981-2021, totaling 39.5 years. Irrespective of my title or duties, I was always writing code.
Number Of Interviews For My First Job: 1. I had no programming work experience nor any college-level programming classes, yet I had one interview with the hiring manager, who offered me a job on the spot. In 1981, knowing how to program at all was enough to be hired; this was long before specialization was a thing. I wouldn't even get a phone screen today, yet this one interview catapulted me for four decades! My first project was writing a source code formatter for a programming language I didn't know (Jovial), in a programming language I didn't know (Fortran 77), writing a parser, a thing I had never heard of. Yet I got it done, and it worked.
Number Of Distinct Jobs: 15. That includes the two companies I started and ran for nine years (1985-1994).
Shortest Job Duration: 2 weeks. Short-term contract to help a company finish testing and bug fixing in the mid-90s. Despite the shortness of the contract, the entire team took me out to lunch on my last day as I had found and fixed a major bug that had plagued them for several releases.
Longest Job Duration: either 5.5 years or 6. I am not sure which because I don't recall the duration of my second little company. The 5.5 years was my final job before retiring.
Largest Employer: my last position. This company has more employees than all my other employers combined. I got this position because my manager at a previous job begged me to come to work for him again, and all the interviews were also begging. I worked more hours here than anywhere besides my two little companies. The politics was painful, but the work was rewarding, and I made a real difference. I only retired because, at 63, the hours were just too much; I probably could have worked there until I died.
Smallest Employer: my second company, The SU5 Group. We had five people, including me, but we worked on Persuasion 1.0 for the primary author (the only real competitor Powerpoint ever had) and Deltagraph (5 years) for the publisher, which led the market for charts/graphs for a long time. Deltagraph continued (same source code) until the pandemic appeared to kill the last company that owned it.
Number Of Programming Languages: 11. Professionally, I worked in the following languages, working on at least one project: Fortran, Z8000 Assembly, Mil. Std. 1750A Assembly, 6502 Assembly, Pascal, C, C++, Objective-C, Java, JavaScript, Swift. Some I returned to after a gap, like Objective-C with WebObjects and later in iOS. In addition, I used XSLT for a year, but it's not a language; it's a travesty. You could add SQL and XML variants, but are those languages? I also wrote one interpreted programming language around 2000, which was used to code phone polls (the runtime engine was also written in it).
Number Of Times Laid Off: 3. In the first one, the US offices of an international consulting firm were closed, and everyone canned. The second was a civil war between two offices, and most technical people were eliminated in the losing office. The third was the online travel agency I worked for, where our parent company sold the brand to our biggest competitor; all 1000 employees were canned, and I was retained until the end to ensure the shutdown (for extra money).
Number Of Times Employer Went Out Of Business: 1. The consulting company went out of business at 4:30 PM on a Thursday, victim of the Dot-Com explosion.
Number Of Hostile Workplaces: 2. Two jobs in a row in the mid-2000s both turned hostile, the first because I pointed out that the only other programmer had never added anything to the source repository or shown any work despite working for ten months (I figured he was doing contracts for other companies at work), while I had no only code but even demo sites running. No one knew enough to criticize since I was the only other programmer. The manager made a classic statement: "Oh, he never checks anything in until it's perfect." Somehow, they believed him and not me, and after that, I was persona non-grata. After I quit in disgust, another year passed before they fired the programmer and the manager. In the end, they lost a huge business opportunity.
The second was the intra-office war, where people in the other office attempted to get me to quit, and when I didn't, they forced the CTO (in my office; he left soon after, I think) to lay me off. I wasn't the only person in the office this was done to. After these two jobs, I was disgusted with working, leading to the following.
Number Of Jobs I Took Just For Fun: 1. I went to work for a poor game company that could only pay me 1/3 of what I had made before. I played the game (a WW2 MMO) and already knew the people, and they me. The game engine was archaic and painful to work with; we had few people but a loyal (small) customer base. It was some of the most challenging programming I ever did, but I got to fix many broken things (and got much thanks from the players, who all knew me).
The best part of the job was fighting the company that sold a cheat for the game. I made the programmer's life there a living hell, and eventually it was not worth the effort to get around all my blocks; plus I was able to identify everyone who used it including the programmer. It turned out that despite the playerbase's fears that everyone was using it, it was only a tiny number. I paid to be a customer so I could read their forum, laugh at all their smug talk about how stupid we were, and then later have them wonder why they were all getting banned. You rarely get to do such a fun, competitive project! I only quit when I couldn't afford to make so little money.
Number Of Mobile Jobs: 3. My first mobile job (iOS 5 timeframe) was at an online travel company (brand still exists). Their iOS app was one of the first travel apps in the App Store (written by two managers with no idea how to write in Objective-C) and had 9,000 one-star reviews in the App Store when I started. The team was small; we were well-liked by the CEO since we made money and shipped at a blistering pace. The rest of the company barely released things three times a year. It was a fun group of people to work with, and I could make a difference, but it ended when our parent company sold us to our biggest competitor, and everyone was laid off. The manager went to what would be my final employer and asked me to join as soon as he could arrange it (it took 18 months).
The second was a large construction company that had only internal apps. More on them below. It was to keep busy while waiting on that final employer's bureaucracy.
My final employer was a large company with many divisions, and we were an essential part of two of the more significant segments. I was responsible for about 20% of the two apps (just iOS, as Android was a separate team). It was a ton of work since my team was small, and I was always a full-time programmer and full-time as lead.
It was rewarding because what we did was highly strategic, and everything we did was well-known by even the top of the executive tree. Everything we shipped had high quality, and we had a good reputation despite people wondering how we did so much work with so few people. Still, the long hours (being a full-time programmer, attending all meetings, and overseeing so many moving parts got old after a few years).
Everything I or my team wrote was in Swift. We replaced the Objective-C codebase I inherited as part of a larger project.
Number Of The-Goggles-They-Do-Nothing Awards: 2. I saw some poor code in my four decades, but two get an award for over-the-top crappiness. The first was a help desk system Mac client, written as a single .c file, 29,000 lines long with a 14,000 line event loop indented 2.5 displays wide. The file was so long that the editor (Codewarrior) could barely handle single characters at the end. It took three of us three months to untangle it and make it a functional app and source.
The second was three apps I was handed at the Construction company (next to my last employer). They had hired some US company (not known for mobile) who hired an Indian company who, I presume, hired random people who started the first app, then they hired two more teams to continue with that code to make all three (divergent). The company accepted the code but never looked at it. People with no experience with Objective-C or iOS wrote it. The company paid something like $450K for these things; I could have written them myself in 3 months; they were nothing special, just a horror show. I fixed the main one and added a significant expansion once it was workable.
Four decades is a long time to do anything; you see all sorts of projects, companies, and industries and meet all kinds of people, good, bad, and mediocre. I can't say what will happen in the next four decades; perhaps programming will vanish entirely, though not anytime soon. Despite the hype of AI replacing everyone, today's AI isn't all that great at anything and is not "Intelligent" enough to completely replace programmers. Employers want it to, but that's a pipe dream for now. Initially, I intended to pursue a Ph.D. in Chemistry (was accepted) and work in programming for only a couple of years, but I stuck around.
Dealing with change is the biggest challenge, and that will never change. It accelerates as you move forward, and specialization is the typical result. When I started, change was manageable; the main difficulty was knowing what was changing since that was before the internet and all the information you have today. Every programmer I knew back then wound up their career either losing it, giving up on programming, or being stuck on legacy projects. I managed somehow to stay relevant for the entire four decades.
Four decades is a long time, but it was a fun ride. Today, I make digital art using Swift.