I didn't realize this until after college, but outside of a CS 101 class you can't be just a programmer. Programming doesn't happen in a vacuum - it must be applied to a domain.
For some people, a lot of whom are on this website, the domain can be computer science. Writing a compiler, database, or operating system would fall into that category. Things on the cutting edge like VR or AR would also fall into this category. This particular kind of programming has never appealed to me personally. I don't much care for programming itself or even computer science itself.
However, there are a lot of interesting problems to be solved in other domains that require programming. Economic models, biotechnology, digital synthesizers, etc.
Unfortunately, without the domain knowledge required in those fields, it's pretty hard to find a job solving those problems. All that's left is CRUD work where the domain is opaque business logic that requires little to no expertise but is dreadfully boring.
So I would go back and treat programming as a tool to be applied to problems that I care about instead of the main focus of my education.
Maybe you get lucky and have a hobby/personal interest that can fulfill this need to some degree (this partially has happened to me, apparently people who write software don't often overlap with people who cross stitch).
I do enjoy writing code but I much prefer writing code for problems or in domains that interest me.
If I lost everything except the notion that I kinda love this stuff? Yeah, I'm sure I would.
Do I go back to 1998 or do I start over now? It's becoming more obvious to me that the closer you can warp back to about 1950 for these start-over fantasies, the better a time you're going to have. I would be in a full panic if I had to start over right now, a fresh 22 year old undergrad with a 2018 degree in software. Yikes. Maybe that's just a me-getting-old thing peeking through. I sure hope it is. And am worried it's not, for younger folks on here.
That said, I fell back on my computing hobby even before I graduated. When I started college, print journalism still seemed like a plausible career. By the time I graduated, I saw the writing on the wall.
As long as we’re talking what-ifs, I’d take the well paid journalist job in a heartbeat.
If I had to do it all over, I'd probably still do se/dev, just earlier. Sucks being behind my friends when it comes to money/homeownership/etc.
After having two careers where money wasn't great, I'm all about the money now.
I'm not 100% sure I would be a software engineer, but I can't imagine myself on a career path that didn't involve writing tons of code.
If you asked my wife she would reply: “Meh, in the end you are sitting in front of a screen all day and just typing on your keyboard for 40 years“
Perspectives... :)
Computers certainly have wide ranging applications but at the end of the day, programming all of those tasks is pretty similar.
Doesn’t matter. Doctors are a government-protected class, with wages held high by regulation, insurance subsidies, and immigrant labor restrictions. This causes massive social problems, and cannot end soon enough.
It seems to me that the amount of work it takes to be a good systems programmer, over an entire career, absolutely dwarfs the demands of medicine. There are many coders in bioinformatics that are more competent at medicine than most MDs and get paid a fraction for much longer working hours. There are also MDs that do both, and consider the medicine part their well-paid hobby.
Doesn't sound like cheat mode at all to me.
Hitting a boot camp and then pulling $100k+ doing web dev is the cheat.
This seems like a hugely strong claim. Could you elaborate?
There also isn't a huge gap in pay unless the M.D. is specialized, but then you have quite a few years of low-earning vs. engineer's almost instant earning power so probably comes out about even.
Also you can be a doctor anywhere. Being an engineer in tech feels like you're geographically stuck unless you're willing to make other (career) trade offs.
Family & internal med doctors can work pretty much anywhere, but specialists don't have a ton of choices when it comes to geography. Positions in desirable cities can actually be very competitive and hard to find.
Unless you screw up massively, once you get in it only gets better.
For engineers, you get "used up and thrown away".
The default pathway for software engineers is not that great for a large portion of people.
If I could start over. I would have still done software engineering. Would I have gotten a CS degree? Probably not.
I would have likely gotten a pure math degree because I find it far more interesting.
My CS program was math intensive, but in hindsight, data structures, algorithms and operating systems are the key CS classes I needed. Maybe throw in compilers and networks...
But I would also gain skills in art, music, level design, etc. on top of it.
I would avoid corporate life and carve out a happy little niche in a funky little community like Portland or somewhere similar. Save, live within my means, pay off my student loans. Work as a hard working, humble little dev and pursue my passions on my fiercely guarded free time. Volunteer some of my spare time for environmental conservation and human rights organizations. Have a garden, two cats in the yard... wait that's exactly how I live now, except I'm a sysadmin instead of a game developer.
Overall I have an amazing life and a really bright future so I can't really complain. Choosing to study Computer Science in college is what lead me down my current path. And when I look around at my options, I feel like I made a really great decision. Happiness comes from within. Keep your eyes peeled, always be learning, and don't be nobody's sucker. Don't get left behind.
Really my biggest regret is under-valuing and not believing in myself. It's amazing how great things can go when you just commit to something and make realistic and well-thought out choices while pursing your desired path.
ALTHOUGH, I'm only 29 so I can still do a LOT to change my life and work towards my goals.
I echo the sentiment that programming doesn't really exist on its own. Most great software engineers really have two skillsets: the programming skills and domain knowledge. Rich Hickey remarks on this in one of his ClojureCon talks. One thing I think I would do differently is to find one or more domains to apply programming to sooner in my life. I'm about eight years out of school and only starting to figure out the answer to this question myself.
If I could do it again, I would probably go with electrical engineering all the way. I find electronics fascinating and I enjoy learning about them in what little spare time I have.
I might focus on embedded work, or math maybe, because this web dev world full of bright-eyed, bushy-tailed youngsters repeating the mistakes I made in 2002 is getting pretty old.
In the US it's not free unless you are a thesis student.
Well, to be fair, I didn't just "fall into" this profession since I was a kid, I started coding at around 20, when I knew that was what I wanted to do.
Although, if I could start over, I'd love to start much earlier(when I was 10-15 years old), and I'd learn fundamentals of math and CS properly, and I'd spend a lot more time on AI/ML, so I'd be much better at this than I am now.
Now I'm 27, and I really want to catch up on proper math/science of it all.
Also I need to mention that I don't consider myself a "programmer", I'm a startup founder and my goal is to build successful SaaS tools. That's way more interesting and exciting, I get to think of ideas, design products, do full-stack dev, marketing, make all decisions on my own, etc. If I'd just be working as a programmer for someone else, it would probably feel less exciting.
I love working on the edge of the future, and in my lifetime the Internet was it.
In another time it would have been aviation, space race, radio/television, or the railroads.