I'm curious: what are the things you still love about it after all these years?
Let's show the youngsters what to look forward to.
Making things nobody ever saw before (current role). Inventing a new kind of service nobody saw before that allows farmers to do things that were impossible.
Taking a boring, time consuming part of somebodies day and making it disappear so they can do more interesting things.
Occasionally hiding something fun in code that makes somebody smile.
Mastery over things. Knowing how to hook up devices and make them work together.
Not every day is great, but being able to create software is like being an actual wizard, especially if you are lucky enough to work where software and hardware hit the physical world.
I will note I've burned out once or twice for a few weeks, until I woke up and realized I was in a horribly toxic environment. And then I simply moved on and found some other exciting project to work on.
I can make stuff that changes businesses.
I can make stuff that changes lives.
I do this with my mind, with no raw materials.
My ideas and time are the only limits.
How could someone with creative fire not love this?
- I still love the feeling of finality when you mark a Github PR as ready for review. It's like you let out a breath you've been holding in for a day or more. The fruit of all that thinking all that pondering, now in tangible form. Ready to make someones life better. (I think this is why I don't see myself working at an enterprise - I enjoy having high impact in products)
- I love guiding younger engineers around trade-offs to solutions. I tell them my recommendation and then I go through my reasoning and because I have 14 years I have first-hand accounts about what went wrong and why. It feels good. I remember in my early days having a senior show me the ropes was very interesting and very fun.
I think an important piece to this puzzle lies in not getting attached to one specific field of application.
Worked for about 3 years in a regular run-of-the-mill agency / website shop. Not very interesting, but good experience and skills gained.
Worked for about 2-3 years in ecommerce. EXCRUCIATING. Left with little to no appreciation left for the craft, fell into a crisis of meaning. Allowed myself to be unemployed for a while and found appreciation again.
Worked for about 1-2 years freelance. Very cool projects, but I couldnt take the constant stress of dealing with clients and managing moneyflow. Stopped.
Now I've been building a venture with a business partner of mine for about one year, which has somehow completely evolved and changed into effectively managing the technical side of a quantitative analysis firm that runs a NYSE-listed Hedgefond. INCREDIBLE. Every day feels like christmas, noone to answer to, 100% decision force on anything, and not even involved with the regular operations, just dreaming up cool new algorithms and ideas for our internal system all day. But this, too, I might leave some day.
I truly believe that a programmer is not a static definition especially given the insane influx of data and new concepts we process every day, and that the only way to truly find ourselves in it is to not get attached to anything.
The zen programmer, so to speak. Code is not limited to anything. Become the code, not the job description
Digging into new challenges, learning and creating still tick the boxes. I’ve found I increasingly need to partition work and “hobby” CS though.
Currently working through 3D graphics in the “hobby” category and having a blast.
Finding good ways to use all/any of those languages, frameworks, libraries to effectively and creatively solve problems is always an interesting challenge. Getting good at recognizing concepts early, finding the perfect names for everything, and knowing when not to create abstractions are all very rewarding things. Distributed systems. Continuously learning ways of structuring/writing to make it difficult to do the wrong things. It really doesn't end, I love the continuous learning/dopamine hits.
Learning to develop software well, is like learning to play Go (the board game) the skill ceiling seems so very high--and even if you think you might be getting close, there's new tech and hardware enabling-capabilities that extend that farther. You end up learning that there's more that you didn't know there was to learn.
However I dont like how most workplaces are still really inefficiently managed and full of politics and bad decisions.
And it continues with the possibility to apply knowledge and experience. Most important to see things from a higher level, realizing and thinking in systems and applying these methodical thinking on a daily basis - and passing the knowledge on to somebody else.
I just love the freedom, even before COVID. You could ask an employer to let you work remote for a couple of weeks.I did this a few times.
I really like being alone, and just not being bothered. I put it this way at a bar yesterday, I don't need to socialize at work. I'm socializing right now.
Plus this is one of the only fields where you can still teach yourself everything you need to know in order to make an insane amount of money. You don't need a bunch of expensive tools.
At the same time, you should invest a minimal amount of money in yourself. I saw a post on Reddit once where someone ranted that their employer wouldn't let them work at home as they didn't have a personal computer. How are you typing things up like your resume ?
If you invest a relatively small amount of money in yourself, you going to have an amazing life. But if you sit around complaining and whining all day about how unfair the world is, your life is just going to be bad
The satisfaction of opening a perfectly-tuned merge request with a minimal diff and glowing momentarily to yourself as tests all begin to pass (before realizing that there's an embarrassing typo in the title text).
The feel-good factor from optimizing runtime and energy usage for your most prized simulation library (despite the fact that it's only used by yourself and perhaps one other egg avatar who starred your repository).
The endless mental battle against an onslaught of awful, awful code and technology decisions from employers and the Internet, yet paired with evident continued emergence of more reliable, higher quality and more freely available and equitable tools over time. And being able to participate in all that in a small way.
But I think the work stuff gets easier and it also becomes easier to explore random fun topics like retro devices and internals of compilers, databases, browsers, etc. Not that you couldn't do those explorations with fewer years of experience (you can) but it just takes me a bit less time to dig into things now.
I guess I've gotten much better at slogging through documentation and reading existing code (that I didn't write).
Basically, I've burned out my ability to deal with the politics of software development but I still love creating a project from nothing. I suspect there are many burnouts like me. Had I known this in the pass I would have directed my career differently.
I'm in the process of switching my career since I have to pay the bills but I will continue to program as a hobby.
- I love solving problems. It's like solving puzzles as your day job; it's great!
- I love getting exposed to various domains, when building software for it. There's also the added benefit that I usually have domain experts getting paid to explain stuff to me.
- I love building stuff that other people use. There's something very good for the soul when you see something you contributed to solving real world issues.
- I love the fact that I was involved in building systems that save lives.
- I don't really see myself doing anything else and being happy.
- Don't even get me started on building games / engines, basically being able to be your own mini-god.
- Discovering new tools and adding them to your tool chain, but also understanding how to use them effortlessly because you have so much experience.
- Being able to build just about anything in a ridiculously quick amount of time (all things considered) because you've done so much already.
- Rather egotistically, being better than everybody else at something is pretty satisfying (at least to me).
These are the things that I find satisfying.
(10y in, weird position to explain between engineering, business strategy, and management)
it's something about having the creative freedom to decide on the solution to a problem, and then also the satisfaction of building it out into something which works, works well and then benefits others.
along that path of [requirements -> design -> implement -> test -> release] there are numerous rewarding moments but when the whole thing comes together, there's another meta-reward of knowing that there now exists something where there was not before, and that I created that thing. Quite often, entirely.
Another level of this, is satisfaction in colleagues taking components/services/entire systems I've constructed and adapting, extending, changing them to do more than I thought possible. Also, seeing colleagues start their own components/services/systems in the pattern/design of something I did, and making a success of it.
After a while, it's like seeing an entire ecosystem spring up around seeds I created.
However, to translate that into what it really is - the team I work with manages to build an actually useful product that real people use and enjoy using. I find that highly rewarding.
I love approaching software development from the perspective of an artist.
I love the feeling of gaining expertise and how that translates to me being able to handle just about any type of software project.
I love directly profiting from my projects.
My advice to avoid burnout is to keep hacking on your own weird ideas.
Edit: Added age :-)
When I first got a modem, it was 1200 bits/second. Now I routinely shove data through the air at 100,000 times that speed, to save the hassle of using an ethernet cable.
My first big boy computer had a special hi-resolution card that did 640x480 in 6 color mode. I reprogrammed the CRT controller to give me an extra line at the bottom, which I put the date, time, capslock status, etc. into.
Now I have a 32" monitor with 1920x1080 pixels, and I could get more, except I really can't see more detail than that! At 60 frames per second, with no interlace, and 24 bit RGB color. At the display is only a few pounds, and thin!
Hard drives... I remember riding along with a friend to install a 10 Megabyte Corvus hard drive, I recall wondering how in the heck it would ever get filled. Back in those days, before I got a modem, each and every byte came from a keystroke someone, somewhere typed. Now I have microSD cards with 3200 times that room, that cost $3, retail!
The hardware is amazing. So is the software! Turbo Pascal was $49 back in the day, which came with an excellent manual. You needed that manual, as that was your only guide to the language. Now we have Lazarus, an open source Pascal on the internet, with full access to source code, and a wide variety of components for almost every need.
The same is true for a wide swath of languages, and operating systems. You can write a program in any of about 10 languages, and there will be support for it across Windows, Linux, MacOs and other platforms.
GIT - oh man, git is amazing. I used to have to store source code in .ZIP files, and put those on sequentially numbered floppy disks as my only method of version control. Now you can put things in a folder, run GIT against it, and PUSH it to github, or any other number of repositories in just a click or two.
Open source is amazing.
It's all amazing. You can build anything you want, most of the time things are so fast you don't even have to try to optimize them. I wrote a program to figure out gear combinations that would fit a given real number ratio, in Lazarus. I was done coding in about 30 minutes or so. The first time I ran it, it was done almost instantly. It had run through millions of combinations.
How can you not be excited to have these types of tools? You can solve problems for people across the world. If they find it useful, they can extend and improve it in ways you didn't anticipate. Those changes might be very useful in turn.
I'm especially looking forward to the roll out of capability based security in the next decade. It will bring back the fun of the old days, as you'll be able to just run ANYTHING against your picked set of files, resources, etc... and know it can't damage/change anything outside that selection.
Freeing up computers again from the threat of infiltration will be an amazing lifting of a weight we've been under for far too long. I hope I'm around to see it happen.
The future is awesome.
PS: Oh, and multi-core... that $4 Raspberry Pi Pico has 2 cores... everything has multiple cores... you can run more than one critical task at a time, and not get bogged down!