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

Reply via email to