twofu said:
Hello PF,
I am an undergrad in Physics (second year), I love it so far. I don't know if I am going to graduate school or not. Right now, I want to pick up a Computer Science minor so I can learn languages like Java/C++/Python...the list goes on. I don't want to change my major to CS so that's not an option for me but I DO want to be marketable after I get my bachelors. Will a CS minor help?
Could I put on an application for a software/IT position that I have a CS minor and have experience with the following languages, etc. ?
Thank for reading! Any advice would be appreciated :)
If you know your stuff, it won't matter too much how you became experienced with regards to entry level programming.
Having said this, it takes a bit of time for things to click into place (this is my experience and others could well be different).
There's enough resources on the internet, in bookshops, in forums and so on that you can use to build up experience.
My advice is to pick a domain that you like or want to learn and then get an open source project in that domain, fiddle with it, write your own code, modify code, and build your own modifications.
The reason I say this is because like many other fields, programming is largely domain dependent. Database and business intelligence apps share very little (if anything) to modern game engines and design.
I know what I have said isn't really that structured, but here's my argument.
First off if you get a large open source project, chances are it will be well designed and if it has been around long enough, the design will get better as most things do with time. Also if you're concerned that it isn't, for most large projects people will voice their opinion (this is the internet after all).
Second thing is that if the above requirement is satisfied (to your expectation), then not only do you get to learn quickly, but you get to actually do your own thing quickly. The most important thing is that you interact with the repository, make mistakes, learn from them, and to rack up experience not only in general programming, but in a domain specific context.
If you combine that with other learning, I guarantee with enough effort, you will slowly become an expert.
One other thing I should mention: there is no one solution for everything. You learn what you need to learn to get stuff done. If your immerse yourself in the domain that you want to learn, you'll come across this at least once and it will just be a means to an end for your learning.
In saying the above I don't think you need a CS minor: personally I don't think it will make a difference, and IMO it would be better spent learning in the way I mentioned above for reasons either out of curiosity (like anything), or out of necessity (like for example an honors, masters, or PhD project). Both offer ways of building experience and also for generating evidence (both literally through your own work [ie the code itself] and consciously through the experience gained from doing so).