For me the appeal of programming is the appeal of making, of bringing something into existance that reshapes the world around me. Without my work serving an end that resonates with me, it just feels hollow and like a chore.
Sometimes I do enjoy working through into an intriguing programming task with no real purpose, but only in small doses. I couldn't spend all my time doing that, just like I enjoy candy but I need to have a real meal, too.
Once you build 1 or 5 beautiful codebases that get trashed because the business shifts or you didn't solve the right problem, you get more interested in the problems the app is supposed to solve. At least, that's what I felt.
It's also why I've explored other, tech-adjacent roles like technology instructor and devrel.
One way I described it to a colleague: "At a certain point, I got sick and tired of talking about design patterns and wanted to solve problems with more leverage."
I like understanding how things work and using my skills to solve problems. If software/programming didn't exist, I'd probably be an engineer of some kind since that is my mindset. If that were the case, I wouldn't be engineering things in my spare time. Software careers are odd in that some people expect developers to "have passion" and throw every part of their being into it. That's not healthy for any career.
Having said that, I no longer write software professionally, as I stopped enjoying that.
When I want to do coding-style puzzle solving for fun, I pull up Zachtronic games.
Writing code (or even working with computers at all) is not something I ever aspired to. I put this down to the impact Microsoft software had on IT education in the UK in the 90's - computers were for miserable people with pallid faces who never smiled, poking around in Access databases.
Now, I work all day every day on a computer because a career as a scientist doesn't pay an acceptable amount. However, since I never studied computer science or did and significant programming early in my career, I've circled around the field doing sysadmin and project management work. I find myself too senior to take on the kind of programming tasks I can reasonably handle - there is no time allowance for me wanting to learn some of these skills in more depth. Doing personal projects and changing jobs could get me into writing code, but only with an intolerably large pay-cut.
The sad thing is, my field (scientific computing) needs exactly the skills I am aiming for - but since no-one will pay sensibly for that kind of work, people either steer around it like I did, or just jump sideways into DevOps or other "retail" IT.
As a counterpoint though, good software practices ensure the application is reliable and easy to modify as the business needs change, so it’s not just about shipping features with no regard for software quality.
Even though I moved full-time into development in 1996, writing code has always been about meeting a business need. I've never been particularly enamoured of the process or the tools, and put more initial effort into architecture in an effort to do less programming.
The people I know who view programming purely as a means to get a high paycheck don’t tend to last very long or achieve much success especially in FANG, they burn out because it’s hard to excel in something you don’t have any passion for. Imagine trying to be an author but not caring about writing - good luck with that.
Whether a project itself is a means to an end depends on how much and how deeply I care about the project.
Not every single moment, but on the whole.
The people you're working with, and what you're building have a big influence on this.
1. I started to run out of things to learn about programming that weren't entirely academic or specialities I'd rarely have need for. So the get-up-and-go of being thrilled by learning something new faded.
2. I became less of a software consumer. In the 90's, it was exciting to see software doing a new thing that hadn't been done on computers before - graphics, sound, Internet, all the rest. I was enamored in that sense: what if I could work on something attention-getting like that? And yet my interest in coding had a sort of "but all the products suck, actually" undertone to it. It all crashed, was under-documented, had some goofy UX fail. I wanted to understand that and do better.
And that conflict, of course, was fostered by realizing that I could do better, but I would have to pick one tiny slice of it to make better. And even doing that, I couldn't expect it to be used by anyone or to result in a career, because most of the professional code-slinging comes from a place defined by platform capitalism: the software is there to be in the way of the user so that it can extract a tax. Making it better isn't really the end goal, it's just a way to get users. And that holds true even if you look at open source and its various cults.
Thus, like a lot of folks, I'd now like to have less of my computing experience be defined by software. Like furniture, it has to exist in my life, but I don't have to like it.
But that end is humans talking. Talking about how to manage what machines do with the code.
Like I used to think functional programming tools like monads and lambdas were interesting when I discovered them, but now they’re just another tool
A lot of yes, because most work is not important. Any developer-idiot could do the task, more or less about as well, with very little difference for the user/output. Most tasks dont really matter.
Sometimes the work we do is more foundational though. We are laying out systems or structures that will be built on ongoingly. Ironically usually the best thing one can usually do here is work really hard to write as little code as possible, to invent the least systems that we can. Architects's perspective is to try to frame the problem, to try to build a pattern for future devs to use, but this so often ends up a vainglorious quest at solving yesterdays problems while making tomorrow difficult. Usually some helper libs reinforcing the de-jure language libraries are far more effective than a totalizing framing. Rarely are fancy system flourishes good or needed.
Still, I cant help but think most programming has yet to be discovered. Programming as we know it is very limited, the systems & patterns we have serve us well for building big, tightly coupled consumer apps & services, which require expert training in development & lengthy onboarding in the company to begin to have any competency in. The while system feels bogus. So little gain has been made in making comouting personal, in unlocking the magic jinn's within. This write-once understand-never model of programming feels mortally limited & hazarous to both computing & society's general welfare.
Thinking long & hard about what programming & systemcraft goes in to building things, & turning this from an esoteric procedural work which must be stepped through to something declarative & intentional, a clearly defined system of capabilities & actors that bespeak what they do (rather than merely compute outputs), is an enticing alluring bright future that i think, i hope, i believe gets us away from the bleak sad world where no one cares how anything is built, where the insides are hidden away happenstance trash, where quality is not regarded in the faintest until well well after the fact that it's causing far far too many defects.
There's so many hopeful visions & frontiers for better programming, so many reasons to care deeply about programming. But the hopes & visions fall upon such a deaf unhearing unfeeling unseeing world, a world woth no taste, no refinement, no care, no discernment. Programmers in large part have stopped caring because no one else has the aptitude required to care & invest, & alas, we have done very little to on oard the rest of the world into caring about, being able to engage honestly & directly in computing. The cycle is broken, and we have become sad coding machines, with the means we engineer relegated to irrelevance.
< Tangent >
Programming has gone through a weird path of effort/reward. Initially, you had to invest time and a lot of money to build your own computer from a kit, debug any errors, and get to the point of having your own, personal computer. At that point, any working results were amazing, as there was a fair chance you were the first person to solve the given problem.
This lasted an amazingly long time. In the matter of less than a decade, the same amount of money, minus the time and effort of building and constructing, got you a computer, could be skipped. For the same amount of money, you got a computer with a display, floppy disks, and it just worked out of the box.
DOS, BASIC, Turbo Pascal, Sidekick, PKzip, and so many tools game flooding in to make those computers even more easier to program, and productive.
It was at THAT POINT, where I started really making money as a programmer.
A decade passes, Windows 95 / Macintosh come along, and we get Visual Basic / Delphi / Hypercard. WOW... the amount of effort goes up just a tiny bit, but you can do amazing things, and that code will run reliably for most of your users without much tweaking on the programmers part.
Then networking, the internet, SQL as a layer, Email, Microsoft Office, etc. all boost productivity for the users. The table stakes remain remarkably stable.
Then the iPhone comes along, and with a lot of effort, and the approval of Apple, you can build a program that people can carry around in their pockets. Apple decides to limit the retail price of apps, and bottleneck things through the App store. Programming gets harder, and more specialized. Ugh
Meanwhile, the web has grown popular, and the idea that a program should just work anywhere shatters the simplicity of a program running on a single computer, directly talking to the OS that controls the display, and takes input. Again, programming gets harder, and more specialized.
Now we're at the point, where you're expected to make a program, sell it for less than a few dollars, support that program on any random phone, and hope that the two app stores don't arbitrarily change the rules and cut you off. The incentives go way up with audience size, and down with the giant filter of the app store.
OR
To route around the damage of the App store, you are expected to make your program available on a server on the web, deal with hackers, man in the middle attacks, wildly varying desktop and mobile web browsers, bandwidth and legal restrictions, to deliver results to a user that might be at a desktop with multiple 4K screens on a gigabit internet... all the way to a person using an phone with no keyboard, who pays for data transfer, and might lose connection at any moment, might rotate the screen, and wants to interact with video, multiple cameras, gps, and any number of other sources of input or output.
After all of that discourse to set perspective. Yes, I find it amazing that it can be done at all. I'm saddened that Delphi on Windows XP was probably the most productive GUI build environment I'll ever experience as a programmer.
It's hard not to see the table stakes now as a huge barrier. For my own personal programs, it brings me joy every time something works. Every time I overcome a series of challenges, and my will becomes a tool... it amazes and overjoys me. I love programming. It's frustrating as hell, but I love it. I fail to see how anyone could stick with it if they didn't, at some level.