Last year I've got a MsC degree on CS. On the beginning of the MsC course, I was keen on moving on with research and go for a PhD. However, as the months passed, I started to feel the urge to write software that people would, well, actually use. The programming bug had bitten me, again.

So, I decided that before deciding on getting a PhD degree, I would spend some time on the "real world", working as a software developer. Sadly, most companies here in Brazil are "services" companies that seem to be stuck on the 80s when it comes to software development. I have to fend off pushy managers, less-than-competent coworkers and outrageous software requirements (why does everyone seem to need a 50k Oracle license and a behemoth Websphere AS for their CRUD applications?) on a daily basis, and even though I still love software development, the situation is starting to touch a nerve. And, mind you, I'm already lucky for getting a job at a place that isn't a plain software sweatshop.

Sure, there are better places around here or I could always try my luck abroad, but then I hit the proverbial brick wall:

Sorry, you're too unexperienced as a developer and too under-qualified as a researcher

I've already heard this, and variations of, multiple times. Research position recruiters look for die-hard, publication-ridden, rockstar PhDs, while development position recruiters look for die-hard, experience-ridden, rockstar programmers. To most, my MsC degree seems like a minor bump on my CV (and an outright waste of time for some). Applying for abroad positions is even harder, since the employer would have to deal of the hassle of a VISA process, which I understand that, sometimes, is too much.

Now I'm feeling I've reached a dead-end. I'm certain that development (and not research) is my thing, so should I just dismiss my MsC (or play it as a "trump card") and play the "big fish on a small pond" role while I gather some experience and contribute on some open-source projects as a plus? Is there a better way to handle this?

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.
If this question can be reworded to fit the rules in the help center, please edit the question.

There's a big disconnect between this statement: "I have to fend off pushy managers, less-than-competent coworkers and outrageous software requirements ... on a daily basis" and this statement: " I'm certain that development (and not research) is my thing". Go get a PhD, then work on a more "pure" open source project on the side, during your copious office hours. p.s.: I, too, wanted to get some experience (& $$$) before going on to get my PhD. That was 15 years ago. While it can happen, it's very rare (as my professors warned me).
–
red-dirtJan 17 '11 at 15:27

Do you mean that all the downsides I mentioned (pushy manager, etc) are part of the profession and should be taken into consideration when I decide about my career? Are really all workplaces like that? Interestingly, your professors have the same opinion as my advisor: the more time you spend away from academia, the harder it's to come back.
–
Hunter2Jan 18 '11 at 17:14

can you explain how so? I've found (in the US) that start-ups are often looking for the battle-scarred street-trained programmers, who can help in a wide-range of real world problems, where bigger companies (esp. financial such as Goldman Sachs) are well-suited to (and do) hire recent grads with little professional experience.
–
NickCJan 17 '11 at 14:26

It depends on just how new the start up is. It is hard to find top notch software engineers. With a new grad you start off with a "fresh mold" and hopefully you can turning them into a top notch software developer in a relatively short period of time.
–
PemdasJan 17 '11 at 14:46

@Renesis I guess it does depend. The start-ups I've been dealing with (London, UK) are generally more after unsullied, bright, young programmers that they can mold.
–
Martijn VerburgJan 17 '11 at 15:04

@Martjin I have this impression that I would need an absolutely stellar CV in order to compete with local developers (hell, even I would think twice before going through the hassle of hiring a foreigner, even for a remote position). Moving in and then look for a job isn't much of an option, since getting a work VISA by myself is, to put it mildly, extremely unlikely. I guess that my only options for now would be either found myself a startup (risky, even more in Brazil), or go indie on my spare time.
–
Hunter2Jan 18 '11 at 17:27

Oh I wasn't suggesting you actually move to London, I was just pointing out how the start-ups work here. I stupidly thought they would work in a similar fashion in Brazil...
–
Martijn VerburgJan 18 '11 at 17:37

I know this question is about a month old, but I find it interesting, overall.

Sadly, most companies here in Brazil
are "services" companies that seem to
be stuck on the 80s when it comes to
software development. I have to fend
off pushy managers,
less-than-competent coworkers and
outrageous software requirements ...

Hey! First, don't assume people are more sane outside Brazil. All of what you listed are common problems in software development companies and especially in companies that develop "internal", business software.

If you believe this is all you can find in Brazil, you're wrong. I've developed shrink-wrapped software for GIS, materials sciences. Worked in some boutique consulting for financial companies, solved some really interesting problems.

A lot of companies where I worked have a explicit preference for people with advanced degrees.

Usually, the most interesting companies in Brazil are University spin offs. You can find some really great people and companies around PUC-Rio, UFSC, UFMG and CESAR (Recife). Of course, those are the places I have some first hand experience with and there are might be some other interesting Universities.