How does one with a B.S. in Mathematical Sciences become a software developer? I will graduate in 1 semester and I have realized towards the end of my B.S. in mathematical sciences that I would like to develop software. I know there's no degree requirement to do this.

I have taken 20 math classes, bu have only taken 4 official computer science classes (2 in Java, 1 in C++, 1 in discrete math) and will have the opportunity to take up to 2 more before I graduate such as "data structures and algorithms" (a java class). I have also taken graph theory through the math department.

I have brainstormed. I could apply to masters degree programs in computer science (or PhD programs, then leave with a masters) or I could try to self teach myself the programming languages and gaps in my knowledge. Or I could take the additional couple of years to finish a double undergraduate major in computer science at my school. I could also try for an internship for Summer 2014, regardless. 

So I could:


Self study and try for an entry level position. No explicit or implicit cost if I succeed. But if I fail to get a job, there's the time wasted that I could have been in school. 
Finish a double major in CS (would take an additional 2 years). This would have an opportunity cost as well as an explicit cost.
Apply to graduate school in CS. This would have an opportunity cost and most likely an explicit cost.
My answer is coming from the experience of graduating with a B.S. in Mathematics (with a Physics minor) and then work as a programmer.

I had comparable programming experience before graduating and had actually planned on taking a second major in CS before dropping in in favor of Physics. I quickly realized that I would only find work in a programming position. It was quite a shock to work on a enterprise class application with hundreds of classes and a complicated architecture. I was incredibly lucky to find a position that was willing to train me up to speed. 

I have found that sometimes I will use my math background to come up with an algorithm easily that other programmers will be stunned by. Other times I will feel critically behind the curve, especially when asked to design/architecture a new project.

I have filled in some of these gaps by supplementing my education through MOOCs, reading tons of books and forums (although I have only now started contributing), and picking my coworkers brains. I have had a goal of improving my skills with software patterns, and adding a new language/technology every year. However, keeping up with my mathematical skills (especially linear algebra and statistics) has opened many doors. 

Also, improving "soft skills" like communication, networking, and organization is very important. In a lot of positions the goal in training is for you to generate business for the company. 

Getting the lingo right away is critical. Once you know what can be done it is simply a matter of finding out how.

After three years as a junior programmer I am starting to look at Masters programs and I feel much more prepared and my job will be partially reimbursing me for classes. In addition I have a much better sense of what programs will benefit my career and how. For the type of work I am interested in I am looking into CS programs but also Systems Engineering, Computer Engineering, and Statistics.

That being said, I was incredibly fortunate to find a position that nurtured my abilities. To be clear, my supervisors were expecting a year before I contributed in a meaningful way, a lot of places will not take that bet on anyone. In order to get where I am I worked hard, usually 50 hrs at work and an additional 10 hrs of outside research.