Ask HN: I am 30+ and bored with life and the software industry, what do I do?

175 points by zippy786 ↗ HN
I used to love software/programming but it's getting boring now. It seems so clear to me that so much futile effort is being put into building yet another language, yet another editor, yet another UI rework, yet another infrastructure rework. And for what, just because people would have something to show for. Seems the number of people trying to come up with futile things for the sake of popularity has outnumbered the ones who try to do real work.

The hate for one language as if other languages are elite. Trying to use all the features of a language and thinking a one liner is cool even when a five liner and a one liner is same when compiled into machine code. Too much jargon, falsely claimed software engineering practices and overly zealous object oriented mentality (Seems people try to use Object Oriented for everything, they call it the best, even better than simplicity in many cases.)

Quite frankly many years of self hacking/studying and experience in industry, I think I've just had it with software industry. Does it get any better ? Am I seeing things correctly ? Is this a burnout ?

133 comments

[ 2.7 ms ] story [ 203 ms ] thread
I started a business. You get to experience many other things besides programming and it's always interesting.
Agree. Being a founder will force you to wear many different hats. Technology will still be very important but you will also need to focus on many other different tasks and improve your human skills
Is there still anything you'd like to see built?

I mean, if you were on a desert island, would you even want a computer? What would you do with it?

I'd sooner build a boat and sail away.
The two happiest days in a boat owner's life are the day he/she buys his boat and the day he/she sells it. Trust me, you don't want to build a boat. But I get the sentiment.
I know this is a commonly used meme, but I don't buy it, I know quite a few people who enjoy sailing, including those that own boats.
I love sailing, the meme is that boat upkeep is very difficult and there are many commonly unforeseen costs both monetary and time related.
From my sister who owns a small motor boat.

"BOAT" = "Break Out Another Thousand"

enuf said:-)

It sounds a lot like burnout, that happens when you've worked really hard to achieve something which, after achieving it, you come to realize wasn't all that important to you personally. It can really take a toll on you mentally.

It can also be something of an intra-life crisis. For some reason 34 hit me really hard. I think part of it was that suddenly I knew that there was some things that I had considered "something I'll do some day" were probably off that list, permanently. Like a friend of mine who realized he wasn't going to ever be one of the world's top jazz musicians. (for me it was being an astronaut) And the realization that this is "all" there is, you live, you experience life, and you die. There is no "win" there is only great times and not so great times. All of that came down pretty hard on me in my 30's.

My coping mechanism is finding something new to learn, but that certainly doesn't work for everyone.

You can save up $200,000 for Virgin Galactic, it has some delays and problems but I think it will be ready in time for you to experience being an astronaut. (Training, preparation, take off, landing, and telling stories about it). If it's what you want to experience, go for it.

If not Virgin Galactic there will be another company.

Space tourist != astronaut, if they will ever deliver. Roughly like being a bus passenger is not the same as being a busdriver.
I suspect most people don't have much of an interest in the actual job of being an astronaut. Simply want to experience a trip into space.
Well in my case it was "doing science, in space!" which was something I thought would be really cool, after all if you're in space you're already in a target rich environment for discoveries, and then getting time to do science there? Well no end to the things you could find out. As a kid I used to write down space experiments in my notebook[1] that I would do when I was in space.

[1] Not exactly epic experiments though, I recall that one of the sillier ones was tie two fans together at the base, with their blades facing opposite directions, and see how fast it would spin.

My coping mechanism is finding something new to learn, but that certainly doesn't work for everyone.

Some other ideas:

- Spend your free time (and take some extra time off) to do something new non-computer related: gardening, mountainbiking, climbing, etc. Sometimes, computers are just work (until you have more inspiration), which is ok - it pays the bills, find the challenge somewhere else.

- Try some vipassana meditation classes. It can be really insightful to see how the mind works.

- Take a year off, travel the world (relax a little before a real burn out hits you).

- (If applicable) Start a family :). We have a 1.5 year-old daughter, it's great to just watch her play, going for a walk in mountains with her, etc.

The world of developers can seem like an echo chamber. But if your goal is to improve the real world, development is just a means to an end. Can you use your tools to help people who dont care about code at all? Does that perspective help?

There are also very different paradigms which I find renew my interest. erlang, rlang, golang... you may have to dig to find what keeps you interested.

It sounds like you need something new, something refreshing. Maybe take a break from your existing approaches?

Study the history and biographies of science, if you want to escape being an industrial cliche. Many have forged their own paths throughout history and now is no exception. Naming the cliches is a good start.
I was there some years ago. I realized that the root cause of the problem was focusing on the wrong things (at least they were wrong for me).

Tools are just that - they are tools. Granted, there are many of them, new and shining, coming in all packages, but that gets tiresome after you've spent a substantial period of time with them. They are all essentially the same and sooner or later you lose interest in them.

What never gets boring is using tools to create things that affect people's lives. And I gather from your message that you've missed that joy.

My advice is simple. Think of some thing that would be helpful to (non-technical) end users. Come up with some kind of service that would solve even a small problem for them. Then see your eyes light up as people are adopting your offering and giving you their thanks.

In short, your work must have a meaning. You should know that somehow what you do improves the world we live in, even if in a small and seemingly insignificant way. For as long as you're just finishing tasks prepared by somebody else for somebody else's meaningless projects, you're not going to be happy. As with all creative professions, in programming too you have to take matter in your own hands.

You've just realized (subconsciously) that your work has been meaningless. You basically need to find your path. What you could do:

- Forget about the tools, just pick up something you're comfortable with and create something useful for people

- Change jobs until you find a project you can personally identify with and where you'll see you work affecting the outside world in a tangible way

- Change profession or role to the one where your need for meaning will be satisfied

That's hard I know. I wish it weren't but it's just the way things are in life.

Amen! You've said it far better than my attempt.
I did exactly that. Ended up creating something new. It has meaning and it worked.
Reading hn is probably not helping in this regard.
Normally human gets bored when he does repetitive work, and innovation come from chaos, when you make change in few parameters of the current system. I feel you should try something new, you can start a startup in your favourite domain, go and visit new places and meet people.
It sounds like whatever you've been doing, wherever you've been doing it, has focused on software for itself, and on building so much of the useless and short lived things that come out of SV and similar places.

Software, computer science, can be your ticket into whatever industry you want, whatever interests you, because it all needs software.

So think about what's interesting to you in the world. Aircraft? Aerospace? Trains? Medicine? Medical devices? Business? Movie making? Publishing? Oppressive scheduling algorithms managing on call jobs in the legal slavery known as retail? Shipping logistics? Law enforcement? Surveillance? Human rights? Gambling?

Man, the world is infinite for all intents and purposes, and you get to participate in any part of it you want. Raise your head up from your tools a bit and look around.

So you've stopped drinking the Kool-Aide ?

I totally agree with you. Technology for the sake of playing with technology gets stale after a while.

The software industry loves re-inventing things and attaching new labels. You are absolutely correct that regardless of what language/paradigm/methodology you use eventually every program results in machine level instructions being executed. In some cases less efficiently than in other cases. It's not about the program, it's about the problem being solved.

Only you can decide, based upon the other comments and preferably after competent medical advice, whether your situation is a case or burn-out, depression, mid-life crisis, etc.

Assuming that it is none of the above, then you might want to consider finding a "real world problem" and using your knowledge and expertise to create a solution for it. If you can't find any worthwhile problems (yet) then go travelling! It will open your eyes to a massive, colourful, complex REAL world out there with its myriad problems. Sooner or later you'll find something you care about enough to want to solve.

Something I also wanted to say. Consider changing your scenery. It might give a boost to your morale and supply you with new and better ideas. Perhaps find a job on another continent for a change.
What you're describing sounds like too much focus on the What instead of the Why.

WHY are you building software? Start with answering that question. Then, do a bit of soul-searching; figure out what truly feels meaningful for you. That's something no one can answer but you. Then go and do it.

If you can't come up with an immediate answer, then start trying different things.

Building a bridge isn't enough. Connecting two communities over an otherwise impassable chasm is.

You almost say it yourself: do something else instead of programming. Maybe you'll want to come back later, maybe not, either way you come out ahead of where you are today.
Do something else for a while and take a good look around you while doing so. What do you see? Things only got worse. Life elsewhere is even more prone to bullshit. There is only one notable difference. Most of them do not even seem to make money! Go figure ...
Study theoretical physics, this is exactly how I felt in my mid-twenties and what I did, once you get bored of that try philosophy.
Assuming you have some money saved up, go on amazon, buy some books, anything you really like that isn't tech; philosophy, history, literature, music theory, whatever makes you tick. Find a job far away (figuratively) from a computer screen. Manual labor, crewing on someone's yacht, working at a ranch, being a ski instructor, (preferably not something like fast food). But take some time off. Write code for what you want to write code for. Sounds like you could put your head up from under the surface of the tech industry and get a breath of fresh air, this field can be an echo chamber and its easy to start drowning in it. It sounds like you see the forest for the trees and a break could give you some time to reflect on that.
I have no experience and dont fancy myself to be capable of giving life advice, but I think the manual jobs you mentioned "crewing on someone's yacht, working at a ranch, being a ski instructor" are based on some glamor you associate with those jobs. After some time you will come to know the unglamorous aspects of those jobs and you will be back to square one. For example, a few days back I read an article by an airline pilot who was fed up with the politics and other administrative tasks that come with the job. Even though I am not brave enough to practice it myself, I feel the way out would be to take a job with no glamour whatsoever with the attitude that you can come out of it if you wanted to anytime.
Well, perhaps after he realizes how other jobs are even more boring and tiring, he would suddenly find software engineering enjoyable again?
Try diving deeper into real CS, there is the entire world of things that can revive your passion. If you mainly were focused on building CRUD apps and websites it's not surprising to get bored and burned out. Get out of your typical routines and try finding challenging stuff to do. Some ideas:

* Figure out how to write AI for games. A simple example would be, how to write a bot that finds shortest path out of labyrinth.

* Check out graphics programming

* Try to see if low-level programming is for you: kernel level, GPU, OS

* Check out infosec industry, there should be a lot of fun there: malware analysis, penetration testing, etc

* Machine Learning: tons of coolest stuff. predicting, classifying, reinforcement learning, neural networks. Check out Kaggle machine learning competitions.

* Checkout competitive programming sites. My personal favorite is hackerrank.com, but other popular ones are topcoder.com, codechef.com, codeforces.com. Try doing challenges for a couple of weeks you may find that you learnt as much as you previously learned in a year. Also through it you may get interested in particular algorithms and fields.

* Distributed programming, system engineering. How to build systems at scale? How to process tons of data in parallel.

If you don't seek for the new challenging things to do that could improve you, then you will find boredom and burn out in any field.

I strongly second this. I started out doing software development for desktop, user-mode Windows specifically, and diving in deeper (embedded) and into true CS has only made me more excited for software.
Any of these are fine... but don't shy away from activities that aren't "pure software": Play with hardware (robots!), learn to weld, go play tennis, go scuba diving.

Along the way, you might find {activities, collaborators, products, ideas} that get you really excited. And since it's not "pure software" there will almost certainly be lots of opportunities to have a major impact! Software is eating the world, and almost every "non-pure software" activity is hurting for good programmer help.

Hi beambot!

That's great! Many of us have done the other way: approaching programming via robots. If you are tired on programming, do something that moves AFK: create a robot. You can start from small. There are hundreds of people sharing their insights so you can learn fast and do your own. Try here: letsmakerobots.com

Francisco

Indeed, i agree. (I have a PhD in robotics... See profile.)
Well said. Computer Science encompasses so many things, and the things you're fed up about (elitism in the community) make up just a small part of the territory. Ignore this, and take some time to explore other projects/technologies, like the ones suggested above. You'll no doubt find something that interests and excites you.

The wonderful thing about our line of work, especially these days, is that it's so easy to find projects, learn about them and participate. It just takes time and perseverance :).

I used to love low-level graphics programming (drawing polygons, fractals), closely worked with people doing kernel stuff, have a CS degree in Machine learning, doing infosec for fun and have dealt with quite a bit of distributed/system/database stuff to scale.

After some time, these challenging stuff have the same problem, being mundane. Specially constraint of work environment and people you have to deal with. Plus some of the "coolest stuff" just blows up with overfitting and seems to be a mere hype to me.

How does someone like John Carmack continue to find passionate areas of interest for himself? He's still painting pixels on a screen, but he seems to continue to explore parts of his programming palette that excite him -- most recently, Occulus Rift. If you are truly not feeling inspired for anything programmatic, maybe it's best to take some time off and wait for new inspiration to strike.
He also answers to nobody. If you want to escape the constraint of the work environment, you have to found your own company or go freelance.
An Ode to "CRUD" Apps:

There's nothing unexciting or less complicated or challenging about producing good CRUD [sic] applications.

I don't understand the industry cynicism towards producing good quality "bread and butter" software for any vertical market.

It takes years of experience to learn good (relational) data modeling.

It takes years of dedicated attention to assemble tried, tested and efficient user interface designs that your user community loves to use on a daily basis. User interface design (and yes, we are talking about your "boring" invoice capture screens here) may seem easy at first glance to be dismissed as unexciting, but almost every real world example is a challenge that requires creative thinking. Many are implemented badly.

It takes hard knocks experience to add gems of strategies to your repertoire of "boring" reporting solutions. Producing industrial volumes "TPS reports" may sound boring, but architecting reliable and efficient reporting solutions is hardly easy.

Another challenge of the "1 inch deep and 1 mile wide" mental specter associated with "CRUD" apps is managing the challenge of excatly that - the 1 mile wide sprawl. Each CRUD app may be simple and boring on its own, but how do you manage several of them on one site such that each one not only operates efficiently with its own specialisation but also as an integrated whole with others? These are not simple or by any means boring.

I love CRUD apps. I love seeing different CRUD apps in specialised domains and how similar concepts of the CRUD world manage to solve specialised needs of a particular niche.

Fascinating.

:-)

>architecting reliable and efficient reporting solutions is hardly easy.

A billion times this! In retrospect, it's kind of funny that at my previous engagement, I was doing things which were kind of unusual to me and yet I was feeling bored and depressed. Now I'm back squarely in the CRUD world and learning so much. It's one thing to write applications that perform these tasks, it's a whole other ballgame to make those applications performant, scalable, and a delight to interact with.

I think what bothers programmers is that creation of CRUD apps seem like something that could be automated/abstracted. And it partly has been, which is why so many freelance jobs involving Wordpress, Magento, Salesforce, etc.
CRUD apps are to programmers what walls are to carpenters. There may be an artistry to making good walls and there are lots of ways the task can be made challenging. But, 99% of the time, the customer doesn't care about the artistry that you put into the wall. They just want the damned thing up as fast and as cheaply as humanly possible. I think that might be where the root of the OP's boredom comes from. Doing the same (relatively) low skill task over and over for years would make anybody bored.
If we were to use the wall analogy, I'd put it this way: the customer should care about the structural integrity of the wall, how much load-bearing weight it can carry, or whether extensions can be added easily to it etc.

So while getting "the damn thing up" may be the burning expectation in everyone who isn't making the wall, the wall maker knows the consequences of poor work and it is his responsibility to educate folks who depend on said wall.

> User interface design (and yes, we are talking about your "boring" invoice capture screens here) may seem easy at first glance to be dismissed as unexciting, but almost every real world example is a challenge that requires creative thinking.

But how does this tie in with the manager who says 'it's just an invoice screen, why are you taking so long' probably based on the mentality that $ revenue is proportional to # features.

Wrong question, how does a bad manager getting in your way tie in with building well-designed quality CRUD applications?

Obviously the problem here is the manager, not the fact that you want to write and build quality work. Especially if they run on flawed assumptions such as "the mentality that $ revenue is proportional to # features".

You can't build quality under shitty management like that.

There's markets and jobs for both types: some desire cheap & shitty, others are willing to pay premium for solid, beautiful & well-designed.

Fair enough. This sort of standoff with pointy-haired managers is always politically tricky. You have to show the manager that there is business value in creating effective and efficient user interfaces and that "getting it right" ultimately saves money. If you are developing software for high-volume capture, your manager will understand that doing it correctly is the main feature.

Also, I've noticed many end users are not confident to comment on what they believe is an inefficient interface. So, problems with user interfaces are not spoken openly unless the interface completely blocks the user from completing his/her task. It takes some amount of permission-giving from the developer's side to get valuable feedback that would otherwise not be spoken about.

Unfortunately in the enterprise, the purchasing decision maker is usually not the user, and may not even use the invoice screen before deciding to buy. So in the short-medium term it is not in the interested of the business to make it awesome. In the long term ... maybe.

The exception to this is in situations where the market is being disrupted. For example when the iPhone 3g came out it just made any other hard-to-use smart phone look like shit. And thus the competition was forced to catch up.

However in enterprisey applications we are a long way off that. The awesome invoice screen may add value to the customer, but not much if none of that will be captured by the provider of the software.

Unless a certain class of invoice screen is on the list of must-have things the buyers must have, because it is a particular pain point. In which case you will be told by the pointy haired boss to make it awesome, it won't be your choice as the developer.

Damn I sound cynical!

Your point about users is spot on, and we have all been such users. I mean you have used MS Word ... right? And often at work we have to use such applications. We just push on through. Users that are not programmers may not even know to question it, they assume that is the way it is unless they have used a competing product.

I've experienced this earlier and try not to read too much into it. Keep building things the way you want to build it and ignore people trying to introduce politics (trying to please as many people as possible and shitting on existing and tried solutions). Ignore it! Channel it into something positive, create something. That's all I care about, solving real world problems and creating my take on it. March forward comrade.
Why do you care what is going on in the industry? Why don't you focus on you, and enjoy software development on a personal level? I personally don't think you are seeing things correctly.

Learn what you want to, work on what you want to. Tackle the difficult problems. We still have very difficult problems in this industry. I suspect you are not challenging yourself enough and that's why you are getting bored.

I agree, OP seems way to concerned with what other people are doing. My question is, what does _he_ want to do? Forget about keeping up with the joneses, find a cave somewhere and don't come out until you built something.
The thing is you always have to deal with people, it's a team effort in the end. After a certain point, you get sick of even trying to state your opinion because people so avidly follow a certain book/someone/language/OS/paradigm and everything else is secondary.
"Having to deal with people" is not limited to the software industry.
I've found that it's usually not the task at hand but the people you have to work with

A lot of programmers as generally assholes for whatever reason

I got to the same point a few years back.. so I quit my job, sold all my stuff and drove a $6000 Jeep Wrangler from Alaska to Argentina for 2 years. [1]

I've just been back at a desk for 4 years, but am again burnt out so now I quit again, and I'm driving around Africa for 2 years starting in a couple of months.

Get out and live, I say!

[1] theroadchoseme.com

Pretty cool. Btw, how was your feeling when you spent your money for this? (Given the fact that those are your money you get from your job)
I've never been happier to spend money in my life!

I honestly felt like I was spending money to live, rather than to die slowly by going to work.

I spent roughly $1200 a month on the trip [1], and prior to leaving, simply to go to work every day in Calgary I was spending that much monthly. So it really was a great feeling to be spending no more money, but to be really alive every day.

[1] Full breakdown - http://theroadchoseme.com/the-price-of-adventure

I feel exactly the same way, and yet I don't feel the same way. I've been programming since I was 12. Professionally for about 16 years. I'm 37.

Life is bigger than your job or your immediate interests. Take a break. Travel. Challenge yourself. Break out of the circle that you don't like and find something else, even if it's just for a short while. That's what I usually do. At the very least you'll find something else to rant about, and maybe eventually realize that things could be much worse.

You've not burned out, you've matured as a programmer. You can see all the crap for what it is so now try and make a difference...

Champion the cause of code that's legible - and that doesn't mean covering it in syntactic sugar. Legible code makes it damn obvious what it does and how it does it. Sometime find the "power take off" for a tractor ... that's what you're trying to do.

You can also champion the cause of not fixing that which is broken. There is also fun to be had demonstrating the technical debt is real debt and it does need to be paid back.

Much fun introducing peer review, too.

Get yourself, your team or whatever to sit next to your damn customer. Have them look at what you're doing at least once a day so they can say "oh, no, not like that" before it turns into a $100k fuckup.

So, yeah, you've just got through to the next level. It's not the software that's the challenge, it's the people.

"Get yourself, your team or whatever to sit next to your damn customer."

Well said. The customer is the final and only arbiter on our disagreements about tech tool choice, style and architecture. In front of the customer, all our internal arguments look and sound like those of immature, spoilt and unfocused professionals.

Add to that that many IT professionals dislike getting advice/input from non-techs and you see why we have so many broken systems out there.

I agree. You need to take it to the next level, and don't just consider software and coding projects. We all love to hate on 'management' in companies of all sizes, but the world would be a better place for all of us if managers had your deep technical expertise. You'll be of more value to the company architecting the solution (or preventing the next $100k screwup), and matching people to the right places, than you were coding.
Technology isn't an end, just a mean to accomplish some things. If you focus your life on tech because that's where the money is, it should be no surprise that it's boring you. Find something you really want in life, maybe it has nothing to do with tech.