Ask HN: How do I set myself up for a successful career in Software Engineering?
A bit of background information first: I've got a degree in analytic philosophy from a "word-class" university. Career-wise this certainly hasn't helped me much, because the fields in which were people were actually recruiting didn't appeal much to me. Management consultancies, for instance, do go after people with my background, but it's much more due to the prestige of my alma mater, and less so due to whatever fuzzy words our professors would use to describe the benefits of my education. But not to be bitter about it: I tremendously enjoyed my studies and certainly don't regret it.

Long story short, a couple of years later I find myself in jobs I don't enjoy all that much. I know that gender-discussions are contentious, but having worked in female-dominated fields such as marketing and communications (don't laugh!), I can't help but think that I am quite incompatible with this kind of working environment. I'd rather have a bit less emotion, and more objectivity, which was one of the draws towards philosophy, for instance.

After some soul-searching, I decided to go back to school. I have friends who did postgraduate degrees in CS who initially encouraged me to consider this field. It does seem like a great choice, especially now that my initial idealism has put me in an unfavorably position career-wise.

I did some research on the culture of HN, and know that there are many very smart people on here. There are some perspectives with which I am already familiar, and thus I don't want you to think that I didn't do my homework. Thus, I'll respond to some of your potential objections beforehand:

1) Yes, I do have coding experience. As probably most of you did, I played around with BASIC as a kid, so I did have early exposure. The previous ten months or so, though, spent preparing myself for my future profession, learning Python and Lisp/Scheme. This is due to the advice of my friends, who told me to familiarize myself with an imperative and a functional language. (I know that Python is technically a multi-paradigm language.)

2) Money is not of immediate concern. I am not rich, but I have stashed away enough money to finance this 3 year-degree. I do not have any debt, mainly due to coming from a stable middle-class background and living in Europe, where tertiary education is usually free.

3) Yes, I do think I can intellectually handle it, even though I am a bit older (31) and out of school for a while. For instance, Joel Spolsky makes a huge fuss about how difficult recursion is but, frankly, I didn't find it difficult at all. FizzBuzz surely doesn't leave me stumped, and thinking in the functional programming paradigm is easy for me, too. This is arguably due to my solid foundations in mathematics.

4) About CS vs Software Engineering: I went to a rigorous high school where we studied single-variable calculus and linear algebra. In analytic philosophy I familiarized myself with formal logic, and the Software Engineering degree I am going to pursue does have a course on algorithms and data structures. So, even though I may miss out on some of the rigor in CS, I do think that my background makes up for it, and for what I may be missing out on, there's always a textbook for self-study or possibly an online course on Udacity or Coursera, should the need arise. Coursera already has courses on Automata and Compilers, for instance.

After this overly long introduction, I now want to ask how I best set myself up for a career in software engineering. My objectives are:

1) Staying in Europe. I know that the Bay Area or NYC is where it's at, but I've got a wife and we want to stay where we are.

2) Ideally, I'd like to put myself in a position where I can freelance, but a corporate position wouldn't be so bad either because in Europe (maybe not in Germany), working conditions are pretty good, and the almost cliched 80-hour-workweek stories that float around on HN are unheard of here.

I'd say that my bar isn't set too high. I've got no grand ambitions of starting the next Facebook, but I do enjoy coding, and I want to become good at it. I certainly do have "passion". For instance, I went through roughly two dozen problems on Project Euler already, and over the summer I intend to tackle a few problems on codegolf.com.

3) The university I am going to study at has strong ties to industry. You'll even get assigned a "mentor", and the B.Sc. project is normally done in cooperation with one of the many local companies, which range from small to industry behemoths. I have no doubt the BSc will prepare me well for the labor market, which is also what current students have confirmed. Basically, in your second or third year, you'll get recruited heavily, and it's quite normal to have at least one offer before graduation. Many go on to do MSc degrees afterwards, but I don't think that's the best course of action for me, because it'll be another two years, and a doubtful monetarily pay-off, factoring in opportunity costs, compared to a BSc.

What is the best way to prepare myself for a role as a consultant? I figure that the skill-set needed to survive at BigCorp is a bit different from what you need to make it on your own. Please don't tell me anything about the need to be a "rockstar programmer" or a "ninja". I do understand that contributions to FOSS are a big plus, but given the large number of freelancers who make decent money, I doubt that they are all that great, and the horror stories from my friends certainly corroborate the opinion that there are a lot of "lifers" in this industry who still somehow get by. I do have somewhat greater ambitions, though.

How should I structure the non-academic part of my studies? My preliminary thoughts are that by the end of the first year I should be good enough to get some freelancing projects on ODesk, in the summer of the second year, I should be able to get an internship, which may lead to employment the year after.

Is there something I should consider with my potential goal of freelancing in mind? For instance, would you recommend Google Summer of Code? Should I focus on, say, Erlang, instead of Java (more generally: is it wise to focus on a niche vs. the mainstream)?

Will my age and or possible lack of an MSc be a disadvantage in industry? I don't derive my self-worth from a piece of paper, but should I go for a corporate career, it would not be too pleasant to be passed over for lack of a degree, when the skills are there.

Feel free to add anything you find relevant, and if you've got further (relevant) questions, then feel free to ask.

Thank you very much.