> 1. where is a good place for school in the twin cities area
I would consider:
o The M.S. in Software Engineering program at St. Thomas. This program
is a fair amount of work and a lot of money. But, it seems to be a
good program for those without programming experience, (although it
is probably a better program if you do have prior programming
experience). Plus, you graduate with an M.S. St. Thomas has a
regional reputation, so maybe an M.S. from St. Thomas might not
translate as well to, say, Silicon Valley.
o The M.S. in Software Engineering at the University of Minnesota is
probably a good program, and probably more rigorous (and probably more
work) than the St. Thomas program. I understand that the U's program
expects you to have software development experience prior to
admission. I also hear that it is pretty face-paced.
o Some of the state colleges do a good job of teaching systems
administration, web development, and programming languages. These
programs are more focused on the practical aspects of programming,
rather than, for example, the broader topics of software development,
software engineering, or computer science. At least at one point,
St. Paul College did a nice job. Compare the course descriptions
from the various state colleges. This might be a good fit for your
needs, but I wouldn't exclude St. Thomas.
o I am a big fan of a compute science degree. But, a B.S. in computer
science is a big commitment, and might be unrealistic for someone
who wants to transition into programming. Plus, in my opinion, you
won't necessarily learn a lot about programming in a computer science
program.
o A M.S. is computer science (as opposed to software engineering) is
worth considering, after you have programming experience. Again,
this is a lot of work, and in my opinion doesn't necessarily make
sense for someone who is just getting into programming.
I recommend learning Java. It's a nice, clean object-oriented language,
and at least at one time it was of finite size. There appears to be a
good market for Java programmers, although others can probably assess
this better than I.
Consider installing Java on your machine and buying two or three Java
books that get good reviews from beginning programmers. Not everyone
can learn Java this way, but if you can, I would recommend this. And,
learning Java on your own probably doesn't replace classes.
Learn what an object is, in an abstract sense. Of course, you should
learn object-oriented programming. But, in my opinion, your
understanding of object-oriented programming ought to be built
upon a solid understanding of what an object is and how it behaves;
it's more than simply learning the elements of an object-oriented
language. This topic will probably make sense only after you
start to understand what an object is, so be alert for that transition.
Buy hardware and play at home. In my opinion, software developers of
all sorts ought to be able to do their own systems administration. At
some point, you might need to decide whether you are going to focus
on Linux or Windows (a.k.a. the Evil Empire). Having said that, I
suspect that there are a lot of software developers that can't do their
own systems administration, don't play with their own systems at home,
and in general aren't geeks. (Normal people can be programmers too,
I guess...)
Having said all that, these are just my opinions. And, there are
probably lots of people who have different opinions. Ask around
and collect opinions from lots of folks.
-tjs