After working (mostly) as a backend developer since 2013, I was recently burned (or bored?) out a bit, quit my job and went on a sabbatical for half a year. Now I need to start looking for a new job. However, I'm not sure how to find something that feels more meaningful and intellectually stimulating to me.
I enjoy programming and also maths, but I found most of the jobs I had before not intellectually challenging in the ways that mattered to me. I'm someone who really likes doing deep dives into a topic and thinking carefully about problems and to me it feels as if the industry isn't rewarding that most of the time - instead, you have to work with 20 different technologies, most of which you barely understand and you never get enough time to really become an expert in anything, and requirements are changing so often that designing an overall architecture of your system seems like an exercise in futility (and is often ridiculed, maybe rightfully so given the constraints).
The best job I had was when I worked on a mathematical problem solver for two years. It was something I have never done before or since, it was very challenging (and rewarding), given that it was something very few other people were doing, and I had a great team full of very smart people. Unfortunately, we were all let go in the end. I'm still not sure whether that was just a once in a lifetime opportunity or whether there is a change that I could find something similarly challenging (and off the beaten track).
When I quit, my boss told me that I would maybe be happier in an R&D type of job. I'm just not sure how to find such jobs, given that I don't have a PhD in anything (I merely have a BSc in mathematics and a MA in a totally unrelated field). Another idea of mine would be to look for a job in a typed FP language (like Haskell, Scala, etc.), as I feel that the engineering culture could be a better fit (and I do enjoy type systems and FP languages), but I guess these jobs are also few and far between (I'm also in Europe with no intention to relocate, which might affect the number of open positions significantly).
I'm aware that I'm in a privileged position as a developer, and of course, if push comes to shove I'll just take a "regular" dev job (and maybe work on an attitude adjustment?). But I feel as if I should at least try to see what's out there.
I'm looking for opinions of people who have felt similarly. What did you end up doing?
I’ve also been unemployed longer than I wanted to twice and had to swallow my pride and work on someone’s legacy to pay the bills. Switching the rockstar mentality with more humility and a sense that I’ve been very lucky was important.
Sounds like you could find a Scala job or a Rust job in your capital. They’re less rare than Haskell jobs.
As for advice: get obsessed, get good at something, don’t wait for people to pay you to excel at the tools you eventually want to master. I toyed around with Haskell for 10 years in my spare time before using it in production.
Speaking from experience, the much reviled FAANGs have ample depth and reward correct solutions.
So what you need to do is start looking for big problems. Not big problems that are only seen by developers, but big problems that are seen by the general public. People will pay for solutions. You will be motivated by solutions, something that you need to research the hell out of. Something you need to make connections that no one else has made before to solve. That's it
You can’t imagine how abundant are boring projects and products made of scala :)
This is not about language or current hype.
Hard to say with confidence because of very scarce signals, but probably you want to find a job with 2 features: 1. Very early stage of a software 2. Very ambitious software itself (like a new db on a competitive market, new game engine)
Most of the “boring” jobs are not about developing the software per se, but rather about _using_ (wiring up, cobbling up, tuning, integrating) pieces of existing software to shove data around.
That what makes it boring in a nutshell - lack of the aha moment of creating something new.
Why? You're a 21st century plumber without union protection. Sort out your company's plumbing, then do wtf you want on your own time.
Have you looked into shops that use Haskell? I know some trading firms use lispy languages and some game studios (Naughty Dog?) also use them. But I could be wrong.
I'm actually just starting my own company using Haskell so I can think deeply about what I want while making the product how I want.
1. Dod labs and defense contractors are great places to dive into topics pending you are inexpensive. You will likely be paired with other people who can sit and thinking deeply with you. As you progress though, you will be pushed into management, forced to being in money, and pulled many ways preventing your deep thinking. This is when most good scientists leave.
2. Be confident in your job search about what you are looking for. Don't be afraid to say you want 85% deep technical work and 15% reporting to stakeholders. This will be polarizing to a lot of employers but those who want you will quickly scoop you up when u get connected to them.
3. The market is terrible for r and d right now across almost all sectors. Most r and d labs are looking 3-6 months out which means they want people qoth a specific background to build prototypes amd fail quickly. This will be existing scientists in the company but rarely any new hires. i interviewed at Amazon and found this to be the case as an example (I turned down the role).
4. Wait until the market improves but keep looking while doing item 2.
Good luck.
One approach: Pick something that was at the time 'state of the art' and envision what would constitute 'state of the art' today. 1800's good for steam punk approach. Describe what existed at the time of 'original state of the art' and how that changed to current state of the art aka standards, techniques (black smith to all digital chip/embedded laser scan). Learn quite a bit about how things came to be & underlying abstractions/standards that 'simpify'/'unify' things.
Keep open mind about Alexander Fleming approach to 'bugs' in an experiment. (did that old ME design bug faithfully get replicationed in the software, intentionally or unintentionally?)
###
** 1800's telegraph engineer solution to needing multiple telgraph wires vs. current version of usb
1800's fax : https://www.damninteresting.com/curio/the-fax-machines-of-the-1800s/
### ** K&R C vs. Published C standards (iso or otherwise) always fun way to find intersting things to explore (applied to hardware or not hardware applied).
** RFC's bit less 'wordy'.
### ** awk progam(s) to use/interpret BNF in real time to provide "modern" constructs for awk programming. (or impliment way to read/interpret lambda expressions in awk to extend awk)
** ( as a learning tool/approach a scaled/toy awk scripted version of dbos )
dbos : https://www.google.com/search?client=firefox-b-1-d&q=dbos
### ** Nipkow mechanical tv 1920's vs. python/pi implimentation! (or Philo Farnsworth's take)
mechanical tv : https://www.youtube.com/watch?v=R-wbfP1pmVw
Farnsworth : https://en.wikipedia.org/wiki/Philo_Farnsworth
### ** foucault's measurements vs. LIGO vs. Fizeau Apparatus
https://en.wikipedia.org/wiki/Foucault%27s_measurements_of_the_speed_of_light
measuring speed of light : https://www.youtube.com/watch?v=R-wbfP1pmVw
LIGO : https://en.wikipedia.org/wiki/LIGO
Fizeau Apparatus : https://www.youtube.com/watch?v=YMO9uUsjXaI
### ** MUMPS vs. current 'concurrent' databases (postgres).
MUMPS : https://en.wikipedia.org/wiki/MUMPS
###How to loop in a loopless language might be useful for going from "spinning disks" to 'trees' : https://www.youtube.com/watch?v=qzsxO79zxS8