A post by @jalcine had me think about programming for money. This topic is dear to me because I program for money. After highschool I did not do the mandatory military service in Switzerland because back then I was a foreigner and I had managed to avoid the French military service by telling them that I was planning to do the Austrian military service but then I never went to Austria so I had a few months off. My friends at the time were also foreigners or otherwise unfit for the military and thus the whole bunch of us spent a few months as interns at ABB, programming for a weird kind of “operative reporting system”.
I learned SQL on the job, and I learned a programming language on the job, obscure stuff nobody knows anymore: SQLBase and SQLWindows, both by Gupta Technologies. You can read about it on Wikipedia. It was a long time ago. The development environment was installed from more than thirty 3½-inch floppies. Remember those? They were so much better than the old 5¼-inch floppies. Now I feel old.
Anyway, towards the end of my stint I had decided to study biology and I did a major in zoology, with a focus on the navigation of ants and bees. I still love plants and animals more than anything. Sadly, it turned out that there were hardly any jobs for zoologists. At the same time, this was the dot-com boom or bubble. There were programming jobs to be had and I had some experience.
While I was at university, the department that was responsible for the “operative reporting system” did a management buyout; the manager got the rights to the software and the OK to take all the clients with him, because ABB felt this weird reporting thing wasn’t their core business. And when I went back to work for the same people, the software transformed into “customer relationship management” (CRM) and I’m still there, working for them, more than twenty years later. We’ve branched off into many things, written all sorts of business software, but the same old CRM is still central. We started using version control software, eventually. We used Visual Source Safe, then we switched to Subversion, now we’re using Git. We used all the Oracle versions from 7 to Oracle 12, sometimes we used DB2, but now we like to use PostgreSQL. We moved to Java in the early years, and we still use it. Who remembers Java Web Start? Our framework got rewritten multiple times. We moved from AWT to SWT to Swing to a web UI. We added Struts and then we removed it again. We added OSGI and then we removed it again. We were totally into Eclipse and now we’re moving towards IntelliJ. Twenty years is a long time.
Currently, our framework is a quick way to create business software that consists of a database layer to store data, a server layer to handle the data, a UI layer to handle the presentation, and the browser to actually present the user interface. The lowest layer of our framework is free software, too.
I like using it at the office. It gets the job done. I’d never set up the necessary infrastructure at home for my own private projects, though. Working as a programmer is hard. I’m still on my first job, more than 20 years later, but I’ve also learned to do whatever is necessary at the job without listening to the online crowd. Lisp is better! Haskell is cool! But business software is boring, it uses Java, which is considered to be very uncool. I recently heard somebody say they’d rather use COBOL. I guess we’re playing in the same league, now. Business software has millions of lines of code and more layers than developers on the team. It takes many weeks of full time engagement with the code to get into it. And there are so many tangents. The build system itself needs a specialist to set it all up; there’s Ant scripts and Maven files; there is a company-wide cache; there’s Jenkins and automated tests; there’s GitLab and how to hook it up for Merge Requests and Pipelines and all of that. Forget everything they say about lightning speed and innovation. At this size, the framework is like a supertanker. It moves in the right direction and it’s expensive to change course. So many projects depend on it. Millions of dollars are bound up in it. If it’s done well, it can quickly spit out new business software that looks more or less the same, uses more or less the same architecture, that’s more or less easy to adapt to a customer’s requirements. The joy of programming does not happen, here. The joy I find in my job is talking to new customers, learning about new industries, translating new requirements into solutions, finding the right trade-offs. Programming itself is the work that enables it all.
But really, the complexities of the framework, of the build system, it’s an endless headache and heartache. This is not the programming most of us dream of. This is business software! Imagine me, with a beard, screaming this at foreign emissaries. And there’s more: since we program for money, we don’t do extra programming for free. Under capitalism we make the code as good as necessary for the client to accept it but no better, since they’re not paying for it. If they thought it was important, they’d pay for it. It’s very different from programming for myself. Everything is done for money. Is this meeting worth it? Scrap it if we should be doing something else instead. Is this feature worth it? Scrap it if we should be working on something else instead. Is this thing nice to have? Not if nobody is going to pay for it. It’s a weird mindset where we don’t strive for perfection but for the best trade off.
All of that to say that at the office, I might sometimes make a comment about our code quality, or some disparaging remarks about Java as a language, but I don’t get angry, and I don’t get sad, it is what it is and I do it for money, not for love. I don’t know if that helps? This thought is what kept me from quitting all these years. When I thought I couldn’t take it anymore, I started working part time. Luckily, we live in a small apartment, we don’t have a car, we don’t have kids, we both have jobs that pay well, so I don’t need to dedicated my life to it. I’m never 💯 about the job. I just do it for the money.
Sometimes people at the office are shocked when I put it that way. Of course I enjoy working with good people, friendly people, funny people, I feel good because we are lucky and there don’t seem to be any narcissists in the company. That alone is one of the best aspects of the job. But think about it: if I weren’t paid, I wouldn’t show up, no matter how nice my coworkers are, no matter how interesting my projects are. I’m giving away years of my life in order to get paid, and that’s it.
And finally, after all of the above, think about this: what makes a good programmer?
I have no idea.