How is studying computer science at college or having a programming job actually like?
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?
Plenty of anecdotes out there, you'll find people with every kind of experience. Don't stress too much, the job itself depends entirely on the team, product, and industry.
I work in a tucked away industry highly specialized in some random sector of manufacturing and service. I've worked at three different companies in the same sector and each was wildly different. In general programming in a professional setting causes a tremendous shift in the way you program no matter where you go.
The things you focus on in a team are: how can I make this code resilient so none of my teammates can screw it up, readable so anyone can understand, and runnable so after every iteration it will function.
Your style conventions and preferred way of programming may have to shift to accommodate working with others. No more super cool but impossible to read functions, no more 70 layer deep polymorphic chains, no more random spacing and inconsistent brackets.
Programming professionally comes in different flavors. Young startups need hard hitting fast develpers who type 150wpm and munch through requests like nothing, leaving a trail of tech debt and bugs behind but getting the product to mvp status. Established companies need methodical, measured programmers who think through the consequences of their actions and write code that will stand the test of time, programmers who don't say "we should just remake the whole thing" every tuesday.
I've been programming professionally for about a decade and can confidently say I would be pleased to stay in the career for the rest of my life. I am not confident that the precise job I have today will even be available in that timeframe because there have been amazing leaps in technology that convert business logic into code, see copilot's new workspace product.
Go for it, if you find a business that feels like a bad fit move on. Plenty of businesses are itching for competent developers.
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.
These shitty teams exist, but they're not the norm.
They are the norm in certain sexy industries like game development. It's pretty easy to pick something unsexy like waste hauling logistics (which is secretly even more fun than game dev - but don't tell anyone, or everyone will want to do it.)
Ask "what does your typical workday look like?" and "what are your typical daily start and end times?" during the job interview. Only shithead bosses will be bothered by the question.
Many bosses will take every hour they can get until their staff tell them 'no'.
So learn to say "I have plans I can't cancel."
A perfectly good reason to be unable to cancel a weekend plan is "I don't want to cancel my weekend plan."
Beware that your desire to do weekend hobby coding will probably die out for a few years and then come back. That's pretty normal. In my opinion, it's worth it.
Source: I've been coding professionally for decades, and I hire top developer talent. The talent I hire make and keep weekend plans. Sometimes they very politely tell me where I can stick my request for more of their time or focus.
These shitty teams exist, but they're not the norm.
I'd counter this a little bit with "it depends on the industry." The overwhelming majority of games studios are going to operate in the way he's worried. So will most of fin-tech.
The average software job, I agree, though. Work/life balance has become a big buzzword in the industry, and it's still a decent market for new devs, though def on a downturn atm.
I'd counter this a little bit with "it depends on the industry." The overwhelming majority of games studios are going to operate in the way he's worried. So will most of fin-tech.
I went to a top rated engineering school in the US and found the CS program easy. It helped that I enjoyed most of my classes, and that had been teaching myself for years before I got there. I had plenty of free time to spend with friends or whatever else.
While I've certainly had jobs that demanded long hours, I've had others that are more reasonable, and with good pay. It's more possible now to find a good paying job with good work/life balance than when I started working over 20 years ago.
Don't let the negative people scare you away from school or the industry. Ultimately your experience will be your own. If you find that the path you're on isn't working for you, just do something else!
I've been a professional programmer for 10 years. While it's possible to moonlight an indie game, it would absolutely consume your life. Hell, even if you do that full time, it's such a time consuming process you might still feel overworked.
People are saying that their CS Degree took all their time? That's not my experience at all. My experience is different from most as i failed out of school the first time because i was broke and had to choose between work and attending classes. Being able to feed and house myself won out. I went back to school at age 29 years old to get my degree, though.
I was a full time student, managed to schedule my classes to fall largely on 3 days a week, was able to attend most of the lectures remotely, had a job the entire time, and used the weekends to get all my homework done. It takes time, but I still played video games sometimes, went to the movies, had time with my wife and family, etc.
Now the bigger question is the value of a CS degree for you. I agree that you'll likely learn some new things you don't pick up from just learning to code on your own. But what of that is truly practical to your ambitions to independently develop games is probably minimal, if it matters at all. It's not only a big time sink, but a money sink. If you're not going to use the degree for employment, and the theory and math you'd learn in for you degree isn't going to apply to what you want to do, I'd not recommend the investment.
If anything, spend a few weeks is a coding bootcamp, save years of your time and thousands of your dollars, and they'll cover your bases on what you need to know for practical programming. I'm a data engineer and many of my peers have unrelated degrees but just went through a boot camp to learn to code. But honestly, if you've been coding projects for 5 years, I doubt they're going to teach you anything profoundly new either. Neither a degree nor a boot camp ever teaches you everything you need for any given job or project anyway. There's always going to be more to learn as you do. When it comes to programming, experience, practice and willingness to learn are the most valuable things to have. Just make sure you learn and follow best practices and internalize some software engineering principles. They will save you time and effort in the long run.
Edit: Also, the amount of pressure and crunch you experience will differ from employer to employer. But my job is pretty chill. I am not expected to work more than 40 hours a week and usually do not unless I'm on a support rotation which I am 3 weeks out of the year. I have more than 5 weeks off a year between holidays, pto, sick leave, and vacation. And my job is hybrid (formerly all remote, but that's unfortunately getting rarer), so I get to work from home 3 days a week. It's not bad at all.
Really not that bad when it comes to work life balance, really depends where you work at. However, I'd say if you decide to go this route, really make an effort to get internships as often as you can. The market is rough and if you don't have anything to show for your time in college you'll have a bad time when you graduate. I suppose this provably goes for most degrees, but also try to network so that you have options post graduation.
I've never heard of such a specific programming degree. Is that a 4 year degree or 2 year?
The job market for new devs isn't in as high demand as it was a couple years ago, so hopefully it's just a matter of time for you. But alternatively, have you looked into how many credits you'd need to get a more general CS/Software Engineering degree if you went back to school? A less niche degree should open more opportunities to you.
4 year. I have the skills necessary to do the job, but my portfolio is lacking. I'm working on a game in my free time, but all last year I applied to game studios and had when they all rejected or ghosted me, I ran out of money.
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.
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.