This isn’t a case of getting out of my comfort zone and trying other subfields either. That’s what I’ve been trying to do for 2 or 3 years, but nothing really interests me and the things that do... well, refer to the previous paragraph. The most recent project is very wide and covers many things, but I constantly lose and gain interest on it before even starting any work.
Sure I have things outside programming that interest me, but nothing conductive to hands on, hobbyist work, do at best, I’m stuck passively consuming content related to those.
So I’m not sure what to do now. How can I get the spark I used to have back,
I went through this for about 3 years after my divorce. I couldn't find motivation or joy in anything. I turned to helping other people solve their problems because at least I was helping others to get through what I couldn't figure out how to get through myself. There was a lot of time spent in reflection and introspection and about a million cups of tea drank while looking out of the window trying to will myself to do something, anything. It was a tough run, I was just dragging myself out of it when COVID hit and kicked me while I was already down. I think I'm just beginning to be back on the rise again now. I can't promise I've got any advice that can help, but it certainly sounds like you are where I've been.
If nothing is interesting, take a break from trying and play video games or watch tv for a year. Youre going to bump up against a lot of potential interests, and one might naturally take off.
For me, that new interest has been electronic music production. And I don’t follow any predefined path. Instead, I just go in the direction it takes me. For now, that’s been developing 4 bar loops and hoarding gear. Those are the antithesis of a productive producer.
But I remember how I got started in software collecting warez and keygens without any real rhyme or reason. That lead to me wanting to know how software was cracked, built, then how businesses and careers were built, learned a lot about leadership as a byproduct of having a career, etc.
So, while it might sound cliche, open your mind and follow your heart and don’t be too hard on yourself. It’s ok to relax, breathe, and enjoy the life you’ve carved out for yourself so far.
During that time, stop trying to be productive because you feel like you ought to. Wait until you feel like you want to. Read, take a walk, do some cooking, hang out with friends or family.
Gauge for yourself whether media consumption, especially during that time, is helping you relax or whether it's substituting both the motivation and reward for actually doing the thing you don't have the energy to do yourself. That was a big problem for me: We train our brains to reward us for accomplishing a cool thing with a boost of dopamine. Later, it optimizes the process to reward you earlier for just planning to do the thing - sketching, architecting, dreaming, writing task lists. Eventually, it gives you the same "I'm really proud of that accomplishment" reward for just watching someone on Youtube do it (you don't even have to look at all the off-camera drudge work).
Also, given the time of year, depending on your latitude, check for seasonal affective disorder as a potential antagonist of depression. Talk to a counselor, get some bright lights, bundle up and get outside if the sun is out, take some vitamin D supplements.
If it's really so bad that you're miserable, just take some time off. Either you'll find something else you enjoy doing more and leave programming for good, or you'll eventually be so bored (and broke) that programming might sound appealing again.
It's not depression leading to this; it's the reverse. This problem is leading to depression! I get enjoyment from other things in my life (e.g. being outdoors, doing yard-work, building things). Just not programming/tech. It's been like this for several years now. I can go on vacation and soon as I get back, same issue... zero desire to work with technology.
With 4 mouths to feed and one kid approaching college age, switching to another field while retaining the same salary/benefits seems impossible.
Basically I had grown really tired of solving every problem in the same way (create a new class, getters, setters... the same ol' object oriented stuff). And so I dove into Haskell which required new solutions to problems. And it made programming novel again for me. I was a beginner for the first time in over a decade; it was really challenging, and there were tons of new concepts that never popped up in the other mainstream languages.
The thing I loved was that it allowed and encouraged me to find the _best_ solution to a problem, as opposed to just 'something that works'.
1) See the logistics tasks I have as not "my" logistics, in other words getting some professional distance back I didn't realize I lost
2) Do it really for someone else, in my case, I turned consultant of sorts. That supports point 1), it also means I have a client now who hired for a clearly defined, concret task. So in a way, I am not simply doing it for myself
Especially the "not doing it for myself" part helped a lot. It prevented me from burning because I am less personally invested. And it also means, by doing for someone else, that I have an outside goal I can "serve".
Put in other words, not doing things because I want and I considered them cool solved my prioritiation issues. And doing for really someone else, solved my personal investment problem. For now at least.
EDIT: A hobby, how could I forget that. In my case, a 1982 Range Rover. Besides the engine and gearbox, I tore everything appart in the last 2.5 years. Never touched a car before that, so. Yeah, doing something completely different, completely new without the oal being money helped.
https://www.mymoneyblog.com/richard-feynman-fighting-burnout...
If I were translating that, pick small interesting projects. If you start to worry that you're not going to complete it, break it down into a set of smaller interesting subproblems and only commit yourself to 1-2 of them and then re-evaluate when you finish.
There is also the possibility that you're at the point where pursuing something other than programming might be more meaningful to you.
Now, normally I'd say we need to push through this. But I think instead we need to give ourselves some space given the current circumstances: We're in the middle of a global pandemic and in the US we're in the middle of some political and epistemological upheaval that's actually making the pandemic worse for us than it is for many other countries. So maybe we need to figure this out for a bit?
I find myself reading a lot of history and philosophy now trying to figure out how we got here - that seems to be where my drive is at this point. Maybe take a break. Don't try to force it - it's like falling asleep, the harder you try, the more impossible it becomes.
The best thing to do is to accept it. Don’t fight it. Ignore the feeling that things „have to be done”. This only creates additional stress and spirals out the problems. Go out (if you can), watch tv, play video games, talk to a therapist. Do something different. When the stress regarding software comes, tell yourself that it does not matter, it’s normal and you are ignoring it is for the better. Don’t force yourself because that leads to a burnout. The process of getting to a better state of mind can take weeks. Or months. It’s okay. You will come out stronger.
Don’t cross off talking to a therapist. A talk to someone who doesn’t know you and is qualified can be a miracle.
The feeling of reluctance I think is from your subconscious questioning whether half the stuff you think you need is actually required and then you're stuck wondering what exactly you do need whether you realise it or not.
I've found it much easier to avoid "architecting" and instead within a project pick 4-5 different starting points and try to incrementally move them along in parallel, that could mean doing a minor tweak in one section or building something more substantial in another.
This lets you gradually incrementally build things and when you get stuck you can move onto another area and give yourself some time to think about it, you don't end up giving up because you're only working on one thing and that one thing has to be done before the next thing and if you can't figure it out you'll never make any progress and arghhh!!
You can just watch tv, that’s ok. Maybe you’ll realise there’s an annoying sound the tv makes at 4 o’clock when it’s raining and it annoys you so much you investigate it and discover something we didn’t know about signal processing. Maybe you’ll jam your window open with a shoe so you can have a cool breeze whilst gaming and then discover a whole business in window jamming.
Count your unfinished projects as a great source of experience points for the next event in life.
And if you really want to “do” something then try make the dumbest, most useless, incomplete, consumption led piece of software you can. Prove that image of yourself to the rest of us. Make the most broken software ever written. I’d love to see it.
Need little, want less, forget the rules, be untroubled.
* Try a language like Racket. It can feel really liberating, because it's so easy to just get boilerplate stuff out of the way. Beautiful Racket is a nice book to kinda give you a feel for it. [1]
* Maybe try doing homebrew development for an old game console? Gives you a taste of embedded development in a fun way, and on a platform that you know isn't going to change. Also gives you the opportunity to learn things like drawing graphics or making music. Because the hardware is limited, it kinda takes the pressure off in terms of being able to draw well etc.
If this interests you at all, maybe pick one of the older/lower powered systems, like NES or Gameboy.
[1] https://beautifulracket.com/
EDIT: Actually, something that's done wonders for my motivation/drive is exercise, eating well, and intermittent fasting. I have much more "mental" energy these days, and motivation just seems to come with it.
It can certainly be frustrating to be confronted with a big gap between vision and execution; I know it well.
Two suggestions:
1. Specific to making progress, have self appreciation for any progress you do make. Even if the progress is battling annoying boilerplate. Even if the results appear to be a failure in the moment. Reward yourself for any action towards your goals. If you undertake a persistent campaign of rewarding any progress, no matter how small, and forgiving any perceived failure you will almost certainly get beyond your current state of mind.
2. In the bigger picture, sounds like you need something to center your life around. I spent 6 months meditating weekly and exploring Buddhist philosophies from a secular perspective. This was very helpful to me. There’s lots of videos and writing on the web that you could start with if this sounds appealing, and once the pandemic is over visit a local meditation center and try group meditation, the vibe of compassion is awesome. There’s all kinds of things, find something that speaks to you. It could be as simple as a hobby.
Back to big projects, you are just one person, love yourself for your ideas, accept that projects may take a long time to get done as an individual, and that pursuing your projects may lead you somewhere different than you thought. It is definitely worth seeing where things go.
"I keep dreaming up these high status projects and imagining all the people who will respect me and all the money I'll make, nothing to do with code or fun or problem solving. They need skills I don't have and work I don't want to do. Then I beat myself up about my inability to reach these goals, then quit, what do?"
Realise that what you're dreaming of isn't /programming/ it's /being a superhero/. "I keep imagining distressed women screaming for my attention and then I fly in and lift the falling skyscraper off their cat, and they marry me, but then I go to the gym and can't even lift 1Kg because the distance between my expectations and reality is making it very clear that my expectations are a fantasy, and I just don't want to face that".
Happened to Physicist Richard Feynman, incidentally, all the high expectations of him to produce great things. He ended up saying screw everyone and their expectations, he was only going to work on fun things, and started thinking about wobbling plates of custard in the cafeteria instead.
Answer: Same answer every spiritual mystic has said for generations - kill your ego, lose your self esteem, die into being nobody, let the world go hang itself on its high status, and please yourself with some work and problems you enjoy working on[1], not work and problems you think you should enjoy working on. Let the boilerplate come from your fingers at work, because it earns you food, and don't stress over it.
[1] that is specifically and worth calling out, things that when you do it, you feel good. And NOT things that you habitually do to try and feel good, but which don't feel good, and NOT things in the category called feel-good things. Specifically, things that when you are doing them, raise good feelings within you. e.g. don't watch a sci-fi film because you always used to enjoy watching sci-fi and feel that you ought to enjoy it again, if you aren't enjoying it. Don't watch a feel-good romantic comedy that you hate because society calls it "feel good". Do ... thing that catches your attention a little but feels stupid or embarassing or a waste of time so you'd normally dismiss it, but actually feels mildly nice.
Maybe you just need some rest. I know everybody is hellbent on doing side projects and moonlighting over here, but seriously, you most likely don't need that to live a full life or even put food on the table and pay the bills.
These days, I start with the premise that everybody is exhausted and feel like shit and that's normal. Hang in there baby, things will get better.
Then, once you get a few projects done, you start building up skill. So what was hard then starts becoming easier -- which opens up the door to new things that are hard now, but were impossible earlier. However you are able to still approach each project, because past experience taught you that you are getting better at the craft with each project. Which has a motivating factor (similar how watching your fitness stats is motivation to keep going to the gym, or being to play more complicated pieces on an instrument is motivation to keep practicing).
So what happens with programming, or fitness activities, or playing an instrument, is that after a period of time your skills start to level off. You don't get measurable more skill each time you practice, so that removes one of the motivation factors. And you "know" that you will make some mistakes that you keep making (hitting the wrong note on a piano, going down a wrong design path requiring scrapping a big chunk of code that you've worked on for several days, etc). That anticipation of failure is a de-motivation factor. And on top of that, even if you know you won't make much of a mistake, since you are doing "the same thing" you've done hundreds of times (ran the same mile, played the same song, wrote the same boilerplate), it gets extremely boring.
So the trick is to find acceptance that this may be the natural course of how things work. The human brain craves novelty, but you can also find comfort in familiarity also. Just treat programming like you would other things in life, that is a means to an end, and not the end itself. Think of other chores you do daily, such as the daily drive into the office, cooking dinner, showering / personal grooming (how many kids hate remembering to brush their teeth, and how eventually it just becomes a part of your daily habit).
It also sounds like one aspect of programming you enjoy is the ego gratification. Unfortunately, this is very hard to manage as you become more experienced and more sophisticated. It is easy for your standards to go up and impossible for your increase in capacity to keep up. Early in your career, you can learn something really cool and put it into practice right away, because you are learning small things. As you develop, your knowledge compounds and accelerates, and you start to realize that there are big, cool projects that you could implement in their entirety with high confidence. It's kind of a curse, to be able to look at a complex web app, or a 3d game, and know that you could implement the entire thing, top to bottom, in a way that would be perfectly tailored to your desires and would arm you with a bunch of really cool skills, except it would take you years of hard work. Something like that only works as a hobby if you enjoy the process. If you're only in it for the results, get ready to exercise an extreme amount of patience and humility... and that doesn't sound like it makes for a very fun hobby, either.
As for what you should do now, I think that for a while you should put your productive energy into your career. Forget about hobbies, just play video games or rewatch old movies or whatever the hell you feel like doing when you're tired and lazy. Accept the challenge of being the best you can at your job. Turn it into a game. Let winning this game be your creative, productive output. It's okay. You don't have to be doing something elevated or glamorous at every single point in your life. Obsessing about where the present moment will lead you is a recipe for depression and stagnation. Sometimes it's more important to be engaged in what you're doing than to think about how cool it is or where it will lead.
That being said, it sounds like what you're missing is a group to work on projects with. You don't have to take the lead on programming, instead you can lead a small group of people in the right direction while taking the lead on a product and learn a lot there, or take on sales and marketing. That's exactly how I work on side projects, I have a group of 2-3 great engineers with a diverse set of interests, and I work more on the business side and get brought in for architecture/stuck-on-a-hard-problem types of things.
Beyond even changing, it's incredibly hard to be motivated and push a project forward alone. Having a group makes it a lot easier, and I'd imagine that's a big part of why there are almost no VC backed solo founders.
Then I got slowly into eletronic music and one day I got idea I could code my own VST instruments. This opened whole new chapter of software development for me.
My advice is - do something very different in your pasttime. I still don't find web development to be interesting field. But weirdly enough, I started some small webs for myself (social network, POS) and I find rewsults useful and interesting.
A profound shift in thinking came to me after reading Frankl's Man's Search For Meaning. Specifically - meaning chooses you.
When I started out as a programmer, I was so excited about learning how to code, how different languages work, memory management, and other concepts like that. My meaning then was becoming a good programmer. A few years later that changed. I see meaning in utilizing my skills to build product that matter to people.
Maybe programming was your passion in its own right, and maybe that's no longer true. What helps me is stopping to look for meaning in the same place I am used to, and re-ask the question - what do I want to be doing? What is important to me? What will give me meaning? And then go and do it for a while and see what happens.
My best wishes and good luck to you, friend.
It's been a fucking rough year or five.
1. Physical: Sleep more. No screen days. Diet changes. Sport.
2. Emotional: [1] CBT. Get rid of perfectionism and huge romantic /heroic ideas that make you suffer. "burnout is heartbreak". Choose way way smaller projects: You commit, finish and get a good feeling from feedback within a day.
The only other thing I can suggest is find a creative outlet that you enjoy, and isn't the thing you do for your job. I went back to making music for the same reason. I'm not very good at it, but then being good at it isn't the goal - just the satisfaction of creating.
Long story short, there is a huge shortage of competent digital folks in the marketing world. I really like the work and the pay is similar.
AdventOfCode, on the other hand, is completely worthless in the grand scheme of things, but has been fun as hell and provides me with a sense of accomplishment every day.
I’ve also got a Pimoroni environment sensor that was a lot of fun to set up and gives me fun graphs every day. Sure it provides (as far as I’m concerned) the same temperature and humidity reading as the $5 device I got at a random store, but it provided something for me to do that was relatively easy, involved an emerging interest for me (hardware), and in the end who doesn’t love graphs?
If its painting, you decide beforehand if its a commissioned work or not, and if not who the fuck cares if you finish it on 10 years because you keep getting distracted on your damn strokes and your dogs keep chewing your brush handles.
You may not finish that noncommissioned painting at all, but i guess cherishing each and every stroke of your brush and those moments with your dog is what matters.
I recommend F#.
You seem to be concerned with... delivery. I find that the prospect of starting a project that may never get completed is a showstopper for me and so I've let go the idea of ever achieving anything a couple years back. You might discover things are perfectly fine like that.
https://www.reddit.com/r/haskell/comments/1tdkrx/review_of_h...
But obviously you are creative and come up with ideas. Probably you should be more picky in which ideas to pursue and which not. Personally I like grand, rabbit hole like projects. I think they are most fun when the time-result curve has early plateaus but also continues to go up later, i.e. already after working a day you have a proof-of-concept and after week or so, you already have something you like. I found such projects quite enjoyable in the past. It's no fun when even after a year you're still at 30% and the whole thing is only usable at >= 80%.
That said, I think there are also fun mini projects and it doesn't even have to be a running software. It could be Infrastructure as code or just a sketch of a library.
Speaking a bit more anecdotally, what worked for me when I facing a similar problem was shutting off the computer immediately after work and allowing myself to relax and prioritize other hobbies. I was watching more documentaries and vlogs, as well as going outside and hiking on the weekends as opposed to being bunkered down at my desk. This opened my eyes to what there really is in life, and I now view programming almost completely differently as a result, but in a sustainable, healthy way. I slowly built my passion back up, but not as compulsively as before. I don't program just to program anymore, which actually makes me more efficient.
I know your struggle and I wish you the best. Accept you need time off and it will get so much better.
For me it was writing but I think its translatable.
I have been there. Where every project involved grand architecture or lofty feature ideas, both of which are easy to imagine but harder to put into action. Which in my case caused and utter lack of velocity, and the closure that comes with finshing something, for my side projects.
My way of getting out of this never ending cycle was to narrow the scope as much as I could, painfully so. All the way down to either weekend projects or even something that only takes a few hours.
Just as a simple starting off point I would recommend looking into "Project Euler", just to get the cycle of starting, finishing, dopamine hit going.
My solution was to move into management. This is not the right path for everybody, since it's basically a completely different set of skills even if you're still on a software engineering team. And it's a hard job. But so far for me, it's been a good change.
It doesn't have to be management. Maybe it's product, or support, something else. The point is, you've likely got some skills that are related to getting software products out the door, there's probably a way to translate that into a non-technical role, if that sounds interesting to you.
I would also second what others said about burnout or depression. For me it was anxiety. Not a bad idea to talk to your doctor or a mental health professional.
Blogging about your journey is one way of doing that. Even if the setup is tedious, once you have it and document & publish it, it can give a sense on completion and satisfaction.
Another thing I often do is prototype an idea using something more familiar or with much restricted scope at first. The key thing is to go from success to success however small the steps. Building up to one grand success only works if you are committed to a vision through all the preamble, obstacles, delays, and distractions.
Of course, it could be you need to find a completely different hobby to fulfil you. Only you can say what position you're in, whether you just need to reignite your passion for programming or whether it's gone for good.
For me, the problem was Alcohol. I was drinking more alcohol than I ever had in the past and it, for some reason I do not know, was causing me to not find the some enjoyment in things especially programming.
So, I realized this and stopped drinking alcohol and I have now been working on projects non stop in my free time and am enjoying programming as much as I ever had.
In all, I would say don't be too hard on yourself. You are still the same person that loved programming. I think you need to take a step back and see what else in your life has changed.
I find it amazing that people can program full time and then want to go home and program even more. I enjoy programming too, but I want some variety in my life, and perhaps even get out of my chair from time to time.
If you're not motivated to work constantly at it, join the club. There are lots of us out here.
Side note: I actually started to find my day job tedious, too, and then got stuck in bed bored with COVID for a week. After that boredom, I actually started to miss it again. A long digital detox couldn't hurt -- allowing yourself to feel actually bored for an extended period of time, without any screens.
Get to the other stuff later if you decide to pursue it further, but the fun is often translating what's in your brain to code even in it's simplest form. Very few people sit around dreaming up ideas and just can't wait...to write a bunch of tests and setup a CI.
Outside of that, be sure to take care of yourself. You're more than just your ability to type and watch a screen light up. Rewatching Kiki's Delivery Service helps in your situation too.
Your options are pretty straightforward:
1. Press on with programming, perhaps find another job or sub-field.
2. Do something else.
Like so many other things (and like your past projects, it seems) the devils in the details. There are a million ways to go about either option. Figuring things like this out is basically what life is. There is is a good chance you'll find a good path from here and far from now look back at this point as a inflection point on your life, where you took a turn for the better.
Then choose projects that don’t need complicated stacks. I recently did a birthday app purely front end and purely in tech I know .
So go easy on yourself and break things down into bites. Take time off as much as you need from side projects. Or some weeks maybe just watch videos on some interesting projects and don’t code. Get inspired that way.
Good luck!
Boilerplate code is conquered through, in the order of least desirable to better:
- manual external code generation
- automated external code generation that repeats itself in each build
- automated internal code generation: macros
You don't want to be manually creating repetitive content with small variations; that's what computers are for.
You can regard boilerplate as challenge: how small can I get the specification of this? And then work on the generator from that specification to the boilerplate. The boilerplate is still boring, but the generator can have fun bits in it.
Try new things: entrepreneur, conference, product manager, even sales. i'm not saying it's necessarily an easy switch but the reality is that you may not have choice. your body is telling you something.
Or maybe you should just do a round trip around the world and meet exciting uncommon people...
I'd obsessively look at my downloads, conversions, page views and what have you.
This in no way was helping my work, but it was bringing me down because I was comparing with all the people who had "made it" already. Couple days I decided to stop that. For all those moments I'd rather read a book or play with the kids or listen to the wife. Feeling a bit better already to be honest, and interestingly somehow... free.
- Chip away at your problem or task slowly. Celebrate tiny wins, I just got that tiny function to work, YaY
- A grand project takes time. One often underestimates the time needed to do a task. Break it into really tiny bite sized items.
- consider a different measure of success. Take time to understand deeply the root cause of all failures. Write about it in a daily journal.
- Creativity takes time and effort. Roadblocks are common, Enjoy the process.
Heed the warnings of burnout and depression, but if that's not the case, then try something else entirely for awhile. For me, it was getting away from the screen and setting up a small woodworking workshop in the garage.
If you work all day in software while also surviving 2020, then do what you can to get away from devices every day. You sound like a creative person, so do something in the physical world.
Quitting everything that is not for you is the path you'll follow until you find your sparkling light, the magic in a project or a game or else you'd really like to pursue.
Pausing unnecessary work is good, and if you need to work for money, fully disconnect from it at the end of the day.
And start to find what makes you happy. Ask yourself a simple question. Move on.
I started to feel this way during my first internship in my sophomore year of college, after having been programming as a teenager for 4 years and then starting a CS major in college. It was a rude awakening. It led to years of depression and confusion. Finally I see the light through a potential career change
So long as it's not burnout (or depression, etc - a counselor is a great resource here), often the best thing to do is to find other things that excite you in the time you're not at work.
Personally, I've been considering some sort of sales role in the future. Those people seem to be way over paid, better paid than me anyway and I'm doing okay. Note, this would be at a major firm rather than a startup.
You may find that something simple and really only for yourself -- something where the comparison to others comes up, but doesn't matter so much -- could really help. I've found a surprising amount of amusement in adding Velcro patches to my backpacks, making watchbands with Hypalon and stuff like that.
Only you can decide your next move but when you do, don't prevaricate just commit. Good luck.
After about 6 months I was sick of not doing "my thing", then found a new project and now all is well. I regained my enthusiasm about programming.
I wish you luck
Do something completely out of left-field. For instance, learn APL. It's like reading a Jorge Luis Borges short story.
Why? Why not.
Rinse. Repeat. Relish in the non-projectness of it. After a while, joy might come back.
I think a lot of it comes from the fact a large proportion of us kind of fell into programming as a career, so we have memories of when it was just a hobby, and we spent endless hours learning new tricks and developing skills. Keep in mind, you’re probably still doing that. You’re doing it 8+ hours a day, five days a week. Of course you don’t feel like doing some more of it when you get home.
For my part, I’ve kind of accepted that I’m not going to be itching to write code for fun all the time. Every now and then something will tickle my fancy, and I’ll go down a rabbit hole learning about it for a bit, then I’ll drop it once I feel I’ve got what I want from it. Outside of those times I just do other things. I watch TV, I play computer games, I pick up hobbies which I’ll be obsessed with for a month or so, and then horde the things acquired for that hobby and let them gather dust for a year before I pick it back up again.
TLDR; your work is unlikely to be your hobby most of the time, and passive consumption is fine, especially when you professionally create things.
I completely understand the background anxiety about not being in gear and moving towards something, but you don't control life. None of us do, and you're gonna be just fine.
Accept that there's nothing interesting right now, and just do whatever and go with the flow.
why is it important that this project is built?
why have you decided working on this project is the most important use of your time?
why are you being hard on yourself for not working on this project?
why are you being hard on yourself for not being excited about programming in general?
I can relate and ITT a lot of our peers have gone through what you're going through. In my experience, hobby programming has become like a video game i've already played a million times, there's nothing new or fun, it's just rote and tedious.
Like other comments state, i have also opted to see this as a part of my own growth path, and making peace with this "loss of spark" has opened up many other doors and opportunities.
In short, there's more to life than programming.
This is also a sign of depression. Boilerplate crap is supposed to be easy - what makes you so negative about it?
Don't be passionate about building something for other people, be passionate about something for yourself. Let your projects be extensions of that passion, with you as the intended customer. Not everything needs a fancy interface or a dozen use cases out of the box. Don't worry about scalability. Just try to find the joy in building things to help pursue your passion.
Personally, I think we hit the peak ease of use with VB6, Delphi, and HyperCard
It's all been getting harder ever since.
But then you became a student of the "right" way of doing things, and learned that it was suboptimal to just hard-code your strings into stacks of if/else blocks and had to figure out how to work them into a resource segment of your binary, and then along the way oh if you access them using the generated code functions that some IDEs will give you for those, then you get the ability to access them for different languages depending on...oh how DOES the runtime determine what language the user prefers? Hmmm let's look that up, so for versions 1.0-2.x it will look at the thread's current culture, hmmm how does THAT get set, and then what about 3.0+ okay let's just forget stupid translations for now, let's just make these graphics ready to work on different screen resolutions and retina displays so time to find out how to make SVGs and a UX library that will let you easily insert those when needed but oh the only good one is a full framework so you've got to refactor your whole code and provide a manifest file and hey what happens if I set this "Resolution" property to "UseNative" vs. "UseScreen"? What does that mean? Oh hello StackOverflow thank you and uh oh...I CAN use UseScreen but I will need to provide my own custom implementation of IScreenProvider which is almost as long as my original adventure game code, but thank you contributor, I can just copy your whole page of code into my own project. Since none of the names match my convention, I'll just spend the next hour renaming, retesting, and experimenting with which chaff I can cut out of this pretty-suspiciously-complicated class I just copied.
There is a certain class of programmer whom this kind of experience absolutely does not bother. I call them "zombies", but in the modern programming world, they are called "successful". They will tell you that they can easily do their job in a reasonable-length day, and have no desire to do programming projects at home.
But Excel, Doom, Linux, Mosaic...all these were not made by zombies. They were made by people like you, but in a time when there was no programming culture that made you worry that everything you were doing was wrong. It's just different now. That's probably why the world supplies 1000x as many programmers as back then, but contributes about 1/1000th the old output of really good stuff. Mostly we just provide the same stuff that was available 25 years ago, but on top of a different and more complicated set of foundational services.
I don't want to suggest that what I have observed is scientific truth. Lately, I have been going to therapy regularly to try to work things out. I think it's helping, it certainly isn't hurting, to have a carved out time with somebody neutral to just think and talk.
Within that sentence is a pattern I have noticed in my life at least. I went through depressive periods a few times in my life for different reasons (and sometimes seemingly no reason). Divorce, losing a job and unexpected unemployment for a longer time frame, etc.
This created gaps in my career life, and each time I had a gap, there was carryover effect from the event that triggered it, which I needed to get through. The first few times it happened, I didn't realize that I actually needed the gap, to have time to process. I didn't realize that my brain, although depressed, well... it almost felt like it was doing what it was doing on purpose. Almost like, to force me to rest and sleep and sort of stagger aimlessly through the world for a while.
Only one time when this happened, before I was getting therapy, I saw that things were going sideways again and I was going to have a gap. This time, I prepared myself for it by telling myself that, if I was aimless, bored, did nothing, etc that it was OK. That I would allow myself to do that for a reasonable period of time until I started to feel better, and then after that I could do whatever I wanted.
I guess what I'm saying is, I let it happen consciously and gave myself time. I let that time be carved out to take a break.
After about 6 months went by, I am not sure what exactly changed, but something changed and I just started feeling better. It wasn't any one specific thing, but I was sitting there and started to get the natural inclination to just go start toying around again, this time even with some different and new subject areas, learning some new stuff and soon enough that transitioned into maybe starting my own business.
I was so excited and had begun the process, when, about two weeks into doing it, a job offer I knew nothing about appeared. I took a hard left turn and took the job because it sounded interesting, and my story continued.
I want to reintroduce the world to the word sabbatical [1] - rest from work. Carving out time, or taking advantage of the gaps. Rest with intent.
Depression is real. When life takes a toll there are chemical changes in the brain. Therapy and medication could be necessary and so if you need help, the advice is always to seek professional help. Don't suffer alone if you need help.
If, like me, you find a way to process it safely on your own, as I did in the last 6 month gap, you may find your way through.
If it is of any help, think on what a sabbatical is and if you can swing it, try it. It does not mean you must do nothing at all, take a break, learn something if you like, but don't push yourself to do anything that feels like "work".
I genuinely believe and have even considered starting some kind of non-profit support organization to help people learn about, organize and implement a sabbatical. I may still do it, after realizing that this is an area where we are really suffering as humans and where we need support.
Best wishes on your journey, be safe, and good luck.
Now, I live from a website I built, and coding became one of my favourite hobbies again. I wake up, make pancakes, have coffee, put some good music on, and code until I've had enough. It's not work; it's my definition of a good day. I'm not trying to build a product, or my resume. I just work on whatever feels interesting.
There's an article that changed my perspective on programming [0]. It argues that an app can be something you make for the delight of a select few, like a home-cooked meal. I've made many home-cooked apps since then: achievements for my personal website [1], a timeline for my personal life [2], and lots of small improvements to other private projects.
I guess the lesson here is that programming is a great hobby, but programming for money can be a soul-crushing compromise. I think you'd hate any other hobby if you turned it into a full time job.
---
Every programmer occasionally, when nobody’s home, turns off the lights, pours a glass of scotch, puts on some light German electronica, and opens up a file on their computer. It’s a different file for every programmer. Sometimes they wrote it, sometimes they found it and knew they had to save it. They read over the lines, and weep at their beauty, then the tears turn bitter as they remember the rest of the files and the inevitable collapse of all that is good and true in the world.
This file is Good Code. It has sensible and consistent names for functions and variables. It’s concise. It doesn’t do anything obviously stupid. It has never had to live in the wild, or answer to a sales team. It does exactly one, mundane, specific thing, and it does it well. It was written by a single person, and never touched by another. It reads like poetry written by someone over thirty.
Every programmer starts out writing some perfect little snowflake like this. Then they’re told on Friday they need to have six hundred snowflakes written by Tuesday [3]
[0] https://www.robinsloan.com/notes/home-cooked-app/
[1] https://nicolasbouliane.com/achievements
Burnout goes back to one's childhood and more specifically its effect on how one define's one's ego and the attachment to it. Young children do not have any real intuition about how to navigate life and are thus beholden to the influences around them. Through seeking approval from these influences (parents, teachers, or even fictional characters), children begin the process of simulating what those influences will say or think of them in order to gain some sort of reward (one's parent saying they're proud of you) or avoid punishment.
The healthy form of this is people who still allow their true self to come into being amidst all of these influences and mental simulacrum they may have adopted while growing up. The few people who are lucky enough to have the stars align for this seem to just effortlessly glide from success to success (at least in my own very limited experience), though that isn't to say they're always great human beings. For example, one of my relatives was a real maverick in the field of anatomy and had myriad interests and hobbies that he pursued to semi-professional levels, but it turns out he was almost completely uninvolved as a parent and was quite the angry drunk until a few years I was born and I never knew until he passed.
Due to the immense pressure we all feel to succeed, as measured by external markers of success (first grades, then degrees, then money, then your kids' grades, etc), I don't think most of us who feel burned out ever had the opportunity (or did and didn't recognize it / take advantage of it) to know our true selves and interests. Instead, we only learned how to fine-tune the mental simulacrum of our mental judicial panel (of our parents, mentors, random famous tech people we admire or envy) as a fragile mechanism to achieve an external definition of success, often while ignoring or avoiding our own interests.
When I feel stuck or burned out, it is always because this mental judicial panel I've constructed in my head is trying to convince me that I will "definitely fail" at some new attempt (e.g. learning $NEW_LANG or switching to some exotic Linux distro and rice the hell out of it) because the easiest path I have to pleasing these judges is to only do what I am almost certain will to garner their approval (e.g. by churning out one more feature for dumpster fire that is my project at $BIG_CORP) or literally do nothing at all, to take the safe route.
To me, this is the ego, this enmeshment with your True Self and this mental judicial panel cemented long ago that no longer is working, but is so hard to recognize much less to change one's relationship to this panel.
The dysfunction is that this panel would much rather conserve energy by keeping you stuck (as the cognitive load of learning something new is very high in calories). I don't think burn-out is a lack of motivation, but actually a perverse aim of a high level of motivation towards _not_ doing anything new. It's very hard to disbelieve one's thoughts and observe them, so the level of self-berating that goes on when one even attempts to think about trying something new is often deafening, even if you are genuinely interested in it.
However, this realization never did anything for me. Sure it's good to meditate and therapy is helpful, but the only things that helped are:
1. doing the smallest possible things I can do to step towards who I truly wanted to be. One minute of meditation? No problem. Writing "auto main() -> int { std::cout << "Hello world\n"; }" for the Nth day in a row? Easy. Doing one pushup? Simple. The key insight for me was that it wasn't about the outcome of the small action, but the slow changes in how I view myself. The slow momentum of seeing myself invest in minute ways into long-term well-being was what I was truly building. Having faith in this process while picking myself up from failure is hands-down the hardest thing I've ever done in my life, but it does beat hopelessness.
2. teaching oneself to be okay with failure. After some time of success in coding / IT, the aversion towards trying new things often comes from an aversion to "failing" at it. If you think about it, it makes no sense that a web developer should just effortlessly be able to home-run a back-end Haskell app, but the enmeshment of one's ego can cause that unreasonable expectation to rumble around one's subconscious and almost always dissuade one from trying something new. The only way to learn this, in my own experience, is to try something in a new domain where you have little to no expectation of success and just _play_. Things that often work (at least based on reading this thread and many others like it) are either musical or, more often, some sort of physical craft (e.g. welding, woodwork, fixing up a motorcycle, easy embedded projects, cooking). What these will teach you is that it's okay to do something "good enough" for a first draft and that that's perfectly okay. The same mental voice that says "god I can't believe you don't understand the difference between an l-value and r-value. How stupid are you?!" will lose its power once you can truly appreciate the taste of a steak you may have under-marinated and over-cooked or a motor that sputters back to a smokey roar on the salvage jetski you're repairing despite the fact that it idles too high, has blistering paint and flaking decals, and is underpowered. These experiences help tamp down that voice of unreasonable expectations of "instant perfect" through the repeated small, undeniable successes in other areas where this voice is not as strong.
3. stop reading news that doesn't have a high chance of actually helping your day-to-day life. New tutorial on HN about something you're interested in? Check it out! Some twitter war about "California vs. Texas" as some high-profile figure / company talks about moving to Houston / Austin? Best to just close the tab unless you're actually into real estate or something.
4. If you're trying to read personal growth books / blogs to understand what's going on, avoid any resource that either a) doesn't teach you anything new or b) tries to make you feel good / inspired. These books are often written by people who put their stupid face on the cover and are trying to just sell vapid, repackaged advice in a terribly-written book as a way to get lucrative speaking gigs where they earn boatloads of cash spewing the same banal platitudes. These types of books tend to not only not teach you anything, but leave you feeling worse because you can't seem to "bootstrap" yourself out of burnout or depression like these books portray as an effortless act.
God knows I struggle to do all of these things on a regular basis, but these are the only things that have helped me amidst a sea of unhelpful advice (e.g. "join crossfit bro!", "go keto", "start doing BJJ", not that any of those are bad, but can often be used as an emotional crutch to avoid addressing an emotional problem) and loads of stupid self-help books I have found are useful.