I'm an EE, better be good in math.
Honestly, way more opportunities with BS computer science....if you like programming
We can't hire enough
Software Engineer since '92. I'm gonna tell you this... just understand that your "homework" will never be done.
New tech comes out all the time. And what happens is.. you get a job, you're working on a product, developing a system/app. And it's being sold, you develop a userbase that you have to keep up and running.
So... what *can* happen is... especially if you're in a smaller company setting, is that you'll be soo busy with maintaining that app for your current userbase... (adding new features and functionality and integration with other companies products which are popular) that you'll be "soo done" with fussing with computers to do stuff for others after hours, that when it's your time off the clock you'll find it hard to want to do the studying and sample coding you may simply HAVE to do in order to truly learn that "new thing". So understand that unfortunately sometimes you're gonna have to skip hunting some weekends.
What is the danger in that, is that while you're "in the trenches" out programming in the real-world... now locked into continuing to advance this money-making product for the company... what you always gotta keep in your mind is that a buncha young ones are in school with ALL the freaking time in the world to be consuming and learning about cutting-edge/bleeding-edge new tech. SOoo... you "can't be caught slippin'".
Meaning you need to kinda be good about once in awhile getting a feeling for where the industry is heading in terms of popular tools or languages or programming suites people are starting to embrace. That's referred to as "Tech Debt". Never let your Tech Debt get too far behind. I'm gonna say that again...
NEVER LET YOUR TECH-DEBT GET TOO FAR BEHIND!
That is... unless you get hooked up with a larger entity. Some of them, now, if they're lead right... encourage you to continue your training. Providing you with online training classes such as on PluralSight, etc.
Your "Google-Fu" will need to be VERY strong for this career. And StackedOverflow.com *can* be a savior at times. Cause an example of one something that happens is... you've got a system, and let's say you work on it to offer integration with something like Exchange/Outlook. You'll finally get it working and everything is good. THEN... often without a good method for letting people sign-up to be WARNED PROPERLY way ahead of time, about new upcoming software releases from Microsoft... (Again I'm sure sometimes such a push-technology list exists, but you're soo busy working on other stuff, you don't have the time to read the incoming blurb) they'll maybe release an update, that causes something in your existing App to seemingly fail for a large client.
Your Support staff will try their best, but ultimately such a problem isn't anything they can fix. So not only do you have to be extremely good at being a methodical problem solver. You'll also get these problems dumped on your lap re: this BigFish client with a much more exotic setup than the types you're familiar with in-house. So sometime they'll have more piece-parts to the equation of fixing the problem due to all these various other things they have setup in their environment. Such as load-balancer devices and such.
And DEFINITELY familiarize yourself with all the various kinds of concepts related to cloud-computing. Which is essentially you design a browser-based app that YOU host and maintain and do the database backups for etc. And they charge a subscription to the software, instead of the client having to buy it and fuss with setting up all the servers in-house. No more them having to deal with installing new updates of your stuff, etc.
Learn about all the little piece parts of Microsoft Azure, and AWS (Amazon Web Services). And coding using something like React or Angular. And boom, 6 figures easily. (So to speak)