I entered adulthood with severe anxiety, stress and depression. I got a job as a software engineer and it was difficult in the beginning. I did not know what I was doing and I was paralyzed by every decision I needed to make. Second-guessing everything. I also had none of what people call "discipline" (to be frank, I still don't).
I have had a successful career, but it's not because I'm perfect. I make sloppy mistakes and mess up. It happens. For anything important, I do many-many passes over it.
What has helped me a lot is to become a "ticket-guy". Everything gets ticketed and I work on tickets. One or two tickets at any point in time, max. I document everything in the ticket. Once a manager looked at my ticket during a meeting, saw my comments under my own ticket, and made a joke about me talking to myself :D.
It keeps me on track. Sometimes people want me to do extra things and I can point them to my ticket and ask what's higher priority.
Find simple things that help. Communicate to people what they want you to communicate, even if it feels unnecessary.
It's a learnable skill. You're saying that you shouldn't even try to acquire it.
I came into adulthood with insane levels of anxiety, stress (self-induced), depression (and eventually mania) - due to my childhood home life.
Making decisions early on in my career as an engineer was difficult for me. Due to my low self-esteem, I thought I was a complete moron (well, I still believe I am, but in a healthy way) and all my decisions were going to be completely wrong. So I chewed through them continually, which was unhealthy.
Not an issue anymore. I got more confidence over time and worked on my issues. You learn the skills you need to do the job. I would never tell someone that they shouldn't even try, just because they got a bad hand dealt to them at some point in their life. Fuck it, try it. If it's so bad that you completely buckle, then maybe it indeed isn't for you. However, you might be able to bear the storm for a bit and eventually turn into a better engineer for it.
5-10 years ago, I would have said to take the job, if you want to maximize the number in your bank account.
Today, assuming you have no pressure to start working, I'd suggest Cambridge. Due to AI, much is in flux in software engineering today and I don't think you lose anything by waiting a bit to see where the chips fall _and_ getting some valuable credentials in the meantime. Get experience with something that will be valuable in the AI business in the coming years.
I have it on good authority that Putin woke up, took a big fart (the housemaid was surprised), thought the smell was an Ukrainian attack and decided to retaliate. That's how the war started.
This reminded me of my own story, when I was 15 and had phimosis. I was embarrassed to talk about it with anyone, so in my desperation I posted about it on a forum that claimed to help kids in need of help. Someone responded and gave me instructions that they claimed had a high success rate at treating the condition.
I followed the instructions for a few months and it fixed it. I went back and sent the biggest thanks to the responder. I did not expect to get any help from a random forum.
There has to be swathes of kids struggling with "embarrassing" (in quotes, because they actually aren't embarrassing at all) issues like this. I hope today's internet can provide help to the ones that have nobody to discuss them with.
Start small, with things that don't require any preparation or commitment. Go walk a bit, aimlessly. It's a difficult time for you and you might simply need to back off for a bit. Eat well, sleep, exercise.
Definitely avoid any social media, youtube, etc. I'd suggest to limit your screen usage to just your work-life. You do not want to compare yourself with people who are not in your position. Spending time on the internet is not fulfulling.
Once you have a healthy daily routine down (which you might have already), a lifehack is to challenge yourself to get good at something that you would never have imagined yourself doing. The idea is that you will fill your head with thoughts about how to improve, rather than thinking about other things which might be too much to process right now. This is why the "start lifting" suggestions work. You don't have to lift, but simply set some random goal. Avoid trying to achieve some big ambition that you've always had.
Once you're on this path, with time you will recalibrate. It seems you are a social person and I bet you will find other people to connect with.
From my own experience, switching from a remote job to an in-office job helped when I felt too isolated. The job market is tough (from what I've heard), so you can check if you could join a coworking space or simply go to the local library to work. I've had friends that are happy to just work together in the same space.
The point of my response is not to tell you "how to be alone", but helpful advice if you want to make changes to your life, if you are unsatisfied with it. If you are unhappy, you could fill all your time thinking about how unhappy you are. It's not helpful, though. For now, find ways to fill your time, and while you do that, I truly believe you will find your footing again.
I review PRs daily and people are pushing changes that have basic problems, not to talk about more serious flaws. The amount of code an engineer can produce is higher, but it's also less thought through.
There will be more code with lower quality. If you want to be valued for your expertise, you need to find niches where quality has to stay high. In a lot of the SaaS-world, most products do not require perfection, so more slop is acceptable.
Or you can accept the slop, grind out however more years you need to retire, and in the meanwhile find some new passion.
I've taken mental health leave (not due to a PIP) and my productivity before and after was significantly different. It was great for my employer that I took it. I'm quite sure I would've eventually ended up with a PIP if I hadn't taken it sooner myself, and the best remedy on a PIP would have been to take mental health leave. Not as a strategy as such, but literally because it would have been the best solution (and I think the only one).
Remember what? That people have different preferences, workflows and methods of staying productive?
Someone voiced that they liked a certain tool for a certain feature and suddenly we are judging them for it? I like that people share their thoughts and opinions.
Central to it being that you consider it unjust. The other option is to take into consideration the perspective of the maintainers, find their feedback to be just and then decide whether you want to contribute in the manner that they expect or you're not ready to do that kind of work.
You don't have to stop loving a project just because you're not ready to put in the work that the maintainers expect you to put in.
When I open a PR without discussing it at all beforehand with anyone, I expect the default to be that it gets rejected. It's fine by me, because it's simply easier for me to open a PR and have it be rejected than to find the people I need to talk to and then get them all onboard. I accounted for that risk when I chose the path I took.
Within the past 2 months, as I've started to use AI more, I've had this trajectory:
1. only using AI for small things, very impressed by it
2. giving AI bigger tasks and figuring out how to use it well for those bigger tasks
3. full-agentic mode where AI just does its thing and I review the code at the end
4. realising that I still need to think through all the code and that AI is not the shortcut I was hoping it to be (e.g. where I can give it a high-level plan and be reasonably satisfied with the final code)
5. going back to giving AI small tasks
I've found AI is very useful for research, proof-of-concepts and throwaway code of "this works, but is completely unacceptable in production". It's work I tend to do anyway before I start tackling the final solution.
Big-picture coding is in my hands, but AI is good at filling in the logic for functions and helping out with other small things.
You can get comfortable with it in 5-10min and after that you will slowly discover that it does absolutely everything you could wish for.
Today I'd honestly suggest to skip learning about git altogether (besides the basics, like branching, staging etc) and just start using lazygit immediately.
I've seen people claim that having a clean git commit history is not worth the time, it takes too long to have it nice etc, opting to just stuff their refactor, renaming and new feature changes into one commit. With lazygit I spend a few extra minutes a day to make it nice and I've gotten compliments for it from others when they review my PRs, because it makes the review much easier.
It feels validating that other people have a similar experience. I simply can't take in that much information. It eventually starts making me feel terrible.
The big issue is that I'm not very good at moderating my intake. I'm a crack addict for information and one small dose will turn into a bender.
My grandparents had a hunting dog. She did not care about "play-time" at all. On the other hand, she got excited when she heard "forest" or "rabbit". Had to be careful with those words.
I think when she wasn't in the forest, she was just waiting to go there again. Instead of ball, it was forest.
I have had a successful career, but it's not because I'm perfect. I make sloppy mistakes and mess up. It happens. For anything important, I do many-many passes over it.
What has helped me a lot is to become a "ticket-guy". Everything gets ticketed and I work on tickets. One or two tickets at any point in time, max. I document everything in the ticket. Once a manager looked at my ticket during a meeting, saw my comments under my own ticket, and made a joke about me talking to myself :D.
It keeps me on track. Sometimes people want me to do extra things and I can point them to my ticket and ask what's higher priority.
Find simple things that help. Communicate to people what they want you to communicate, even if it feels unnecessary.