All Programming is Web Programming

I third Dan A too, but both arguments are wrong, good web programmers are not stupid and neither are good desktop app programmers.

Good engineers will produce a good system regardless of the platform.

It’s posts like these that remind me that the developer community is full of self-righteous blowhards. I hate the mentality that complex code is better code. Just because youre churning out backend code on a mainframe that nobody else understands doesnt mean what youre doing is any more important.

Its easy to cast web developers as script kiddies who hack together code. And admittedly, there are plenty of them out there. However, I’d love to see Michael Braude (as well as some of the other commenters) design a user interface that is functional, aesthetically pleasing, and intuitive to users, all while being cross-browser compliant. Easier said than done.

So far, I’ve made a great living writing applications. Not all of us can make a living by selling advertising on a blog, Jeff. Honestly, without that, would you have the audience for StackOverflow? After 23 years of coding, however, I’d rather not read crappy code in any language.

On the plus side, you can write for many environments. I’ve never been interested in database programming, myself, but some folks love it. My latest project is building a specialized IDE for microC Linux. Sorry, not a web-able application. I understand where Michael Braude is coming from. Like me, he’s just not interested in becoming a web-programming guy. I’m thankful that other people love creating web applications. I only hope that they, and you, appreciate the software written for other platforms.

Atwood’s Law… one phrase… Office 2010 for the Web!

It’s a poor craftsman who blames the tools. Sure there are crappy web apps, there are also a TON of crappy desktop apps. As a percentage of the total number available, I’d argue that there are more crappy desktop apps than there are crappy web apps.

I run into this attitude a fair amount amongst older developers, most of whom not only don’t get web development, but don’t get the web at all. The overlap with developers who don’t regularly use a computer at home is high.

Atwood’s Law… one phrase… Office 2010 for the Web!

Micheal seems a little blinkered, people don’t always have the same motivations. I’m sure Google did not start as a web company because it was “easy”. I view a certain amount of what he says as the kind of insecurity that pervades much of the C++ community. Many C++ programmers spent a great deal of time and effort keeping up with the language and all of it’s idiosyncrasies. Some of the syntactic idioms he mentioned should never have been: time and time again easier and more consistent languages have proved this. The fact despite constant development that C++ has been caught with no adequate standard library support for concurrency. C++ might disappear not because of web programming: but it may well get supplanted by programming languages that support concurrency well, or run on platforms that manage that stuff for the user.

He does though have a point, Web Programming although can be used as a platform for many business functions cannot possibly be used to program everything. As times goes on ever more applications for software seem to be invented. It is easy to fall into the fallacy that the way you are developing software today is the only modern technique— sure programs have similarities but they aren’t the same. The world of software is more diverse than ever. Pick a consumer device and there’s probably software in there. That’s before you get to industry. Some software if it isn’t right then it causes fatalities: I can think of a couple of projects like that that friends have worked on. In this sort of system a web-page is the easy bit.

There was software 30 years before Microsoft, and a time before the Desktop. The Web is just one mass market that could converge with other mass markets. However it hasn’t even fully converged with the all the software on the internet yet. Take for example routers, webservers and other infrastructure software this is not all written in Javascript or even Java. All Java programs even aren’t web programming.

Developing for the web is, though, still programming. Although at times has more in common with Design. Phrased like “the simplest thing that works” seem to be easier to understand when you have a visual design. If you have a safety-critical system does this advocate negligence by avoiding implementation of boundary-cases, or not ensuring the correct response time? The simplest thing in certain systems may be to implement the system completely.

Wow…so it’s death knell week on codinghorror, eh? First COBOL and now the Desktop? I’ve been hearing about the demise of the Desktop for 15+ years now. When, exactly, is it dead?

I have to say, Jeff, the way you quoted Michael, and omitted an entire paragraph that basically acknowledges that there are smart people working on the web, greatly hurts your credibility in my eyes.

There are things that will never be brought to web. Just think about all the embedded things that you use - your tv remote most probably was designed using Verilog or VHDL, that was later baked into silicon. Assembler is still alive, even though there are a log of high level languages, and it will be like that for long times to come.

On a technical point of view,
though you generally have indeed to be much more rigorous and conceptual with client software programming, the technical complications of (serious) web programming are totally different but not that much simpler.
You can design a simple web app as well as a client app - it’s just easier to find a nice tutorial for the web app and learn directly from it nowadays.

High class applications are also very challenging in both “platforms” - you just have different types of problems, anyone who’s worked seriously enough in both will tell you.

Coding and structuring the application itself is much harder in client software, but the amount of interactions (different languages, apis, servers, browsers) in a big web app also carries considerable complexity.

I personally like both.

Even our desktop applications we develop in our business for CTI are including web browser controls to display user interfaces and interact with arbitrary web servers. I believe that applications that must be developed for the desktop should be, and everything else developed for the web.

I think it is also more satisfying to create products on the web (from a dev point of view). I recently wrote about it on my blog:

The fact that the web provides a better standardized platform means that there is a whole lot more stability here. Things that are working today are likely to keep working the next year. You are free from having to support multiple operating systems in various states of patch work. Okay, you need to support a few browser quirks, but the numbers are still an order of magnitude less. It is also easier to program for the web because there is really a very limited set of core APIs that you need to learn and master. Of course, you need to learn a few languages and web frameworks, but hey, they are much easier to learn than building dialogs in MFC!

"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 "

Many engineers works on stuff for the joy of it, not because it gets used by millions. Do a poll with the engineers around you - you can either work on cool stuff like compilers, graphics that you will get paid for and not many will use (i.e the engineer doesn’t need to worry about how the revenue gets generated) as opposed to writing a part of web app which enables extra smileys for paid users but will be used by millions.

So, Michael will choose the former since he is an engineer. You will choose the latter since I think you are more of a entrepreneur (and the reason you started stackoverflow).

As for Desktop vs web, I will believe in the web when all these sites which serve millions start making money. In the end, you will see that these web apps are niche markets too (read: nobody will pay. they are just hanging out there since it’s free and they have lots of time.)

Jeff and Michael think about this:

If you’re going to create an application that will advertise a product, will you go for Desktop?

If you’re going to create a simple customized text editor, will you go for Web?

We should be flexible.

“They don’t understand compilers, concurrency, 3D or class inheritance. They haven’t got a clue why I’d use an interface or an abstract class. They don’t understand: 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. They also know nothing about process. Waterfall? Spiral? Agile? Forget it. They’ve never seen a requirements document, they’ve never written a design document, they’ve never drawn a UML diagram, and they haven’t even heard of a sequence diagram.”

Where did you learn these things? Using e-book? Without going into forums or searching the web?

“The reason most people want to program for the web is that they’re not smart enough to do anything else. They don’t understand compilers, concurrency, 3D or class inheritance”.
No kidding? The real Jeff Atwood’s nightmare (“coding horror”) is that he does not know that what’s making a good web is not web coding itself. It’s web contents what internet visitors are looking for, and it depends on its author, a webmaster or a web editor who could leave programing to programmers (hands) who are not smart enough to do anything else on internet, just paraphrasing “smart enough” Jeff. :slight_smile:

Jeff is pretty much right about this. Having done both, I agree that web programming is much easier than C++. But that is precisely WHY it is better. All the over-complicated crap involved in desktop apps is inefficient. Every desktop app basically has to write the browser in addition to the html. Sure, an easier job does attract less talented people but that’s just the way the world works. Hard things get easier and become the stepping stone for even greater things.

It’s this very concept that Bill Gates mastered, and by keeping things intentionally complicated, filled his coffers and set the computer world back 20 years.

For a “classic” desktop user, I find 3 main drawbacks to web applications and that’s why I’m not so enthusiast about them (most of them) :

  • you can’t choose the version : if the web app editor want to add a new feature and if you don’t want it, what can you do ? It happened to me with GMail. They changed the way they manage labels, I prefer the previous version but I can’t do nothing besides complaining. If it was a desktop app, I could choose not to update. You don’t like Office 2007 interface, you can stay with 2003. You’ll lose some feature but you have the choice.
  • if you have an internet connection problem, you can do nothing. Ok now there are some web app that work offline… But it is really a web app ? It looks a lot like a desktop app, no ?
  • What happen if the editor disappear or if he decides to end its support ? I have a lot of desktop apps which I’m sure the editor is dead, so if it were web apps they’d be unusable. Microsoft dropped Windows 98 support but it doesn’t prevent you from installing it.

That’s true that there are some good things with web apps but I really hope that not every single “user” application (specific professional apps is another subject) will be “web apps”.

Developer point of view : I’m not convinced that it’s easier to program a web app than a desktop app. The difficulties are not the same (web app have to solve much more security problems than desktop apps…). You can develop a crappy web app with horrible code but nothing prevent you from doing the same with a desktop app.

What’s so simple with javascript compared to Java,C# or VB?
Doing the same things in JS is propably a lot harder than in your old server language.
I think it’s misconception that all webapps are crap nowadays. I think pre-web the apps were as crappy as now. The diffrence is that anybody can put out a simple page on the internet - hence the crappiness!! So there are a lot more ‘apps’ now than before.

You can write bad code in any language on any platform. You saw it on web apps more then desktops simply because desktop apps have been around longer and peoples expectations are higher. They used to put up with crappy web apps because there were not many alternatives. Notice I am using the past tense. Today if I come across a bad web app / page / site, I jut move on to one of dozen better alternatives. Will we ever eliminate bad code on the web, probably not. New bad code is constantly being created by poor coders all the time. However they have a short life. They either learn the trade or leave as poor code simply is not tolerated today.

Will all apps move to the web, no they will not. Many will, but not all. Besides the obviously category of embedded applications which is growing daily, there are still many applications that simply don’t fit the paradigm. One example is high end CAD software. This is still one category that will consume every CPU cycle and Graphics byte on the most modern PCs and still want more.