Ask HN: Choosing between Microsoft and everything else
39 points| okatsu | 11 years ago
I know a guy at work in his fifties who long ago decided to use Microsoft technologies exclusively, and I've never seen someone so happy to code, because he only has one ecosystem to work with and it works well. I've also been bit by the Microsoft bug, but I can't bring myself to use their tools outside of work. Visual Studio's a great IDE (especially as of late), and C# is a really fun language, but the license costs are enormous, MSDNAA licenses are for personal use only, and Azure generally costs a lot more than a VM on Linode or Digital Ocean. BizSpark also isn't an option unless you're seriously starting a business.
I feel like I'm at a crossroads of sorts, like my coworker once has been. I prefer my experience with Microsoft, but its costs and vendor lock-in are hard to ignore. I've tried Mono, and it's slowly getting there, but until vNext is production-ready and I can give it a serious try, I won't consider it a viable option.
I'd just like to know if anyone else has had this experience, and if so, what led them to choose one path over another. Any advice is also welcome.
EDIT: I'd just like to clarify that I'm not trying to choose one platform for the rest of my life, in every aspect of it. I don't mind learning one tool over another in a work context, but I have an interest for the startup/entrepreneurial world, and that's when choosing Microsoft isn't as easy as choosing anything else.
[+] [-] luuio|11 years ago|reply
I had always done development on the Microsoft stack (.NET, SQL Server, etc.). I had always played around with nix stuff but never anything serious. During college, I got a Macbook to do iPhone apps, and decided I wanted to do development exclusively on nix.
What I ended up spending 2 years of my side project time is switching between languages and stacks: from Python to Ruby to Java to Scala to Mono to Erlang back to Ruby to Node back to Java -- I was trying to find that perfect productive replacement for C#/.NET ecosystem.
Finally I switched back to .NET on Windows, and things felt so right. I've been happily productive on the .NET platform for the past year and a half.
About VM/licensing fee, it really isn't that much of a difference if you think about it. I'm averaging about $90/month for the VMs and DBs I'm using on Azure. Compare the price between "SQL Azure" and "MongoLab," the diff ain't that big.
Don't take this the wrong way, but it is most likely that side projects aren't big enough to really make the pricing difference more than $50ish a month -- this really is not much especially after when you have a job.
Edit: most of my (probably yours) projects fitted nicely in the free zone of Azure (with or without MSDNAA) and AppHarbor. Also keep in mind that even the FREE VS Express is better than most Open Source editors/IDE out there.
[+] [-] okatsu|11 years ago|reply
If you don't mind me asking, how big are your DBs? That price is surprisingly fair. And out of curiosity, do you still use your Macbook, but with Windows on it?
[+] [-] shawnb576|11 years ago|reply
Your worth as an engineer, over time, will be measured by breadth, not depth. I know engineers that have be come industry-class experts on font rendering or compiler optimization. You know what happens? It's tough for them to switch jobs.
For the most part this industry, at the most successful end, values rock solid fundamentals and versatility.
Your co-worker's path is dangerous. Replace "Microsoft" with "COBOL" or "Fortran" or "Mainframe" and you'll see that this is a problem.
At this stage of your career, you should be focused on learning how _software works_, not a particular stack. Stacks come and go, rapidly. Technology changes. But software and how it works doesn't change all that much.
So pick the right tool for the job and build your skills portfolio. Write some iOS apps. Write some browser-apps backed by Node, or Go. Write some client apps, build some APIs.
I will say, however, that if you are interested in startup stuff I'd recommend against the MS stack. My company is partly on MS, partly not, and the licensing issues with Windows become painful very quickly just for flexibility. Windows licensing and things like Vagrant don't get along very well if you want to have N flavors of a VM and use them at will. There are other reasons here but I'll tell you that Linux machines are just a lot easier to manage in general, and I'm historically a Windows guy (I worked at Microsoft for a _long_ time).
You're still in that stage where you don't know what you don't know. You're not choosing a wife or a house here, just go play the stack field.
[+] [-] gumby|11 years ago|reply
The coworker is described as being "in his fifties." It's probably not unreasonable at that point to have significant depth in a single ecosystem. COBOL was exactly the case I was thinking of: very few (if any) new COBOL programmers are being minted any more and there is still a lot of legacy code. It will probably be a good, if dull, career for the next 20 years for that coworker who will at the end be able to write his own ticket to fit around his almost-retired status.
For someone with 40-50 years of working life ahead of him/her, this sort of specialization is indeed premature and dangerous.
For me that kind of specialization has never been attractive, an attitude that has served me well. But that's not true for everyone, at every stage of life.
[+] [-] px1999|11 years ago|reply
Don't judge based on cost - there are perfectly capable free options in the Microsoft camp too - SQL express, VS express, etc. If you can't do without a higher tier version of VS, you probably have access to it at home through your employer's MSDN account so long as you work somewhere that does use Microsoft. MSFT gets expensive at the enterprise end of the scale, but so does everything. The costs largely IMO are unquantifiable, what's the problem in spending $10k for licensing if it saves you 1k hours of dev time over a free solution? How about a system that can run on 1 server rather than requiring 5, etc etc.
Yes, there's vendor lock in, but you can always move elsewhere later if you want. You're not going to be developing a single project for the rest of your life.
Do what you enjoy, where you enjoy it. Learn how to work in multiple languages and make sure that you're not professionally locked in, but that's different from being technologically locked in on a single project.
[+] [-] yulaow|11 years ago|reply
Else you will end using the only tools you know over the best tools for each specific problem, and it can be a disaster for you career and your satisfaction as developer.
I am not saying to be a jack-of-all-trades-master-of-none, you can still have (and focus on) a preferred platform/os/tools/etc for any reason (like you like it more, you have an ethical problem with another, in your zone one is overused compared to the other, ...) but, imho, is better to be something as a T-shaped person [ as described on the Valve handbook, page 46 http://www.valvesoftware.com/company/Valve_Handbook_LowRes.p... ].
[+] [-] okatsu|11 years ago|reply
My dilemma is more towards choosing a preferred platform. I've been interning for a large enterprise since the beginning of my studies, and would like to try working for or starting a startup eventually. And that's when choosing Microsoft isn't as easy as choosing anything else, even though I would like to.
[+] [-] n72|11 years ago|reply
[+] [-] unknown|11 years ago|reply
[deleted]
[+] [-] honr|11 years ago|reply
That all said, and as you might have already heard, the MS ecosystem is not as wide as many of these, but it is far more unified than most other frameworks.
My own opinion is that you will miss out on new price and competition that is happening outside the MS world, so I recommend having some hands-on experience there if you are serious about starting your own business.
[+] [-] pstatho|11 years ago|reply
As for licensing MS technology, I highly recommend the Bizspark program. You can register a company for $50 at Registres des Entreprises and that's all you need. You will get free licenses for 3 years that you get to keep plus a whole bunch of Azure discounts. BTW, the licensing of Windows and VS are pretty much negligible in any business. SQL server on the other hand is cost prohibitive, but that is where you can use PostgreSQL.
MS is slowly changing, adopting more and more open source, github, mono. I think they are transforming their business from selling licenses to subscriptions (like Office).
[+] [-] collyw|11 years ago|reply
If you want a bit more autonomy, go the other way. If you prefer having more structured career options go MS.
[+] [-] ams6110|11 years ago|reply
Incidentally I had the opposite experience, and found Microsoft tech and tools to be rigid and stifling. Perhaps related, I felt the same way about COBOL, which is what I used in my first job out of school.
Other than sticking with emacs as an editor, I have not ever "specialized" in any one technology. I've never found one to be so clearly superior as to make it worth the risk of lock-in. No stack dominates forever.
[+] [-] mdda|11 years ago|reply
I think it's already telling that you're interested in Django, Rails and Vim. AFAIK, they're all built by *NIX people (even if they're using MacBooks), and treat supporting the Windows platform as a necessary evil.
From my point of view, it's better to be on the side of contributing to a global software ecosystem, rather than one owned by a specific company.
[+] [-] seanmcdirmid|11 years ago|reply
If you want to reach the top of the ladder, you really to do everything possible to be professionally immune from this Microsoft vs. Other option.
[+] [-] eddie_31003|11 years ago|reply
I really comes down to personal preference. Who says you can't do both? I have a corporate IT Background. Microsoft Technologies have kept me happily employed for over 10 years. I'm currently a Full Stack Developer on the MS Stack working for a local gov't agency. However, I have never been exclusive to MS Tech. I love the Mac Book I use. I spin up VMs whenever I want to try something new.
Never stop learning. That's what you should focus on. You'll never be an expert an everything. Try to learn as much as possible about as much as possible. Breadth and depth. I believe we're passed the point of praising the Tech Specialists. Organizations are in more need of the Tech Generalists. We need to know a lot about the Full Stack and everything in between.
Lastly, it's all about finding the right tool for the job. It's best to have a nice set of tools that you can pull from. You'll be better prepared to make architectural decisions when you understand the differences in the tools needed to build great products.
[+] [-] korzun|11 years ago|reply
The only thing I don't understand why you keep bringing up the licensing costs.
If that is an issue then the choice should be already obvious.
[+] [-] mattgreenrocks|11 years ago|reply
Instead, you should consider trying different programming paradigms entirely. Investing in skills themselves yields disproportionate returns that you can apply to whatever hip thing every insists you must use. The tech industry only moves fast if you're trying to learn every stack everyone's salivating about...which usually isn't that different from what's already being done.
[+] [-] jorgecastillo|11 years ago|reply
The worst that could happen it that you end up having to take part in maintaining some piece of critical software to you but with a small community. That doesn't sound so bad, the worst that could happen with a proprietary stack (Visual Basic 6) it that the owner forces you to move to some new shiny thing.
[+] [-] dennybritz|11 years ago|reply
What are you goals? Do you want to get a corporate job? Do you want to start or work in a startup? Also, where do you live?
There was a related thread a while ago: https://news.ycombinator.com/item?id=8159427
To make a long story short, my personal opinion is that you can have a very fulfilling corporate life focusing completely on MS technologies. In some countries/regions more so than in others. For example, you won't find a lot of MS-based companies in Silicon Valley, but I've been to a couple of European and Asian countries where the majority of businesses seem to heavily favor the MS stack. An MS stack is almost always the wrong choice for a startup though (and you've mentioned some of the reasons).
[+] [-] okatsu|11 years ago|reply
Right now, if I want to make a site in Django, I can just get a $5 VM and spin up the rest for free, regardless of my goal. The same can't be said for an ASP.NET website, unless I'm underestimating Azure's free tier or something.
I live in Montreal.
[+] [-] luuio|11 years ago|reply
[+] [-] SkyMarshal|11 years ago|reply
[+] [-] jwatte|11 years ago|reply
[+] [-] diminish|11 years ago|reply