Sorry for the burner account.
I have to figure out what to do with my life right now. I really enjoy programming, and honestly, of any kind. Haven’t really found a kind of developing I dislike yet. I have been doing stuff for around 4-5 years by now, so I have confidence that I’m a good programmer, with the huge caveats that I’ve never finished any presentable project and I’ve never done anything with a team, I’ve only done solo stuff.
It seems like the logical thing to pick for a job. However, I’ve heard experiences of people with programming jobs and CS degrees that they’re absolute hell to be in. Super long work days, absurd deadlines, crunch, and that doing a CS degree means you have absolutely zero time for anything else in your life.
Having a life like that really scares me. I’m not really a strong, disciplined person. I know I can’t handle living like that. I’m scared I’ll just realize I want to quit and end up having wasted years of money and work on a degree I don’t want to use for anything - and that’s even assuming CS college isn’t that awful.
My biggest dream is doing indie game development, and it has always been that since I was a little kid, but I know that’s not a safe prospect for a reliable living wage. At the same time, abandoning that dream completely would make me feel awful. So I NEED to have time to work on my own stuff.
I wouldn’t go to a CS degree purely for more job opportunities, I’m sure there’s a lot of things I’d be able to learn in one that I need. I just don’t want to end up living just to work. I’m really only going off on rumours and experiences of other people I know though - and I don’t have much of a chance of visiting a campus or talking to professors. Because of life reasons it’d have to be abroad and I’d have to do at least the first year online.
So… yeah. I’d appreciate hearing some experiences in CS degrees and in programming jobs. Is it really that bad time-wise? Is it something enjoyable?
These are moon sized caveats.
If you can’t work with a team, you’re not going to make it.
No one likes the guy who goes off on his own for four days and comes back with a massive pull request to review. Especially if it’s full of idiosyncrasies, doesn’t follow the team’s standards, and doesn’t actually meet the requirements because the guy didn’t talk to anyone. That person is often a net negative for the team because the rest of us have to spend so much time bringing them in line with everybody else. Don’t be that guy.
I think it’s like a rookie developer rite of passage to go and make a huge, unsolicited, change request to the code and then having it get rejected. Get buy in from the team before you do stuff like that.
Also don’t be the guy that never finishes anything at work. Management is going to expect you too finish the work you agree to finish. So is your team. If they ask you to add a date filter to the project page and you didn’t finish it because you decided it would be cool to rewrite some build scripts from bash to node (which no one told you to do), you’re not going to make friends.
Do what you want in your personal time, but working professionally means having standards.
Oh, and you’ll probably have to write automated tests. I mean, a lot of software jobs are trash and have trash testing practices, but many are good. “Trust me bro” isn’t usually good enough for a PR approval.
Hopefully you’ll quickly figure out how to work with a team.
As for your main question, I don’t typical work long hours, and the work is generally enjoyable. The pay is good.