Got my BS
in 1976 -- so I've been a "paid" programmer for 37 years, plus another 5 years before that for "fun".
There are all sorts of jobs in programming -- for example:
- system/network admins who do a little programming to help them get their job done
- consultants who do contract programming for a variety of clients and applications
- "pure" programmers who usually focus on in-house or commercially offered software
- many others
It's not possible to say that one is better or preferable to another since that very much depends on personal interests.
It also depends somewhat on long-terms goals: management vs. technical.
I've been a "pure" programmer for most of my career with a very technical focus. In order to remain technical over a long career in a senior position it's likely you'd have to work for a larger company or government organization. Smaller companies tend to rely more heavily on junior staff. There's also a greater reliance on off-shore staff these days.
It's much easier to find a good-paying jobs in network/system admin or contract programming than it is in pure programming simply because there's greater demand. It can be difficult, for example after a RIF, for a pure programmer to find a new job quickly (except of course in Silicon Valley).
The math degree probably won't help much unless your interested in a career at a big corporate or government research lab -- and if that's your goal you might be better off with an MS
than two BS
I've done all sorts of programming from embedded intel 4004s, to IBM mainframes, to enterprise-class server arrays. Mostly Java these days, but I've done C++, Fortran, COBOL, PL
, and just about everything there is -- even SNOBOL! It's easier to make a switch early in your career (especially when there are no family obligations) , so explore different environments while you're able.