All Programming is Web Programming

Being both a web developer and a reasonably experienced desktop developer I can say this - getting a business model to work is MUCH MUCH MUCH easier for desktop applications. If you have a sufficiently large audience for the problem you’re solving and a polished desktop solution, people will with joy pay $70 for your app. Try that with the same web app.

This might change in the future, but as far as I can see from my own businesses, this is how it is right now.

I think what he meant is that 95% of web developers are people who never understood what the hell a pointer in C is, and this is the reason why those programmers (if you can name them programmers) live under the shadow of web frameworks that tell them exactly how to get things done, which makes you feel that programming for the web is not challenging, however if you are programming for the web you have to provide a service that can’t break, a desktop application can crash with not a lot of damage, but if a web applications crashes for half an hour you got a lot of angry customers, and lose money, which makes web development a real challenge.

You have to provide a robust web application, that its impossible to crash, unless you cut electricity from the server, you have to provide a great logging layer to know what went wrong, you have to make your application accessible for the web on large screen up to small mobile screens, you have to understand your customers and what they want, you have to convert these code to something you can buy … etc

Bottom Line: the are many challenges in web development (serious one) not the one of writing three HTML pages and two javascript routines.

Ugh… You know, every time I use one of our “corporate web applications”, I discover new problems, be it our timesheet management system, our document repository, ClearCase’s joke of a web interface, and so on.

Give me a client/server application any day: UI consistent with the rest of the desktop, no problems hitting the “back” button and ending up either on an error page or the same one, etc.

I’d argue there is too much development being done for the browser, a lot of times for bad reasons.

“The web is the very embodiment of doing the simplest thing that could possibly work. If that scares you – if that’s disturbing to you – then I humbly submit that you have no business being a programmer.”

I’d say that’s a rather arrogant statement. The world is not the world wide web. There are plenty of other things out there that needs programming.

“As a software developer, I am happiest writing software that gets used. What’s the point of all this craftsmanship if your software ends up locked away in a binary executable, which has to be purchased and licensed and shipped and downloaded and installed and maintained and upgraded?”

I guess one’s view on this may depend on wheter we are talking about direct or indirect/affected users. In terms of affected users, I think the software controlling elevators, bank/card transctions, respirators, gps naviation systems for public transport, traffic lights, payroll systems, etc. are just as useful, if not more, than most web sites.

Someone’s gotta write the code for your browser to host the web apps…
Someone’s gotta make the firmware for your fancy mobile, your mp3, your car…

I totally second Dan A.

The Web is bound to grow onto you in every aspect of life. From your social network to your news feeds. Every application is aiming to capitalize on the wave of Web2.0. Face it Web application development is the best thing to happen. You can match any level graphics and code complexity using JS and Flash.

Though the backends code running on Java, Php or .Net will continue to exist, but its role will be limited to that of a middleman to DB.

The OS is coming online http://www.youtube.com/watch?v=vvHIQBvC_AY
The user is also always online. The level of penetration of the web is far more than that 5 years ago. Stuff like google gears is revolutionary, you have replicated the web onto your desktop. Desktop Applications are also mutating into web applications.

Tools don’t make the craftsman.

Not all apps will be web apps. Many web app coders are first class. C++ and other codes should wise up. Language snobbery is daft.

I find it fascinating that what I do for a living is outdated, outmoded and replaced by a web app. I’m sorry but I do a lot of systems engineering where I need to know the guts of the OS (whether that be Linux, UNIX, Windows, Mac(UNIX), BREW, etc.) As far as being 2 clicks away from the web, you need to realize there are a lot of folks who are “amazingly”, not connected to the web or connected on slow links, especially in developing nations as well as in the US. Now the move towards AIR apps (web on a desktop) has promise for the disconnected world. As I’ve migrated from Assembly through the polyglot of current languages I have t agree with Michael on a few things. there are a lot of folks who do not know the gory details of how to get this kind of work done. that’s why they hire me and others like me (by the way, I do web work too).

Us technophiles tend to forget not everyone is on the cutting edge. I like the new technology, but to be honest, if I want real performance, I get down to the metal (ASM, C, C++) which I still use today. So, are you going to write your next hardware driver in Javascript, or a browser, your multimedia codec, your next hot 3D game title.

Please get with the program. There is plenty of work for everyone. Should apps like MS Office go to the Web? Yes, and they have already with things like google docs and Zimbra.

By the way, web development is quite difficult if done correctly. If you are a script kiddy generating a prepackaged web template with Joomla, yes that is easy. If you are developing an SOA stack or a large corporate website or your own CMS, yes that’s hard.

My 2 cents worth from a polyglot, greybearded(not yet, but feels like it) SW Monkey.

I guess I’ll just stick to writing back-end code (in C++ and perl most likely) so that Jeff can keep writing his web apps on top of that.
Sorry, but the whole argument is ridiculous. Web apps are definitely useful and are growing in popularity, but there are apps I rather run in my locally (sorry mint.com, I only give my bank passwords to quicken.) Plus the low level code, the stuff that makes things actually work, will provide a safe heaven for guys that still prefer to get their hands dirty with memory alignment, sockets, threads, etc.

Great article and rebuttal. As someone who started in software development by making crappy websites with horrible code and is now getting into the deeper aspects of software development, it is encouraging to see the web come into it’s own. I have seen the disdain from desktop developers toward web developers and it is discouraging at times. But at those times, I like to think that if the greats like Alan Turing or Grace Hopper were alive to experience the web, they would embrace every aspect of the web and all the oportunities it gives each software developer.

Roughly half of my career has been doing web coding, the other half doing PC-based apps. Y’know what? Most of the coders I worked with on both platforms were, er, similarly challenged to our chap above. I was myself for much of that period and I’ve no doubt that in another few years I’ll think I was rubbish now. The codebase was largely rubbish in whatever languages - SQL, XML, ASP, Javascript, VB6, .Net… SQL was inline in the interface code, inconsistent, riddled with security holes and regularly working on an only partially normalised data model. XML got used for some horrendous interfaces where it wasn’t even slightly appropriate and with barely-documented incoherent DTDs. Code reuse was primarily of the copy & paste variety, with the same projects routinely containing multiple subtly different implementations of the same things. I could go on.

I’m pleased Mr. Braude has got a good team - he’s the exception. The best engineered solutions, the best processes and documentation I have ever worked on and the best team I ever worked with was on a family of web solutions - but so was the worst. Web coding brings performance into alarmingly sharp focus because users tolerate 20 second load times far less. Web coding for the general public rather than a corporate solution stresses usability far more, because the user knows they can switch to another application quickly and easily.

Will all programs go to the web? No, but most will. Image processing for example has far too much data moving around to be ideally suited to a network application, but word processing definitely doesn’t and there are some perfectly usable online office suites, getting better by the revision. And your average corporate forms app is ideally suited to an Intranet implementation - no more build and distribution headaches, just sling it on the server and the whole company go live. Much simpler, and no earthly reason that it shouldn’t be just as well (or as poorly) engineered as the previous PC-based solution.

I am curious to know why Jeff dismisses the notion that the majority of “web developers” got into the field because they were scared and ignorant of actual computer science. Jeff skips it as though it were ridiculous, but I think you’ll find that many web developers will admit as much.

This was the central thrust of the opening quote and Jeff completely dropped it. Strange. Why even use the quote?

By the way anyone who says “In the future, All X will be Y!” is pretty much always wrong.

Isn’t a web browser is an example of a non-niche desktop application?

Oh I forgot, Google calls that an OS these days.

If you are interested in compilers, concurrency, and class inheritance, go ahead and create smarter compilers, servers, server applications, services, … which all can be used for back-end. For front-end user interface web programming gonna rule!

@Rob: If he included the context that mitigated the extremism of the quote, it would have sabotaged his efforts to be controversial, as is his acknowledged strategy for posts in this blog. Jeff is no longer content to stake out outlandish positions under his own power; he now uses modern “journalistic” techniques to create snappy soundbites to support his assertions. I’ve appreciated a lot of the positions Jeff takes in opposition to the conventional wisdom, but recently he’s been over the top, jumping the shark on a regular basis.

As a software developer, I am happiest writing software that gets PAID FOR. Good luck with your web ads and what-not. I like licensing and desktop apps.

“… Contradiction, anyone? … anyone? … anyone?”

Well, no, the contradiction’s resolved when Jeff says;
"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."
Read all the way to the end of the article before applying the comment button.

More importantly, when trying to advertise and sell your product.

The last place to give up on Desktop Programming will be in-house software, but even then, if there’s a better Web product that does the same thing, employees will probably use that instead. The only reason not to is security.

That said, I do think Jeff skips too lightly over Embedded software such as Assembler, which obviously will remain mostly non-web. No-one’s going for the Internet-capable microwave. And if you are, DON’T.

The “find another profession” part is VERY harsh. Unacceptable.

"I still make a better living in Assembler and COBOL"
You can’t use the amount of money a programmer makes as a measure of popularity, because they’re inter-related. The average age of a COBOL programmer is around retirement age, which means that scarcity drives the prices up. If COBOL became a popular language, you’d make a lot less.
All COBOL jobs I’ve seen have been for existing products that need maintenance. And most Assembler jobs aren’t for mass user products, but generally for supporting hardware engineering.
For pure software products, who in God’s name is programming in Assembler? And shouldn’t we stop them?

One other thing bothers me about all this…

Its true that Michael Braude made some outlandish statements in his post, but at least he has the fortitude to respond to his critics’s comments (with both clarifications and capitulations) whereas Jeff just makes outlandish statements then hides.

This post has really caused me to lose a lot of respect for Jeff.