On Sat, Jan 5, 2013 at 5:02 AM, Katherine Moss <[email protected]>wrote:
> I suppose it’s a question of who is right in terms of the future. I > have read so many articles that insult .net to the core, and it kills me. > I’ll never forget the guy who called the .NET Framework and it’s set of > development tools a McDonalds assembly line! > I like this topic and I remember the post: http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers/ Best part is where he calls .NET a language. Epic fail. I am surprised how much it still irritates me given how long ago it originally came out. The guy's post is emblematic of software development junk/pop culture. These guys are always quick to the draw when it comes to saying MS is this or that but rarely have I seen a reasoned bit of introspection in how they conduct their own work. His hatred for .NET is based on what? RDP, that MS platforms use a \ instead of a / for path delineation (ironically, this is abstracted in .NET - not that he'd know). How about as a comparison: it is 2013 and PHP (which expensify is written in) still isn't thread safe - or at least no one can agree on whether it is which is even worse. Maybe he should try a few posts about I/O completion, thread pooling, getting the best utilisation out of CPU and IO in his server farm, etc instead of the merits of the slash over the backslash. I have worked on a lot of projects on a lot of platforms over the years. I've also done a lot of application assurance/security reviews on a lot of other people's work in my time and I can say without a shadow of a doubt, work that I review from people writing in PHP is, on the whole, horrific. Go have a look at the guts of phpBB some day - he's dead right about Lord of the Flies. Work I have reviewed from people working in .NET and Java is, on the whole, a much higher calibre. It is very rarely that I have seen the same abject lack of planning and forethought in .NET/Java projects that I have seen in PHP projects from customers. Sure there is more overhead in getting a .NET project up and running compared to putting <?php print "Hello, World!"?> in a text file - but so what? Maybe he doesn't know you can whack <%@ Page Language="C#" %> at the top of an aspx to make .NET 'just as productive as PHP'. Saves all that nasty thinking about overall systems architecture and long term maintainability. > Anyway, what I mean, is with all of this stuff leading to mobile > development, does that mean that Microsoft is actually right and that the > desktop computer, the on-premise server, the .NET Framework, and all the > rest, are dying rather hard? I mean, seasoned developers like you guys, > and learners like me, how much of our time is being wasted in this century? > Don't panic - nothing is dying hard. The future is heterogeneous. We had a Windows hegemony for a long time because MS was the only company in the world that: - had a clue about the benefits of building ecosystems - wrote the only stable and well supported mass scale OS (OS9 was junk, Linux is just too hard for end users and no one is going to rebuild kernals to make bluetooth work OS/2 tried to solve problems that didn't exist) - had the money to do all of the above - had the money to focus massive resources on really mundane stuff like having awesome drivers and rallying OEMs together to support stuff like plug and play etc The stuff that made Windows so successful was really pretty basic. It was/is a dependable workhorse with great driver support and you could get it running on almost anything. That was always the hard part for competitors that came over the years. OS/2 might have been great on a number of technical merits, but it was the same old story, crappy hardware support, system resource requirements too high, backwards compatibility story was junk (the Windows subsystem on OS/2 was beyond slow - and if you want to run Windows apps why not just run Windows?) I reckon the key difference today is that there are a lot of players with - for all intents and purposes - bottomless pockets. Linux is starting to get there (check out Ubuntu) and when you couple it with cheapo asian fabs then you can slap together stuff like a new phone or tablet easily (well, easily if you're a corporate with bottomless pockets :). Making some fandagled 3D accelerated mobile device with amazing display and so on doesn't require much first-principals work these days. The chips are cheap and plenty or reference designs available for a relatively cheap price. Hell, you can buy tablets at retail for <$300 and they are *good*. The economics have shifted such that a company like Google can take a hit on the acquisition of Android and subsequent development for the better part of a decade just because it has a long range interest in ensuring that Internet access doesn't become locked up in closed app-based ecosystems so it can flog ads. The fact that Samsung can take over most of the mobile market using the technical crumbs that fall off the table from Google's other interests is really amazing and in my mind points to the fact that we will never go back to an ecosystem with 90+% platform commonality. Back to your question though, re time wastage, I think you're mistaking increased and scenario-specific usage patterns with some sort of shut down in existing usage patterns. How we interact with information today is not a zero-sum game and every new app or device does not necessarily subtract from somewhere else in the market. I have more devices today then I did 5 years ago and that means more opportunity for someone like you to sell me something. That aside, I love my phone and tablet but if I am going to write a mail like this it is going to be on a desktop computer and the smaller devices are always going to be more scenario-specific. Maybe that will change in time, but I doubt it. At the end of the day .NET is a great environment for writing a variety of apps. On the server side, there is a mind-boggling amount of lot of heavy lifting Microsoft does around threading and concurrency that plumbs all the way down to how device drivers schedule work and behave when dealing with network and disk I/O. Old mate the CEO above wouldn't know this because his world view is informed by the pervasive pop/junk culture of taking dependencies on something because it is the 'it' technology of today. Far from wasting your time, you can use this as a competitive advantage to build better performing apps that are more maintainable. With third-party options like Xamarin, off the top of my head, I can't think of a better bet to make if you needed to choose a development environment for the heterogeneous world we live in today. -- David Connors [email protected] | M +61 417 189 363 Download my v-card: https://www.codify.com/cards/davidconnors Follow me on Twitter: https://www.twitter.com/davidconnors Connect with me on LinkedIn: http://au.linkedin.com/in/davidjohnconnors
