
PHP or ASP.net: Did I Do The Right Thing? - keithly
http://www.wekeroad.com/2014/02/18/i-had-a-choice-php-or-net/
======
d0
I had a background of Unix and Windows NT. I did both ASP.Net and PHP and
switched back and forth between contracts for about 6 years depending on who
offered the most cash. I now sit at a Microsoft consultancy, on a Mac, doing
all the high level technical design work and Unix bits the company needs (and
occasionally digging the company out of the crap when they screw stuff up and
the normal staff don't know what to do and Googling it is beyond them).

Did I do the right thing? No. I should have skipped Microsoft stack entirely.
I say this after 12 years of .Net and a previous 6 years of COM/C++/Win32. It
has been the universally most stressful platform to work on. The technology is
terribly complicated, obtuse and non-orthogonal and full of dead-ends and
surprises. It's also virtually impossible to cleanly automate anything which
means you need thousands of hands to push the buttons in the right order[1].
However this pales in comparison to the culture which almost universally (90%+
of outfits I've worked at) contains solely grim factory farm programmers who
don't actually care what they are doing or understand what happens outside the
ecosystem and outsourcers who whilst technically superior to the on-site
staff, march around with loaded guns ready to shoot their own toes off (and
anyone else dancing with them).

The only good bit was the cash.

I'd rather have picked up a 2003 OsCommerce site than do it again.

Now I'm learning Objective C and Cocoa to solve a few _real world problems_ in
another non-technology market that IT rarely penetrates. I'm doing that on my
own.

[1] This has finally improved, but a little too late with PS and PS DSC for
example.

~~~
tatalegma
Can't automate anything? That's just false. We have our entire
build/deploy/test process automated. Hint: even our server build is automated,
and gets rebuilt with every code change.

~~~
d0
Yes same here. However this is still utterly painful compared to Unix
platforms.

~~~
philliphaydon
Can't say its any different in 2014.

------
skrebbel
I don't understand the premise of this article. The OP made one technology
specialization choice 13 years ago, and all he wonders is whether it was the
right one?

I know little about the author so I can't really judge, but shouldn't the
question have been "what if I had learned something new and very different
every year, instead of every 13"?

~~~
robconery
OP here - I've made quite a few choices but this (as mentioned) was a pivotal
one - and yes I wonder if I did the right thing. The MS ecosystem is very
insular, so once you go down that road you're "all in" \- so the choice wasn't
a casual one at all.

~~~
aphistic
I'm sorry, but I have to disagree with you there (the "all in" comment). I'm
kind of in the same boat. I learned BASIC and vb first, then some PHP, but
I've been doing MS-related work for the last 12 or so years. The MS ecosystem
is definitely segregated but that doesn't mean you're stuck only doing MS work
forever. Over the time I've been programming, including doing MS work, I've
been learning so many other technologies and it has also positively impacted
my work on the MS side. New ideas for how to lay out code, new technologies to
integrate with, etc.

You may not have made the right choice, but it's not because you chose ASP.Net
over PHP (you'd probably be asking the same question if you picked PHP). It's
because (and I'm sorry if I'm being too blunt) you didn't seem to question
what you were doing or go out and seek alternatives. You mention the "drag and
drop" world, but that's not the only way to implement those features. We both
worked in the same world at the same time, but I didn't like the "magic" the
drag and drop functionality provided. It didn't give me enough control over
what I wanted to do so I figured out how to do it manually.

My response is a bit more rambling than I intended for it to be and I hope you
can piece it together. :) My main point is that we both ended up with the same
choice (ASP and ASP.Net) around the same time but I also have those bullet
points you mention checked off. I don't regret my decision one bit and I don't
think it has stunted my professional growth at all. If anything it has
probably helped it because .Net devs are in high demand and highly paid in my
area.

Edit: Hah, I wrote this post without knowing who you are at all. I may very
well be wrong, but that was the impression I got from your comment and the
original article.

~~~
robconery
No worries - good comment :). What I meant by "all-in" shouldn't be taken as
"in total". In other words: in all the projects I worked on, only ONE TIME did
I get to use MySQL. I installed Ubuntu once for fun - but when it came to work
and what I did for work - it was MS all the way down.

These were choices made by my contracts and my employers. What you're saying
is valid: I could have pushed to use another system or platform. I can do this
now - but back then it was not nearly as easy to just pick up and learn the
intricacies of different platforms. You might disagree, it's sort of
subjective - but installing PHP/MySQL was a complicated affair if you're not
familiar.

Finally - the whole premise of the post was the very question itself: "Did I
do the right thing?". I was questioning, and I had to make a choice. I
constantly did (and still do) that.

------
untog
Honestly, if your thirteen year old technology choices are still having an
impact today, then you're doing the wrong thing regardless.

I started out with PHP, got whatever job I could which involved Access and
VBA, then VB.NET, then C#... now I use JavaScript, Python and occasionally
Ruby.

That isn't to say that you should know six different languages. But you should
know _programming_ well enough that you can apply your skills wherever you
need to.

~~~
robconery
Every choice you make impacts you today. What you learned in high school,
college, and at your first few jobs all shape who you are and what you know.
If I wouldn't have spent those years in ASP.NET. I know programming, have the
same skill set as you pretty much (no Python). I would have loved to be
increasing my Ruby/JS skills during the "lost years" doing ASP.NET.

~~~
newsreader
Sorry you feel that you "lost years" doing ASP.NET. I did some COBOL, FORTRAN,
Pascal, C, C++, VB, and Delphi during a period of two to four years and don't
feel they were "lost years". In fact it was all fun. Would I be better off if
I had done something different? I guess I will never know...

~~~
robconery
They were lost in that _nothing_ I did with ASP.NET (not MVC) has translated
to what I'm doing today. No patterns, no habits, no tooling, nothing.
COBOL/FORTRAN are languages and I'm not sure they correlate here - but maybe
top-down design ripples still? :):). I learned a lot in Pascal - mostly how to
comment things :)

~~~
newsreader
Well, I'm ok with having wasted some of my years in technology that has
nothing to do with what I want to do today. I read your blog, watched some of
your Tekpub productions, downloaded and used some of your code (massive) in a
project, and have been following you on the Internet for quite a while.
Honestly, for someone that lost ten years of his life you are doing fine. I
downloaded biggy today and will be checking it out -- thanks for your
contributions.

------
welshrats
Watching the things the ASP.NET team has accomplished inside such a
politically poisoned organization as Microsoft over the last few years has
been inspiring. I don't know how they managed to get things like "out of band"
updates, open sourcing MVC, and so on accomplished in that environment. Makes
me think there is hope for getting some similar changes through in my current
"enterprise" environment.

~~~
Finster
Developing on the ASP.NET stack is nothing like it was in 2001, or even 2011.
I used to loathe ASP.NET, but what MS has done has really emboldened the dev
community to contribute some really great OSS solutions.

------
overgard
At my last job, we migrated from classic ASP to ASP.NET MVC, but we pretty
much just left out all the horrible parts of ASP.NET (which there are, of
course, many).

Basically if you nix webforms and .aspx files, and do your own templating (so
essentially, just use ASP.NET for routing and controllers), it's not awful.
Visual Studio is nice and C# is surprisingly decent as a webdev language. But
yeah. I'd much rather use Python or Ruby.

~~~
icedog
Did you ever use Razor?

~~~
overgard
For a couple things. I think we were migrating to it when I left. It's decent
although there's some things about it that feel clunky.

------
newsreader
I have been working on the MS stack for more than 14 years and still remember
the decision I made to invest in learning the .NET platform. I certainly don’t
regret my decision and maybe in hindsight I would have made some different
choices along the way but being a .NET developer pays my bills and gives me
plenty of satisfaction. For the last two years I've been doing more with the
big three (JS, CSS3, HTML5) and I’m keeping my eyes on SignalR, Web and Mobile
Development, AngularJS, and other "cool" technologies, but .NET is still
paying my bills and I have no problem with that.

------
Todd
Why not do both? I did C/C++, then C#, and now C# plus PHP, JavaScript, or
whatever is needed for the job. Sure it takes some ramp up, but not that much.

I wasn't a fan of the MS Web stack for a long time. ASP.NET MVC fixed that.
It's still overly complicated but it gets better with each release.

From a language standpoint, it's night and day. C# is a real programming
language. You can use it to write web apps, desktop apps, mobile apps,
daemons/services--even embedded apps. PHP is a templating tool that has tried
to evolve into a language and has been hampered in the process by horrible
legacy. It's actually pretty decent now but it is still only useful for one
thing: web apps.

------
kumar303
I had to make this exact same decision in 2001 and I chose PHP!

I subsequently fell in love with Python and am still active with it today. I
think a choice as far back as 2001 doesn't matter too much, programming is
programming. However, I feel like I became a better programmer by having to
deal with a language as shitty as PHP. There were so many pitfalls that I
quickly became an expert at working around them -- this took a lot of
painstaking investigation into the inner workings of the language.

------
MichaelGG
>the Microsoft web world was (and to a large degree still is) all about
"Visual Component Development". What that means is you basically do a lot of
drag and drop

If were doing it wrong, then maybe. Allowing "VB6" programmers to drag-n-drop
stuff to make forms is _still_ a fine way for them to make applications that
run on a high-speed connection and just happen to be using HTML by accident.
Being able to use a "datasource" was apparently valuable for some people,
although I could never get it to work well.

Was it a bad idea to only focus on that and force the control model on
everyone? Sure. It wasn't necessarily a terrible _option_ for a lot of people.
I did demos of ASP.NET to PHP developers, and some of them were pretty blown
away by the idea of having events fire and being able to do something like
"foo.BackgroundColor = bla" and have the whole page "just work".

But being forced into the control model with viewstate and all that, it
certainly didn't make ASP.NET competitive with other technologies for having
total control over the experience.

Had MS gone "MVC" from the start and focused only one web techologies, and had
someone else made the easy "forms for the web" toolkit and got marketshare,
we'd be saying how foolish MS was for not providing a similar toolkit.

------
teilo
I had the same reaction to ASP.NET 1.0. "Do they have to make this thing so
damn hard?" I had a PO system to write, and didn't have the time to fart
around with bloated datagrid components and reams of cumbersome XML.

I had the luxury of being a 1-man IT department, so I gave up and learned
Zope, which led me to Python, and then Django. Had ASP.NET MVC existed at the
time, no doubt I would still be writing code in C#. In retrospect, I'm so glad
it didn't.

------
AdrianRossouw
i was about 16 or 17, and I sat in front of my freshly reformatted computer
with a copy of windows NT4 and the latest version of slackware at the time. I
was going to do a full partition install of one or the other ...

Even at the time I realized it was a crossroads. My entire career and future
pretty much grew organically from that point outwards. I don't think I would
have had even remotely the opportunities had I not committed myself to open
source.

------
cfeduke
Rob did some interesting and influential things in the .NET community which
stems from exactly what he wrote about: his work with Ruby and Rails.

I've come from the Microsoft (Windows 32-bit API) to .NET Fx to Linux/Unix
world in much the same way as Rob; ASP.NET to Rails.

There is a certain reality I have learned over the years: when I consult part
time and don't mind sometimes boring work I earn twice as much writing C# than
Ruby. The money is in the enterprise.

Of course at my day job I write Scala and figure out ways to get the most
amount of Ruby [or sometimes Python] I possibly can into our day to day work.
I love optimizing for productivity and happiness.

------
dcomartin
I read the whole blog post disagreeing with almost everything right up until
the end when I read:

"This is the one shining negative here: .NET stunted my knowledge of
HTML/CSS/Javascript."

This is the whole point of the blog post. And this is in fact true. But
terminology that is not pointed out is that ASP.NET WEBFORMS are what
"stunted" your knowledge. WebForms made developers oblivious of how the web
actually works. .NET, C#, or VB.NET isn't the problem.

Also, living in a Microsoft world can be insulating, but only if you aren't
looking for a better way. "Alt.NET" was really a belief in outside the box
thinking.

~~~
robconery
In 2001 - 2008 there was no ASP.NET "WEBFORMS". We had VS, CodeBehind, and
Server Components - that was the world I lived in.

Yes, Alt.NET came along in 2009 or so and managed to do some good things, not
soon enough really and all the silly flame wars actually did more harm than
anything.

------
batoure
Javascript frameworks are going a long way to eliminate some of the worst
parts of .NET development. The ability to design c# as a service and use api
calls as hooks to the back end has helped act as a catalyst for change.

------
UK-AL
Ermm. Neither. Honestly I prefer C# over PHP. Decent open solutions over C#.

------
keithly
A response to this post from another asp.net developer:
[http://geekswithblogs.net/dlussier/archive/2014/02/19/155486...](http://geekswithblogs.net/dlussier/archive/2014/02/19/155486.aspx)

"...early on in my MVP/Community days (2007ish). Microsoft hired some non-
traditional devs to head up something in the ASP.NET group. Phil Haack, Scott
Hanselman, Rob Conery all came on board and launched ASP.NET MVC which BLEW.
ASP.NET. UP."

------
Delmania
First, asking yourself if you did the right thing is silly, you made the best
decision with the information you had at the time. To be honest, technology
ebbs and flows. What's hot right now may not be hot in the future. I think the
key skill is learning how to learn, so you can learn a new technology quickly.
Also, don't just focus on technology, understanding how a business operates is
just as important!

------
owenjones
If I had dedicated more time and energy to learning new things 13 years ago
would I know more things now?

Yes?

~~~
robconery
That's a given, and it's what I did. It's not the time that's in question,
it's the choice of what to learn.

------
skrowl
If you're going enterprise, go C#.

If you're going open source, you should have went python or node.

~~~
d0
No - go Java. ORMs, document generation, reporting, integration, architecture,
deployment, tooling, devops stuff. Literally everything is ready to roll out
of the box for $0. And it all works.

C# - half of this is available for a fee and the rest is available for a
larger fee. And none of it works particularly well. And if anything breaks
it's $200 a go to get it fixed.

~~~
Xdes
I would go Java if the syntax weren't so stale. C# has continued to improve
over the years. The BCL and compiler teams are not afraid of breaking changes
between major versions. Stability is good (which is why non-nullable reference
types won't make the cut), but stagnation kills the ecosystem and drives new
contributors away.

~~~
d0
Java syntax is usually pretty irrelevant when it comes to actually solving
problems.

C# is a minefield for issues. Linq memory ballooning, null refs, O(WTF) LINQ
expressions, tri-state logic caused by nullables, spinlocks from hell
(ReaderWriterLockSlim), missing symbols and more sourceless black boxes than
anything. Oh and three different subtly broken XML APIs.

More language features don't make it better.

------
jbeja
I hate that annoying nav menu, is too big.

