
Coding Horror: All Programming is Web Programming - Anon84
http://www.codinghorror.com/blog/archives/001296.html
======
edw519
_The reason most people want to program for the web is that they're not smart
enough to do anything else._

The reason most people want to blog is that they're not smart enough to
program for the web.

~~~
Mintz
Yeah, because StackOverflow.com is a shining example of Jeff's ineptitude.

Jeff declares bold, out-there statements probably more than his fair share,
but he's sparking beneficial conversations that get people talking (even if
it's about how wrong he is). You might think his conclusions are brash and
useless, but he's contributing to the programming community more than he's
hindering it. Personal putdowns aren't helping anybody, no matter how witty
they are.

~~~
pj
I don't think "sparking conversation" in and of itself is a good thing. Most
conversation is mundane, boring, and a waste of time.

The problem with Atwood is that his popularity on the web is an example of the
stupidification of web programming. People who build web apps flock to him
because he has become successful on the web, not because what he says is true,
enlightening, or even beneficial to their success as a hacker.

The web is popular for wannabe's because they get exposure. They think they
are hackers, but really they are just factory line workers assembling someone
else's code.

In most forums I frequent, the majority of questions are from people asking
how to get some FOSS project to work, not how to code some particular
algorithm or do something hard. They don't do any research. One of the
questions on stack overflow right now is if it's possible to find where sql
server database files are stored. Seriously? If you can't do something like
that, why are you trying to build a web app?? It's one of the most basic
things in sql server.

I think at the moment, we're in a web programming bubble, fueled not by the
love of money, or the love of programming, but the love of popularity. This
love is shared by many because we all want to be loved.

~~~
timwiseman
_I don't think "sparking conversation" in and of itself is a good thing. Most
conversation is mundane, boring, and a waste of time._

Agreed, but some is productive, and while I disagree with much of what he
says, he often sparks _productive_ conversation.

 _In most forums I frequent, the majority of questions are from people asking
how to get some FOSS project to work, not how to code some particular
algorithm or do something hard._ True, but that is where most people need
help. People working on the hard problems probably both know how to generate
the answers themselves and know that they will find little help on those on
the forums.

------
shin_lao
I think Jeff's post lacks humility and perspective. Generally you try not to
name laws after yourself, but let's say it was some sort of humour.

I truly think he should put web programming aside for a while, and realize
someone has got to write the operating systems, web servers, middle wares,
compilers, tools that make everything possible.

If things are simple it's because other people solved the hard problems for
him, and sorry, but it's more challenging and requires some "traits" not found
in every engineer.

Of course writing a complex, working and reliable web application is far from
trivial, but please, realize that the world is rich and vast and there is
always a bigger mountain out there.

~~~
jimbokun
"I truly think he should put web programming aside for a while, and realize
someone has got to write the operating systems, web servers, middle wares,
compilers, tools that make everything possible."

Sometimes on the StackOverflow podcast Joel refers to this whole area of
programming as "systems programming," which I think is the correct term.
Basically, it is building the things that other programmers use to build
applications that normal people use. So, programming where the end user of
your work is another programmer.

It would be nice if Joel reminds him of this whole area of programming again
in the next podcast. It's clear in their podcasts that Joel has been around
the block a few more times, and sometimes needs to fill in the larger
perspective that Jeff lacks.

~~~
abalashov
_It's clear in their podcasts that Joel has been around the block a few more
times, and sometimes needs to fill in the larger perspective that Jeff lacks._

Tell me about it...

------
habitue
I think I subconsciously had the same opinion as Michael, but reading it out
loud makes you consider how dumb the idea really is. Do I think python
developers are stupid just because it's easier to program in than C? No of
course not. Elitism is rarely justified based on the tools or platforms people
use.

~~~
wreel
I think that both remarkably miss the point that the true measure of software
is actualized value to the end user.

Who cares about platform or depth of technical knowledge? If some PHP hobbyist
who knows nothing about mmap(3) delivers a site that works for people then he
is a successful programmer.

But assertions like "You hope everything doesn't "move to the web"? Wake the
hell up! It's already happened!" irk me.

That is disingenuous at best. Even the most ardent believer of "everything on
the web" will fire up Photoshop for even the simplest of graphic requirements.
There will always be a requirement for people to know the ins and outs of
desktop programming.

~~~
jacquesm
After seeing what google docs is capable of it is only a matter of time before
even things like photoshop will be web oriented.

Just the other day I was looking for a visio replacement, on a hunch I asked
here if somebody knew of a web based version of it and I got two viable
suggestions. Now, 5 years ago that would have been laughed at with 'that will
never happen'. Now it is there.

Give it another 5 years and who knows. Maybe the next iteration of the gimp is
going to be a service, not a local program.

I hold absolutely nothing for impossible, I've been wrong too often in the
past :)

note to my fanclub: instead of downmodding try to explain why you think this
is wrong.

and have a look at this:

<http://www.picnik.com/>

~~~
timwiseman
That may all be true in the future. In fact, browsers as a rule seem to be
evolving closer to operating systems with time.

For the time being, I find that when there is a web version and a nonweb
version, the nonweb version is virtually always more feature rich, more
robust, and more polished than the web version. That could easily change in
the future.

One thing that is unlikely to change is that I will have more control over the
nonweb version, including amoungst other things the ability to refuse/ignore
certain upgrades and to know that my data is staying on my local machine and
not being sent to third parties at all. This is normally trivial for most
things, but it can be very important for mission critical items where
consistency, stability, privacy, and customization are more important that
being on the bleeding edge.

Of course, it is possible good solutions to even those last problems will be
found, but I do not think that one is on the horizon yet.

In short, I think that there is a place for both and that for the near future
more things will (and should) move onto the web. But not all of it and in
particular not the most important parts.

------
michael_dorfman
Jeff is completely out to lunch here.

"All Programming is Web Programming" only where "All Programming" is short-
hand for "all programming that Jeff Atwood comes in direct contact with," and
even then it's not really true.

Does he really think that the hospitals and banks and oil companies, etc., are
run largely off web apps?

It's clearly nonsense, and part of me is beginning to suspect that this "Jeff
Atwood" persona is just an excuse to troll...

~~~
cjbos
I worked on a contract for Petronas in Malaysia (Retail Oil Division). We
built a pay at pump system, with a centralized processing server to the
different major cc providers (Am Ex, Visa, Mastercard).

The server was built using Java on a BEA Weblogic App server with Oracle
Backend. Each station had a mini station controller (To manage the different
pumps and manage the queue and messaging to the central server). This was
built with Tomcat & SQL Lite.

While not connected to the internet, the system was almost entirely built with
web programming and hardware hacking.

~~~
graywh
Web programming generally means stuff that runs in the browser; not
networking/sockets, etc.

~~~
capsid
When these discussions come up, focus drifts towards the "all apps should be
browser apps" contention. That's silly, but it's true that more and more apps
can benefit from networked components. Would I want to run photoshop in my
browser? Hell no, not for a few tech generations. But, would I like photoshop
to automagically backup my assets and edit history onto some highly-available,
redundantly stored file server? Defintely.

------
jrockway
I am not sure why the original blogger thinks web programming is any different
from any other type of programming. In a web app, we do:

    
    
        handleRequest :: HttpRequest -> AppState -> (AppState, HttpResponse)
    

In a GUI desktop app, we do:

    
    
        handleEvent :: Event -> AppState -> (AppState, [WindowUpdates])
    

(The AppState is stuff like your config files, or database connections, etc.,
etc. You have some state in your function, you change it, and then the next
invocation of your function uses the new state. You might not always write
that explicitly, but it's how you think about it.)

The only difference here is in the format of the "input" and "output". Inside,
we use the same programming techniques. We solve the same complex problems,
and produce the same valuable results.

(But not, he's right, I don't use UML diagrams and multiple inheritance. There
are much sharper tools available to me.)

------
CodeMage
Here's a funny little tidbit about Michael Braude's post: there's more to it
than what Jeff Atwood quoted and focused on in Blogging Horror. What's more,
in the context of the whole post, it makes a lot sense.

If HN audience has one blind spot, it's the fact that not everyone is an
entrepreneur, working on their brand new startup, boldly going where
(hopefully) no one has gone before. Believe it or not, it's really true that
there's a whole lot of people out there who choose web programming because
it's easy enough. There's no shortage of companies whose primary business is
not software, where you can find a job that involves hammering out JEE
applications using Struts (or just plain old servlets and JSPs), EJBs and one
or more databases. I recently interviewed a candidate for a Java developer
position who has spent 9 years in that same comfort zone, never venturing out
of it at all.

Yes, Jeff, you did a great job with Stack Overflow. I use it frequently and I
really love it. No, it's not trivial. Nothing worth doing is trivial. And no,
not all programming will be web programming. Not without redefining "web" to
mean something a lot different from what it means now. Case in point: game
programming is (mostly) not web programming. Now can we please move on to a
post that doesn't revolve around an exaggerated claim for shock value?

------
nickelplate
People like to say that the web is replacing the desktop, but is this really
the case? When I look at the web applications I use on a regular basis
(Amazon, craigslist, LinkedIn...) I cannot think of a desktop app they have
displaced. I cannot say, for example, that "I stopped using desktop
application X because Amazon is so much better". On the other hand, my trips
to the book store are less frequent because of Amazon. So I would argue that
web applications are popular today because they are a convenient way for
people to use a range of services traditionally offered by brick and mortar
businesses.

Edit: I also don't understand why people bother building Photoshop "clones"
for the web. If the goal is to clone an existing application and just move it
to the web, what actual problem is being solved?

~~~
jkuria
There is a photoshop clone for the web that is really successful:
www.picnik.com

~~~
steveklabnik
Also, Aviary's stuff is really, really cool.

------
steveklabnik
I, for one, get really annoyed with our "lol web programmers are teh suxxors"
overlords.

As it turns out, Jeff says exactly what I'm thinking. I _am_ into compilers.
I'm writing an OS as a side project. I code in Haskell for fun. But I love web
programming, and these two quotes are the most succinct way I've seen it
written:

> The web is the most efficient, most pervasive, most immediate distribution
> network for software ever created.

> As a software developer, I am happiest writing software that gets used.

As Jeff says, yeah, there's a lot of bad web apps. But there are also a lot of
bad desktop apps. The "web programmers suck" crowd seems to ignore that fun
little fact.

------
gizmo
Even for Adwood standards this article is really incoherent. It's also a bit
of a troll.

The original claim (that web developers do web development because they're too
dumb to do real programming) is of course silly. However, building web apps is
to a large extend about memorizing quirks, testing code in a dozen different
browsers and dealing with broken libraries and lousy debuggers. Maybe 2% of
the time you deal with interesting problems, the other 98% of the time you're
dealing with mundane problems. Not exactly intellectually challenging.

I think that to a large extend web applications are all about interface, and
interface programming is almost inherently mundane. After you've worked out
how everything is supposed to work on a whiteboard the rest is "just the
implementation". If you're working on desktop applications, it's very
different, because the interface is mostly composed of standard controls. Back
in the 80ies every console application designed its own ascii interface. Arrow
key navigation? Let's build that from scratch! Essentially, web development is
in the same stage. Most of the JS code is mundane boilerplate.
jQuery/prototype is a leap in the right direction, but we're still in the
middle ages here.

On the desktop it's different. MS Paint? Algorithms, and lots of them! Memory
management. Flicker free drawing. Bézier-approximations for line drawings. MS-
paint, which is a relatively trivial desktop app, has more interesting
problems than blog engines, CMS engines, hackernews (the app), photo sharing
sites and so on.

Other apps I have open right now? VMWare. PDF reader. Text editors. IM client.
Browsers. Putty. All these apps had to solve a lot of interesting problems.

With web development you don't get to design your application (your web
framework connects a method to an url), you don't get to pick an architecture
(MVC is always the right solution), there are no algorithms to develop, there
is no memory to manage, there is no state space to design.

Web development is about giving people what they want. People want inane
things, and the web is the best medium to deliver this inanity. Good business?
Occasionally. Difficult computer science? Hardly.

------
plinkplonk
One guy writes a dumb blog post. Another guy writes an even dumber rebuttal.
Linkbait heaven!

"Pretty soon, all programming will be web programming."

WTF?

That's the dumbest thing I've heard in a long while. "Pretty soon all
programming will be X programming" is a dumb statement for most values of X.

As Roosevelt once said, "Ho Hum".

------
akmiller
There will always be a place for both. Move on...

~~~
icefox
You will always need a desktop application if only for the browser. :) I find
hacking on Arora, Qt, QtWebKit and WebKit fun. And a browser will always need
a desktop (of some sort even if it is just a framebuffer)

------
niyazpk
" _The reason most people want to program for the web_ is that they're not
smart enough to do anything else"

The reason most people want to program for the web is that web is such an
interesting and huge thing that is happening now and many people want to be a
part of it and many others dream to make loads of money of it.

Web programming is not inherently bad compared to desktop programming. Of
course there are many bad programmers who develop websites juts by reading a
few ASP or PHP tutorials. But that cannot be generalized to say that all web
programmers are bad. There were lot of bad programmers in the desktop world
too. (Remember VB?)

"The reason most people want to program for the web is _that they're not smart
enough to do anything else_ "

Most of the people are not smart (at least when we look at them from our
narrow perspectives). They are everywhere - in the desktop as well as in the
web.

At the same time you will see that the ratio of good programmers to bad ones
is orders of magnitude higher in some specialized fields like compiler design
or kernel design. Just remember that this is not a sign that all good
programmers are in the desktop. It just means that smart people tend to
cluster around in places where other smart people are. There are places in the
web where the ratio of smart people to dump ones is higher. Think about the
engineers in Google/Youtube. Cloud computing and distributed computing are all
hard problems too.

------
wwalker3
Once technologies like Google's Native Client take off, the web browser
becomes merely the installer and updater for my native app.

And it'll be none too soon -- then we can abandon the doomed effort to somehow
cobble together huge, powerful apps like Maya and Photoshop out of a mess of
JavaScript and XML.

~~~
teppefall
That makes no sense to me. Google Native Client is just a desperate attempt to
hide expensive code from other companies. How many nuclear power plants,
switches, routers, undersea pipelines, servers and UPS systems are needed to
run a Facebook turd-app connected to Google DRM anyway ? Talking about the
slowness of Javascript is amusing when 856 sub-systems needs to be operational
for a Web 2.0 "Hello World".

Give me a break. Americans have no cash and live on credit, thereby creating a
marked for AT/T, McDonald's and Google.

~~~
silentOpen
That makes no sense to _me_. What does everything after the second sentence
have to do with NaCl?

------
far33d
I love the "I like using tools like this because they are hard and it makes me
feel smarter than everyone else" attitude. I understand everything on the
little laundry list, including things I wish I'd never had to do (UML
diagrams, for instance), but choose to work on the web. Why? Because I prefer
my "hard problems" to be customer problems, not technical ones. I'm happy to
work on hard technical problems when products require it, but there's plenty
of difficulty just figuring out what people want and how to get it to them
quickly. There's no glory in doing hard things for the sake of it. I don't
need to purposely handicap myself just to prove that I'm smarter than other
people.

I'm fully confident in my intelligence without playing stupid games.

~~~
donaq
Doing hard things for the sake of it, or for no other reason than to find out
if you can do it, is the very essence of hacking. It is also precisely that
attitude which fuels research, discovery and invention. So while I can respect
your preference for solving customer issues rather than technical ones, I
don't think you should diss people who prefer working on technical ones
either. Are you saying there's no glory for the people who wrote the JS
engines running in your customers' browsers? What about the people who wrote
the operating systems on which the web server pushing out your code runs? What
about the people who wrote that web server? What about the people who wrote
interpreters for whichever language you're using to code your web apps?

Those people deserve more respect than being dismissed as playing "stupid
games", I'm sure. Lastly, I think if you're not feeling stupid 90% of the
time, you're probably not working hard enough.

~~~
far33d
You are right - doing things just because is a big part of the essence of
hacking.

I fully respect all the work of people who work on "hard problems" - I even
believe that I have and continue to work on "hard problems" every day. The
list of things the OP used were basically "skills" not problems (virtual
destruction semantics, references, pointers, etc). It's the attitude I
dislike, not the desire to do hard things. The attitude that "these things are
hard to understand and therefore more interesting and more worthy" is
ridiculous, and shows that the writer doesn't actually understand any of the
things he hasn't worked on.

I don't diss people working on hard things - I diss people who call everyone
who doesn't work on what they work on weenies.

------
csomar
"The reason most people want to program for the web is that they're not smart
enough to do anything else."

The web is so deep: HTML, CSS, Javascript, PHP, Mysql are all required to
build the next web app.

In any field there's bad and good engineer. HTML and CSS are easy, but
complicated also (browser support for example). Javascript is simple, but
challenging with Jquery. PHP is an Object Oriented Language and can have
classes inheritence...

Web developers need to know FTP, HTTP, requests, debugging, FireBug.

Conclusion: Web developement is so big and you can be a stupid developer
whether in web or desktop!!!

------
mrshoe
Jeff failed to point out the most absurd aspect of the blog post he quotes:
balking at new technologies because they make life easier. Isn't that the
entire point of technology? How can you be in a tech field and maintain that
attitude?

I think that Braude feeds his ego by assuring himself that his ability to
program a computer must prove that he's smarter than everyone else. Now that
programming has become easier and anyone can do it (which is not even close to
the reality of the situation), he feels less special. It's so ironic when
technologists resent technological advances for this reason.

That all programmers don't need to know about "virtual methods, pointers,
references, garbage collection, finalizers, pass-by-reference vs. pass-by-
value, virtual C++ destructors, or the differences between C# structs and
classes" is _a very good thing_. Lots of that stuff is ugly and
overcomplicated and poorly designed and error-prone. The reason that large
classes of programmers needn't pay any attention to any of it is that the
state of the art has _advanced_ and newer, better designed technologies are at
our disposal now. As technologists, how can we do anything but celebrate that?

------
mojonixon
Both of these posts, Atwood's and Braude's, are complete messes. Braude tries
to compare the development of entire desktop applications with the UI
development/document presentation of web applications. Web UI development
should be compared to UI development on the desktop. I wish I could use
Swing/GTK/Qt for my web UIs, or write my blog with Word, but instead we have
to use HTML and DOM scripting. The web is a crappy UI framework with an
excellent distribution method. The internal differences of desktop
applications and web applications are typically a matter of scale.

"Atwood's Law: any application that can be written in JavaScript, will
eventually be written in JavaScript." Dear god, no! The browser is not the
web. The future is not photoshop in a browser, it's a photoshop UI (hopefully
developed with a rational desktop GUI framework) with a network connection
(HTTP?) to a processing server. Of course, that's not particularly new, it's
X11.

------
notaddicted
Previous to this, was all programming Windows programming because most people
used windows?

The web server is an interface. Making a good interface is part of programming
but it isn't the only part, not by a long shot.

------
srn
Hanging around the hacker dojo and spending a little bit of time at open
source world, there are definitely people who think this is true, that all
programming and applications are web apps and they're all going to move "into
the cloud." I find amusing the lack of acknowledgment that your web app
requires an operating system, a web browser, network equipment, etc. to run.
Unless all these "just work" and there is no more development left?

------
whughes
You mean, aside from the programming done on the 4 billion cell phones out
there, all over the world. Not to mention the hundreds of millions of game
consoles in developed countries. Over 10 billion ARM processors have been
shipped, and you can bet that most of them won't be running web apps. How
about the firmware and the server software and the operating systems which
make your web programs possible?

------
daeken
I, for one, welcome our new Javascript-kernel overlords.

Seriously, what is he talking about? You could perhaps make the argument that
GUI apps are by-and-large web-based at this point, but his argument is just as
bad as the one he's arguing against: frontend development is not the only
development.

------
nudded
The problems that can happen with a webapp:

* your account gets compromised, your password is saved in plaintext, etc...

* their servers are down, you want to work on a Word doc, edit an image. To bad, you can't because the app itself is down

* not everybody has constant internet connectivity.

* Webapps can never be as powerful as a desktop application.

~~~
seldo
> Webapps can never be as powerful as a desktop application

You're confusing technology with user interface. The primary difference
between web apps and desktop apps in the future will be the idioms they use in
their user interfaces.

Offline storage and various other HTML 5 APIs mean that there will be nothing
a web app can do that a desktop app can't. Web apps might never be as
_efficient_ as a desktop app -- compiled versus interpreted languages being
what they are -- but efficiency is much less of a concern these days. Web apps
are often quicker to write, update and iterate upon, so for any given new
application, the web version may have a structural advantage over the desktop
app.

~~~
nudded
good point. But say you have a photoshop webapp (with all the features the
desktop version has). When you want to apply several filters, you are
depending on the capabilities of the server and also on the current stressload
of the servers. Things might take a long time to complete or cost too much.

With a desktop app, you're in control of your own machine.

~~~
StrawberryFrog
_good point. But say you have a photoshop webapp (with all the features the
desktop version has). When you want to apply several filters, you are
depending on the capabilities of the server and also on the current stressload
of the servers._

Why? You can push pixels with flash and JavaScript right in the browser. I'm
not saying that doing it is right (neither is the article), but you can do it.

------
biohacker42
Web programming, shweb programming. You have a client and a server and a way
to communicate. JSON is a great way to communicate between client and server.
But does it matter if the client is Java or JavaScript or a browser plugin?
No. And the server side? It's what ever you want.

------
jacquesm
I remember the stacks of documentation I used to lug along from house to house
(or office to office), and I wonder how the 'real' programmers today would get
by without the web. Google and many other websites make for a greatly reduced
effort in finding relevant information. The web has fostered communities of
'true' hackers all over the globe, working on niches so obscure that 20 years
ago you'd have never met someone that even understood what it was that you
were trying to achieve. It's the democratization of hacking, the barrier to
entry has been lowered.

And understandably that has some folks pining for old times.

Sure, some web programming is not as exciting as finding a really elegant
solution to some problem with a two page algorithm that will have everybody
think ('why didn't I come up with that?').

But on that level almost all of us became 'application programmers' long ago.

The toolbox is now so filled with great instruments that we can go and make
some music. There is real programming to be found on all levels of the game,
more on some than on others but still. And the tools are so easy to use that
plenty of people that would never dream of a programming career a decade ago
are getting in on the game, and they find that they can do useful stuff.

The 'real' hackers of today build the tools that the rest of us use, and I
don't think it was ever any different, just some illusion. Mostly due to the
fact that you used to be able to understand everything about some branch of
computing.

The big issue here is that the 'browser' really is an intelligent terminal and
that sooner or later you'll see the analogue between the way we work today and
the way we worked in the early 70's to 80's, before the advent of the PC.

The PC revolution is slowly being reversed by the web, more and more data is
migrating 'online', more and more code is server side. The only thing that
works against that trend is 'ajax', where some code migrates the other way.

So, hacking is far from dead, web programmers are 'real' programmers, there is
a lot of work to do and if you want to hack to your hearts content without
feeling frustrated by all the layers I have a stack of 68000 manuals here that
are looking for a new home. Then you can unplug your internet connection and
pretend the revolution never happened.

Programming will never be 'just web programming' or any other form of it,
software is so pervasive it is scary. If you are on the frontiers of computer
vision, AI research or some other field that seems to have no impact on the
web today then I'm sure that your technology + the web some day in the future
will be a more powerful combination than without.

Technology is a means to an end. To some it is a means unto itself but that's
a small minority.

------
ogdoad
Well one could lean on the anti-web/cloud-apps case a bit heavier taking into
account the bits and pieces of paranoia that easily stem from a centrally-
operated system, where admin is god, a big corp has your files etc. Capitalism
goes BOFH I guess. Then again, centralization also evokes images of Brazil and
the french Minitel system, which, all things considered, were quite cool (and
the Minitel still holds some ground).

I suppose by talking of 'web programming' one immediatelly thinks of PHP, and
thus the horror, but there are quite a few other things that are considered
web programming and do not promote bad practices. Then again, if the Cloud is
the wave of the future, we can but ride it out.

------
ErrantX
A really great Coding Horror post (whats going on: TC has been pretty good
this week, Jeff is ranting about good stuff... ;)). Anyway:

 _Writing Photoshop, Word, or Excel in JavaScript makes zero engineering
sense, but it's inevitable. It will happen. In fact, it's already happening.
Just look around you._

With that (very astute) comment in mind - is it time to look at Javascript as
a client side egine.

By which I mean if the future is going to be web based (and with Office Online
and Chome OS it is hard to argue that is not the overall "plan") then is JS a
sufficient engine to work with. Do we need something a little mor powerful -
with tighter bindings to the browser, filesystem (sanboxed obviously) and the
web?

------
varjag
Am I the only here who is interested in subject but is uncomfortable about
both sides in the argument? You know, sort of like seeing Mussolini and Pol
Pot discussing human rights.

While I get and can easily relate to the OP's point about web programming,
neither UML, sequence diagrams (yes I actually done them), .NET sandbox or the
three-languages-clumped-in-ugly-one (C++) gives me any excitement. Bare
mention of "business logic" gives me nausea, and I want to unlearn all I knew
about CIM.

I guess some stuff is just boring crap to work on and some isn't. Not a
terribly useful or novel conclusion, and probably would never make as
controversial and hot topics as those two blogposts...

------
missile
I enjoy actually Atwood's writing sometimes, but why does he have to randomly
put some of his sentences in boldface?

~~~
stewiecat
Search this site, someone posted an anti-atwood greasemonkey script that
removes the semi-random bolding.

------
rythie
Is web programming really that much easier than desktop application
programming?

Most desktop applications can use masses of memory, CPU and disk before the
average user will complain. In most cases this is not possible on a web app.
since the same hardware must serve 1000s of people.

------
chanux
"You can't kill your own grandfather."

(<http://www.slate.com/id/2225223/pagenum/all/#p2>)

------
strlen
I think both of these articles are wrong. This theme has occured in several
posts here in the last few days, so I'll state my "grand theory". There are
several types of programming: applications development, systems programming
and algorithm/data structure development.

I'm a systems programmer who is trying to pick up a greater deal of algorithm
and data structure knowledge. I view applications as moving to _the web_ but
for web application to become efficient, scalable and allow for the same rich
UI as a desktop application a _great deal_ of difficult systems engineering
and algorithm development had to happen first. More so than for a desktop
application.

Desktop applications typically store individual user data: you could easily
use an O(N) lookup structure to store it and then use just write() to write it
out to disk as a C struct. Web applications are multi-tenant. For the largest
web applications, even a relational database (an incredibly complex system:
transaction protocols, b+trees for storage) can't scale.

Before any _reputable_ company puts their name on application, the application
has to be load balanced. Yet, this is transparent to the user. Do typical
desktop applications require a shared nothing distributed architecture?

Now on the other hand, web developers don't think about these issues and write
in powerful, high-level languages using frameworks and DSLs which often times
don't even require writing SQL code. Yet, they aren't doing in this in vacuum.

So really the case here is that web application development appears, on the
surface, to be less challenging than desktop application development. Yet the
amount of systems programming that _had to happen_ to allow that is immense.

Am I now saying that systems programming is more challenging than applications
development? No, the challenges are different. I don't have _nearly_ the sort
of patience and attention to detail that UI development requires. The process
(gathering _user_ requirements, presenting mockups) is actually _more_
complex.

If you're looking to do lower-level work, or more algorithm/data structure
development because that's what _you_ find challenging than don't be an
applications developer (whether desktop or web). On the other hand, be aware
that the demand for systems programmers isn't always as high (and getting the
job is a lot more difficult in terms of complexity of even the interview and
the experience/education level required).

On the other hand, before web developers bash statically typed languages
(especially C/C++), bash CS curiculla that stress algorithms and data
structures or wonder why interviewers at Google/Yahoo/Facebook ask about
Binary Trees, they should be aware just how much of C/C++ code was written for
them to be able to do even the simplest of SELECT statements (and if you don't
know what data structures might have been traversed when you issued that
statement, I won't hire you).

------
wicknicks
Ah! Now I know where the crap from M$ comes from.

------
c00p3r
That guy was right - a browser is a platform nowadays. It means yes,
Javascript gets ground from Delphi, Java and .NET

But he missed one thing - all browsers, v8 engine, most of rdbmses and even
jvm were written in C++ and almost everything on a server side written in C.
=)

------
TweedHeads
Mainframe programmers said the same about PC programmers long time ago before
PC programmers replaced them.

I see a pattern here...

------
j_baker
I still stand by my theory: it takes intelligence to do the simplest thing
possible. If anything, the thought that web programmers are doing something
easier than others is an indicator that they're smarter than "lower level"
programmers.

------
mburney
I've only been a programmer by trade for a couple years so I don't know very
much yet, but could someone please enlighten me: what does the platform have
to do with how difficult a problem is? I thought platforms, languages, etc.
were just tools, and the web or desktop are just user environments; how do
these tools and environments determine how complex the problems are? Apps can
be as trivial as you want them to be or as difficult as you want them to be,
regardless of how they are accessed. At least that's what I thought, or am I
making some naive newbie mistake here?

Also it just seems like a lot of these anti-web "real" programmers don't ever
discuss much about user interface design, as if that's trivial and backend
programming is "real" programming because it's ugly and normal people get
confused by it. Kind of reminds me of jr. high school when our school had
apple computers, but the myself and other kids who owned PCs thought we were
way smarter than apple users, because somehow we thought that typing in a
black shell window makes you smarter than someone who draws pictures with a
mouse.

