I have an offer from a company, I'll call CompanyOne, that I am on a time crunch to answer. I may potentially have an offer soon from a very different company, I'll call CompanyTwo, and I am terrified that I might not be fully aware of the impact that my decision between the two might have. My question, thus, is:
What are the things that I should consider when making this decision, and what impact will they potentially have on my career?
First, a bit about me:
I just graduated with a BS in Computer Science; in University I was trained mainly in Java development (with a bit of C and C++). I love Windows, nothing against Unix but I grew up with Windows and know all of its ins and outs. Since graduating, I decided to try out C# to see if it gave me more of a C++ power feel without all of the annoying downsides. Good God it does, going back to Java now feels pretty gross, everything just feels ever so slightly less frustrating and tedious in C#, and I've been absolutely loving it. So, I've been emphasizing C# on my resume in the hope of getting to work with it, especially since I have a thing for Windows.
CompanyOne: I was contacted and rushed through the interview process by CompanyOne in a 2 day period, they made me an offer immediately after my technical interview, but the offer is below average for an entry level software dev salary out of university. CompanyOne has been around for well over a decade, and (while it is a full-time position with the company, regardless of the contracts they are doing) does a lot of Microsoft contracts, working with Microsoft Technologies and is near Microsoft location-wise, so some projects can even require going on-site to Microsoft campus. To some people this might sound like a turn-off, but I'm very interested in Windows dev, with my tentative goal (given no real experience in professional dev) being to do lower level Windows development for Microsoft or Intel, or Windows driver dev for any of the myriad of hardware companies out there. I asked for a week to think over the offer, and just as I was planning to accept, CompanyTwo called me.
CompanyTwo: after 2 weeks of no-contact (which I had assumed meant I had failed my phone technical interview), they called me and told me they wanted to fly me halfway across the US for a final round of interviews (for a local job, the interview is just halfway across the US). I told them I had another offer that I was very much interested in, and gave them some details and was told "give us a chance, the department you'd be in generally offers 'significantly more' than the offer from CompanyOne, though I obviously can't give you concrete offer details now". CompanyTwo has also been around awhile, and is entirely Java development, but they are their own company as opposed to working on Microsoft contracts. I made it clear over the phone that I was leaning towards CompanyOne simply because it was more in line with where I want my Career to go, but told them I was willing to fly over for the interview and see how things go if they wanted to proceed anyway (they did).
I have been entirely honest with both companies along the way, and CompanyOne has agreed to wait until after my interviews with CompanyTwo for my decision on CompanyOne's offer. The financial implications between the two will be obvious, I guess my current concerns are:
If I choose CompanyOne:
I could get typecast as a second-rate developer when attempting to move to a different company later in my career because CompanyOne does Microsoft contracts. Is this a real fear?
I could get stuck there for above reason? (it doesn't sound like upward mobility within the company offers great pay benefits, as far as I can tell, so it sounds like moving to another company after a year or two is what I'll want to do).
Probably more of a hackey, 'just get things done so the contract is over' type of coding as opposed to writing long term robust code like I'm guessing non-outsourced work would prioritize. (This is 100% speculation)
Any other downsides of working for a Microsoft contractor that I don't know about?
If I choose CompanyTwo:
I have to work with Java, don't gain experience with C# and Microsoft tech.
I probably will get less responsibility early on, I'm guessing, given that I'll be working with projects for the company as opposed to contracts for other companies. (Again, 100% speculation, but this is the idea I've been given by interviews with other companies).
I'm leaning towards CompanyOne hoping that it will take me more in the right direction and give me a lot of varied development experience early on in my lifetime as a developer, but I haven't heard CompanyTwo's offer yet, and I'm concerned there are other factors I am not considering as well. I don't have a lot of contacts in the programming world with enough experience to guide me in this matter, so I am asking it here. My question, again, is:
What are the things that I should consider when making this decision, and what impact will they potentially have on my career?
Of course, this is rather presumptuous given I don't yet have an offer from CompanyTwo, but I will only have 1-2 days to make a decision after I get feedback from my interviews, so I figure asking ahead of time is better.
EDIT: A bit more about CompanyOne: Despite how quickly I was rushed through the process, the Project Manager who interviewed me seemed like a fine guy, and I've talked to some of their Junior Devs about the work culture, and it sounds fine. Also, I'd be a full time employee on a permanent basis, not a contract-by-contract basis (including benefits). The company takes on Microsoft contracts, but employees are full-time and are kept between projects, regardless of the contract flow (although how much that can be trusted is certainly arguable). Also, they are part of the Microsoft Partner Network, so they aren't going to be cheap about what IDE's / technology / Etc they can get their hands on. They pay for training that you want whether it pertains to current projects or not, etc. Maybe I'm just in denial because it's the kind of tech I'm interested in working in, however, and its really a bad offer overall.