I thoroughly enjoyed it in my 20s. I was fascinated by code and prolific. Now I struggle to just motivate myself to get through a workday.
I don't know why, precisely. Maybe I'm just bored with it. Maybe I just hate the direction it's all gone. Gone are the days of just a shell and vim. Now it's all yaml, dockerfiles, scrum meetings, ERDs ,et cetera. It kinda feels like too many weasels got their hands in the pot.
I don't know what's next, if anything. I can probably ride it out another 15 or 20 years and retire. But I hope I find some calling that pays maybe 60% as well. Guess time will tell.
Oh no, I'm in my twenties and already begin to feel like that. I still like working on code and business problems, but there seems to be too much unnecessary stuff around it.
I like it when things are lean and agile: Build the Monolith, rsync/git deploy to server, restart with Systemd.
Now it's all Scrum + Microservices in Docker and everything takes ages.
I remember being able to run PRD elevations putty'd in to the servers (from the internal network). No more.
I miss shell too. I have setup a new challenge for myself, transition to shell + vim (neovim?) for all my dev work. The goal is to eventually use iPad + Blink shell and work off a VPS for personal projects. And stay in iTerm on work laptop.
Probably use Docker to make VPS reproducible or may just use a shell script to download and configure various softwares.
VSCode has spoiled me, control + click to browse to any class is just so hard to give up. But I am excited about going back to how I started with programming. This project has brought a lot of joy to my everyday work too.
I was at this point with my last job (and the job before that... and the job before that...) and finally found a "cool hip" startup where we're doing something fun and exciting that's more "app-like" and less CRUD. Worth a shot trying to find somewhere different that could still use your skills!
> But sometimes the bugs are ones that I introduced, so anyone who has worked in this business long enough knows it weighs on you a bit to be the cause of a problem.
Classic joke that I heard is that the average tenure at a tech company is 16 months, because that's how long it takes for the code you wrote on your first day to come back and bite you in the ass :)
I try and take every bug that I introduce as a learning opportunity. I'd like to say I introduce less bugs now than I did a decade ago, but that's definitely not the case.
> I tried to get into strongly typed functional programming a bit, but realised after a couple of years doing Haskell that it just swaps one set of problems for another.
I agree with this... they are niche and have their place, but I don't particularly enjoy writing in them.
> I've always liked games, currently trying to do a late career change into gaming. I think I just need to believe in the underlying product, then I can put up with the pain. Pay is dreadful though.
Not only the pay, but the hours are often horrible and you have to deal with the worst people on Earth... gamers. I don't think it's possible to release a game these days without facing heavy criticism no matter what you do. Maybe if you're just a small cog in a big machine, you'd be insulated from it, but then you don't have any autonomy.
> Getting a new job now is quite time consuming, you need to solve riddles online while someone watches.
Tech hiring is broken. No matter how bad a job I'm at gets, the dread of having to do interviews usually keeps me at it for a year or so more than I normally would have stayed.
> I think the market is going to become quite illiquid, maybe salaries will go up?
You think this even with the massive layoffs going around at all the big tech companies? I'm thankful to still have a cushy, high-paying job right now and I'm saving every penny I can. I have a feeling that the next few years are going to be really rough for everybody.
Would love to know what problems you encountered that are intrinsic to Haskell.
I got it by sheer luck after a stupid relentless gauntlet of interviews and happening to find one that worked out for no particular reason.
The spark is definitely gone for JavaScript or frontend related anything. I still enjoy learning new things that make a substantial difference in productivity or performance, but I've learned through numerous burnouts that it's just tech and things basically don't matter as much as you'd like to think.
My first co-op was gotten through my University's internal job board, and my first "real job" after graduating came from a part-time internship I took one semester.
I still love the actual development part of my job -- being pointed at a problem, mapping out a solution, and then actually getting into flow to solve it (and I'm damn good at it too).
It's all the other stuff that has started to wear on me (currently a tech lead at a small startup). The planning, the estimates, the never ending negotiations for trying to get more in without adjusting timelines. The recruiting, the dealing with unmotivated reports... and did I mention estimates / planning?
Going to stick it out a little longer, but at this point I think I was meant to stay at the senior engineer level at a laid back company.
How I got my job: I was an average student in college and can't interview. I've actually never gotten a job I've applied for, but I digress.
I emailed everyone in my home state for a job because I thought I wanted to live there when I was through with school. I lived in a small oil producing state, not a Texas. Long story short, I ended up emailing the lobbyist for the local coal council asking if he knew anyone in the o&g industry in my state and that I was a young college kid looking for an internship. He hooked me up with a local company and I got an internship, and ended up doing simulation and chemical research that universities love. Went back to college and networked with some professors and research groups there and got on a Department of Energy grant. Built skills / reputation and then went off solo consulting.
All this is to say while I enjoyed "the process" of messing around with computers, figuring things out, and going to engineering school, I don't enjoy it anymore. I hate the office life and looking at a screen all day, and politics and meetings. It's just not for me. I found out I really like turning wrenches and seeing physical things being built. I like "blue collar" work more.
I think I put up with it for as long as I did because I was chasing money. I wanted to save money, but it was also a measuring stick for "let's see how much I can charge and justify my ability."
Not sure if any of this helps or not.
Reason to keep going is the good pay. Earlier it was all good, but now it feels like doing CRUD in one way or another. Not to mention, the work hours are always atrocious. The thing I hate most about is the middle management or leadership who always over promise things and have quite a myopic view of technical aspects of software.
Another thing is the constant bombardment of new tech that one has to keep up with. It's as if there's no downtime and you can't just switch off and get back to your daily life after putting in your regular hours.
Frontend work for a midcap household name. I have a lot of autonomy and am insulated from all the BS that happens at the mid-manager level. My 1 on 1s with my manager usually becomes more of a therapy session for him.
After years of freelancing and nightmarish interviews in the Bay Area, it took a simple conversation with a cool Aussie guy to get the contract. Once on the team everyone saw I could produce so was asked to come on full time. Moved out of CA to AZ. Been almost 3 years now.
I ask because I'm currently working as staff+ and still enjoying what I do. (The '+' part is advising on other teams/groups discussions and proposals.) I spend much more time discussing and advising on designs before implementation or reviews of both designs and implementations. This seems to be a better use of my time than writing as much as I can myself but then still have much designed and written poorly that amounts to piles of 'tech debt' (though not intentionally borrowed) of varying kinds. Also keeping large parts of the current system and future directions in mind when doing all the design/reviews makes things fit better now and down the road when it will need to change to accommodate new requirements. If there's a conceptualization that keeps boundaries between domains cleanly separated there isn't as much friction figuring out how to make more things fit.
I completely agree that moving too far up leads to being hands-off too much and could easily lose touch with what matters now and not what was previously known.
I loved writing proposals, planning them, leading the team on them, and putting larger pieces of the puzzle together. But I couldn't stand having to get in endless arguments with upper management, designers, and other staff level engineers about how to do something. Everybody had an opinion, including me, and there were never any good answers. I chalk a lot of the negativity up to the culture of the company- it wasn't fun and tensions were often very high.
Glad to be back at the senior level, but I do miss having more say over the broader direction that the platform that I'm working on is headed.
The parts that I'm having difficulty with now is that since I produce much less tangible output and if I do my job well, it's avoided a lot of unnecessary work, it's hard to point at exactly what it is I did when it's mostly improving others' output. I've never been one to spend much time/effort on self promotion, but I'll have to start writing up some of my high level understandings and ideas and share them around. As long as there's value to other devs/managers reading it, I'm up for that.
Maybe working at a large company helps. For instance the only time I have to be much concerned about front-end is with API design. And I don't often even speak to upper management as there are many levels so it tends to be more project focused. Maybe it's good to check yourself and carve out boundaries to be concerned about. I myself skip most meta-discussions about process etc, or long term company direction, and focus on doing good back-end designs and implementations.
Good luck on your journey.
I only ever do contracts. Short ones preferably, so that I can have as much time off as I need to recharge. My current one is a part time, 2-3 day week gig with a startup that's building a popular product. It's mostly young kids, so they choose stupid but fun tech to build their thing on, which means there's always lots of fun cutting edge technology to play with. I treat it more as a hobby than a job, so I'm happy if they decide they don't need anything built for half a year
My main income comes from a couple feature complete SaaS products (that are also fun to work on) with enough paying customers to keep the bills paid, built on a sensible, boring, stack so that they don't need my day-to-day attention so that I can spend my days on more important things like bouldering, travel, and family stuff.
But yeah, I couldn't imagine being in this position with any other sort of profession.
The reason I want to switch is because things are "too healthy" right now, I start work at 9/10 finish at 18/19 (lunch hour doesn't count as work here) and then I just leave without a care in the world. I care enough for the business to do my work right, but that's about it.
I want to switch to something that makes me want to stay at work late with the rest of the team. Yeah I know, crazy, but right now it's just so boring that I want to completely switch it around.
Although I'm probably gonna get a pay cut if I switch, the creative industry probably doesn't pay as much as ecommerce. But we'll see.
I've always been more of an explorer than a creator, so picking apart systems to understand their internal workings, and making a living off this, is pretty much my dream job.
I still do some development, like writing tooling, and proof of concept code to demonstrate vulnerabilities, so having that skill in my back pocket really helps there too.
Getting hired was fairly straightforward, I contacted a recruiter who is very well-regarded in this niche. He sorted me out for my last few jobs. Interviews have ranged from basically a chat about previous experience, to being sat down with an assembly code listing and asked to point out any vulnerabilities present in the code.
Can you give any examples of tech stack decisions? Like rejected x in favor of y? (Within reason, I get that you can't divulge company info)
How I got hired - a developer friend needed some help in his job, I've modified some sql queries, he recommended me (a student then) and they hired me.
Software engineer in SF Bay Area for a popular medium size co, mainly front-end recently, Javascript all day.
Recruiter hit me up, interviewed, hired.
It can be very stressful to the brain, sometimes work late in to the night, need to constantly study up on new tech, sharpen skills. It's all worth it. Wouldn't want to work in any other industry except Victoria's Secret model photographer.
I'm a B+ engineer and admire the hell out of brilliant minds who seemingly know all the things naturally. I'm not a great student, takes me a while to learn things, but that's life. I always need more knowledge!
I had a dream gone nightmare when I was between jobs. Recruiter person told me "Ok we'll give you everything you asked for, except... you won't be an engineer." Ahhh!
It massages parts of my brain that are nearly untouched in daily life.
It shifted my hobby projects to get even "lower" level though, which now has a lot of signal processing and electrical engineering, both in the analog (with some RF) and digital (including FPGAs) domain. I am determined to absolutely not let my job creep towards that direction, I want it to stay separate. Fortunately, I'm nowhere near experienced enough for anyone to consider that jump anyway.
By now a relatively long time ago, I was privately talking to a former employee of the company I'm now working at about hobby stuff. He said I seem to enjoy the relevant things, so asked for a CV and referred me. I didn't know where he was working at the time, so this was entirely organic, and got me an internship at first.
I can’t say kernel engineering is exactly what I want to do, but given I only have a bachelor, it sounds like something I can immerse myself in without the existential dread of enterprise software.
If you're dreading enterprise software, kernel engineering is (usually at least) definitely pretty far from that. I would say you have to have a knack for it, since among other things you'll be dealing with problems that, for "higher level" engineering, are usually already solved on some lower layers, and also because debugging is often an exercise in creativity and knowing (and learning, ad-hoc) a meticulous amount of details. Being passionate about that certainly helps. But absolutely try it out for yourself, maybe it's your cup of tea and you just didn't know it yet.
If the question is how to learn kernel development, I would say it probably involves reading some books about modern OSes in general as a primer, reading specs (e.g. the reference manual of the CPU; just like other references you fortunately don't have to read all of it to get started), and reading lots of kernel code (that will be true throughout your entire career). The aforementioned OS kernels also contain documentation that really helps getting into specific areas.
You can most likely find some good lists. I started long enough ago that I have a hard time recommending any specific resources. It was during a time where there were entirely "unmodern" OSs around, such as MS-DOS or OSs on home computers, so my learning involved some transitioning between OS paradigms, mostly going from simpler to more complex. That would not really apply today.
It's also hard to make general recommendations in the first place, because parts of the kernel range from high level, where the jump from userspace programming is not that far, to potentially rather arcane, such as low level memory management or context switching code.
From a glance at your comment history, it's very likely that there's some part of the kernel where you can just jump in, and expand as necessary.
> probably involves reading some books about modern OSes in general as a primer
> I started long enough ago that I have a hard time recommending any specific resources.
Having gotten into kernel programming in the last decade I'd just like to offer a specific recommendation that really helped me out: https://www.amazon.com/Design-Implementation-FreeBSD-Operati...
I started out literally just reading stuff in the source tree/man(9) (which was informative!) but then my employer gave me a copy of this book, and I found it to be a super-helpful aid in understanding the general organization and motivation of the kernel: what kinds of tasks and problems each component needs to address, how components interact with each other, and the basic building blocks by which these things get done. I found that having a higher-level understanding of the what/why of each bit, covering algorithm/data structure details but probably not the exact code implementation, made grasping the actual kernel code a lot easier.
Oh, also: dtrace is a very fun and interactive way of getting a live peek into FreeBSD kernel structures without doing a whole bunch of scary recompilation. You can e.g. start digging around in `curthread->td_proc` on a process you control and you'll discover a whole lot about how the kernel manages processes.
But a software developer job is the least worst kind of this. Among several areas I tried, engineering is the best. Compared to EE / embedded engineering work, a job of a backend software engineer is pretty pampered. It can be hard sometimes, but it's neither soul-crushing, not nerve-wracking, nor a constant race against the clock, and the pay is pretty good.
If I were rich enough to not need to work for money, I'd do much of the stuff I'm currently doing, only in somehow different areas. I think the only thing better than this is when you're directly paid do do you hobby, but it's rare in any area.
Then there's the hypergrowth phase. It's good for the money. But the culture downgrades for both the communication, the engineering, the product. People complain a lot but don't slightly ever make a plan to fix things.
It is tiring to be one of the few who still care.
Senior folks who don't know how to code and ask me to fix their unreadable spaghetti in boring ass business logic... where's the closest cliff??
I absolutely hate my job.