The compensation is amazing. While it's true that there are many companies doing interesting projects, the pay and benefits at Microsoft simply blow away other companies. Their offers are almost impossible to turn down.
Honestly, for a lot of developers, it's not the "evil empire" the outside world perceives it to be. Most folks are excited about delivering new benefits to the customers and don't concern themselves with the supposed conspiracies bloggers like to discuss. If you get on a product team you really care about, your passion will help shape the solution from day one because everyone truly wants to deliver the best solutions.
Microsoft lets you focus on your job with minimum overhead. You can actually spend the majority of your day writing code and not be bothered with administrative paperwork, irrelevant meetings, or any other kind of interference. Most developers meet with their managers to discuss their yearly goals, but that really is the majority of the non-programming responsibilities.
A lot of product groups provide weekly or bi-weekly lectures on a technology they've been working on. These usually include an introduction, code samples, and lessons learned. Not only is it very interesting to see what's going on in the company, you also get the chance to continue learning from other developers.
Mobility in the company is great. If you want to change product teams, it's just a matter of an interview with the team of interest and you're set. There are no hard feelings or pressure from managers that may hinder you from pursuing your interests.
The biggest problem is that it's really easy to forget about your social life. Some days you get so into coding you lose track of the time, and the whole day passes you by. Occasionally, there's pressure to get something accomplished quickly (especially near the end of the release cycle), and you may find yourself working longer hours than you want.
Social interaction throughout the day is minimal. Most developers sit in their offices and code and don't get a lot of daily interaction with others on the team. Some days, this leaves you feeling very isolated.
Traffic in the area is terrible. If you don't live in the right spot and plan your commute correctly, you can lose 1-2 hours a day just in travel.
Microsoft's solutions are too complex and inconsistent for the end user. Why does Windows itself have many different user interfaces (i.e. Control Panel, MMC, Explorer, IE, Live Messenger, etc.)? And why do all of your applications also sport a unique interface (Office, Money, Visual Studio, etc.)? The company should not waste so many resources in redundant development. Instead, the Windows team should implement a user interface suitable for all of your products and available to third-party developers.
Apple has made a lot of smart moves that Microsoft should seriously study and apply. For example, the transition from Mac OS "Classic" to Mac OS X.
Win32 is an embarrassing, clunky, and inconsistent API. It's been crippled by poor design decisions and backwards compatibility. Clean up the API (including moving to LP64) and implement backwards compatibility in terms of virtual environments. Please also study the Cocoa frameworks and architecture and apply it to your future APIs. It provides so much more functionality and is implemented very elegantly. Apple's frameworks are designed to minimize boilerplate and redundant code. Win32 requires a lot of lifting to get going.
The operating system needs to be overhauled and streamlined, and your product teams should focus on making great applications, not re-developing components that should be part of the operating system.
The interview process is pretty standard. The first round is a talk with the recruiter. Then, the second round is usually a technical screening. The final round is a four-round interview loop, typically including: * Two technical interviews * One
Interview was pretty straightforward. The onsite had four rounds, with the last round being with a senior manager. The senior manager was actually pretty nice, and he even helped me figure out some things that I was having trouble with initially.
A corporate recruiter contacted me via email. After completing their OTS, I received an invitation to interview onsite in Redmond. The entire process took one month. It seems they want to hire as soon as possible. They extended an offer, which was
The interview process is pretty standard. The first round is a talk with the recruiter. Then, the second round is usually a technical screening. The final round is a four-round interview loop, typically including: * Two technical interviews * One
Interview was pretty straightforward. The onsite had four rounds, with the last round being with a senior manager. The senior manager was actually pretty nice, and he even helped me figure out some things that I was having trouble with initially.
A corporate recruiter contacted me via email. After completing their OTS, I received an invitation to interview onsite in Redmond. The entire process took one month. It seems they want to hire as soon as possible. They extended an offer, which was