Michael Braude decries the popularity of web programming:
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. 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.But they do know a few things: they know how to throw an ASP.NET webpage together, send some (poorly done) SQL down into a database, fill a dataset, and render a grid control. This much they've figured out. And the chances are good it didn't take them long to figure it out.
So forgive me for being smarmy and offensive, but I have no interest in being a 'web guy'. And there are two reasons for this. First, it's not a challenging medium for me. And second, because the vast majority of Internet companies are filled with bad engineers - precisely because you don't need to know complicated things to be a web developer. As far as I'm concerned, the Internet is responsible for a collective dumbing down of our intelligence. You just don't have to be that smart to throw up a webpage.
I really hope everybody's wrong and everything doesn't "move to the web." Because if it does, one day I will either have to reluctantly join this boring movement, or I'll have to find another profession.
Let's put aside, for the moment, the absurd argument that web development is not challenging, and that it attracts sub-par software developers. Even if that was true, it's irrelevant.
I hate to have to be the one to break the bad news to Michael, but for an increasingly large percentage of users, the desktop application is already dead. Most desktop applications typical users need have been replaced by web applications for years now. And more are replaced every day, as web browsers evolve to become more robust, more capable, more powerful.
You hope everything doesn't "move to the web"? Wake the hell up! It's already happened!
Any student of computing history will tell you that the dominance of web applications is exactly what the principle of least power predicts:
Computer Science spent the last forty years making languages which were as powerful as possible. Nowadays we have to appreciate the reasons for picking not the most powerful solution but the least powerful. The less powerful the language, the more you can do with the data stored in that language. If you write it in a simple declarative from, anyone can write a program to analyze it. If, for example, a web page with weather data has RDF describing that data, a user can retrieve it as a table, perhaps average it, plot it, deduce things from it in combination with other information. At the other end of the scale is the weather information portrayed by the cunning Java applet. While this might allow a very cool user interface, it cannot be analyzed at all. The search engine finding the page will have no idea of what the data is or what it is about. The only way to find out what a Java applet means is to set it running in front of a person.
The web is the very embodiment of doing the stupidestsimplest 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.
Should all applications be web applications? Of course not. There will continue to be important exceptions and classes of software that have nothing to do with the web. But these are minority and specialty applications. Important niches, to be sure, but niches nonetheless.
If you want your software to be experienced by as many users as possible, there is absolutely no better route than a web app. The web is the most efficient, most pervasive, most immediate distribution network for software ever created. Any user with an internet connection and a browser, anywhere in the world, is two clicks away from interacting with the software you wrote. The audience and reach of even the crappiest web application is astonishing, and getting larger every day. That's why I coined Atwood's Law.
Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.
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.
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? With all those old, traditional barriers between programmers and users, it's a wonder the software industry managed to exist at all. But in the brave new world of web applications, those limitations fall away. There are no boundaries. Software can be everywhere.
Web programming is far from perfect. It's downright kludgy. It's true that any J. Random Coder can plop out a terrible web application, and 99% of web applications are absolute crap. But this also means the truly brilliant programmers are now getting their code in front of hundreds, thousands, maybe even millions of users that they would have had absolutely no hope of reaching pre-web. There's nothing sadder, for my money, than code that dies unknown and unloved. Recasting software into web applications empowers programmers to get their software in front of someone, somewhere. Even if it sucks.
If the audience and craftsmanship argument isn't enough to convince you, consider the business angle.
You're doing a web app, right? This isn't the 1980s. Your crummy, half-assed web app will still be more successful than your competitor's most polished software application.
Pretty soon, all programming will be web programming. If you don't think that's a cause for celebration for the average working programmer, then maybe you should find another profession.
| [advertisement] Interested in agile? See how a world-leading software vendor is practicing agile. |
You are wrong. I know and have done significant work in all of the technologies (and grok all concepts) enumerated by the OP, and I still make a better living in Assembler and COBOL. And mainframe applications, interfacing with GUI front end, middleware, or nothing outside of Big Iron at all, teach you how to write profoundly good SQL.
You'd be better off view the WWCB (World Wide Codebase) as a growing organism. The newest outer-layer, the "interface" with the non-programming world, is on the web. But the internal organs still function, develop, and can not be dispensed with.
David Neuschulz on August 14, 2009 5:30 AMPlus, most of them will be in PHP.
David Karnok on August 14, 2009 5:42 AMCompare:
"Should all applications be web applications? Of course not. There will continue to be important exceptions and classes of software that have nothing to do with the web."
With:
"Pretty soon, all programming will be web programming."
... Contradiction, anyone? ... anyone? ... anyone?
Ikhnos on August 14, 2009 5:45 AMThis has got to be a joke. His qoute, "That’s because most people think that “everything is moving to the web,” and if that’s the case, then I can’t imagine being happy as a software engineer for the rest of my life. So for my sake, I really hope everybody’s wrong.
" sums up the hysteria. Where did he write this 'Blog' post? On one of the bathroom walls in bldg 42? No! It's on the freakin web! :P
Well the fact that Michael works for Microsoft is a bit disturbing. Perhaps it is linked in with how Microsoft first missed the boat on the importance of the internet.
Pacifika on August 14, 2009 5:47 AMSo when will I be able to write an interactive 3D application that runs inside all of the popular browsers without any special plug-ins?
Beth S on August 14, 2009 5:47 AMThe reason why people don't program for the web is because they think they're smarter than everybody else. :P
Pacifika on August 14, 2009 5:49 AMTV did not kill radio. Web applications will not kill desktop applications.
Matthieu Cormier on August 14, 2009 5:49 AM"The reason most people want to program for the web is that they're not smart enough to do anything else."
lol
Pretty sure the guys who wrote GMail and Google Maps are smart.
The web is like anything else. You can write a bunch of crap for it, or you can write something truly groundbreaking.
asdf on August 14, 2009 5:50 AMThe UI shown in web pages is just a tiny portion of what is needed to code a web application. The back-end can still be a huge part of the software and people who hate doing Web won't even touch anything related to the Web if they just want to work on the back-end.
The UI can be a small portion, but it can still require strong coding and/or engineering skills. Some apps are easier to do, some can be complex.
Mr. Braude probably just hates doing Web UI stuff and hates that people with little experience can do things that are more popular than whatever he works on (disclaimer: I have no idea who he is or what he does).
Michel Billard on August 14, 2009 5:53 AMPlus, you can still be a good programer in web apps. The difference isn't between desk or web apps its between juste a good and clean programer and a lazy code sucker!
Paul Pacheco on August 14, 2009 5:55 AMSometimes you say the silliest (aka, dumbest) things, Jeff. Normally I can appreciate your viewpoints even when you tend to spout out your ideas as if they were facts (as always, I get a chuckle when you reference yourself to backup your arguments) . But the drivel on this post, and the ludicrous "Atwood's Law" is *way* over the top, even for you.
I can't even give you the advice to "step back a second and take a look around you". Its clear from your comments that you only surround yourself with like-minded people because only then can statements like "Pretty soon, all programming will be web programming" have even a mustard seed of plausibility.
While the person you were blasting said some obviously dumb things I thought it was clear he was venting. Some of the things you quoted from him are true (it does take less know-how to create a web page than it does to write a device driver, for example). But in your tirade to discredit him you've done little more than show how petty you can be and, quite frankly, how ignorant you are of the programming community in the whole.
Try relaxing, take a chill pill, and try not to lash out at everything you don't understand.
Dan A on August 14, 2009 5:57 AM"So when will I be able to write an interactive 3D application that runs inside all of the popular browsers without any special plug-ins?"
There's always the canvas tag, although flash is pretty universal.
http://my.opera.com/WebApplications/blog/show.dml/261474
http://www.benjoffe.com/code/demos/canvascape/textures
Basic web programming (putting some divs and forms together) isn't challenging at all. But look at all the big websites: they don't consist only of that. There are many mathematical problems such stream processing to compute upcoming trends, recommendation engines, etc. involved (read "Programming Collective Intelligence"). Making the architecture of a big webapp is anything else than easy. Making a framework for webapps is anything else than easy. There are just so many things that are not easy in web programming. Creating the frontend is just the tip of the iceberg. And in the course of many new web technologies evolving, things aren't getting easier.
Markus Lux on August 14, 2009 5:58 AMI agree that developing simple web sites doesn't look challenging, but there's still a place to grow - developing content management systems, I'm doing it for the last 3 years, and I cannot say that that's not challenging.
I worked on an IT company with a lot of low level guys working on web application because they didn't know how to do other things.
I think that some part of the Michael Braude quote are saying the right thing, but if lot of people write bad web code this doesn't mean that programming on the web is bad.
The reason most people want to program in C, C++ or Java is that they’re not smart enough to do anything else. They don’t understand assemblers, registers or hexadecimal. They haven’t got a clue why you would use loop unrolling or bitshifting.
-- MV
Michael Braude is correct. Web programming is retarded shit and web apps suck.
John Quest on August 14, 2009 6:04 AMHuzzah! I work on both Application and Web materials and, while I enjoy App development, there's simply no feeling in the world like having someone look at and appreciate your work, so I'm very much enjoying the web programming, too.
JoeMo on August 14, 2009 6:05 AMJeff,
When quoting someone else's article, is it possible to indicate where cuts have made?
I appreciate people can click through to read the original article, but it would be helpful if the presentation here made any editing clear. I found the omission of the paragraph starting "OK, so that’s not an entirely fair accusation to make..." made Michael's article sound more one-sided than it is.
My apologies if this has been mentioned before.
@Jeff thanks for this, man. I don't see why web-dev's are seen as being less 'serious' than 'traditional' programmers. I do, and have done, most of the things Mr. Braude describes. Hell, you can even do many of them with PHP!
@Beth S It's coming. http://en.wikipedia.org/wiki/O3d is an example of a - admittedly still a plugin - project of Google's. People want 3d in the browser and it will eventually be browser-native. See: Attwood's Law.
Gavin on August 14, 2009 6:06 AMOK. So realising how often your headlines are just link bait and are not to be taken literally, I had to read this entire post to find at the end
"Pretty soon, all programming will be web programming. If you don't think that's a cause for celebration for the average working programmer, then maybe you should find another profession."
You really are saying that _all_ programming will be web programming? All programming? Software in planes, cars, watches, fire alarms, fridges, phones, etc, all running on the web? Or do you mean that embedded programming is not real programming?
By the way, if this is true, when will all browsers be running on the web?
Niche? Web programming for the masses is the niche. MOST software projects are not written to be used by millions of people. They are written for those "niches" you speak of. It's the software that reads a sensor and lifts a railroad drawbridge. It's the daemon that processes millions of payments in the middle of the night in a server room hidden away and is only accessible by command-line. It's an HMI interface 400 feet up in an industrial crane lifting 40-foot containers off a container ship. It's the daemon that tracks products walking out of a store that haven't been paid for. It's the java component that activates that little buzzer telling you your table is ready at your favorite fancy restaurant. Where is the web in all of that? Huh? Where? The web is the niche.
Tim on August 14, 2009 6:08 AMIsn't simple and boring the knobs and wheel and cranks of a car? This is an INVERSION OF CONTROL taking place in computing. The web is simple because people wants it to be simple, as they like the car controls to be simple. The ball is now in our roof.
Is this a problem or a challenge? I think that in BMW or Mercedes it's a challenge to create the best driving experiences with the minimal "user interface". Aren't they engineers? Aren't engineers the people who create/designed/implemented your computer because it's simple? What about the Ipod?
José María on August 14, 2009 6:08 AMExcept when it is embedded programming - like say, the MAC/PHY layer of a wifi device.
Shawn Tan on August 14, 2009 6:09 AMJeez, I wonder why one of the largest tech companies of our era (Google) continues purchasing large quantities of fiber. I wonder if that has anything to do with Cloud OS, I mean *Chrome OS...
Yeah.. desktop applications are here to stay...
/sarcasm
If you aren't aware of your surroundings and can't see what's coming, why read and participate in industry blogs?
Ryan on August 14, 2009 6:09 AM"Pretty soon, all programming will be web programming."
Not too sure about that... I think pretty soon all programming will be NETWORK programing, but I don't think it'll be all WEB programming. The web allows some pretty cool things, but it has it's faults and some of them exclude certain aspects of coding.
I am pretty sure that sometime soon, every app will be "network ready" (as it were), and may well interface with the web - but that doesn't make it web programming.
Mike on August 14, 2009 6:11 AMBeing 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.
Kalle on August 14, 2009 6:11 AMI 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.
Omar Al Kababji on August 14, 2009 6:13 AMUgh... 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.
Daniel on August 14, 2009 6:14 AM"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.
Ann o'Nim on August 14, 2009 6:16 AMFortunately in the future all apps won't be web apps. There are apps that can never be web apps. There is and always will be computers that aren't connected to the internet or any network for that matter. My biggest pet peeve are web apps that aren't really web apps, they are really desktop apps that run in the browser. Nothing I hate worse then working with a vendor that requires some steep client side run time requirements for their "Web" app. I personally believe that to be a good programmer you need to understand both desktop and web apps and have a strong understanding about the appropriate place to target for a given project. Sadly I don't see many people with that skill. Too many people thing everything is a web app. My second pet peeve is developers that want to make everything a web service. A lot of times pushing XML around isn't the best solution, especially when fast response or timely updates are required.
Bruce Atkinson on August 14, 2009 6:16 AMThe 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.
Pedro S on August 14, 2009 6:18 AMI 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.
Lark Mullins on August 14, 2009 6:19 AMRoughly 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.
Greg Webb on August 14, 2009 6:20 AMI 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.
Zimmy on August 14, 2009 6:23 AMIf 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!
dharma on August 14, 2009 6:23 AM@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.
Matt Wigdahl on August 14, 2009 6:25 AMAs 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.
Nok on August 14, 2009 6:26 AM"... 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.
Tom on August 14, 2009 6:27 AMThe "find another profession" part is VERY harsh. Unacceptable.
zvolkov on August 14, 2009 6:30 AM"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.
Dan A on August 14, 2009 6:34 AMI 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.
Zimmy on August 14, 2009 6:34 AMSo 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.
Wandercoder on August 14, 2009 6:38 AMAtwood's Law... one phrase... Office 2010 for the Web!
travispuk on August 14, 2009 6:38 AMIt'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.
Rev Matt on August 14, 2009 6:39 AMAtwood's Law... one phrase... Office 2010 for the Web!
travispuk on August 14, 2009 6:39 AMMicheal 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?
Joe Baltimore on August 14, 2009 6:41 AMThere 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.
jpou on August 14, 2009 6:45 AMOn 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.
PS: No serious developer (web or not) uses .NET . If you can't understand why, you're not developing serious software/applications.
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.
`Josh on August 14, 2009 6:45 AMI 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!
Tathagata on August 14, 2009 6:45 AM"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.)
Girish on August 14, 2009 6:48 AM"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. :)
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.
Regis on August 14, 2009 6:54 AMFor 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.
KG on August 14, 2009 6:55 AMWhat'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.
Jim C on August 14, 2009 6:55 AMWhew...well said!! :-)
Travis B. Lowdermilk on August 14, 2009 6:56 AMThe web is a platform. I agree with Jeff that the client side of web applications is pretty old fashioned. HTML 5 (if we get it in our lifetimes) try solves some of these problems. But languages like JS need to be more strongly typed, and the ability to ship off compiled functionality to the browser (nothing like getting all your IP ripped off).
I disagree that any old idiot can show a web application together, true web development is an art form. If you're not that type of idiot dragging and dropping visual components, and actually write the stuff by hand, you need to be skilled in:
ASP.net (C# or VB.net) or both || PHP, Java, ect
HTML grand mastery and have an idea of XHTML
CSS grand mastery
JS mastery
You're also going to need to know at least 3 tier development, otherwise forget getting a real development job.
Besides this - you're going to need to know SQL mastery
XML, Regular Expressions, Web Services, some XSD, XSL, XPath
While we're throwing stuff in might as well mention IIS and Apache
Oh and none of this can really get applied without some idea of the server product, and permissions,
Cryptography is also widely used lately, so might as well get skilled up on that.
Now you're in a position where everyone expects everything yesterday, and new technologies are coming out all the time, so you better keep your skills up.
Isn't the latest rage, nHibernate and JQuery? - better make a stop, and pick up these skills too.
Web is - and always has been a presentation layer. It does not extract in anyway from applied computer science.
Lets also make a big mention of the fact that - browsers are buggy as hell and they don't render stuff exactly the same - so ... a knowledge of the browsers, and their differances, and a keen interest in emerging browsers wouldn't hurt.
Maybe its not 3d game design, or Formal method development, but there is still an enourmous amount of practical skill that goes into true web development.
Sorry if it doesn't feel challenging enough for you - it sure is damn challenging for me.
Michael on August 14, 2009 6:56 AM"You really are saying that _all_ programming will be web programming? All programming? "
Jeff tends to round - I think he means 99%, which is probably accurate. Once the infrastructure tools reach a certain level, the only thing left to write is applications.
Regis on August 14, 2009 6:58 AMThe future is about web services; web, desktop and mobile clients and data synchronization. I personally find the design and implementation of this kind of software more interesting and harder than a boring stupid multi-threaded c/c++ application... there are more than scripting kiddies in web development...
knoopx on August 14, 2009 6:58 AMand another thing - not just any old monkey can write a web app - maybe a hello world, but not a real web app, it takes hard work and determination.
Take this - oh so holy stackoverflow site, you're so proud of Jeff, are you saying any monkey can write it? get your facts straight buddy!
Michael on August 14, 2009 7:03 AMBraude's whole argument just smacks of the same turf arguments we used to hear over Mac vs. PC. Like different OS's, the web is a different platform with different audiences and goals. To think it lesser is simply being elitist and burying your head in the sand.
Consider the following:
I built the above site -- front end and back -- in PHP. It reads and processes email, separating attachments from the message and indexing both parts for searching and retrieval. It wasn't easy, and required me to know some "complicated things" that Braude seems to think don't exist in the web world.
I'm not trying to toot my own horn, but simply provide Braude and other naysayers a real-world example of what high-grade web programming can look like.
You can dislike the service, of course, but the tech behind it is sound. :)
Frank on August 14, 2009 7:03 AMJeff, you are so very, very, very wrong. Web programming is a tiny proportion of all programming. Lets us consider what software is being run in order for me to view a web page:
1. The keyboard. This contains a little microcontroller that talks to the PC to send keypresses and recieve commands (set caps lock light, etc) and that has software on it. Not a web-app.
2. The BIOS. Lots of software there. Transfers keyboard data to the OS.
3. The OS. A massive amount of code. Still not web-app.
4. The browser.
5. The ethernet card could have a microcontroller on it.
6. The wireless hub. Contains a web server to edit configuration. Some web-app code at last. But not much.
7. The internet. All those connections that are routing data from me to a web site are running non-web-app code.
8. The web server. Another OS with a hosting system on it.
9. The web app, finally. But it still uses compilers and tools to build the web app.
10. The web app talks to a database. The database is also code, written by programmers that are not web programming.
11. Once the web data has returned, there's the javascript engine itself. Not a minor piece of code and not web-programming.
So, how many programmers does it take to provide all the tools and infrastructure required for you to do you web-app? Lots.
Like the post on COBOL, all because you don't see the non-web-programming people, doesn't mean they're not there.
You are a minority, egotistical programmer if you need people to see what you do. The majority of us don't need that to still get satisfaction from programming.
Web-programming will never be as pervasive as you suggest. The web is a public system and many people want to keep their work private.
Also, imagine an Airbus A380 being flown by control systems written in JavaScript running in IE8 on Vista? I don't think so.
Skizz on August 14, 2009 7:05 AMSkizz - you're the bomb!
Michael on August 14, 2009 7:06 AMIf your focus is, and has generally always been, web development, then that's what your worldview will be. As far as programming effort goes, web development can be as complex as any type of programming, and there are plenty of examples of this on the web. I enjoy web development as well as desktop or server-side (although server-side coding seems less encumbered to me).
A lot of things have moved to the web. That's 'a lot', not even 'most'. There is a bunch of stuff that will never move to the web.
David Neuschulz's example of the WWCB (World-Wide Code Base)in the first response is correct.
Darrel on August 14, 2009 7:13 AMPhotoshop in Javascript?
Allready been done: http://www.sumopaint.com/web/
WebdevHobo on August 14, 2009 7:13 AMAnother thing - The days of the old IT premadonnas might come to an end! Does that scare you Jeff, are you an IT premadonna?
I remember in my early days of IT, always having that one IT git in the office that thought he was "elite", who thought he knew more. Who actively bragged about knowing 6 languages, and skilled in anything imaginable. Like the dude was 007. All your suggestions were shot down.
Things have improved a bit, since web is an easier to get into technology, but it still requires years to master. Nice to see some woman also entering the work force, because the whole IT world is not so supremely geeky anymore.
I don't program for fame or fortune, so I don't have to prove myself to anyone. My self esteem is not based on what I am programming.
I also don't feel threatened by new comers, if they're new they're entitled to be less skilled, we all were new once.
If they've got a passion for development, they will improve.
Jeff - you are wrong about this one... sorry...
Michael on August 14, 2009 7:13 AMIsn't web programming just one tiers of the n-tiers every application is made of ?
mamelouk on August 14, 2009 7:15 AMI tell people that I read this site because even though I frequently disagree with you, it's at least interesting to see the other perspective.
But wow. You're wrong on this one in huge ways. Yes, Michael Braude is wrong too (though in the part you omitted, he says so), there's plenty of challenging stuff to do on the web.
But the web is a User Interface. It takes a lot of work, but for any non-trivial application, the UI is a pretty thin layer. Most of the work (and quite a bit of interesting code) is done in the back office.
Banking and general accounting is a niche?
Embedded systems (phones, cars, ATMs) are a niche?
Mechanical Engineering is a niche?
Operating systems are a niche?
Yeah, there's only a half-dozen people in the world who use any of those....
I dunno, maybe you're trying to be thought provoking. Certainly not the reaction you're getting from me.
Blair on August 14, 2009 7:16 AMI think Jeff Atwood has officially derailed. That, or he was so deeply offended by Mr. Braude's thesis that he felt compelled to launch and equally dubious, contradictory tirade.
Craftsmanship in software development is not about artistry or appreciation of structure, it's about maintainability; being capable of enhancing the system over time without unintentionally breaking things or exceeding acceptable costs. Users don't appreciate beautiful, clever code — they want functionality, usability, performance. They don't care if it's "locked away in a binary executable," they just want it to work.
Architecture (the traditional kind — wood/stone/steel) is about elegance of form and function. Choice of insulation or internal support materials is germane to the occupant/buyer inasmuch as it affects cost or function (stability, temperature control, etc).
Moving office applications to web apps is an easy transition (technologically), provided the user is comfortable storing their data on the servers of a software firm (though, I submit that Excel will always be more powerful than a web spreadsheet for as long as it is actively developed). However, simply because many people spend the majority of their time in front of a computer on the web, doesn't make it (i.e. the browser) the ultimate software delivery platform.
Considering the fact that most users expect everything on the web to be free, most web applications are supported by advertising revenue. Eventually the market will reach critical mass, and "everything" can't be sustained by that business model.
Moreover, desktop publishing, video production, audio production, 3D animation, PC gaming (beyond solitaire/pinball/breakout) are not simply niche markets — they drive the majority of software sales year-over-year. PC gaming itself was a primary motivator for early PC and software sales. Flash, Silverlight, et. al. have heretofore been deployed primarily as media delivery apps (streaming images/video/audio), and that's not likely to change in the home — not even with Google's NaCl.
Both web and desktop software will continue to exist for the foreseeable future. Neither will dominate the other because there will always be certain tasks that are best handled by one over the other.
Psst: even web applications are licensed, shipped, downloaded, maintained, and upgraded
tb on August 14, 2009 7:16 AMAll programming can be web programming. Or better said, programming can just be programming. Look at WPF/Silverlight. They both use XAML, they both use the .NET Framework. Microsoft is attempting to end up in a place where you write once, compile anywhere. This in my opinion is the holy grail of development technology.
I also flatly reject the idea that desktop vs web programmers says anything about programming ability. I've done both, but mostly web stuff. You know why I've done mostly web work? Because I like customer facing development. When I build customer portals etc for businesses I can immediately see the positive impact it has on their customers, the productivity savings. The web is the best medium for these types of applications. Could I code an Windows dll? Sure, but I wouldn't get much satisfaction out of it because I wouldn't get to "see" my work, and no one would really care, because it would be one of many dlls, sitting vaguely in the windows folder.
Eric on August 14, 2009 7:16 AMThe truth is somewhere in between..
Many, many web apps suck, and also most of them suck in a sucking language (php etc)
Andrei Rinea on August 14, 2009 7:17 AM"Another thing - The days of the old IT premadonnas might come to an end! Does that scare you Jeff, are you an IT premadonna?
I remember in my early days of IT, always having that one IT git in the office that thought he was "elite", who thought he knew more. Who actively bragged about knowing 6 languages, and skilled in anything imaginable. Like the dude was 007. All your suggestions were shot down."
HA HA! Who hasn't pretended to be 007 - James Bond? Hybris will fail..
Wanko on August 14, 2009 7:18 AMPune University, affiliated to UGC runs engineering graduation courses (Bachelor of Engineering) through colleges accredited by AICTE. The course for B. E. (IT) is coupled to Web Programming & using mainstream DBMS packages as backend tiers to the web programs. Another course B. E. (E&TC) Telecommunication Electronics deals with the network also albeit the physical layer. Thus, the ISO-OSI model's 3 layers physical (bottom), & application & presentation (top 2) are cared for. Nowadays, individauls creativity may be of less value as a matter of secrecy than during times of battle, so passing it on over the wire is the norm. However, the other layers do require engineering effort to maintain system performance at par with the resources identified through research. Even inside the DBMS package, data has to be read/written from/to persistent storage optimally. Low level h/w drivers & somewhat higher level query language processors. The dumbest terminal uses PXE(Portable n/w exec.n) boot ROM. The system developer (B. E. Computer) is a real profession since, did someone mention 40 years? Guys, plz show some mutual respect for each-other. How does your hard/smart work earn indifference for somebody, or for that matter, anybody else's work?
Vipul Snehadeep Chawathe on August 14, 2009 7:23 AM"I hate to have to be the one to break the bad news to Michael, but for an increasingly large percentage of users, the desktop application is already dead. Most desktop applications typical users need have been replaced by web applications for years now. And more are replaced every day, as web browsers evolve to become more robust, more capable, more powerful."
50,000 applications for the IPhone say otherwise.
Chris on August 14, 2009 7:24 AMJeff,
Remember in the Stackoverflow podcast when Joel said that it is no longer his place to single out some spectacularly bad idea of a new start up and criticize it on his now super popular blog? -- because it just looks mean?
Mean or not I probably wouldn't have commented excepti, I think your edits leave a false impression of this guy's actual stance.
You are taking some guy's one-off personal rant, pulling out of its original context and shining a spotlight on it. I hope he takes it in stide.
Steve Steiner on August 14, 2009 7:25 AMThe real question is: When will there be a browser written in javascript? So web pages can serve that to IE6 and ignore it in actual development?
Andreas Krey on August 14, 2009 7:27 AMIt's amazing the amount of punditry these days that is built on the presumption that every software user is a consumer, and every software application is a toy.
Rajiv on August 14, 2009 7:31 AMJesus christ do you people not have anything better to do than write blog posts about how you know what's coming better than anybody else? Anybody else remember when people just shut their mouths and wrote code?
Leroy Valdecoxib on August 14, 2009 7:32 AMWeb Programming has long stopped being just about putting together a HTML form and processing it with a bunch of dynamic server-side scripts before dumping it into database.
Haven't you heard about the recommendation system for Netflix's website that took years of intense work to improve the effectiveness by mere 10%.
Kailash Badu on August 14, 2009 7:35 AMyeah right "web guys" don't know shit, except how to administrate iis, apache, understand css, javascript, xml, sql mysql, php asp.net, c#, vb, sql functions, stored procedures, cursors, classes, act as a dba, sql injection, dns, ruby on rails, ecommerce, ssl, encryption, seo, oauth, mx records while paying attention to load times, logfiles, traffic patterns, also manage and track advertising campaigns while marketing the whole ball of wax - sure any kid can go put up a web page or make a blog, pretty big difference from above.
feel free to add some more "things" i missed in the above statement - but what's funny is your not born knowing everything u dumb ass Michael, you have to play with everything and figure it out, true many people will never understand it all - probably get filthy rich from their web 2.0 idea before they need to learn it all, did u miss out and that's why your so angry? Don't be angry - be happy for us rich "Web Guys" driving our bmw's with hot girls we could never otherwise hook up with - if it wasn't for our silly web pages...
Deez NutZ on August 14, 2009 7:36 AMSeriously...
First read this:
http://www.joelonsoftware.com/articles/fog0000000319.html
Then go back to developping repositories, interfaces, unit testable code that fetches data from Amazon, MySQL, whatHaveYouSQL or flat file. Web programmers don`t know the paradigm, give me a break.
jf on August 14, 2009 7:40 AMRight tool for the right job. Never gets old. Are there some web pages/web sites that are written by bad programmers? Absolutely. Would they have been written better in C? Would they have even gotten done if they required the skills of a good programmer?
Its not that there are fewer good programmers, its just that the percentage greatly shrinks as it takes less skill to get the job done. If you consider web pages/apps to be software, there's just a hell of a lot more software out there than there used to be. If every piece of software required the skill of performing the difficult task of building a compiler or managing shared state concurrency, there would be a lot less software out there, a lot less choice, and a lot more bugs.
As for the idea that there are no web apps out there requiring strong programming/engineering skills well... that doesn't even deserve a real response.
Russ on August 14, 2009 7:42 AMSeriously: You are wrong.
Yes, a whole bunch of new development projects today target the web. So? "Yaaay, it's increased so much".... from ~zero.
Besides, you have a few classes of web applications:
* Applications that try to recreate desktop apps: Office clones, etc. I'd much rather do my stuff locally than have Google keep the documents with bank details and other sensitive information.
* Social apps. Which can bite me.
* Old "app-less" web stuff, now Web 2.0-ized and hence an app. Yes, your "homepage" is now a "blog". What progress.
No, the web is, as it is, a steaming pile of shit from a programming standpoint. The languages of the day are generally awful (PHP, etc), the coders awful, and the pace just hilarious - do we really need a new Myspace/Facebook/what-have-you clone every other year? I'm not against progress, but I'm against progress for progress' sake - not for the sake of genuine improvement.
And your argument about "OOH FAME LOOK AT ME LOOK AT ME I AM WRITING A WEB APP!"... ahem. I'm happy if the stuff I develop is useful to people - however, I do this as a hobby. If I did it as a job, I still wouldn't care, as my paycheck would get paid all the same.
Asm on August 14, 2009 7:45 AMTherapy. Get some.
Jesus on August 14, 2009 7:47 AMevery user-interface will be translated to web for sure. but i would love to see low level applications translated to web apps... it makes no sense to me.
mago_ebon on August 14, 2009 7:47 AMWeb technologies are definitely not weaker than desktop technologies, you can write a web app in .net, then move the libraries to another project and use them for a desktop application.
Also the newer versions of PHP and a decent framework provide you enough power to do anything you need with all the complexity of the .net and java counterparts, even if most of the php programmers use it like noobs.
Cris on August 14, 2009 7:50 AMI think the exact opposite of mr Braude. Web apps are not crappy because stupid people are making them, but because web programming is harder than any other kind and very few people can do it right.
1) Most web apps are being used by way more users than most desktop apps. They are being used by people who have no training in the app, who do unexpected things. The clients are stateless and the app is running on a mix of hardware and services spread out over a network, often with constant 24/7/365 use. This is hard as heck to cope with.
2) No API is changing more rapidly than the hodgepodge of technologies that make up the web. The clients are changing faster than the APIs and support them slightly differently. Making something stable on top of that is very difficult.
Writing device drivers, desktop apps, mainframe systems or whatever else, is a total walk in the park compared to writing web apps.
Stable, documented API's that often haven't changed since the 80s, often just one user at a time running one instance on one single machine, uptimes measured in hours, not years. Hardly a challenge!
Web apps is for Real Men, desktops and device drivers is for women and children. The fact that most web apps suck just proves it. :p
For goodness sakes, there are lots of types of applications that can't be on the web. Embedded code? in real low cost 8 bit microprocessors with no web connection, TCP stack or anything else. Would you want your car ignition system to say "please wait, downloading updates" when you press the accelerator?
How about desktop apps that aren't allowed to connect to the web? Why not - maybe in a miliary secure environment, a test lab, remote location.
Secure applications - ATMs, all those COBOL apps in devices you use every day, etc.
Go back and read Joel's Five Worlds arguments. Not everyone who programs does so for desktop pentium processors running Windows on a network!
Michael Braude makes another mistake that see a lot of developers and, particularly, development managers make. He uses waterfall and agile (and I assume "Design Patterns") like holy objects that control developers and make development possible. What he and many others fail to realize that these development practices and patterns are not prescriptions, but rather observations and formalizations of what developers have been doing since the first vacuum tubes were hooked together to solve a simple math problem.
This attitude is what leads Braude to see web development as something to be thwarted. Braude and his like see water flowing through a groove in a rock and think the water is directed by the groove. In reality, the water cut the groove because that is where it flows naturally. Now Braude is seeing the water flow in a new direction and thinks that it has gone off course. He and many others would like to redirect the flow back to where he thinks it should be.
kbiel on August 14, 2009 7:51 AMflamebait
boersnoes on August 14, 2009 7:53 AMI have to chime in on the embedded arena too. Web applications will probably replace desktop applications, but most of the software we encounter in our lives isn't running on the desktop. You probably used your microwave, drove your car and stopped at several stop lights this morning. None of those are going to be running on a webserver any time soon.
Morrissey on August 14, 2009 7:57 AMYour article pretty much shows how ignorant you are as a programmer. I write desktop apps and web apps for a living. I can tell you both take the same amount of effort and knowledge to accopmlish.
You are probably just afraid to learn new concepts required for web programming and feel the need to look down and put down those that know how to do it.
Any aspect of programming can be done be morons along with any other proffesion out there.
Think before you speak and right pointless articles.
Brian Carson on August 14, 2009 7:57 AM"Should all applications be web applications? Of course not. There will continue to be important exceptions and classes of software that have nothing to do with the web. But these are minority and specialty applications. Important niches, to be sure, but niches nonetheless."
I wouldn't say non-web code is the minority by any means. Just looking around my office I see an iPhone (20 million?), and iPod (hundreds of millions) a Cisco IP Phone handset (millions?), a UPS and a digital watch. All of these have embedded code - some of them simple, and some of them many times more sophisticated than your average web application.
While programming may be _done_ on a computer, it has a much larger market than things that are _used_ on a computer or things that run in a browser.
David Avraamides on August 14, 2009 8:02 AMThese past articles are causing me to wonder what small corner of the world Jeff lives in. I have seen and worked on many "web" applications that are nothing more than "desktop" apps that can be viewed over an http request.
I think I keep coming back here for the same reason I can't seem to not stare at car accidents.
This blog is a wreck.
AC on August 14, 2009 8:03 AMI'm not a genius, but I am pretty sure that there are just as many terrible desktop applications as there are Web Apps! Look at gaming, games like Line Rider, which are flash based web applications are FREE and more enjoyable(and played by a lot more people) than say, Daikatana, which was a game designed for a desktop PC. Daikatana was made by some of the "smartest" people in Game Development. Sometimes a good idea, even as a poorly implemented web application, will be better and more successful than a shrink wrapped and expensive desktop app!
molex333 on August 14, 2009 8:04 AMI fear to see Emacs as a web app. A JavaScript ELisp interpreter ... scary...
Der Papst on August 14, 2009 8:04 AMI'm assuming this website isn't hosted and served by a web app.
RS on August 14, 2009 8:08 AMThe author's comments in his blog post use terms that can be a bit confusing. I think it's fair to say that what he means is that he doesn't want to work with browser based apps. The author is obviously going on a rant the developer experiance, not the "web app" platform.
The author is right in that a developer has to sacrafice so much of the developer experience in order to develop a rich user experiance in a browser. Javascript is an expressive language, but it is also closely coupled to a browser. This makes unit testing a nightmare for browser based apps that are implementing complex business rules. Not to mention it makes a lot of stakeholders pretty damn angry because they don't understand that you are basically developing in notepad.
The amazing work that google is doing in browser is in java, not javascript. Google went through the headache of developing GWT because javascript becomes the ulitmate, expensive maintanance nightmare in LARGE applications.
In terms of the devs that work on "web apps", many devs start out as designers rather than programmers. They are very comfortable with using a closely coupled language (to the browser) with no type checking and no code navigation. Programmers want to be able look at object structure in seconds, and go to the definition of a function by a single keystroke. That's why many programmers don't like javascript.
Is everything going to the "web"? Absolutely, but hand written javascript + HTML not only provides less of the rich UI experience as desktop based RIA's but for large apps it's expensive, more error prone, and more limited to what you can do with it.
Lee on August 14, 2009 8:10 AM@Brian Carson
I think you are responding to the article he is quoting. I believe Jeff would agree with you.
Practicality on August 14, 2009 8:11 AMJeff, you are blinded by your own experience. Not all programming will be web programming. There is no way that vision systems in trains measuring rail profiles in real time for defect, or real-time trading apps or other control systems will be "web apps". You're off your rocker.
The popular super-hyped "social" apps will of course be be web apps. I suppose all email and maybe desktop publishing will migrate. But, as with the over hyped and short on delivery web appliances and "set top boxes" showed, we're still a long way from world dominance by the web.
Frankly, having everything controlled by the interwebs is scary to me. There is so much more bad programming in that paradigm than in other more structured fields. Being web based is, at the same time, more robust, yet also open to many more vulnerabilities.
Stick to what you know - both you and the poster you are responding too are just slinging arrows and rehashing the "VB vs C" coding argument.
tim on August 14, 2009 8:15 AMWow, I don't think I've ever seen so much chest puffing and dick waving in my life. When did programmers become so freaking insecure?
D on August 14, 2009 8:16 AM@D
Maybe it's the economy.
Practicality on August 14, 2009 8:18 AMAnybody who has used a web app on an iPhone knows that a web app is no substitute for a "real app."
In fact, I have yet to see a web app in a desktop browser that comes close to being as nice as a native app. Web apps may be acceptable, but they all suck, and will continue to suck.
Kristopher Johnson on August 14, 2009 8:21 AMI don't think non-web apps are on the way out. However, I do think desktop apps need to evolve.
I would like to see desktop apps using the good ideas of web apps. The App Store is a good example of this. The app upgrade process is less painful than a standard desktop upgrade (although a small amount of user interaction is currently still required). Linux software management apps (apt, yum etc) are also a step in the right direction.
Multi-touch on the iPhone is an example of something that web-apps can't (will never?) be able to embrace.
Another reason why I don't think desktops apps are doomed is because of business. I can't image there are many business that would trust 'the cloud' with all their precious data.
Benedict on August 14, 2009 8:21 AMThere is a massive failure of education.
I am the web developer Michael Braude hates -- or at least I was. I had no formal background in CS. I morphed from being a designer to a coder in the ugliest possible way. You all know the story: cutting and pasting JS, etc. Worse: I thought I was good at it and became a teacher, explaining to other people how to write spaghetti code.
The thing is, I had no way to know I was engineering things badly. Naturally, my crappy code came back to bit me in the end, but I just figured that happened to all programmers.
I didn't know what books I should read, what subjects I should learn, or how to improve. Having read "Javascript for Dummies," I figured I was an expert.
Luckily for me, I'm Mr. Self Improvement, so I stumbled around until I did find resources that could help me, and after years of reading books like "Code Complete" and "Refactoring," and after being mentored by some experienced developers (who were also good communicators) that I just happened to meet, I can actually write code that doesn't make me (or my co-workers) shudder.
I'M THE NORM. Many, many developers are not going to go through formal channels. They're just not. We need to get over that, accept it, and start working to better the situation given that it IS the situation.
As I see it, there are two major things new developers need help understanding:
1) How to write good, clean code.
2) Why it matters.
(Their managers also need help understanding #2.)
If beginners don't understand these things, that's not their fault. It's the fault of an industry that thrusts newbies into the ocean before they know how to swim. It's the fault of companies like Adobe who pitch a message of "anyone who knows how to use a word processor can be a web developer." And mostly its the fault of senior developers for not effectively passing on their knowledge.
If there was EVER a field that needed a mentorship approach, it's programming.
I'm as much at fault as anyone. The irony is that I used to teach back when all I could do was make things worse. Now that I actually (somewhat) know what I'm doing, I'm not teaching any more.
Marcus Geduld on August 14, 2009 8:23 AM@D
About the time the walls around the magic kingdom came down, allowing pretty much any layperson with a passing curiosity in the workings of the mystic machines and arcane spells within was free to learn about them.
Rob on August 14, 2009 8:24 AMBy the way, there are a lot of terrible programs written in C, C++, Java, etc.
Practicality on August 14, 2009 8:29 AMIt’s amazing how many of the comments here are criticizing Michael Braude’s article, often in quite personal terms. What’s the point? If you disagree with Braude, why not go to his blog, read the full article there, then explain to the author why you disagree with it? Attacking him here is just cowardly.
Even more amazing is how many people don’t seem to realize that Braude didn’t write the Coding Horror post, and that Jeff is actually disagreeing with it.
Not one whole day after broadcasting "PHP is the next COBOL," we have this. Not so much fun being derided, eh, Jeff? Every social group has some sort of stratification, I think it looks something like this:
"Neck Beard" Level
Assembler, Embedded languages, C, C++, Languages missing GC (Look at me, I do pointers!)
"Professional" Level
Objective C, Java , Python
Lisp, Haskell, Erlang
Any language the neck beards deem worthy.
"Noob" level
Ruby, ASP, PHP, JavaScript, ActionScript
I have experience with C, C++, Java, J2EE (what a mess), Haskell and Python. After graduating with a degree in CS I was attracted to PHP and JavaScript, for 1. The immediacy of seeing a result in your work, 2. Untyped collections (array() in PHP, [], {} in JS) which make everything less painful (no more UserAccountCollection classes), 3. The job opportunities that would allow me to build interesting web applications.
Does this make me a bad programmer? Do I, should I care? I'm doing what I enjoy, I'm working with technologies that have quirks, but every piece of tech always has some bugs or issues. No language is perfect, no programmer too good. Obviously we aren't above squabbling about inconsequential nonsense, like language/platform preference, so none of us is perfect.
Jake on August 14, 2009 8:34 AMI'm not sure if he's back-tracking or just making a clarification, but Michael states the following in a comment on his own article:
"I don't consider server-side programming 'web programming' because SOA encompasses all mediums. Once you get into writing web services and DAL's you've left the world of aggravation."
That should be a bit less inflammatory, especially to those who would be reading this blog.
Lucas Oman on August 14, 2009 8:35 AMPlease. How much of the Google search stack does the "web application" part represent? Almost none. All of the heavy lifting is done on the servers, and it's hard, performance-critical, CS-heavy programming of exactly the sort that Braude is talking about. Unless you're somehow including that as "web programming" because it's accessible from the web, you're way off base here.
Joe Ganley on August 14, 2009 8:36 AMObvious troll is obvious. And astroturfing.
In all seriousness, you guys don't really buy that these are the true beliefs of the author, do you? Just another guy trying to drive traffic to his blog by saying something ridiculous and riding the wave of attention, good or otherwise, to more hits and notoriety.
Stop paying attention and he will go away.
Sean on August 14, 2009 8:36 AMIt's ok. Bashing Microsoft employees is still cool. It will soon be trendy to bash Google, since they are getting big now.
Practicality on August 14, 2009 8:36 AMI think a very, very big part of the future programming is small applets for small devices, kind of the eBay or Facebook applications for the iPhone.
Silverlight 3 will run on Windows Mobile 7 natively. That will bring thousands of applications into the next generation of Windows Mobile phones.
Olav on August 14, 2009 8:38 AMIs an email client a niche application? Because I don't know anyone who prefers using Gmail over Outlook or Thunderbird. Actually, I know one guy, but he's a Mac user so his opinion doesn't count ;)
Is a chat application like Skype a niche app? Is a file browser a niche app?
Wayne Bloss on August 14, 2009 8:38 AM@codinghorror, you rock!!
jake on August 14, 2009 8:39 AMOh also...
Bloss's Law: People who name their own laws and quote themselves on it are usually egotistical arrogant bastards.
;)
Wayne Bloss on August 14, 2009 8:41 AMAlso, most web apps that replace desktop apps have the features we've seen in desktop apps 10+ years ago. See that 3D engine in JavaScript? Looks like Wolfenstein.
Olav on August 14, 2009 8:41 AMMust we really set up a desktop v. web false dilemma? Obviously they are both going to be around for some time yet, Web 3.0 be damned.
It's moronic to assert that all web developers are bad programmers; it's moronic to assert that all desktop programmers are dinosaurs. There are good programmers and bad dinosaurs in both; there are programs that work and there are those that don't; there are things that people use and there are things that don't.
"Web v. desktop" are not useful categories when talking about quality of programmers or whether programs actually get used.
Shmork on August 14, 2009 8:41 AMMust we really set up a desktop v. web false dilemma? Obviously they are both going to be around for some time yet, Web 3.0 be damned.
It's moronic to assert that all web developers are bad programmers; it's moronic to assert that all desktop programmers are dinosaurs. There are good programmers and bad dinosaurs in both; there are programs that work and there are those that don't; there are things that people use and there are things that don't.
"Web v. desktop" are not useful categories when talking about quality of programmers or whether programs actually get used.
Shmork on August 14, 2009 8:42 AMIt's not so much a new transition from desktop to web (which to some extent will probably merge anyway), as it is the continuation of the ever-present transition from harder, faster languages to easier, slower languages. The exponential increase in computing power means that runtime speed becomes ever less important than the time it takes to write the code, which has led from a transition from assembler->C/Cobol->C++->VB/Java/C#->PHP/Python/Ruby.
In areas where speed of execution is particularly important (e.g. embedded systems, OSs, databases) the transition is slower, but even then C++ and Java are increasingly more likely than assembler and C.
Hand in hand with this, easier languages which allow code to be written more quickly mean less need for UML diagrams and designing everything up front and more ability to just figure things out as a project progresses.
But if the actual programming gets easier, that allows people to be clever in other ways rather than spending all their time writing UML diagrams and tracing memory leaks. MapReduce? Specializing compilers? Artificial intelligence? Machine learning? Computational statistics? Facial recognition? Photo realistic rendering? Any of these are a hundred times more challenging and interesting than learning how to squeeze an extra 1% performance out of some Java code.
Michael Braude's superiority complex is evident by his need to define technical complexity as a measure of one's worthiness as a developer. If it's not complex, it must be crap.
Business developers excel at their jobs because they have the personal, artistic, and technical skills that other developers couldn't conceive as being important for the job. They migrate to this environment because they are good at it. They don't use C++ for the web, because it's the wrong tool for the job, not because they don't understand it.
Many C++ guru's would fail if they had to interface with an actual human.
BSOD on August 14, 2009 8:44 AMCouldn't agree more, except the "niches" bit of the argument. There are a lot of vendors pushing web solutions for business software, but there is no compelling case to make business software web-only. Web-enabled, yes. But web only is a very different pile of hurt.
mgb on August 14, 2009 8:49 AMWeb apps are definitely popular, but there will always be a place for desktop application. IMO, these are moving to be web delivered and will continue to do so (Silverlight Out-of-Browser and AIR). But they are still desktop applications. And even this will not cover 100% of desktop application (embedded apps, batch processes, etc).
I do like ready Jeff's Blog, but in this instance both blogger are showing a little bit of arrogance. Plus, IMO whenever you get personal and start making personal attacks you lose all credibility. Both bloggers should have had some restraint in their response. I'd like to see a intelligent debate on this issue between the 2 original bloggers. Maybe Carl Franklin can do a podcast covering both sides "Web vs Desktop" and moderate the discussion.
Carlos: The following statement show how much you do not know. "No serious developer (web or not) uses .NET . If you can't understand why, you're not developing serious software/applications." The .Net framework is one of the best frameworks to write web and desktop applications and your comment is one the same level as those who argue C# is better than VB.
80's Rocker on August 14, 2009 8:54 AMThis Michael Braude guy is spot on: at least, that's the very reason *I* code in PHP, and I spent 5 years getting my degree in Computer Science...
Some days, I wish I weren't so scared about abstract classes..
Martin on August 14, 2009 8:55 AMThis person comments that "Javascript is a functional / 'prototyped' language, not an OO language" while constantly emphasizing how smart he is. Let's just leave him alone. Beating up mentally challenged people is not nice.
Luke on August 14, 2009 9:04 AMThis article makes about as much sense as a chef saying "I like bread. All my friends like bread. Therefore, in the future, all food will be bread."
If there is one thing that the history of computing should tell you, it is that you have NO IDEA what will happen 5 years down the road. All we can do is forcast general trends. Sure, the web is becoming more popular. But the desktop isn't going away any time soon. And the web and the desktop are only part of the programming world. Just because you have a hammer in your hand doesn't mean every problem is a nail.
Zorro on August 14, 2009 9:05 AMDon't get me wrong, as I love StackOverflow and even your blog, but in this topic you're just plain wrong.
I am Brazilian and at my university most of my colleagues tend to write webapps as a career, but that's just not what the market is demanding. Embedded programming is booming. No, really booming. Booming to the point that far more CPUs are sold in other architectures than x86 ones. Now, those chips must be programmed. And the program, since is so close to hardware, don't have a great reuse rate, which means, pretty custom programs for custom hardware. That simply will never have anything to do with web programming and certainly won't be done in JavaScript.
On the other hand we have databases, OSs, rendering software and others that doesn't make any sense to become web apps, and there is brilliant, perhaps the most brilliant, people working on those areas.
So while we move to the web in programs where sharing makes sense, I've never seen a web text editor that can do what Textmate can. Until then, I guess I'll just continue to flip my bits here.
Eduardo Felipe Castegnaro on August 14, 2009 9:06 AMAtwood's Law is wrong; it won't be written in JavaScript... it'll be written in JQuery. :)
(Sorry to not be constructive, but I'm borrowing from an earlier quote in your blog that I still joke about...)
Patrick on August 14, 2009 9:12 AMJeff,
I agree with a lot of what you're saying, though I had the following thoughts:
- I have seen JUST as much bad client/server code in my day as I have bad web app code. Bad programmers write bad code. By Michael's post, I guess all VB6 apps would be better than any web app, huh?
- As someone who does understand pointers, threading, abstract classes, etc. and who does spend 99.99% of my time (recently anyway) working on web apps, I can say there are still plenty of times I use these lofty concepts. If you apply them to your web app, you end up with a better web app. You don't have to, but Windows Forms can be really drag and drop too, and you don't have to use any of these to fart out a desktop app either.
- I don't think all programming will be for the web - though I think it will be close. At some point, everything will be so constantly connected to the internet there won't be a difference between web, OS, and applications. We're already seeing a great deal of this. I use Google Docs probably 10 times more often than I use MS Office, for instance. But obviously there are some things you still need desktop programming for. Also, most of the web apps I've ever written end up needing at least 2 or 3 background processes running, as I'm sure StackOverflow did too (email processor or something).
- I agree that the coolest thing about web apps (and iPhone apps as your other recent post said) is that it's opened up software to so many new people. Used to be, when and if Joe Q. Public bought a computer, all he'd use it for was word processing and maybe some games. Now, that same user is likely to be on Facebook, Twitter, and might be doing his finances on Mint.com.
Anyway, good article, and don't pay too much heed to all the stuck up C Developers. Their time will come. :)
Sam Schutte on August 14, 2009 9:16 AM@David Karnok - "Plus, most of them will be in PHP."
Oh, the humanity!
Chucklehead on August 14, 2009 9:22 AMHere's a TCP/IP stack written in PHP - this is how the world could be, if we only have the courage to make it so...
http://www.sics.se/~adam/phpstack/
All applications: web, embedded systems, drivers, OS, ect.. require professionals working at their best.
I don't know why anyone gets off on attacking and ridiculing the members of the group you wish to be part of.
If a code is a crap or not, doesn't depend on it being for web or desktop, it depends on the programmer's skills and the time the programmer have to deliver the application (most of the time a crap is all we can do on time).
Rafael Romão on August 14, 2009 9:40 AMI, as a web developer, have to oppose myself towards Michael Braude's view of web programming.
While a website has more or less the same characteristics as a desktop application has (code-wise anyway), I'd argue that a website is actually harder to program than a desktop application mainly because of a factor that your average desktop application lacks: Exposure to the internet.
am I the only person who thinks that C++ is a crime against sanity and making someone program in it is a cruel punishment?
Hoffmann on August 14, 2009 9:47 AMMichael Braude's thinks a web app is only the client side, how clever of him.
I think he will be quite surprised when he will realise there is a server side, a database side...
Poor Michael, so far from the truth...
I guess servers spontaneously appear out of some quantum uncertainty field, write their own application layer, and architect themselves together into efficient, reliable topologies.
Or not!
I have to side with Michael on this one. In my extensive (approaching 25) years in most corners and niches of the IT industry, I've seen exactly what he's talking about. Of course there are challenges in all these areas, and in my experience there is as high a ratio of useless back-end, desktop, set-top box, etc programmers as there are useless web programmers.
However, to truly make the web function, an incredible amount of hardcore work goes into making the browsers, the libraries, the server software, the databases, etc. I'm afraid there's no comparison.
You think the "desktop" ever accounted for any large percentage of the software engineering going on about you? How myopic...
Mark on August 14, 2009 9:50 AMQuote:
"If you want your software to be experienced by as many users as possible,..."
Software should not 'experienced' by users,it should just be there and do what it is supposed to.
Just a humble opinion from someone doing embedded software at the moment...
Don't mind me while I try to push you off your high horse... and then shoot the horse but...
Any, ANY, website could go down - hell the entire internet world wide web could blow up - and I'd be fine. Sure I'd have to drive to the bank (where... omigod... they use desktop software). But I'd survive, just as well. In fact, I think that my boss and my wife would both be happier.
Bottom line: No website matters to my well being (or anyone I know of for that matter). I'm happier to have them, but could go on just as well without them. The only people who care, are the people who make the sites, and the people who have nothing better to do with their time.
Steve-O on August 14, 2009 9:51 AMJeff.. I am disappointed.. This should have been a non argument. Let's look at this for a second. A Thick Client UI guy is whining about how easy and sloppy web UI guys put crap out there. The same argument used to be made about how non professional VB guys slap together a UI vs. the polished C++ MFC app. Why the divide and argument? Anyone who is a good engineer knows that regardless of the presentation the middle tier is where the guts are that matter. The same app can have a front end from either camp and still work just the same.
This shouldn't have been an argument at all. A better person wouldn't have fed into this trolling.
Will everything become NETWORK code, oh yes, that is undoubtedly so. Will the presentation layer become increasingly WWW or "Web Based" yes, because of the power of the browser and the forementioned argument of ease of implementation and rollout.
This is just a case of you getting a egotistical high horse to beat down someone who is lamenting the lack of polish in web ui that they probably spent years developing in desktop ui, because it insulted your specific ui presentation method of choice.
I am sure you have even lamented the crap web UI practices in your own field, if I had the time I would search up some of your posts to prove this point.
short answer.. sometimes the only way to win the argument is not to argue. Lead by example and ignore the childish whining.
Enjoy your fail.
George on August 14, 2009 9:52 AMSystem software is not going to be web programming. Skizz has a good list. In addition, is SQLServer going to be a web app? What about the .NET framework? IIS? JVM? WebLogic?
Jeff, you've never worked on system/infrastructure software and you ignore it in your discussions. Think about all the software you use every day.
David G on August 14, 2009 9:55 AMThis is not true. Jeff, I read your blog almost daily, and this is one of the first times I completely disagree with you. Well, at least with the way you've put it.
ALL programming will most certainly not be web programming one day. Why? Because there are still people who enjoy movies and games and robotic toys (or occasionally the robotic tool). All of these things need to be produced and programmed, and none of them rely exclusively on the web. I've yet to find a JavaScript based application that can do the hardware acceleration required to dynamically create movies and 3D applications.
Take the Wii or Xbox as an example. Both make heavy use of the internet, but at the end of the day, all of that software runs inside the console's hardware. And that's how it should be for those mediums, because it's *far far* easier to program a graphics intensive game when you know exactly what to expect of the hardware running it. Digital distribution of the game doesn't change the target medium either, it's still got to be run on the Wii for it to play.
Don't forget that all of the hardware in your computer that's not the processor itself needs to be programmed as well. That video card of yours doesn't just spit out polygons using magic elves, someone had to write the software burned onto its many chips. Assembly (and C) programming will thus always be in high demand, because hardware is always required to actually run software and produce desirable output, even when that output is the web. Not to mention that someone has to be there to program the next electronic toothbrush revolution, and all those other gadgets that we use that aren't anywhere *near* connected to the web.
So no, All programming will in fact not move to the web. Not unless we decide that all the hardware we have is suddenly perfect and cannot possibly be upgraded in any way.
Nicholas on August 14, 2009 10:02 AMI agree that all programming will be for the web, but I think it will take a different form. Constructing desktop applications are already becoming more web-like and web apps more desktop-like. At some point we'll achieve some kind of convergence where the differences are mostly superficial. How will we argue about the abilities of programmers based on their chosen technology then?
the users don't care. FIN.
Jin on August 14, 2009 10:04 AMthats why opensource is the best software, only who really loves to programming on the best way uses his free time to work on a free tool for everyone
Angel! on August 14, 2009 10:14 AMBetween this and your attitude towards COBOL (shared by Joel, discussed on recent SO podcast), you're beginning to sound like a trailer-park-lotto-winner.
The military, financial, medical, scientific, and embedded systems that have been around forever, in a very different world with different requirements, are done a massive disservice by posts like this.
It is difficult enough to get talented developers into the "less sexy" (but immensely important) fields of our profession without this kind of pervasive, uninformed romanticizing of the already shiny and popular. Saying that "the code that actually makes the world work" is "niche" really couldn't be any more insulting to the giants on whose shoulders you stand.
Even adjusted for the obvious hyperbole, saying that "all" programming will soon be "web" programming is a dangerously self-serving and narrow-minded position. A man with an audience the size of yours should attempt to gain a little perspective.
privatehuff on August 14, 2009 10:15 AMI used to be a delphi desktop dev. I moved to C# because knew there was very little future left in desktop development. As I did so, delphi started to die a very rapid death.
I was interested to read that it has made a slight comeback (http://www.hans-eric.com/2009/02/09/welcome-back-delphi/). The desktop isn't dead yet!
Brad on August 14, 2009 10:15 AMIn other news, the PU on my microwave will be replaced by a mini web browser running a single JS app, and nuclear stations will be running on Firefox, which will develop interrupt service routines and an interesting resemblance to an operating system.
/sarcasm
Paul Nathan on August 14, 2009 10:18 AMLove your blog, but I have to utterly and completely disagree with you on this one Jeff. AJAX has and seems to continue to be a parallel universe for those who missed the boat on why design patterns, property change listeners, and separating view from model from controller are all really good things. The web world started with people who thought they were "programming" by cobbling together HTML and CSS, then came javascript and really f-ed the whole thing up.
I'm not saying it's not possible to make really amazing things using AJAX, it's just really hard - harder than it ought to be in fact, and the real travesty is that most AJAX programmers I know don't know any different, so they "work harder, not smarter" - isn't that the AJAX mantra? It should be.
Michael on August 14, 2009 10:20 AMJeff:
I don't agree with all of your thoughts.But defintely i see some of the web apps competing with desktop apps.
In my experience i have seen some managers struggling hard to find desktop applications folks that too developing unmanaged applications.
Why is Raymond chen's blog getting increased number of viewers? If he has been a web guy i bet he wouldn't get much hits:)
I heard from some consultants that they are getting less billing rates in web compared to destkop apps.
In some scenarios wi32 folks spend quite a few days a week struggling to resolve a memory crash dump. One has to look at the assembler code to find the rootcause.
>>Pretty soon, all programming will be web programming.
Do you think a device driver will be written in web language? Tell me does this happen in 10 years, i'll quit my profession:)
I agree with some of the web folks that putting efforts into any project wether web or desktop does involve challenges.
Suren on August 14, 2009 10:24 AMthis article got completely misunderstood.
lubos on August 14, 2009 10:27 AMYou make a good point about it being wrong to have a knee-jerk reaction that web apps (or the programmers who write them) are dumb. It feels like that sometimes, but I think it's just a manifestation of Sturgeon's Law (90% of everything is crap) -- there's a lot of web programming these days, so there are a lot of dumb web programs and programmers, but perhaps the same 90% as every other kind of programming.
But I think you're totally wrong about everything being web apps already. I think that because your programming and business are web-oriented, it may seem like that to you. But most apps are not web apps, and shouldn't be. None of the software I've worked on for 20 years runs in a browser, shouldn't, and none of the tools I use to build or test it run in a browser or need the web. Though I'd have a hard time checking email (or goofing off surfing the web) if I lost my net connection, it wouldn't really affect my work if the net were turned off most of the day.
You're probably right that if the goal is to be run by millions of people, you should develop for the web. But this isn't, and shouldn't, be the only goal. (Just like if the goal is to make lots of money, you should be in oil or porn. But it's silly to mock the professions of everybody else.)
Most apps are not run by millions of people, and shouldn't aspire to be. "Software craftsmanship" is not just about maximizing the number of users, it's about solving problems well, with well-constructed robust code. Many worthwhile problems (and sometimes the coolest and most challenging) only need to be solved by thousands of people, and not in a web browser.
Larry on August 14, 2009 10:34 AMBLEARGH
Nicolas on August 14, 2009 10:35 AMOne more question: Do you consider an iPhone or Android app to be a web app? I do. When I wrote an Android game, I discovered, to my great joy, that I wouldn't have to do anything related to XMLHttpRequests, CSS, or javascript.
If that is the future of web programming - I'm all for it. If the future of web programming is trying to make sure the javascript you wrote works on all past and future versions of Firefox, Internet Exploder and Safari, I will go look for another job. Burger flipper anyone? :)
Michael on August 14, 2009 10:38 AMAlso web applications can have installation bundles. Web applications are many times not only about html pages and simple scripts, but have back end servers, databases, and interfaces to other systems etc.
I do admit that we need more business oriented approach in software development. We need systems that support business engineering, not just some crafters who craft some business logic into source code. But engineering still beats crafting in some areas. Sure a crafter can create something neat and working with the right and simple tools. But we need also science and engineering in other areas.
People have started talking about shifting the paradigm more to business and crafting, but they fail to see that the paradigm should and has been supposed to be all the time on its own part also in business, not only in programming. Let software engineers concentrate in engineering and use business engineers to engineer the business with the software engineers. Smaller projects can rely on just crafting, but we still need standards, even web standards, and that sounds like engineering.
Silvercode on August 14, 2009 10:39 AMI predict this thread will be full of web programmers expressing their righteous indignation.
Oh, wait, I'm too late! Teehee!
W on August 14, 2009 10:47 AMAtwoods Law: Word Harder, not Smarter
Michael on August 14, 2009 10:49 AMAll the consumer apps that make no money will be on the web, and all the ones that do something important won't.
(End flamebait)
Ok...so if everything is on the web, why do we need complex OS for? We only need web browser. Why do we need computer for? we can close the circle by using graphic TTY's :-)
I really hope that not everything will be on the web one day. There will always be some app's that require to be optimised for speed and efficiency.
I don't know why anyone gets off on attacking and ridiculing the members of the group you wish to be part of.
Roscoe on August 14, 2009 11:00 AMGah, sometimes this blog is all noise and no signal. I guess this is let's get our egos together and have a pointless argument day?
A more moderated response might have been that *all* GUI development, whether you are doing HTML or win32, isn't that challenging. I've done it all, and in each you basically just plug legos together inside whatever GUI framework you are using.
However, the GUI is just the frontend to whatever backend you are trying to expose, and backends *are* often interesting. In fact, the back end for a lot of google's web apps are pretty dang sophisticated... after all, they need to server enourmous data sets to millions of users. Think about what google maps backend looks like! There's no dinky SQL database backing *that* up, nor could there be. There's some seriously interesting problems in that space.
Michael Braude is right that your average internal corporate web app doesn't face these problems, and can generally be written as a CRUD app with a sql backend. However, the average win32, cocoa, win forms, whatever, app is the same. A bunch of GUI crap plugged together on top of a not very interesting backend. That's enough to solve a lot of problems. *shrug* It really depends on the problem space you are in, not what GUI toolkit you are using...
Brendan Miller on August 14, 2009 11:03 AMSome highly educated and trained individuals just love arguing over how dumb stuff is, than using their skills to create, improve products and services that help the quality of life.
Here is an example:
The developer complains about programming nowadays he thinks that software development should still remain and electrical engineering and mathematical skill so that he can also brag to his friends that are doctors and lawyers that his profession is somewhere close to the top.
Jeff Atwood now uses this as an opportunity to comment on, which drives traffic to his site, which he can then use to generate revenue through advertising, yes using his uhh dumb web code because he isn't smart enough to do anything else.
public Income BackToCodingAndMakingMoney(ref String pProjectName);
Michael Braude made some rather foolish comments, but Mr. Atwood follows up with much worse. The general premise is just stupid, and not only that but it is really self centered. I am a web programmer; I can see business apps moving over to the web and think that some sort of web application framework (probably a derivative of the current HTML/Javascript) will probably how the majority of business app UIs operate in the future. So I get how this argument might apply to a small subset of "all programming". But Mr. Atwood didn't declare "all UI programming" or "all business app programming."
What about everything else? All the programmers in the world don't work on business or social apps! Mr. Atwood, put down your ego for a second and consider the huge code bases I am about to describe:
- Operating system: Operating systems for personal computers, for the server infrastructure upon which the web relies, for various network devices such as switches, routers, proxies and firewalls, OS's for portable devices, for satellites, various other network gear, the DVR, dish network, Tivo, etc, etc, etc. All this code is going to evaporate into Javascript?
- Automation systems: All the code that runs factories and other industrial processes are going to move to the web?
- Sensitive data systems: All this is going to move to the web? I am talking about the stuff under the covers of banking and other financial systems, national security, local, state and federal law enforcement, etc. I don't disagree that as encryption and security changes perhaps these systems will become more and more distributed.
- The fraking space program.
The world of programming is like an iceberg. Those of us in "application land" are working on that small percentage of the ice above water. There is a giant infrastructure upon which we rest that is under the water. It is my contention that the vast majority of this will never move "to the web", or at least it will be a very long time until it does.
Its not all about web programming, Mr. Atwood. I really enjoy your blog but sometimes you come up with a blog post that seems truly moronic. I don't know if you do this simply to spur discussion, but in this case you are completely and totally dead wrong.
Jason Jackson on August 14, 2009 11:23 AMIt's interesting to see how many people don't understand that when Jeff wrote, "Pretty soon, all programming will be web programming" he was employing a bit of hyperbole.
Brad on August 14, 2009 11:26 AM"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."
@Andy: c++0x features support for concurrency, along with a whole host of other changes. Hooray, auto!!
Adrian on August 14, 2009 11:27 AMI hate writing for web. I prefer desktop or embedded programming.
Breaking news:
- Embedded programs won't be web apps.
- The web browser won't be a web app.
- The OS the web browser is running onto won't be a web app.
- Games (real ones) could become sort of web apps, but just like Ethernet keeps its name when technology changes this would mean the web keep the same name while not really using the same (incredibly bad!) principles that are in use today (xmlhttprequest and all this crap). Interestingly, salvation could come from Google in this domain. But this kind of web app programming will be just like real programming anyway -- so we should not consider that for the purpose of this discussion.
Indeed, almost everything you take for granted when writing your shiny web app is _not_ (and cannot be!) a web app.
Talking about embedded programming again; it has been for years that it is the field for which most computers are produced. And I think this trend is still increasing.
It's not because you don't know much people that don't write web app that they do not exists. It's not because you don't understand how computers work that it is not important for being a real programmer.
The assumption of a continuous Internet connection is rather pretenious. Ever been on an airplane - yes, some do offer network connections but I wouldn't call them the norm - or gone out into the middle of the sticks where you don't have cell coverage? I love the cottage.
You make take it for granted but when your network connection goes down for 12 days all the web apps in the world no longer matter. You may see it as an edge case, but for mobile applications on smart phones it should not be ignored.
FYI the google and firefox folks are working on offline web applications (gears?) and I'm sure they'll come along but we're not there yet.
Web applications fail with web servers/farms/data centres. Who owns the data when you use a web application? At best you are trusting the web application provider to keep your data private.
Lots of great issues and reasons why desktop applications are not dead. One might make the argument that web apps are just extensions of their big brother desktop apps.
Did you know the browser is dead? Desktop apps will be extended to the next delivery mechanism too.
Ness on August 14, 2009 11:29 AMThe dumbest post I ever read on this website. It would be a really sad day when (if) all the programming goes Web. Lucky for everybody, it ain't gonna happen.
Sure, you can write Photoshop in JavaScript, it will probably even work on crappy little images taken by your cell phone. If you want to do some quality work with 10+ megapixel bitmaps, layers, transparency masks etc. -- there is no way around a desktop app.
By the way, Google hosts your photos on the web, but to do any meaningful editing, they give you Picasa -- a desktop app that you need to download and install.
How about Sonar, Cubase and other music production systems -- musicians need latencies under 10ms (that's why standard sound drivers aren't good enough, and we need ASIO). I don't think they'll go Web ever.
And then there is all the server and embedded software... Port it to Javascript, too??
sergio on August 14, 2009 11:35 AM@regis
“Jeff tends to round - I think he means 99%, which is probably accurate. Once the infrastructure tools reach a certain level, the only thing left to write is applications.”
Jeff tends to engage in exaggeration, hyperbole, and sweeping generalizations. But I don’t think that is the problem here, it’s more that Jeff just understand that there is a world beyond his own circle. This gives the impression that anyone not developing web or desktop apps doesn’t exist.
You seem to be making the same mistake here. Do you really think that 99% of programming is applications? There’s rather more programming going on than the infrastructure tools.
I agree with his comments to the extent that web programming has to be the most boring type of programming in existence. I learned how to program because I was interested in computers and the mathematics behind them.
Why would I want to waste my time writing web applications when I could be doing something fun and exciting like developing a new programming language or working on an operating system kernel?
The most interesting thing about web programming is database design and seeing as that is pretty dull for the most part I think I'll stick to doing the stuff that is worthwhile.
Anonymous on August 14, 2009 11:44 AMI guess the post mentioned that there will be always software which won't be ported to the web. But there is a huge amount of software which would make sense to convert and which will be converted.
Also it's expected that the SaaS market will grow by 22% in 2009 http://www.sramanamitra.com/2009/08/14/concur-rightnow-netsuite/
This is a bug increase in times of crisis and speaks for itself.
it's a _big_ increase ;-)
StefanS on August 14, 2009 11:47 AMAnd all these modern carpenters with their nail guns and laser-guided saws will never know the joys of swinging a hammer 8 hrs a day. In their lonely station, they will never experience the commrodarie of the 2-man saw. Never to make an oak plank from a recently fallen timber, drug by an ox, floated down a river, and gently hand planed into nothing but an f'n board!
Guiness Fan on August 14, 2009 11:47 AM"I don't consider server-side programming 'web programming' because SOA encompasses all mediums. Once you get into writing web services and DAL's you've left the world of aggravation."
I hate that term SOA. I should be considered a SOA developer because I create web services and connect different parts with another.
And three tiers at least: Let's make it real good and do 5 layers. All abstract classes and Interfaces implementing every class and all sorts of fancy stuff. What a clever developer I must be (*ironic*). And all I want to do is a simple grid displaying some info and a contact form.
...
KISS - Keep it simple stupid!!!!
This is probably the first post Jeff where I can 100% agree with you and disagree 100% with "web is not worthy" statement.
First, broad generalizations are useless for specific scenarios. Desktop has its place (shrinking as we speak) and Web has its place (expanding as we speak).
Contrary to Michael's claim, web development DOES require knowledge of all the finer things he listed so eagerly. While most of the Web technology does run in interpreters (JavaScript), they have gotten much much better over the years. We can also use compilers to produce executable code which renders its output on the web. Web is the new "green screen", nothing more, nothing less. A new output device :)
Building a large-scale web application is not a trivial task and has nothing to do with building a few web pages. Anyone who has written web-based business applications knows of all the technical challenges and pitfalls. Michael, apparently, has been living under a rock at Microsoft somewhere and didn't get any of this even though the majority of Microsoft's technical content now talks about web development. Michael, take a look at www.msdnmag.com. You'd be suprised how much cool stuff you will find there.
Programming has multiple facets and it is all fun - to me anyway. Whoever doesn't enjoy programming should look for another line of work. "Output devices" don't really matter but performance, elegance and sound technical design DO matter - regardless of what you are programming and for what device, OS, language or audience.
securityhorror on August 14, 2009 11:53 AMIf you think all of software will be a web app, I can't wait for you to drive a car that has all of its processing on the web. Do you want to wait for the cloud to do the computing when you hit the accelerator? What about medical imaging such as Ultrasound, MRI, or CT? A lot of processing is done locally so that the data is compressed down to something you can store off on a server. D
ASM on August 14, 2009 12:01 PMsecurityhorror: I think I speak for most others in the "web app development sucks" camp when I say it doesn't matter that web browsers render better and run javascript faster. Who cares about that when the process of developing code that depend on html/css/javascript and maintaining the resulting code is absolutely horrendous?
The fundamental problem really lies with the majority (not all) of the web dev community being ignorant of designing for maintainability, scalability and arguably most of all, understandability by fellow coders.
Michael on August 14, 2009 12:03 PM@CodingHorror
As a matter of interest, which bits of Michael Braude’s article do you actually disagree with?
You say it’s absurd to say that web development is not challenging, but Braude says it is not challenging _for him_. Surely he’s the only one who knows what he finds challenging.
You say it’s absurd to say web development attracts sub-par programmers, but then you say “Web programming is far from perfect. It's downright kludgy. It's true that any J. Random Coder can plop out a terrible web application, and 99% of web applications are absolute crap.”, which certainly seems to confirm that it attracts sub-par programmers.
You say it’s inevitable that all programming will be web programming, (though you also say that not all applications should be web applications), but Braude contradict that. He only says that he _hopes_ everyone is wrong, as he personally doesn’t want to end up doing web development.
He says “The reason most people want to program for the web is that they're not smart enough to do anything else.”, which I certainly think could have been better phrased, but everything in your post seems to agree with this. “The web is the very embodiment of doing the stupidestsimplest thing that could possibly work.”, “Writing Photoshop, Word, or Excel in JavaScript makes zero engineering sense”, “Recasting software into web applications empowers programmers to get their software in front of someone, somewhere. Even if it sucks."
Phenwoods on August 14, 2009 12:05 PMThis post reads as "will do anything for traffic." On another note, I'm glad your audience isn't just web developers sucking off each other.
Razzle on August 14, 2009 12:07 PMInteresting article....
A couple of points:
1) Users really could care less if what they use is a rich client internet enabled app or a web app, just look at the myriad ways people use twitter or access their email. What they really care about is the value of the service or activity they are engaging in and how quick and easy it is for them to get going with and using it. It is really annoying that the users always end up being the last ones considered in these kind of discussions.
2) By focusing on the web app only approach you are doing your own business StackOverflow a HUGE disservice. I as a developer will find way more value in StackOverflow if you would provide an offline enabled rich client that will allow me to tag the areas of interest that match my need and keep the questions and answers for those area synched up. Being able to use this while on the train, subway, dead zones or simply not having to pay for WiFi while away from the office will make the whole service much more useful to me. Now I know this will kill your ad revenue but guess what I never ever click on adds so you are not making any money on me right now but I will gladly pay $60 a year for an offline enabled rich client.
He is addressing the level (rudiment knowledge) of programmers that show up on the job at a certain layer of abstraction. The smartest often gravitate toward complex problems and it is not building web apps and web guys don't have (or remember) the rudiments of CS.
Paul on August 14, 2009 12:10 PMOne word: AutoCAD. Not the silly little "draw a line" functions, but the hard-core spatial database, geometric boolean operations, high-performance on huge drawings, extensibility for 3rd parties, etc., etc. that make it a "real" application. Javascript, Virtual Machines, etc. simply aren't at a place where this kind of stuff is a reality. Maybe it will be someday, but there is so much working against it I can't see how. The fundamental flexibility of JS is exactly why it doesn't make sense to build "big" applications with it -- it's simply the wrong tool.
I've done hardcore C++ desktop application programming in multi-million lines of code applications, and I've done web programming in LAMP and the MS stack for sites that ranges from 0 to 9000 transactions per day (that seems like moderate complexity to me). My honest opinion of the two realms is that, yeah, the bar is considerably lower for web programming. And I tend to agree with the posters saying that's probably a good thing. There are only a handful of websites in the world that actually require hardcore engineering, most of them can and do get by with less (I wish paypal had some better engineering, but c'est la vie). Lower bars lead to prolification, and I like prolification since it leads to Darwinian selection and improvement of the pool of options.
There is one aspect of web programming where top-notch work is being done: Libraries. Some of the craftsmanship I see in libraries for web development is as good as or better than anything I saw in desktop applications. I'd like to offer my kudos to the folks working on building beautiful codebases for the rest of us to enjoy!
BTW, if KISS is your mantra don't complain when someone is willing to do it for less than you. I'd rather have "quick and correct" as my matra, if I were still in that fight (I'm not, I've been removed from the productive stream). Correct simplification is hard, so don't undervalue yourself by making it sound trivial.
I think Jeff's article is a little off-base and leans to the knee-jerk level of response.
Lee Harding on August 14, 2009 12:12 PMMichael can go on and rant however he wants about desktop apps. And while what he says may be true for some web developers, I have worked with a great many and most are converts from software developers.
This is what I know to be true. Software developers have their share of idiots, same as web developers but to say Web Developers do it because they arent smart enough to be software developers is a retarded assertion made by a bitter man who knows he is becoming a dinosaur.
I am a former software developer but I found that i can make a crap ton MORE money working on the web than I ever could as a software developer. I can do more and explore more on the web than I would ever be able to do in the rigid confines of software development. Sure, its not as hard in general, but the creativity allowed in web development and the ability to challenge yourself is certainly there for anyone who wishes to employ it.
Adam on August 14, 2009 12:27 PMNote all of this is conveniently argued with citations from YOUR OWN PAST ARTICLES. This, if nothing else I've said, is why nobody but newbies takes you seriously. Just quit, you're an embarrassment. Not like you read this or care.
Mike Judge on August 14, 2009 12:34 PMIsn't microsoft moving word and excel online? I heard it on cnet. Of couse, they will still have the desktop apps, but I think they are going to have online ones also.
Andy Chase on August 14, 2009 12:36 PM"Among the biggest changes in Office 2010 is the fact that Microsoft will also start offering Office Web Applications--browser-based versions of Word, Excel, PowerPoint and OneNote. That means the software should eventually find its way onto Linux-based computers and even the iPhone."
http://news.cnet.com/8301-13860_3-10243091-56.html
Andy Chase on August 14, 2009 12:37 PMYou're all right and you're all wrong so let's just get back to work.
Rob on August 14, 2009 12:38 PMNote all of this is conveniently argued with citations from YOUR OWN PAST ARTICLES. This, if nothing else I've said, is why nobody but newbies takes you seriously. Just quit, you're an embarrassment. Not like you read this or care.
Lets not forget to mention borderline misleading.
Michael on August 14, 2009 12:39 PMIf stackoverflow.com doesn't make your point for you, I guess nothing will.
A. L. Flanagan on August 14, 2009 12:45 PM@Michael: Perhaps people take him seriously because he's never smarmy and offensive?
A. L. Flanagan on August 14, 2009 12:47 PMThis same event has been happening for generations. The assembly guys laughed at the C and C++ guys. They laughed at the managed code (C#/Java) guys. Then they laughed at the Rubyists/Pythonistas and Javascripters. And so forth...
ryan on August 14, 2009 1:00 PMTo say that you are a bad programmer if you program in language X or constructs applications of type Y is just as absurd as claiming that a woodworker constructing chairs with a handsaw is less of a woodworker than one constructing tables with a circular saw.
Syntaxeus on August 14, 2009 1:14 PMnothing written in java has ever been cool get over it.
x on August 14, 2009 1:16 PMOne thing that I would like to add to the discussion is the fact that not everywhere in the world users are as well connected as here in the US and Europe. Most places out of the capitals in South America, Africa, Southeast Asia and such do not have a good connection available, therefore rendering the whole cloud movement unusable. Most computer users in those places rely very heavily on Desktop applications. I do see a trend here with the whole moving to the internet movement but for most places, this is something for a distant future.
Aimeri on August 14, 2009 1:22 PMMr Atwood:
"You hope everything doesn't "move to the web"? Wake the hell up! It's already happened! "
Yo this guy must have been drunk or something...
wbkang on August 14, 2009 1:47 PMI'm so sad seeing these old primitive fights... Non-web apps vs. web apps, Windows vs. MacOS, white vs. black...(sorry about last one).
These fights, when taken out of an academic environment, turn us into a bunch of angry monkeys fighting one each other, shoutin "I am the best one!", "NO, you are not!!", "Shut up, I am better than all of you!!!"...
This question, as many others, is a technical one, or a marketing one if you prefer. It's not flesh to throw to angry beasts (us), who discuss it by jumping and insulting. These questions must be discussed with facts and data on the table, and you must be open-minded enough to quietly and unemotionally analyze what is good and bad in both sides of the discussion, and always ready to accept that both sides could be useful in different environments, which is usually the conclusion of complex problems.
Many of us (a lot, I'm afraid) is not qualified to do the effort required by this previous last point. Sadly, we usually start by choosing a side (an enemy), then by loading our gun, and wait and look for an angle to shoot him/her.
This monkey fighting is not the way to make progress. What's next? A fight between top-down designers against bottom-up ones?
Whatever happens, Jeff will get some bandwith and page rank with the fight.
Oh, wait a minute...
I think I understand...
oscar on August 14, 2009 1:50 PMThe post actually makes some valid points but is so filled with unfair characterizations about other developers and self-aggrandizing statements from the author it's hard to figure out if it's a troll or not.
On a separate note - what's up with writing an inflammatory blog post then refusing to engage with the readers? Defend your position, concede to mistakes, flame away, do whatever... total silence doesn't lend much credibility to the original article.
Ross Bates on August 14, 2009 1:58 PMI also like to do Web Programming although I am quite Good in anything I do...
Just a few Days Back I have found a Reason for this....
[Quote Source="My Profile at http://bijayrungta.com/about"]
In some aspect or the Other, my interests in Software largely relates to the Internet and it’s ability to communicate with and be heard by virtually everyone in the World.
[/Quote]
I was Good in C(Till the Point that I did for my Academics), Maths...
But I had not Done Real World Projects...
That was a Drawback..
AT that time I didn't know that I could Download the Source Code of MySQL and study it to understand How a Real World Project is done using C.
Then I somehow managed a Job and was asked if I could do a Website for them....
I did nothing about the Website Building back then, but had heard from Suman Halder(suman.haldar at Facebook) that even a Class V Student knows HTML and I had read an Article in a Newspaper that a class V Son of a Software Developer in Bangalore had developed a Website for his Class' Community...
Besides that I had heard that through Something called Google I can Search the Whole Internet that People were talking so much that every Company wanted a Website.
I said Yes...
And Thats How I am here Today...
@rungss on Twitter
Sorry Jeff, but your post from today is simply stupid.
Think only about the embedded programming... do you really think that you can create a web app to control your washer?
Or do you want a web interface to drive your car?!?
Get out of your cubicle and look around... you'll see that there is something else running outside your server and browser.
By the way, are you planning to create a web app for the BIOS of your computer?
Victor on August 14, 2009 2:01 PMI don't think an app has to be a 'webapp' to be useable in the new world. It just have to be web deployed. ... and i agree, most web apps are written by idiots.
Mebigfatguy on August 14, 2009 2:04 PMWell, i think you maybe DON'T know too much about what's up on the web. You can actually, and also, YOU DO, ALL OF THESE THINGS.
You can use classes and of course inheritance, you can use pointers, references, you can and some times "NEED" to pass by reference or by value, there are tons of UML tools for php that we use, and of course we do sequence diagrams!!
Of course, there are lots of "MICROSOFT WEB DEVELOPERS", who just learn how to use the VISUAL WEB, or something like that, and create a simple page, then using the assistants, they create 1 database, then takes 1 ASP.NET Control as you say, with 2 datasource, associate the db, and the datasources with the asp control, and then the control does everything for them... But, thats not the way you describe it after all; you want to compile something for the web? You can! Just get some book and read how POST, GET, PUT work, and things like that, and use CGI binaries that you can work in C++ or even Assembly; you create your own garbage collector etc; also, you can make your own Apache MOD, or IIS ISAPI Binary wich will be better than a CGI... You can use everything the way you want, you only need to learn how to do it... Also then, you can switch and be a real web developer :)
Since my last post was a bit offensive with no substance, here's some food for thought:
Moving software online has and is continuing to be an expensive task that taxes our environment. "The Internet's Energy Drain"
http://www.counterpunch.org/cox03102009.html
Some quotes:
The servers and large data computing centers that run the Internet and other computer networks doubled their energy use between 2000 and 2006, the Environmental Protection Agency estimates. Add in the power used by computers and peripheral equipment in homes and commerce, along with a projected 75 percent further growth in data centers by 2011, and the system’s electricity needs will exceed the total current consumption of 18 million average American households.
...
The industry produces tinier chips and bigger, hotter arrays of chips every year. A large share of the wattage going into a data center ends up as waste heat, so 40 percent or more of a center's energy use typically is for air conditioning. Running and cooling a single 6-foot-high rack of servers occupying 7 square feet of floor space can consume as much power as 30 typical California homes. Thousands of these racks in rooms or buildings ranging into the hundreds of thousands of square feet can have city-sized power demands.
...
Internet exponents claim that this vast expenditure of energy is more than canceled out by the many resource-efficiency gains that computers make possible. But such gains, where they have occurred, appear to be getting blotted out by our general resource use. (more in the article.)
Searching for "embedded" in the previous comments shows that many have already mentioned this giant chunk of the computing world that has nothing to do with web programming, and never will.
I'll just add that, according to some source I saw not too long ago, only 2% of the processors in the world are in desktops. The rest are embedded. In that sense, most programming is embedded.
Most embedded software is not mission-critical, but when you're working with controllers for aircraft, spacecraft, weapons, automobile safety systems, industrial robots, and the like, screwing up is just not an option. Web standards of programming don't apply, never will.
Jeff R. on August 14, 2009 2:19 PMI've seen very bad code in c# and very good code in php. I've also seen a lot of bad and good code in c or c++.
There are also many crappy desktop applications and web applications.
I don't think that someone who writes desktop applications in c++ is smarter than person writing web applications in php.
If you want to write web applications in c++, use cgi or even write your own web server, then be my guest.
But why most smart people don't that?
I think it's about using right tools to get the job done. Language and tools should let developer create good business apps. The easier they are to use - the better.
All programming could (or could not, no one really knows) be web programming, but not all web programming is AJAX. Stuff like crunching numbers (and other resources consuming computation) still needs to be written in a language that guarantees speed, speed which won't be guaranteed by javascript engines too soon.
My two cents here: it's obvious that web apps are good for netbooks. Most people will still use desktops and laptops for CAD/Photoshop/coding. Same for other things, like real-time audio processing. I'm afraid i won't see a web version of Cubase in the next 5 years, though I might be wrong.
Lucian Mogoșanu on August 14, 2009 2:35 PM...sorry but this post just show how little you know about web programming...how sad for you...I wonder why you say if you like desktop app cause of abstract classes, interfaces, what ever...have you ever seen web app on java? I don't think so...
xxxhsbxxx on August 14, 2009 3:04 PMBeing a web developer and application developer (and both reaches to masses) i can see the both ends. As much as i appriciate both guys and follower of Atwood.
I think both being more arrogant and ignoring the facts in the heat of argument. Both have their own challenges and both have their own future which cant diminish at all.
Just simple example i would add from a recent success of AppStore, As IPhone user i like the idea of webapps but never get attracted towards it but as soon as native apps appeared who scenario has changed.
Actually i beleive the future is the merger of both.
So i think as much as web would evolve the emebedded programming too and definitly there is still more learning curve writing desktop or embedded softwares as compared to web programming.
P.S. Remember we still use desktop softwares for the web itself and the to write for the web even. I like twitter but i still prefer tweetdeck. I like facebook but i prefer to use facebook integerated within my mobile or tweetdeck.
usman bashir on August 14, 2009 3:15 PMJeff, this blog entry is a huge disappointment to me. You've gone to some lengths in the past to avoid getting into the petty arguments and "religious" warfare between languages, but now it turns out that it was just because your "religion" isn't a language, it's a platform.
Rather than maturely analyse what this dude was trying to convey in his post and then provide a meaningful response, you've gone completely bonkers! What happened to you?! You know all the advantages and disadvantages of both desktop and web app programming, and where they fit - you've had discussions along these lines in StackOverflow podcasts - but now "all programming will be web programming".... Have you been stuck in StackOverflow mode for so long you think that's all that exists?
As an actual comment on the topic, it seems to me that the difference here is really the that between programmers and scripters (particularly those scripters who believe they are programmers - and those employers who don't know the difference), not the difference between web and desktop. Unfortunately, for every great webapp written by a decent programmer, there are 1000 pieces of crap written by incapable scripters.
"hey don't understand compilers, concurrency, 3D or class inheritance" - LOL.
Whatever platform/technology your app is targeting, you still have to build a Turing machine that produces the outputs you need. Everything else is accidental complexity. If you manage to come up with a good Turing machine (and by good I mean "maintainable in the long run") then you are a good programmer regardless of the underlying platform/technology.
Itay Maman on August 14, 2009 3:42 PMYou might want to change that to "all application programming will be web programming." There is still a great deal of embedded and systems programming being done that has nothing to do with the web, and couldn't if it wanted to.
Joel on August 14, 2009 3:48 PMyubnub.org is something all the "desktop" guys must see to understand what Jeff stresses on - simple, command line, "social" (yeah, I drank the kool-aid), WEB.
But look at the power it has conceptually as a shell. And yubnub operates on free time and just hosting plan fee.
The utility, power of the command line (just the pipe), and ability to "interop" for an unlimited number of programmers, all one URL away.
Programs are meant to solve real world problems. Web programs made by Google, LinkedIn, eBay and Paypal are solving problems previously unthought of, simply because there was no en-masse angle.
Obviously out on the street you get all types of people. But there is a street that you can use too. Imagine having to obtain expensive permits to walk along the National Highway system. Imagine having to pay space tourism fees to go from New York to Calif. Imagine having to spend 30 years getting the expertise and knowledge, and most importantly, the contacts and references to be able to talk to Nicholas Negroponte or Stephen Hawking. The web solves a whole new class of problems, not even envisaged by the "only desktop" crowd.
You have to do something that would look quite disgusting in public to become a parent. But you do it, don't you?
Or do you use syringes, test tubes, surgery and sterile environments and such other technology (of real quality and challenging complexity like what the web crowd calls "complex theoretical constructs") to become a parent?
It sucks (pun NOT intended), but it works, right?
You get the baby, nice and whole, crying and pumping fists!!
Sure the web interface looks attractive, is coded near shit (literally) but the back-end server is very cool (GoogleFS, Hadoop, MapReduce, virtualisation, RDBMS, etc)
Both parts have a job to do.
If people thought elitist, the web would not exist and you would not be able to read this.
And when Javascript is the language used to construct compilers (pyjamas, i think) you have a very new debate.
Democracy is about letting Joe Plumber walk on the same street as Dr. Joseph Whizkid.
All said and done, someone needs to take training web developers seriously and make it easy to visualize the concepts which experts are able to do easily because of superior visualization skills. And of course, security. I don't know if Joel or Jeff have done something like this before, but methinks if they both graow a new pair of hands we can ask for a large set of in-browser visualizations of data flow and reversible frame-by-frame machine state visualization.
Reversible debugging movies, generated from source code and Testing Code, maybe?
Oh, and opensource under dual GPL2/3 or even Affero GPL.
EwokNewbie on August 14, 2009 4:00 PM"So forgive me for being smarmy and offensive, but I have no interest in being a ‘web guy’. And there are two reasons for this. First, it’s not a challenging medium for me. And second, because the vast majority of Internet companies are filled with bad engineers – precisely because you don’t need to know complicated things to be a web developer."
I don't see anything wrong with Michael's post. He is making a _personal_ statement. He also said that there are of course very intelligent web programmers and sophisticated web applications - but that doesn't reflect the majority of stuff you encounter on the web. Again, I simply don't see anything wrong with that either.
He doesn't dare to make generalized statements like:
"You hope everything doesn't move to the web? Wake the hell up! It's already happened!" or "Atwood's Law". Nevertheless I think you have taken his thoughts out of context to make a somewhat sensational post for your own blog out of it.
Obviously not _all_ programming will move to the web, as already stated by many people. (embedded systems, sensitive systems like ATC, federal systems, aviation, military, systems for factories, ...).
So there will still be a place for programmers like Michael, who are simply not interested in web applications. Is that a crime? Do we have to chew on his blog post, just because we aren't clever enough to creativly think up something on our own? I think not. You are better than that Jeff. Please try harder on your next post.
Elias on August 14, 2009 4:04 PMicanhazwebdev!!!! Really? Or ploy N+1?
If opensource not allowed, how icanhazwebdev?
icanhazforum? icanhazREST? icanhazCMS?
You have it all wrong!
Pretty soon all programming will be iPhone App programming.
The web is sooo last year!
And another thing, if web programming is so awful, why are Google and Marc Andreessen both building new web browsers?
Rob on August 14, 2009 4:52 PMSkizz said it first, but a gaffe this big needs reiterating.
Just because you could plausibly write a compiler, OS, or browser in Javascript, doesn't make it "web programming". Furthermore, you can't run the web (e.g. deliver JS apps to a user) without non-web components. Turtles all the way down is impossible.
"Coining" Atwood's law is just an ego-stroking way of stating that Javascript is Turing Complete. You might as well say that all programming is network programming, assembly programming, an optimization problem, or a finite state machine.
turtles on August 14, 2009 4:53 PMWell. Web, not web, whatever. Adobe Air! :)
Sam on August 14, 2009 5:00 PM"You hope everything doesn't "move to the web"? Wake the hell up! It's already happened!"
Well Jeff, of course there are a lot of desktop-like apps running today in browsers, but in the end, ¿who is using them? Only a tiny fraction of users.
Computer geeks apart, most users still use desktop office suites, desktop videogames, desktop video players, desktop windows mobile/symbian/iphone apps, desktop photoshop, desktop autocad, etc... the list has no end.
Of course, everybody uses web apps, at work and home, but the mass market is far far away from using only web, and i really think it will never be the case.
You also forget all people in the second and third world (unfortunately more than who lives in our "first world"), where internet access is far from common, ¿do you still think that web has doomed desktop already?
There is also another important point, ¿java applets, silverlight applications or even javascript intensive applications like google docs are still "web apps"? ¿only because them render content into a browser? I really see them more like desktop apps, doing that, rendering themselves into a browser window, and consuming "web services" to do their work.
Anonimo on August 14, 2009 5:18 PM
once again, you're WRONG WRONG WRONG.
Ever write anything embedded?
Justin on August 14, 2009 5:37 PMExample of Atwood's law in action: Kunth's layout algorithm for TeX has already been implemented in javascript: http://www.math.union.edu/~dpvc/jsMath/
Ben on August 14, 2009 5:43 PMI don't agree with what Michael says, but I do have a similar feeling towards web programming, but for different reasons.
Web programming languages are designed* for quickly hacking together web apps, and as such, have very little internal structure or appreciable mathematical properties. Put simply, they are a mess.
This is fine if you just want to hack something together quickly, but in the larger picture, it has done nothing to help the struggle towards finding a language that can represent abstract ideas, and thus decrease the amount of time it takes to program something. If better work was done in language design, we should have languages by now in which you could program very complex system in just a few thousand lines of code. As it stands, such programs are utterly filled with repetition and redundancy. It shouldn't be that way.
On a more personal and down-to-earth front, the inefficiency of languages like JavaScript has real practical consequences. For example, Google's new O3D API for creating client-side OpenGL accelerated 3D applications is all in JavaScript. Google has done a great deal of work to accelerate the execution of JavaScript, but due to the ugly, interpretted nature of JS, there's an unbreakable barrier that cannot be passed.
* I say they are designed that way to give the designers the benefit of the doubt. I was going to say that they simply didn't know what they were doing, but that (might) be a bit harsh.
Peter Alexander on August 14, 2009 5:46 PMAddition to my previous post:
Imagine if the languages of mathematics had as much rigour and inner consistency as these web programming languages. We would never have as much understanding of maths now if we couldn't perform even simple algebra, and the only reason we can perform algebra is because the language is rigid, objective, and unambiguous.
Apply the same reasoning to these languages and you'll see that we have no chance in hell of producing a practical algebra of computing languages.
Peter Alexander on August 14, 2009 5:51 PMWell said Jeff. The web is having this same effect on multiple industries. crowdsourcing is opening the field to people with no formal design training. Blogs, and now book binders, are letting anyone publish their work, and we've already seen the music distribution model change dramatically. So why should the developing world be any different.
The thing that people seem to not get is that the more bad writing/design/music/code there is, the more value it gives to the people who are doing these things well. And if you're doing things well, what really are you worried about?
and as for Michael Braude's comment "The reason most people want to program for the web is that they're not smart enough to do anything else", everyone has got to start somewhere. I'd love to hear what a professional journalist would have to say about his first ever blog post.
Aaron Moodie on August 14, 2009 6:09 PMI 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.
Greg on August 14, 2009 6:18 PMIt'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.
JB on August 14, 2009 6:35 PMI 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.
Bystander on August 14, 2009 6:41 PMJeff 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?
Web application and desktop application are not opposites, nor mutually exclusive. Desktop application and HTML application are closer to opposites. The desktop web application is the real future of development. HTML pages aren't going away, JavaScript applications aren't either, but you'll never see 90% of users authoring their books, writing their code, calculating their balance sheets, doing their financial predictions, etc. in Firefox. And don't bother mentioning that you "can". Doesn't mean it's any fun or makes a bit of sense.
Just when you think desktop applications are gone, they'll be here again. The common view is to compare browser and desktop code in the way you'd compare automobiles and horses. But really you should compare in the way you'd compare semi-trucks and cargo trains.
Ryan Baker on August 14, 2009 7:07 PMWeb application and desktop application are not opposites, nor mutually exclusive. Desktop application and HTML application are closer to opposites. The desktop web application is the real future of development. HTML pages aren't going away, JavaScript applications aren't either, but you'll never see 90% of users authoring their books, writing their code, calculating their balance sheets, doing their financial predictions, etc. in Firefox. And don't bother mentioning that you "can". Doesn't mean it's any fun or makes a bit of sense.
Just when you think desktop applications are gone, they'll be here again. The common view is to compare browser and desktop code in the way you'd compare automobiles and horses. But really you should compare in the way you'd compare semi-trucks and cargo trains.
Ryan Baker on August 14, 2009 7:55 PMHeh.. as if to prove a point, Firefox hung on Coding Horror for 30 minutes after submitting copy 1 of my reply. Attempts to reload hung.
So I booted Chrome which posted and I now I see that the first POST made it after all. Ironic?
Ryan Baker on August 14, 2009 7:59 PMI agree with Paul Pacheco, "The difference isn't between desk or web apps its between juste a good and clean programer and a lazy code sucker!".
It's not by WHAT you are doing, it's by HOW you do it.
Daniel on August 14, 2009 8:00 PMI agree with Paul Pacheco, "The difference isn't between desk or web apps its between just a good and clean programmer and a lazy code sucker!".
It's not by WHAT you are doing, it's by HOW you do it.
Daniel on August 14, 2009 8:01 PMGah - no one will ever read a comment this low - (I didn't even make it) but...
Mike's argument is entirely valid (ignoring the bit about dumb software developers). The way things are now "serious" programmers have a huge wall to hurdle if they want to be web developers. The internet is an INSANE environment for people who want to do serious work, and not get drowned in the tedium of cross browser development, UI design, and nit-picky browser speedups.
Things are significantly better these days then they were a couple of years ago. New practices in javascript (at least for me) have made things significantly more sane. JQuery is a great step in the right direction, but the DOM is a mess. (Incidentally I think that John Resig is becoming a personal hero... I haven't bought any books or anything, but he seems to be a driving force for making things better)
The fact that Mike is probably missing is that in five or ten years when he's finally forced to make the jump for one reason or another, the web should be a PLEASURE to program for. Things are clearly moving in that direction. We'll have the good development tools that he's pining for (a lot of them are already here in bits and pieces).
In a few years this debate MUST be moot, the differences between web programming and application programming need to be fixed - precisely because application development is better for all the wrong reasons.
Justin on August 14, 2009 8:04 PMI don't know about you, but features and performance are two things I appreciate in most applications. I don't know if the two can possibly coexist in web applications, but for the most part neither are present anyway.
w on August 14, 2009 8:09 PMJeffs 'reaction' is justified... albeit a bit childish and actual made me rolling on the floor laughing (ROFL)...
The Web is BUILT on top of the following:
1) hardware circuits
2) software DRIVERS
3) Machine Manguage
4) ASM
5) C (or other)
6) PHP/ASP
There are MANY layers to programming... and yes I thought web programming was going to be a BREEZE when I was coming from C++ game programming.
But, it's all the same logic. If this than this.. Interfaces and Abstract classes verse SQL and PHP (which PHP actually now supports Interface Classes and all that Jazz)
Still Jeff's react was 'only human'. Albeit a bit ignorant and childish...he IS a web programmer.
Matt Kukowski on August 14, 2009 8:45 PMI'm glad someone else is seeming some shift from desktop application to web application. For those few who are working at a Software company, look around the various collaboration tools that you use, most of them are web apps. I agree that 3D softwares are there to stay but some of the desktop softwares are moving to the web. Even Microsoft is following Google's foot steps in having their Office Suite as a web app.
In my current location, the number of software companies have gone down significantly over the last few years. They are instead replaced by internet companies who are making a significant profit in the current economy and they are hiring right now.
I believe the majority of people who are against Jeff's article are working on the West Coast where there is a large number of software companies. Opinions among both software and web developers will vary depending on their locations around the world. The future will still need desktop and web apps but the job market will have less demand for desktop developers.
Thierry on August 14, 2009 10:01 PMThis is appropriate: http://despair.com/blogging.html
Michael Braude any comments now !! I think he is already bowled and gone back to pavilion :p .
So don't try to post such type of self centered intellectual thoughts again.
Cheers
check out chromeexperiments.com I just found it today and it pretty much sums up the argument pretty well =)
djc on August 14, 2009 10:31 PMThis post shows really nice examples of "black vs white", "always vs never", "all vs none", "good vs bad", ".Net vs Java" kind of reasoning... Come on people, there's never any black or white situation, there's always context and reasons. That kind of thinking is called extremism and besides having triggered such emotional responses on those comments, it's also the reason for so many of the problems in this world... think about that before using any of those words...
Anonymous on August 14, 2009 10:43 PMthis is a whole lot of nerd rage. alot of you guys need to chill out and think about what Atwood is even talking about instead of just taking this as a personal insult.
Jeff is focused on apps that a user will run on their home PC or mobile device. apps that do common home PC tasks like word processing, or doing your taxes, or running an entertainment application, or playing some media.
and with regards to that subset of the programming world he's right, all of that stuff is in the process of migrating to the web.
dbg on August 14, 2009 11:09 PM+1 for Atwood's law!
a_m0d on August 14, 2009 11:29 PMThis Michael Braude guy clearly missed the boat. It's funny and sad.
Joe Chung on August 15, 2009 12:08 AMWriting ASP.NET apps and generating BO's & SP's for so long - this post stung a bit.
Scott Elkin on August 15, 2009 12:34 AMi good like it website.
brandsbar on August 15, 2009 12:36 AMWhile I think this post swings from exageration to reasonable point of view quite a lot, I think Atwood's law is probably true, mainly because of the mobile web. As more and more people use handheld devices to work from, the language that works across the most devices will become the default choice for an application (even applications which have traditionally been desktop apps). Javascript, at the moment, looks like the most likely candidate.
Rhys on August 15, 2009 1:00 AMJeff:
Your statement:
"Pretty soon, all programming will be web programming."
is clearly wrong. Do you have any idea how many people (including myself sometimes) who are programming machine control and automation for the industry, calculation and simulation software (where speed is essential), etc etc that will probably never move to the web? I would say most programs today are not user programs, and they never will be.
rolle on August 15, 2009 1:03 AMHmm, 'all programming visible to jeff is web programming'? Just like he never sees COBOL?
Ironically, in germany user interface programming isn't even considered engineering (for tax purposes), as opposed to systems programming.
Andreas Krey on August 15, 2009 1:24 AMWhen Jeff knows he's right, you can see his posts within the comments, lapping up the praise and doling out additional wisdom. When's he's wrong, he's nowhere to be seen. Dan A and Michael have the right of it. Jeff is currently buried so far up his own web-2.0 backside that he fails see the bigger picture, a "sin" he continually rants about on this very blog. Ironically, and something I don't think has been pointed out yet, is that the very web apps you praise have their internal structure and libraries written in none web app languages. Oddly enough, that qualifies as programming too, doesn't it?
Paul Stevens on August 15, 2009 1:48 AMOne of the problems of web programming as it stands today is that it is akin to the original incarnation of BASIC in the programnming world. With BASIC there was no need to define variables before use, and lack of structural discipline encouraged spaghetti code. As its' name implied it was a programming language to demonstrate the basics, but should never be used for production code of a serious nature.
Web programming is here to stay, but the language underlying it has got to change to make it more reliable and less prone to security issues which are often related to the "just knocked up" nature of many websites out there. Someone needs to come along and define a web language that has the same disciplines as a compiled, strongly typed language such as Delphi does in the programming world. If there is such a thing already, what is it called? If it relies upon HTML for delivery then it is still vulnerable.
km on August 15, 2009 12:57 PMJeff, right or wrong, thanks for setting the field for a great discussion! It's always great to see the nerds coming out of their dungeons and proudly branding their tools! This has been a fun discussion :)
TatiHana on August 15, 2009 1:23 PMI don't think the central issue in this debate is web applications. In fact, I don't even think it really centers around the differences between high- and low-level programming. The way I see it, the heart of this issue is the lowering of the entry barriers to programming.
When reading and writing was becoming common knowledge after being the privilege of a few, there was the same debate. Many priests and scholars, who were well-trained in these skills, no doubt thought it an abomination that peasants and commoners were allowed to call themselves literate. After all, they were bad at spelling, they hadn't bothered to learn proper punctuation, and most of them had horrible penmanship. The common people, on the other hand, didn't understand what all the fuss was about; they could read and write well enough for their own purposes, and they didn't have to hire somebody to do it for them.
Lowering the entry barriers to reading and writing allow more people to read and write, no matter how poorly they compare to scholars. In the same way, lowering the entry barriers to programming will allow more people to tell computers what to do, albeit in a clumsy way compared to seasoned programmers. If you ask me, that's ultimately a good thing, and we shouldn't let the elitism in our own ranks discourage us from making it happen.
Jakob on August 15, 2009 2:08 PMWell now we know the difference between having an opinion and having an informed opinion.
The web apps you speak of are really just client server apps with the client hosted in a browser Now if you do not know that then you have no business being a programmer. The Web is not a platform it is a marketing term.
mg on August 15, 2009 2:12 PMIt may be time to flip the bozo bit on Mr. Atwood. His success has gone to his head.
nobody on August 15, 2009 3:20 PMJakob,
Nothing wrong with lowering the barrier to entry so long as you are prepared to have to deal with the poor quality of 'Product' that comes as a result.
As you say, the 'Common People' couldn't spell, didn't know punctuation and had bad penmanship. i.e. the quality of their product wasn't very good. Fine for their own use but you didn't see many of them able to compete in the same league as the 'Pros'.
Jon on August 15, 2009 3:59 PMI think you missed his point and haven't addressed any of his valid grievances.
His rant, which I entirely agree with, may well be almost pointless, as every laudatio temporis acti inevitably is.
But before sadly going back again to "fixing" by trial and error some inherited messy, undocumented concoction of php/perl/python/apache/mysql which happens to be a webapp, can we still sometimes remember of the old good times when application programming was indeed made with all the all-important things the OP mentioned, giving true and deep satisfaction in our job, or envy whose lucky enough to still be programming seriously, predictably, scientifically?
Like with low-cost flights, where their crappy service isn't any better just because they are cheaper or happen to be preferred by the majority, for whatever reason, webapp are far worse than what we used to do, but we've got to go with the masses.
Not every application is "WWW" (Widgets to Wankers on the Web). I work at a company whose software must sometimes chew through a few terabytes of binary data and do intelligent things with it. When that can be done on the web, we'll think about it.
ThatGuyInTheBack on August 15, 2009 5:13 PMThis is one of Jeff's silliest bouts of verbal diarrhoea yet. Does anyone else see the irony of somebody like Jeff telling others they have no business programming after displaying his laughable ignorance of (among other topics) cryptography and security practices?
Quick Joe Smith on August 15, 2009 8:08 PMWhat a self-righteous post! Where to start from?
"The reason most people want to program for the web is that they're not smart enough to do anything else"
Yes, this is a valid point (although I'd change the "smart" part with "inexperienced"). Most "WEB" programmers I've met, are on the level of script-kiddies using PHP in ways that manage to make it even worse than its definition, and some ASP.net ones, that resort to control drag-n-dropping, with no sense of SoC, IoC or even layers.
Yes, he's quite off the chart too in the end with a stupid conclusion, but the above little chunk of text stands.
"All Programming is Web Programming"
No, it's not. The hypothesis you express in the end (albeit also wrong) has nothing to do with the title of your post.
"Atwood's Law"? Come on now, do you want a wikipedia entry with that? If I were to take it literally, then I'd say you have no idea how scientific or even emperical laws are defined.
"Pretty soon, all programming will be web programming. If you don't think that's a cause for celebration for the average working programmer, then maybe you should find another profession."
No it will not. I won't use a web-based Photoshop or a web-based Visual studio, or a web-based music authoring application. I MIGHT use a web-based office solution, to the point it will not be able to compete with the respective desktop one.
Also I should mention gaming, that albeit going downhill on the PC, remains still a class above all Flash-based web games, thus ensuring a market.
No, if that statement were true it would indicate a paradox (you can't use a web application to develop another application - desktop or web, for practical reasons).
After all, the majority of applications that can be easily ported to web have to do with client/schedule/inventory management. And I won't deny I've developed quite a few in my career.
What a self-righteous post! Where to start from?
"The reason most people want to program for the web is that they're not smart enough to do anything else"
Yes, this is a valid point (although I'd change the "smart" part with "inexperienced"). Most "WEB" programmers I've met, are on the level of script-kiddies using PHP in ways that manage to make it even worse than its definition, and some ASP.net ones, that resort to control drag-n-dropping, with no sense of SoC, IoC or even layers.
Yes, he's quite off the chart too in the end with a stupid conclusion, but the above little chunk of text stands.
"All Programming is Web Programming"
No, it's not. The hypothesis you express in the end (albeit also wrong) has nothing to do with the title of your post.
"Atwood's Law"? Come on now, do you want a wikipedia entry with that? If I were to take it literally, then I'd say you have no idea how scientific or even emperical laws are defined.
"Pretty soon, all programming will be web programming. If you don't think that's a cause for celebration for the average working programmer, then maybe you should find another profession."
No it will not. I won't use a web-based Photoshop or a web-based Visual studio, or a web-based music authoring application. I MIGHT use a web-based office solution, to the point it will not be able to compete with the respective desktop one.
Also I should mention gaming, that albeit going downhill on the PC, remains still a class above all Flash-based web games, thus ensuring a market.
No, if that statement were true it would indicate a paradox (you can't use a web application to develop another application - desktop or web, for practical reasons).
After all, the majority of applications that can be easily ported to web have to do with client/schedule/inventory management. And I won't deny I've developed quite a few in my career.
For the past 3 years I've been writing Windows Forms applications that utilise web services and the web browser UI control to render html based user iterfaces.
These applications can work in offline mode when needed and have access to all of the resources and processing power of the local computer. They also benefit from CSS, jQuery, DHTML, JSON etc whenever needed. Best of both worlds maybe?
Jeff, your article is so quaint, old fashioned and close minded to suggest that there is this huge dividing line between "web programming" and "other programming".
But the the title and mood of this article certainly gets people to read and comment on it, so congratulations dude.
AJ on August 16, 2009 12:46 AMPLONK!
The web is unreliable by design. An app like word processor must be always ready, so it should stay desktop. So should all 'professional' software.
Don't want your plans to be ruined by failed connection? Stay desktop.
Hey Now Jeff,
It's true,
All programming will is web programming.
Coding Horror Fan,
Catto
Michael Braude has it backwards. Bad developer produce bad software - they always have and they always will.
The fact the new fad is web apps bears no relation to this underlying truth.
For every high polished piece of software there are twenty truly awful piece of software. It doesn't matter if that's a web applicatio or a desktop application.
Has Michael really never used a crappy, half-baked, desktop application? Why would he think the web is any different?
Simon Johnson on August 16, 2009 4:32 AMWhat a giant pile of comments! Well, I must get my two cents in, because hell, it's a comment form on the internet! Of course people care about my opinion.
So I wonder why programming remains so male dominated... Could it have something to do with this culture of pissing contests? My compiler is bigger and more complicated than your compiler! I sure hope that technology that's easy enough that anyone could use it doesn't become popular, because if programming becomes mainstream I won't be able to be as convincing at projecting an aura of condescention at anyone who can't program a computer.
Oh hay you, just because I can't program in assembler doesn't mean I'm dumb. Really. My mom said I'm smart.
Do we really have to play these dumb games to prove our own worth? Does it matter what technology you used? Does anyone who isn't a programmer actually care whether their word processor was written in C or in Javascript? If you're a designer who knows some ruby and rails, and you put together a really cute web app that keeps track of your kitten photos, and it just works really well, and really easily, and everyone loves it, does anyone care that the guy who programmed it has never heard of djikstra?
Does that guy really need to argue that really he's just as good at programmming as the guy that wrote some software to sequence DNA? Will anyone other than the stinky bearded guy that nobody will invite to parties really notice? Haha, what a retard, that guy might have millions of dollars and 5 girlfriends, but I bet he can't approximate travelling salesman! I'm still better than you!
Javascript is the language of the future!!! Yippiee!!! Everything that can be become JS will be JS. Yippiee!!!
Prophet Atwood has had a vision and and the messias maybe is John Resig!! Hallelujah!!
Alert that people!!!
blabla on August 16, 2009 5:27 AMJongnam's Theorem: "Any subject that can be taught in JavaScript, will eventually be taught in JavaScript."
This is hardly true, I write applications for high volume data reduction in real time. While the results of of this data reduction may end up as a Web driven front end, the acquisition and reduction of this data to a usable form could not and should never become a web application.
I agree that Web driven apps are the wave for the presentation layer, much more goes on within computing than the presentation layer.
Dave on August 16, 2009 7:03 AMWeb programming isn't better or worse, and it certainly isn't everything. Although everything may end up tied to the web stuff like JavaScript, PHP, ASP.net etc are woefully inadequate for any kind of real time simulation of sound, graphics, physics etc... we are a long way off from not needing local processing to handle these.
Its also true that the learning curve is substantially shallower... but I disagree that this makes it easier to solve the hard web programming problems. They are still hard, no matter how good the toolset available is at doing work for you... if anything that makes it harder.
Jheriko on August 16, 2009 7:23 AMI HATE WEB APPLICATIONS:
And simply do not use them most of the time.
If i buy an application i can install it in a few years. (And for some applications by gone companies this is needed to get some data).
If the web vendor is gone you have nothing. No possibility to get the "program" back, small possibillities to get data back.
I even hate it if a software need some kind of online activation. Microsoft prvides us at business with usb sticks for Windows activation. This sticks will run even if no online activation will be possible any longer.
Web is a bubble. The more data people will loose by trusting web application, the sooner they will use more installed programms.
Web can be used for all sorts of social things (communities, mails, groupware), but to be true, even for parts like groupware i have not seen anything webbish which can be compared to exchange/outlook.
sunfire on August 16, 2009 7:31 AMWow...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?
Joe Baltimore on August 14, 2009 6:41 AM
it is dead as soon as.... ohm.... Linux is the number one os for the masses with hurd as kernel. ;-)
sunfire on August 16, 2009 7:34 AMI would suggest that the goal of writing apps is not to use all the fanciest tools, but to fill a need. Sometimes you need a tack hammer, sometimes you need a factory.
A simple shopping cart does not need the bag of tools the OP mentions. The back end for a browser-exposed real time trading system likely will benefit from many of these techniques. Sounds like the OP would find his comfort zone more in writing back ends for larger systems than in writing complete small apps. Nothing wrong with that -- although it doesn't seem a compelling reason to complain about the existence of smaller apps.
I recall a presentation by Rasmus Lerdorf, the father of PHP, concerning Yahoo (whose front end is apparently mostly PHP). He scoffed at the notion that 'Yahoo is written in PHP'. His point, as I recall, is that the front end is PHP, but there are hundreds of function units (modules) that were rewritten in C for performance and scalability.
Fancy stuff is not going away -- the need will still be there. It is just refreshing to be able to do some of the simple screen and database stuff without bringing in the heavy artillery.
Ed Schechter on August 16, 2009 10:10 AMI think you're completly wrong with the first part.
Web-Dev's aren't so bad in everything what you were speaking of (I only agree with you when we are speaking of complete noobs - but I couldnt read a word about that) nor did none of them ever see certain preperation techniques...
In my opinion, it depends on where you are working and what requirements are being set on the work you have to do.
I personally work in a small company in Germany where it's completely normal to do exactly those things of which you say, none of us does.
/phenyll
phenyll on August 16, 2009 11:19 AMI have experienced Atwood's Law! My Toastmasters club wanted a way to assign meeting roles fairly. I volunteered to write a program. First I tried in C. Then I rewrote it in C++. Not wanting to restrict it to Macs, and not wanting to recompile for multiple platforms, I rewrote it in Python, aiming to integrate it with FreeToastHost (a service that makes free web sites for Toastmasters clubs, including a duty roster manager). When that didn't quite work... I rewrote it in JavaScript, and pulled the data from FreeToastHost by AJAX.
For the curious, a demo is available at http://www.davearonson.com/darts/darts.html .
And BTW, I'm for hire... and want to apply more modern languages than C/C++....
Dave Aronson on August 16, 2009 1:20 PMI hate old people :(
Web programming isn't for everyone. It's ridiculous to claim that web programming is for practically incompetent programmer. As with any field, the difficulty of the work depends on the scope of the project.
Sure, any idiot can design a blog, but not everyone can design a facebook from scratch (not just the core functionality, but also the cache system, business intelligence, etc.).
Web programming is still programming. Difficulty of projects can range from a crappy blog, to Google.
If web programming is for idiots, I'm sure all of you hardcore old-school programmers can make the switch with ease. Don't let your own stubbornness bring you down.
Guerrilla on August 16, 2009 7:20 PMIts unfair to say that web developers are incompetent, I believe every job has its own challenges. Had internet connectivity been very good time you started career in programming, I bet you too would have been an web developer (lol).
May be the effort required to develop a web application is less when compared to desktop application, however its equally challenging. This too requires lot of planning and UML's are part of that process.
Anyways its all with the development team, it may end up as a crap or ...
James on August 16, 2009 8:22 PMWell, you are both right and wrong.
No, the web of today is ACTUALLY stupid, thats why it has not taken over everything. Just name one game that any console has developed having at least a 100000 followers that is online. Not the stupid RPG's, I am talking number crunchers here(Halo, Mass Effect, Black, anything remotely viable to be called a real game).
The web of tomorrow, just like many of the other technologies, with age might become better. All the threading concepts and everything might become really useful in a web-page, but right now its not the case buddy.
Jehanzeb on August 16, 2009 11:32 PMGot to love the attitude several people have here.
"The reason most people want to program in C, C++ or Java is that they’re not smart enough to do anything else. They don’t understand assemblers, registers or hexadecimal. They haven’t got a clue why you would use loop unrolling or bitshifting."
.. Or maybe they haven't had the need nor the time to learn those things yet? Why is it that whatever [More Low-Level] technology you happen to use makes you smart, and whatever everybody else is using does not?
In case you didn't notice, none of the programming is actually rocket science. It's about combining logic to achieve the desired outcome. So if you happen to prefer one way of doing it, maybe it isn't the only way of doing it?
I can appreciate a good craftsman whatever his/her trade is. I wish you people could too.
JD on August 17, 2009 12:08 AMI hate to put the spanner in the works because this is pretty unrelated, but kind of isn't at the same time.
we wrote a web application that isn't for the internet. OMG!
intranet web application. we replaced a desktop application that had bi-monthly service updates and bi-annual version updates. suffice to say, users got to sometimes use the application when it wasn't down or being quote unquote upgraded.
true, it isn't developed for the masses but the concepts are the same. good ol asp and javascript completely replacing a pretty robust desktop application. and the thing is, it needed to be written pretty darn well or else the world would have gone kablooey.
advantages:
updates and upgrades done on the local server. ten minutes downtime on one box. everyone logs on in the morning and oooohs and aaaaaahs.
i don't we're skipping an important point here. bad programmers can also code bad desktop applications!
Ipkiss on August 17, 2009 12:24 AMAnd braces should ALWAYS be placed like this in C/C++.
code fragment:
if(expr)
{
statement;
}
A few years ago (well 10 or more), the most challenging coding task was to write a C++ analyzer and compiler (let's try to deal with the Standard Template Library). For now, i think it's coding a good and robust browser.
The only "smart" web app i've seen is Google Maps. Very impressive.
But, as usual, every one's right. Users want to have well designed and usable UI (not trivial), but any app needs good back office stuffs to store, manage and find data (even more not trivial). I'm talking about real office app. Not blogging app :-)
ECC on August 17, 2009 1:01 AMThe problem with both sides of this argument is that most software does not even run on PC's, it runs on embedded devices, controllers, and on dedicated non-web connected servers...and probably always will
The Web/Desktop split is changing but the web is unlikely to "win" ever some people will still run apps locally even if they could run the app in the cloud ....
Jaster on August 17, 2009 1:18 AMSheesh. I go away on vacation for a few days and look what I came back to.
I'll post something on my blog once I have a spare moment or two to respond to this (although I wonder if it's a good idea to fan these flames. Aren't these comments enough?). But for the people reading the comments, I would like to clarify and say a few things:
1) I think it was unfair of you to omit a very important line from my rant ("OK, so that’s not an entirely fair accusation to make. Of course there are smart people who like to work on the web, and who find challenging things about it."). While I know the post is inflammatory, not mentioning this line casts me in a harsher light than I think is necessary for you to make your point.
2) In retrospect, I should have clarified what I mean by "web-guy". I did attempt to do this by responding to people in the comments. As some people have quoted already, I wrote "I don't consider server-side programming "web programming" because SOA encompasses all mediums. Once you get into writing web services and DAL's you've left the world of aggravation". Although I didn't make this distinction clear in my initial post, I have spent plenty of time working on the service layer and I have no problems staying in that space. So I was specifically referring to the presentation layer of a web-app.
I of course don't agree with what you've written here. But I think people have already said enough on that topic that there's no point in repeating it.
Michael Braude on August 17, 2009 1:20 AMI won't say that your post is wrong, but neither will I say Michael's is. I specifically agree that if there was 'only' web programming left, then I would probably leave the profession.
But of course, you've forgotten these 'niche's'!
- Web servers
- DNS servers
- Database servers
- Mail servers
- Operating systems
- Web browsers!
- the list goes on....
I for one am happier working on these systems than doing the same thing over and over in asp.net. Sure... you can do something new and original (like google maps) with the web, but how likely is it that the company you are working for is creating something that cool? More likely they are creating some shoddy website or b2b software asp.net front end, sql backend, needs to be done by september. No thanks!
Simon Lerpiniere on August 17, 2009 1:57 AM>Pretty soon, all programming will be web programming. If you don't think that's a cause for celebration for the average working programmer, then maybe you should find another profession.
I 99% agree. Some applications are still too big to fit into a browser: do you imagine VisualStudio or Eclipse in your browser??
Patrick Smacchia on August 17, 2009 1:59 AMHi, My Name is James Hogan. I'm heading to University in September '09 to do my master of cs in web development. The Web is where it's at. Now is the time for experienced programmers to show the way to us burgeoning developers. I don't know allot about traditional programming paradigms but I am sure that web aps are where the real innovation is happening, and as a developer I damn sure want to be part of that revolution.
James Hogan on August 17, 2009 2:42 AM@Patrick Smacchia
I agree eclipse will not fit into your browser ...not just yet...
but the revolution has already started there too check for Bespin and Zembley.
Some level of Web Apps and almost all mashups can be made solely in your browser sitting on any system any place.
moha297 on August 17, 2009 2:58 AMCall me when a web app can undo/redo/copy/paste as reliably as a desktop app, or even do 50% of the things expected from a desktop app reliably.
Never gonna happen is it, at the minute its just a bunch of devs circle jerking about "platforms" and startups
@Ikhnos: beat me to it! :-D
I was just wondering how we are going to program device drivers and (onboard) missle guidance systems on the web....
Aaron Seet on August 17, 2009 3:30 AM"The reason most people want to program for the web is that they're not smart enough to do anything else. "
This is pissing me off! I don't know if he ever designed a high performance web app and maintained it but this is just plain BS!!
Even a web app in the end goes down to app pools and worker processes, saving resources, providing more throughput.
sajid on August 17, 2009 4:15 AMThe good thing about all this bad "web code" is - it usually disappears after a couple of months.
The bad thing is that this then gets replaced by something more hideous.
Vinzent Hoefler on August 17, 2009 4:54 AMThe web is just an interface, like winforms, swing, QT, GTK, TCL, etc. It is an interface with inherent benefits, such as deployment-less updates, but an interface nonetheless
Trust me, as a programmer for a VERY large company, some very complex applications are written in the insurance/financial (among others) sectors that are accessible strictly through a web UI. To do it any other way would be an IT and support nightmare of version hell.
The web UI is the very tip, of the tip, of the iceberg; it's a means to an end. The challenge comes in developing faster, highly-scalable, highly fault-tolerant, applications that can cooperate with the various technology stacks. Then you get into SOA and the challenges of aggregating, transporting and transforming data across a global enterprise where milliseconds count.
I have developed in C/C++ for ~10 years and prefer the challenges of large-scale web application development over tripping through the minefield of unnecessary, archaic, tedium that is C/C++.
Ryan Emerle on August 17, 2009 5:17 AMIs "web programming" only that which runs in a browser?
Many desktop apps these days have some web components, include UI.
It's time to think outside the browser.
JimBob2000 on August 17, 2009 7:31 AMI work with (and have great respect for) some really sharp ASP.NET developers. Most of my work has been developing back-end services and databases but I've done some ASP.NET development. I appreciate the power and accessibility (not to mention the ease-of-deployment) of web apps, but it is a major source of frustration that web development requires spending TONS of time dealing with "why won't my UI render propery in version y of browser x?" problems. I guess I'd rather spend my time and brainpower solving more interesting problems. I guess I'm a Luddite - I'm hoping I can eek out a living for another 15 years without having to do too much Web UI work.
"So when will I be able to write an interactive 3D application that runs inside all of the popular browsers without any special plug-ins?"
Funny you should ask, since that is exactly what I'm doing right now for the company I work for. Using current technology it's obviously slow, hacky and quite inefficient in many many ways, but non of that matters since it is good enough for what we need it for and the advantages of a web app outweigh the disadvantages in this particular scenario. It will obviously not replace our desktop app (yet), but makes a very good complement in certain cases.
Realistically I'd guess that in 2-3 years time 3D on the web will be quite usable.
dagw on August 17, 2009 8:13 AMBecause dick waving is the heart of programming. Thanks to the internet, that is. Since it is almost purely an intellectual game, unlike pretty much everything else, people will always want to claim supremacy. The smart ones figure out early on that all of this posturing is absolute rubbish.
Mike Judge on August 17, 2009 8:28 AMI think this really boils down to an argument about why programmers write code. Jeff [and I] clearly do it so other people can garner enjoyment, save time/cash/resources, or both based on our work and expertise. Mr. Braude clearly works for other reasons, be they self-aggrandizing or merely intellectual.
It takes all kinds. Someone has to write those apps which make the web work (apache, rails, php, database drivers, etc) before we can start "web programming". Maybe Mr. Braude could use his clearly superior brain to develop an un-klugified web language where we don't have to mix business logic and presentation quite so much as quite a few of the modern ones.
phreakre on August 17, 2009 8:45 AMI think this really boils down to an argument about why programmers write code. Jeff [and I] clearly do it so other people can garner enjoyment, save time/cash/resources, or both based on our work and expertise. Mr. Braude clearly works for other reasons, be they self-aggrandizing or merely intellectual.
It takes all kinds. Someone has to write those apps which make the web work (apache, rails, php, database drivers, etc) before we can start "web programming". Maybe Mr. Braude could use his clearly superior brain to develop an un-klugified web language where we don't have to mix business logic and presentation quite so much as quite a few of the modern ones.
phreakre on August 17, 2009 8:47 AMPutting up a web page != web application development. Mr. Baude is welcome to come sit at my desk and watch me work any day. Maybe once he actually learned about what he is denigrating he would have a different opinion.
Jen on August 17, 2009 9:32 AMAll programming will NEVER be web programming. "Web programming" wouldn't exist without desktop/hardware programming:
Is the OS web? No.
Is the IDE web? No.
Is the database server software web? No.
Device drivers? No.
Server side processes to support a web app? No.
The only thing "web" about web programming is the browser and the stream of data sent to it from the server. The majority of the elements of "web programming" have nothing to do with "the web" at all.
A more accurate statement would be "most of commonly-thought-of web programming is not web programming at all."
HardCode on August 17, 2009 9:43 AMMichael Braude article was so stupid that I wonder if Microsoft had it series of lay-offs just as an excuse to get rid of specific persons- Braude still works there. He was wrong on so many levels. You make software because you need to and not because you want to avoid headaches. Having different browsers to contend with is no excuse not to do web development. Do desktop developers worry about view state, post back, query string, CSS and other web-specific technologies? Experienced web developer do know things like like threading, OOP and other Braude implied they are too dumb to pick up. Software developer has its beauty and its headaches and it about what you need, not what you want to avoid. I wonder what Jeff was thinking when he decided to quote an idiot. Jeff sounded smarter than that when I heard him speak on Hanselminutes.
Phil on August 17, 2009 9:47 AMRockMelt will change all this. You will boot into the brwoser and there will not be a way out. No "x" icon to close the sucker, none of that. You boot into it and you spend your life in it.
If you hold F8 during boot, you will boot into jQuery IDE. It will have compile and save button. Guess what compile does? Nothing. It is javascript hahaha. So, you save your stuff into rockmelt's registry, boot again and off you go with testing.
You can buy a Mac still.
securityhorror on August 17, 2009 10:01 AMWould the backend of a web application still be consider web programming?
Steve on August 17, 2009 10:52 AM"I sure hope that technology that's easy enough that anyone could use it doesn't become popular, because if programming becomes mainstream I won't be able to be as convincing at projecting an aura of condescention at anyone who can't program a computer." - Breton
No, because when it does become mainstream, everyone thinks they can do it and thedailywtf will be able to update 10x/daily and won't ever have to recycle articles again.
"Will anyone other than the stinky bearded guy that nobody will invite to parties really notice?"
Yes - the developer who inherits the project.
Steve-O on August 17, 2009 11:40 AMMy wallpaper changer, www.PictureShare.net, will never be a web app. Utilities can be pretty useful.
That's not to say there isn't a web component to my wallpaper changer, there certainly is. But I did find writing the web part to be incredibly boring and writing the rich-UI on the client to be very rewarding. UI on the web sucks ass compared to what you can do with a desktop program.
Jeff Lorenzini on August 17, 2009 12:04 PMJeff you need to fix the comment system (ie add in some sort of digg/reddit style moebob), who is actually going to read through this many comments?
I BET NO ONE EVEN READS THIS ONE
Jeff Atwood on August 17, 2009 12:27 PMJeff, I think you should go back to the original post and read some of the comments Braude left. At least someone has the balls to partake in the conversation.
LYoung on August 17, 2009 12:39 PMNice flamebait Jeff, I love it.
You know, the thing is, we don't all work for Vertigo working on fun little happy web projects, or off to start some pseudo-blog.
Perhaps if you didn't generalize everything into nice little boxes other people would too.
Jerk.
N on August 17, 2009 12:57 PMI have posted a reply on my blog at:
http://michaelbraude.blogspot.com/2009/08/re-all-programming-is-web-programming.html
Michael Braude on August 17, 2009 1:00 PM@Michael, maybe now he'll have you on the podcast so he can apologize like a la the bob martin show) (though that time it was Joel spewing stuff)
A few other people have said it - this blog is about generating traffic. And i Suspect that since he probably can count on SO for future wages and identity and ego, he no longer needs to care about content here.
anony on August 17, 2009 1:20 PMNot sure if it's worth posting this as Jeff is obviously not interested in these comments, but just listened to the latest Stackoverflow podcast, and at around 26 min (just after Jeff says that PHP is the new Cobol), Joel says,
"There's a certain class of languages ... that tend to atract people that ... are lookong for the easiest way to get things done, and those tend to not be the best programmers. ... That was the problem with Visual Basic for all those years. Javascrpt and PHP are all in that class, where the've attracted programmers who are not professional programmers, and don't really care how clean their code is, they just want to get something done, and thats why they've chosen those languages ... and so the code that exists in those languages is of a much, much lower quality then you would expect ..."
Jeff's seems to agree with, so how is this different than the "absurd argument" that "web programming attracts sub-par software developers?
It seems to me that the whole basis of this point, and of all the moral indignation of web developers to Michael Braude's article is people are not capable of reading the word "most". Web programming is perceived as being easy, the amount of programming required is low, javascript and PHP are languages that can be used to get things done without needing a lot of professional skills, etc. All this attracts below average programmers, and these people are likly to be the majority. None of this means that good developers don't work on web development, just that at present they are in the minority.
By contrast, what I find offensive about this post, is that Jeff twice states that _all_ programming will be (or is) web programming. Not, "most programming", or "in my opinion, at some point in the future, most desktop programming will have become web programming". Instead we get this absolute statement, that effectivly implies that huge numbers of programmers are not real programmers, just because they work in areas that are not so visible to users.
I think what really helps is being pragmatical and focus on getting things done. Choose the language that best fits the tasks. Or as Neal Ford says being a polygot programmer that's the way to go in the 21 century ...
Ben on August 17, 2009 3:16 PMYea, promote your agenda by saying the browser is the future lol (Spolsky's snobby demeanor is really rubbing off on you). Why is it that the truly smart people dont have blogs like this? The fact of the matter is that this is that we're in the tech industry and things change.
Also, as with any other industry most of the programmers, designers, etc. are below average, this happens more on the web because the people that run the so-called standards communities (idiots) create the perfect little playground for bad practices.
If most developers (web or not) were to pick up a book on software engineering they would realize they still have a lot to learn. They all learn some syntax then feel they know it all.
No one is saying you have to go to college to be a professional but at least read the books that people that KNOW more, and have more experience, than you have written. Tutorials on the web written by idiots only creates more idiots (read a book).
John on August 17, 2009 3:38 PMAnd there are plenty of "bad engineers" in desktop development too. So the barriers of web development are lower, and consequently a larger volume of developers follow. This attracts a high volume of sub-par engineers, but what makes him assume that it's proportionally higher? He fails to consider that with a crowd of sub-par engineers also comes a higher volume of top-notch engineers.
To say that the "Internet is responsible for a collective dumbing down of our intelligence" only really indicates his arrogance in how exclusively important he thinks one type (and his type) of development is.
Gordon M. on August 17, 2009 4:17 PMHow can you have "most" of the programmers be "below average"?
Jawn on August 17, 2009 4:28 PMJawn, I guess "standard" would be a more accurate term. You're right, all the crap that's put out there makes average very low.
John on August 17, 2009 4:49 PMHuh... what a lot of comments for such a silly topic.
Unfortunately it seems we are getting back to making divisive comments just to get comments and reactions without adding to the community debate.
Well... it worked and I'm commenting.
I disagree with your premise, your reasoning and your conclusions.
My personal belief is that the line between desktop and web applications will blur to the point that “applications” will no longer have the “desktop” and “web” attribute applied. People will continue to be “programmers”, and the distinction between “web” and “desktop” programmers will end up being as meaningless as… well... as meaningless as the distinction is today.
But so what if I’m right and so what if you’re right? How is that affecting me in my job today? Come on – this site has some good historic posts on day-to-day development issues. Please bring back those good old days!!!
I should also point out that you completely misunderstand the term "Law". "Law" is actually a statistical term for a distribution and NOT used in the sense that the statement MUST be adhered to. So "Moore's Law" is a statement about the distribution of processor speed over time. It specifies the probability of “Y” (flops) will be a specific value given specific “X” (time) value.
That is: Y = a * X+ b, where b is a specific stating point and a is a growth factor. THAT’S a Law.
There are lots of them, some of them interesting like Benford’s Law. But they are ALL distributions.
Stating that some event is going to happen in an undefined period of time… that’s just arbitrary idle speculation. I predict that one day Microsoft will go out of business. It WILL happen… but when???? 5 years, 50 years, 500 years, 500,000 years??? My statement is pointless… like the aforementioned “Law”.
Sorry for being so negative, but we just seem to be straying further and further away from meaningful discussions on topics that actually matter.
Philip on August 17, 2009 6:22 PM"How can you have "most" of the programmers be "below average"?"
Because average is not the same as median.
Adam on August 17, 2009 6:46 PMMaths 101...
Average is a generic statistic term that could stand for: median, mode or mean.
Using these numbers; 1, 2, 3, 4, 10, 10 the values would be:
Mean - the point at which exactly halves all items. = 5
Mode - the most common item. = 10
Median - the middle point of all values. = 3.5
Median makes sense when the data is not symetrically distributed - such as house prices.
Mean makes sense when the data is symetrically distributed - such as IQ.
Mode makes sense only when you are interested in knowing the most common event.
Average commonly translates to "mean" (e.g. Excel), however the use of average to be "mean" is not a statistical convention. Statistical convention is to be explicit and not use the generic term "average" on its own.
Stating that "most" of programmers are "below average" would indicate that average translates to "median" or "mode" (probably median). Which doesn't match convention, but is perfectly acceptable.
Just remember - half of all people you meet are below average.
Philip on August 17, 2009 7:09 PM"They haven’t got a clue why you would use loop unrolling or bitshifting."
I can bitshift in javascript. :)
Jason on August 17, 2009 7:11 PMSaying all programming will be xyz is always the kind of comment that makes people look as fools do.
The internet in general hasn't created idiots, it's just given them a voice, and thus more noticeable. This domain of the loser is no longer constrained to their basement bedroom of their parents house.
"Social Networking" is the downfall of us all, but then again, it's all chattering monkeys really want anyways.
@Philip good comment.
Ekkzeke on August 17, 2009 7:15 PM"Stating that "most" of programmers are "below average" would indicate that average translates to "median" or "mode" (probably median). Which doesn't match convention, but is perfectly acceptable."
Actually, that would seem to imply that average is being used as *mean*, as if it were median (like I compared it to and what the other poster seemed to believe it implied), then you would have the same number of programmers below as above average. Using it with "most are below" implies mean.
Adam on August 17, 2009 7:28 PM@Adam
You're right. Maybe I should take Maths 101 again.
That final statement was wrong and should read:
Stating that "most" of programmers are "below average" would indicate that average translates to "mean" or "mode" (probably mean).
Which can only be true if there are some very exceptional programmers that tip the scales, and therefore more than half of all people are "below mean".
Philip on August 17, 2009 8:16 PMMr Atwood,
You have your own 'law' ? Are we trying to get in amongst history somehow?
Comon, stackoverflow doesn't make you a pioneer in the web world and your not popular enough to have a 'law'.
But I like it either way.
By the way, I suffer from spasticism
VInce on August 17, 2009 9:21 PM"Pretty soon, all programming will be web programming." - I don't think so, because in future there won't be a separation between a desktop programming and Web programming
Rajeesh on August 17, 2009 9:52 PM*APPLAUDES*
Doesn't Google kind of confirm this with their new OS?
Travis on August 17, 2009 10:03 PMEven though I agree with the general point you're making, I must humbly disagree with the phrase "Pretty soon, all programming will be web programming". As a web, mobile and desktop developer I realize that without desktop developers (to write the OS, Browsers, media plugins, etc.) there can be no web development. To develop is to progress and if OS, browser or media should ever come to a halt, inevitably, so will the web.
Just my two cents.
Kris on August 17, 2009 11:25 PMWhere is Jeff?
He's gone DARK!!!
I respect this blog, so suck it up and say "I guess I wasn't thinking that through when i said that" or "The internet is full of blog posters with random opinions."
BUT DON'T GO DARK!
Roscoe on August 18, 2009 12:56 AMI wish I had the chance to work with that guy, sounds like a real team player.
Rajeesh wrote: "Pretty soon, all programming will be web programming. - I don't think so, because in future there won't be a separation between a desktop programming and Web programming"
That's exactly the point Jeff was trying to make in this post.
Skythe on August 18, 2009 5:15 AM1. Computers? Will all be connected in the future.
2. Drivers? Will be written for and distributed through the web.
3. Operation systems? Will be distributed, updated and managed through the internet.
4. Software in general is already being moved from your local hard disk onto web servers.
That's what experts say and I think Jeff agrees with that.
Skythe on August 18, 2009 5:26 AMJavascript is the future and Jquery may be the solution. I love how every person has their (mis-)interpretation of Jeffs posts.
Wanko on August 18, 2009 5:41 AM"Doesn't Google kind of confirm this with their new OS?"
Isn't it great when technology succeeds an is met with broad adoption before it even exists?
Adam on August 18, 2009 5:51 AMJeff, IMHO this is a bit too radical, at least as for what the net is in 2009.
The web is just another place the programmers and users have access, like cpu silicon, memory cells, disk sectors etc.
It has it pro and cons, and pros are great and make it the ideal place to deploy many type of applications.
But today cons are huge too, and I'll be glad to be called wrong by you when we will have memory and CPU intensive application like compressors, video encoders, professional photo/graphic/animation/video editors etc running on the web.
Or when the net will be so robust and secure we will keep our main live filesystem (with active files, various virtualized running systems, paging, backup, indexing etc) on a web-based disk service, and when users will prefer working on Google Office rather than on MS or OO office.
@Marcus Geduld
"As I see it, there are two major things new developers need help understanding:
1) How to write good, clean code.
2) Why it matters.
(Their managers also need help understanding #2.)"
No. Managers need to stop hiring inexperienced self taught developers. My shop is not your school. My code base is not your final exam. How many basic concepts might you still not be aware of? I will help these inexperienced developers with understanding the things you mention by directing them to the nearest educational facility.
Devtron on August 18, 2009 6:49 AM
Saying that web-programming is for dumb programmers is ridiculous, but not more so than saying that "Pretty soon, all programming will be web programming".
Yes, web-applications get all the press, and they may have the largest number of everyday users. But in terms of engineering effort, web-apps are but a tiny, TINY fraction of the world's software development.
Software is EVERYWHERE. It's in your dishwasher, your car, the time-table displays at bus-stops, your phone. It controls the subway, airplanes, trains, traffic-lights, the Space Shuttle. Some of the most complex software in the world is in medical devices: Advanced 3D x-ray machines, MRI/CAT/PET/CT scanners, Ultrasound machines. Software also controls vast (VAST) numbers of machines the general public never sees, let alone knows about. Examples I've personally worked on include wafer-steppers, electron microscopes and sorting machines.
All these examples (which were simply what popped into my head in the last minute or two) are not web-based. Nor can they be, since they are largely tied to specific, custom hardware. On top of all this, there's a huge duplication of effort involved, since every manufacturer develops their own software.
In short, you may be focused on web-development (and good for you, too!), but don't underestimate the amount of non-web development happening in the world.
Jeroen on August 18, 2009 7:10 AMBest troll award T_T
You know how to boost your traffic, do you ?
Lame.
The problem with web apps is simple.
They are a let less comfortable than desktop apps, where everything integrates and can be customized.
Second, data transfer rate/network response time make apps react less snappy than I want and slower than my dedicated desktop PC. This is not going to change soon, and will never reach the same level as remote connections are slower due to the greater distance (speed of light et al.)
But even then you need many servers in many places of the world to reduce the distance (and thereby response time) to your users. This is expensive.
The cloud: do you really trust other companies? Secure encryption means yet another level of significant overhead. So the amount of data should better be small.
Then an Internet connection is required, I don't have it always when traveling.
A big advantage is that web apps can be accessed from anywhere (if you have an Internet-connection) and that they are cross-platform.
But given the limitations I prefer desktop apps with network capability. Web apps have a long way to go until they offer the same user experience as desktop apps.
Given all these points I don't think web apps are primarily for simple data entry or query applications. For this to improve, really major investments are necessary (but latency will always be worse compared to local apps).
Karl on August 18, 2009 8:32 AMFirst, paper as a means for data storage; Now, all programming should be web programming? Jeff, why not just post what you mean: "low level languages scare me, so why not pretend I 'prefer' high level concepts (as opposed to being unable to actually use anything with less hand holding)."
People implementing photoshop in javascript remind me of people building replica models out of matchsticks - sure, it took some skill and looks cool, but I'd prefer to spend my money on the well made model with full functionality.
Callum on August 18, 2009 8:40 AMWell, you've lost a reader. This is exactly the type of bullshit rhetoric I thought I was getting away from by reading your blog...I guess everything's a silly language war in the end though, eh?
Andy on August 18, 2009 9:44 AM@Jeff Atwood
"There's nothing sadder, for my money, than code that dies unknown and unloved."
For some reason, this immediately made me picture an Island of Misfit Code.
On a side note...
My CAPTCHA: aortas special
"Why yes, I do consider my aorta special, thank you very much!"
Dubs on August 18, 2009 10:05 AM"The reason most people want to program for the web is that they're not smart enough to do anything else."
I don't think that the platform would defy what's technically 'hard' and 'easy'. I think the people who build webapps like Google Analytics, Magento Ecommerce System, Joomla CMS or say deviantart.com would be less of a coders than people who build desktop accounting programs.
Cooty on August 18, 2009 10:23 AM"Pretty soon, all statements about the future will be meaningless generalizations."
Wake up! This has already happened.
Dave C. on August 18, 2009 12:28 PMI agree with one thing, is that 99% of web applications are crap (or just about it) because nobody teaches "how things work behind the browser". How many times have I read "why can't PHP access the DOM?", or "can I connect to MySQL from my web page (javascript)?" ...Too many people/programmer are just clueless because nobody taught them better. The desktop market is not dead, as there will always be software that are not intended to be run in a browser; simulators, games, operating systems (servers, etc.), browsers, version control systems, editors (development environments, etc.), virtual machines, etc. etc.
What next? Web programming is not mature, but will be. Look at what PHP 4 looked like, and what PHP 6 is looking now. Look at Java and how this platform enables powerful applications (Spring, Hibernate, GWT, Echo2, etc.) Of course this is merely a scratch on the surface.
In conclucion, I agree with the OP about too many clueless people write web applications, but the fact that these are more visible than the desktop application is a pretty darn good reason for me to go and write better web applications! It is, in fact, a pretty big challenge but both cannot be compared. The World Wide Web, and it's availability in everybody's home is barely 20 years old; all the modern web technologies, most of them, are less than 10 years old. People will use these tools in clumsy ways because it's fairly new, just like the early age of just about anything. We're pioneers of the Web. Those who don't want to be part of it, it's fine with me... more "gold" for me :)
Yanick on August 18, 2009 1:12 PMNot to scare the people who brought up ATMs and banking software as desktop software, but when I walk into my bank their software is a website on their intranet. The fact that the monitor is sitting on the desk doesn't make it "desktop software". And with Adobe AIR, that line is blurred even more.
I know for a fact that the 2nd biggest ATM manufacturer's code is sitting in a mashed up version of IE, and contains all HTML, JavaScript, and Flash. It talks to the ATM hardware with ActiveX controls and JavaScript. I suspect the same is true for the biggest manufacturer, but I haven't seen their code firsthand.
I just wrote ATM software for a (much smaller) company in Adobe AIR; all HTML and JavaScript. Retail POS systems moved from ages-old DOS apps to ages-old VB apps, and are now dominated by HTML-based apps either in custom browsers or in "kiosk mode", available in nearly every current browser.
As programming languages evolve, they converge in many ways. In almost EVERY case, you can write the same application in any of a dozen languages, and it will be just as good (assuming a good skillset on the programmer's part). Pick the best tool for the job and get it done, fanboy wars just make people on all sides look foolish.
HB on August 18, 2009 2:21 PMHi Jeff,
Lots of comments here. I am stopping reading your blog as often as I was. I see that money started to be involved in your internet activity and it is not as nice to read your writing as it was before. It's sad... maybe I will pop up here again, will see, but it is not the place I visit regularly anymore...
aristo on August 18, 2009 2:36 PMI don't agree. Maybe in the future will be decents hybrid desktop - web app. IMHO many many web app's are crap.
@HB
>>Retail POS systems moved from ages-old DOS apps to ages-old VB apps, >>and are now dominated by HTML-based apps either in custom browsers or >>in "kiosk mode", available in nearly every current browser.
That's because they are expanding their markets. Anyone with no experience in Retail POS Systems are able to program. Not specialist needed.
Soda on August 18, 2009 2:57 PMThe post, and the responses to this point, just point out that this field is a heap of unprofessional sh1t. As I get older, the bar lowers still, and I shiver.
No, I don't want to stop anyone from building any software, but where did all the professionals go? Why is there so little serious discussion?
Our industry is rife with hobbyists that somehow get real jobs and think they know all the answers. They wage war on operating systems and language choice and promote superstition over fact. Stack Overflow is a fine example of this. The meek should shut the f-up.
Wake up people. There is supposed to be a glimmer of science in Computer Science. Start acting like scientists instead of alchemists with your lead-to-gold tinctures.
I'm so over this sh1t.
Perfectly put.
Matt on August 18, 2009 4:35 PM@RatBastard, Couldn't agree more, but our industry is "...rife with hobbyists..." who don't know sh1t, but know 5% more than the customers they mislead only because our industry is not regulated in any serious manner.
All "real" scientists (think Doctors, Engineers -- real ones, Architects -- again, real ones who design real buildings) have to pass board certifications on a regular basis.
Any dickweed with a copy of "Teach Yourself ASP.NET in 24 Hours" can call him/herself an Architect, and a dumba$$ customer doesn't know the difference.
Joe Baltimore on August 18, 2009 5:18 PMIf one stops to think about it for a moment the web has completely taken over of lives and as a web developer I have no issue with this what so ever. We are an increasing mobile society and this is just a fact a life. As a "web developer" does this mean I am any less qualified as my counter parts who are still maintaining legacy applications such as COBOL? I think not! In fact the "old timers" I know worry that the clock is ticking on the legacy application and their days are numbers.
Many of the COBOL folks do a great job however as a current day web developer I know nothing of COBOL and the same holds true for current day technologies with many (not all) "old timers". I am no spring chicken myself but I love what I do and I am always learning.
Time are changing and in my opinion if one has to bash any given industry then I believe it just shows their lack of knowledge and maybe they also have their days numbered.
Steven on August 18, 2009 5:35 PMI'm a T-SQL developer so I disagree with most of this article. I am also of the opinion that web apps often suck. It's amazing how in this dual and quad core world we live in we are forced to click a control/menu/link in a web app and wait anything from 1/4 second to 5 seconds (or more) for the application to respond and do as we ask. I suspect the sluggish all-the-manouverability-of-a-747 performance of many web apps will be with us for a long time. At least desktop apps typically count the response time to user interaction in milliseconds rather than seconds.
Of course all the arguments around access to large user bases and ease of rollout/distribution are true. But if your userbase is only a handful of people, as is often the case in an office environment, then these are less important.
Glenn on August 18, 2009 7:22 PMmany interesting points of view. but in any case it is all about 50/50. there are brilliant developers among web developers as well as the desktop ones.
newstufflover on August 18, 2009 11:25 PMAlmost every electronic device in the world has a microcontroller in it, and chances are that microcontroller's code was written in C.
It's not all about your high level GUIs. Someone has to make the machines work, and they're sure as hell not going to do it with javascript.
Patrick on August 18, 2009 11:29 PMA (reasonably) good comparison of usability of desktop applications and web applications would be "Outlook" and "Outlook Web Access". We have both available on our company, but no one uses the "Web Access" as long as the desktop version is available.
Of course having "Outlook Web Access" available is a *must* to have access to mails from outside the office - I am trying to make a point by comparing usability, speed and reliability.
So, even if a web application version exists, I do not think desktop version of Outlook is going to dissappear anytime soon.
Glenn, actually even if you write a spanking 3D-rendered desktop program for highly responsive and interactive experience, any action that retrieves data or requests an action from some server out in the Internet is still likely to generate some lag.
This is still the sad nature of network computing on the Internet scale today - too many routers/hops taking too long to pass your data packets back and forth.
Aaron Seet on August 19, 2009 1:45 AMNormally I like to read your blog even when it is one sided...It's your opinion that we are reading after all. But Atwood's Law? Isn't that a bit too much?
"As a software developer, I am happiest writing software that gets used."
Don't think thats right either.....My client wouldnt be paying me a dime if we were writing software that he never used.
*QUOTE*"As a software developer, I am happiest writing software that gets used."
Don't think thats right either.....My client wouldnt be paying me a dime if we were writing software that he never used.*/QUOTE*
what? what does that have to do with jeff's statement?
Skythe on August 19, 2009 2:05 AM*QUOTE*"As a software developer, I am happiest writing software that gets used."
Don't think thats right either.....My client wouldnt be paying me a dime if we were writing software that he never used.
what? what does that have to do with jeff's statement?*/QUOTE*
That was in reference to the "gets used" part. I write software because I know that my client "uses" it...and that makes me happy knowing that it "gets used". If my client didn't use it, he has no reason to pay me to write it.
Amit on August 19, 2009 3:08 AM^^ Forgot to mention that I was referring to desktop software that we develop.
Amit on August 19, 2009 3:11 AMEverything Micheal says is true, there's definitely a trend among Web Developers to not take the challenge seriously, this is why many IT projects often fail, and they will tell you, it's not important for them to understand they just need to make it work.
Like that, you defend your profession. Web Development is, in a way, a challenge if you're up to it. However It's absurd to say that everything has already moved to the Web, because it's not true. A great deal of applications that let you build Web Applications will never be built as Web Applications because it not feasible.
Google Chrome is an example of what some might consider something like that, but everything Google, is backed by other software, software which is not Web Applications just because they use HTTP, REST or what ever the protocol is called.
My point is this, the very infrastructure of the Internet is not Web Applications, it's Web Servers. Web Applications make sense when deployed in certain environments. But they can not, and will not replace Desktop Applications in the foreseeable future. They have already gained grounds in new areas with great success (causal gaming) but failed miserably so in office space (Google Apps is not a great success in terms of replacing Microsoft Word as a word processor).
My two cents.
John on August 19, 2009 6:16 AM"Let's put aside, for the moment, the absurd argument that web development is not challenging, and that it attracts sub-par software developers. Even if that was true, it's irrelevant."
Congrats, Jeff. You missed THE WHOLE POINT of the blog entry you flamed, because the sub-par-ness of web developers is what his rant WAS ALL ABOUT.
DevSolar on August 19, 2009 6:31 AMEveryone knows all the good programmers were lost with the death of VB6
Chris on August 19, 2009 8:54 AMThis article is sadly true. It is a shame that so many successful websites are operated by many who only know the simple concepts of programming. These websites almost always have vulnerabilities. As garbage pollutes the earth, these websites tend to pollute the internet. These sites that have ideas that could be successful, almost always fail due to lack of knowledge and security flaws.
Max on August 19, 2009 10:54 AMI couldn't really resist and had to write a follow-up to this post as well.
http://return42.blogspot.com/2009/08/web-vs-desktop-applications-neverending.html
Tobias Svensson on August 19, 2009 11:04 AMI like all the javascript monkeys chiming in with a smug reference to Google as if they could have whipped up GFS and a massive worldwide infrastructure with ajax and php.
Jawn on August 19, 2009 11:07 AMJeff, you need to get a contradiction checker installed on your computer. If your argument were turned into a formal logic equivalent it would make logicians everywhere cry.
Nick on August 19, 2009 12:58 PMThe web is a conglomeration of really, really, bad technologies.
HTML - Super verbose. It was one of the earliest technologies of the web, and feasible at best for writing documents. For documents, HTML doesn't compose well at all (there's no client-side includes, the original intent for frames and iframes are socially deprecated). For applications, it's really bad, because the UI has center stage over everything else. You include JS from the HTML? No. The app is the JS... they got it backwards!
From a cultural point of view, HTML is standardized and pretty well understood. But the commonplace rendering malformatted HTML without even noting it as an error was unfortunate. Silent errors are the most deadly.
CSS - An underpowered toy extension to HTML. It didn't make sense to give it its own syntax. The layout mechanisms are unbearable! Every good UI language has more than float and absolute positioning!
Javscript - JS is a nice language. But it's not smart to use such a high level language for the bottom of your stack. Javascript should have been a bytecode language with a well-specified virtual machine. That way, you are free to use whatever language you want to write code for your web sites. A VM is also going to have a lot less room for fucking up the implementation (looking at you IE6...). It could run faster, so that when I inevitably DO have to create an abstraction layer to work out discrepancies between competing browsers, it doesn't slow to a crawl.
Javascript, again, should have better composability. Why can't I import a script from a script if it has a dependency? Why can't I grab the text of some local HTML file on my server to stuff into a box? It should also have had all the nice things that are proposed in HTML6 that seemed too dangerous in the 1990's to let a web browser do (like write to files).
The Internet is held together by fucking duct tape.
I've thought about this some more, and come to the shocking conclusion that Jeff is still wrong here. Even excluding all embeded software, and all other software that could never be web software, I think the correct conclusion should be:
Pretty soon, all web programming will become desktop programming. If you don't think that's a cause for celebration for the average working programmer, then maybe you should find another profession.
The desktop is the very embodiment of doing the most sensible thing that could possibly work. If that scares you -- if that sounds too difficult for you -- then I humbly submit that you have no business being a programmer.
In the future the web will only be used as a means of delivering content to desktop applications. In fact it's already happening - consider Twitter, a web app that nobody uses, instead they use desktop apps to read, post and search the twitter content. Everyone uses apps like Outlook to read their gmail, they use RSS aggregators to read their Google Reader feeds, etc. Why? Because the desktop has much better performance, usability, and most importantly customization, than any web application can. Just think how good superuser would be if it was running on the desktop, and you could change the awful color scheme.
Of course, not every web app will be replaced with a desktop app, only an idiot would say that, but any application that could be run from a desktop, but isn't will be dinosaurs, waiting for something more adaptable to replace them.
Phen's Law: any application that is written in JavaScript, will eventually be written in something better.
--
Captcha: Kissinger's fondant.
Phenwoods on August 19, 2009 3:04 PM@Nick, true, but then all logicians gave up long ago. Illogical arguments are more the issue of the public at large, and not just constrained to the illiterati of computing science.
I'll see your red herring and raise you an ad Hominem.
RatBastard on August 19, 2009 5:36 PMI didn't not read the entire set of threads above. But none of you guys understand anything. Web Browsers are becoming more and more like the desktop every day. Some day in the next two to three years the web browser will be no different than the desktop. It will have all the same functions and features and it will be bloated with tons of crappy code that is useless. At that point someone will develop a new form of communicating and we will start all over once again re-developing a new operating system with less functionality then what we already had. After many years we will make that new OS have all the same cool things the old system had with one or two new cool features. It's a never ending cycle. Bottom line, the web will become the desktop.
Tim on August 19, 2009 8:15 PMI can't ever see the software at my local GP, or my accountant's office going to the "web". Browser maybe but not the web. What about the billing system in a hospital? - web based you think.
I don't want to be in an aeroplane that is landing, being directed by an air traffic control system that is running in IE, especially when it renders the runway slightly differently in IE 7 and IE8!!
Even the small Ma and Pa companies that run their accounting systems and anything else with sensitive data, are a long, long way away from accepting web based software. These people think "Google" is the Internet and use the search box accordingly.
The truest statement in Jeff's post is that "there will continue to be important exceptions and classes of software that have nothing to do with the web".
This topic has become the latest religious flame war and I'm surprised to see Jeff get sucked into it.
Well even if all programming will be done for the web, at least you'll need at least one programmer who makes the OS and the browser ;-)
AlterEgo on August 20, 2009 12:31 AMMichael Braude's blog post is about Javascript, PHP/Ruby/Perl and HTML, CSS more than it is about Java, C# or any strongly typed language. So I'm guessing most of the offended parties in the comments are from this background.
He's neglets to mention a large proportion of websites are written using Servlets, JSP, ASP.NET:
"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"
And
"They also know nothing about process. Waterfall? Spiral? Agile? Forget it."
Well not many web projects use waterfall (none in my experience), as that would be suicidal for most of the poorly defined prototypal projects.
So pointless as the original post from Michael Braude on his site.
Anderson on August 20, 2009 4:12 AMMr. Jeff, you aren't any different from Michael. Both of you have biased views and I can understand it, as I've seen that every mind has some bias. But try and understand that different things exist for different purposes.
Web programming and desktop application programming are two entirely different things. If you are into one, that doesn't mean the other sucks. Get over these childish arguments.
.NET vs C++ argument was "Da Bomb" until some time back, and now it is Web programming vs Desktop application programming. Doh! Give us a break.
Rajesh on August 20, 2009 4:25 AM"You hope everything doesn't "move to the web"? Wake the hell up! It's already happened!"
Visual Studio didn't move to the web, and neither did SQL Server. Yes, they are planning a cloud-interface, but adding a few webservices doesn't make it a web-app.
Then again, this is becoming a self-fullfilling prophecy. Yeah, things are moving to the web, but not as fast as you hoped - a webbrowser just isn't a powerfull environment as a Windows-dekstop.
Anon on August 20, 2009 4:25 AMMy point of view (as computer scientist), web pages are only the top of the iceberg that stays out of the water. Apart from all usability, HCI, design messages all other UI stuffs (which is really cool to work on as well), what's behind it will be always heavy programming, the same we did for desktops, servers and distributed applications. So, it might be possible the whole world of development will become "web", but it will never substitute what's "behind the scene".
I agree with some parts of what Michael said, because any dummy dumby donkey book of HTML, PHP, ASP, JSP or whatever that will help someone produce a webpage and think they are professional software engineers, and we are getting more and more stupids in the market, unfortunately. But we will always watch scientists and software engineers coming with great solutions even if there are stupid people at the end of the process. Michael can keep himself in his position the whole life creating systems without even touch an HTML file.
The good will be when the "move to the web" start getting more software engineers and scientists than dummy book's readers.
Tiago Vieira on August 20, 2009 4:37 AM> It's the software that reads a sensor and lifts a railroad drawbridge.
You don't lift bridges without a confirmation from the network after scheduling has made sure that there's no trains coming. Most serious SCADA systems have a web front end. Whether an embedded system that's accessible by a web front end constitutes 'web-programming' is a different question; I'd say most such systems have a web interface to their open architecture, rather than being web-applications. Just because the web is pervasive doesn't really equate to all programming being web programming.
> It's the daemon that processes millions of payments in the middle of the night in a server room hidden away and is only accessible by command-line.
IME that's quite rare. Lots of businesses want SOA ( whether or not it has merit ) and integrated enterprise systems, even if it's just something which dumps the daemon's configuration files in the right place for it to pick up that night.
> It's an HMI interface 400 feet up in an industrial crane lifting 40-foot containers off a container ship.
Do you really think that such systems aren't automated and networked? How does the data get to the customer tracking a container?
> It's the daemon that tracks products walking out of a store that haven't been paid for.
Again, the trend is to network such systems and collect their information, and the data for such networked devices ends up on the web. If your company is only offering non-web enabled daemons but your competitor offers web-enabled daemons - and given the trend of point of sale systems to be browser based, that's a fairly obvious offering - you're not competative.
> It's the java component that activates that little buzzer telling you your table is ready at your favorite fancy restaurant.
I've not seen these, but again, the point of sale system triggering it is likely to be "web-based" - networked and running on browser UI.
> Where is the web in all of that? Huh? Where? The web is the niche.
Most of the systems I've worked on have had a web interface. Typically that's been about one day's effort on a six month project ( a REST API rather than a UI ), though I've also created quite complex SVG and JavaScript UI for non-web distributed applications ( using XMPP rather than HTTP ); there's a fine line between a distributed application using SVG and a desktop application using XAML.
I don't think that 'web programming' is a particularly useful term, as most of my programming in technologies that originated on the web - Java, XML, XHTML, JavaScript, XUL, SVG, RDF - have not been on 'web sites', and the programming I've done which has been on and of the web has been trivially easy compared to the bulk of the system. Adding a REST interface to a simulation of missile flight dynamics isn't rocket science, but is 'web programming'. Creating a good user experience ( whether on a web site or a stand-alone application ) isn't 'web programming' - "learning to program has as much to do with writing interactive applications as learning to touch type has to do with writing poetry".
Pete Kirkham on August 20, 2009 4:48 AM> It's the software that reads a sensor and lifts a railroad drawbridge.
You don't lift bridges without a confirmation from the network after scheduling has made sure that there's no trains coming. Most serious SCADA systems have a web front end. Whether an embedded system that's accessible by a web front end constitutes 'web-programming' is a different question; I'd say most such systems have a web interface to their open architecture, rather than being web-applications. Just because the web is pervasive doesn't really equate to all programming being web programming.
> It's the daemon that processes millions of payments in the middle of the night in a server room hidden away and is only accessible by command-line.
IME that's quite rare. Lots of businesses want SOA ( whether or not it has merit ) and integrated enterprise systems, even if it's just something which dumps the daemon's configuration files in the right place for it to pick up that night.
> It's an HMI interface 400 feet up in an industrial crane lifting 40-foot containers off a container ship.
Do you really think that such systems aren't automated and networked? How does the data get to the customer tracking a container?
> It's the daemon that tracks products walking out of a store that haven't been paid for.
Again, the trend is to network such systems and collect their information, and the data for such networked devices ends up on the web. If your company is only offering non-web enabled daemons but your competitor offers web-enabled daemons - and given the trend of point of sale systems to be browser based, that's a fairly obvious offering - you're not competative.
> It's the java component that activates that little buzzer telling you your table is ready at your favorite fancy restaurant.
I've not seen these, but again, the point of sale system triggering it is likely to be "web-based" - networked and running on browser UI.
> Where is the web in all of that? Huh? Where? The web is the niche.
Most of the systems I've worked on have had a web interface. Typically that's been about one day's effort on a six month project ( a REST API rather than a UI ), though I've also created quite complex SVG and JavaScript UI for non-web distributed applications ( using XMPP rather than HTTP ); there's a fine line between a distributed application using SVG and a desktop application using XAML.
I don't think that 'web programming' is a particularly useful term, as most of my programming in technologies that originated on the web - Java, XML, XHTML, JavaScript, XUL, SVG, RDF - have not been on 'web sites', and the programming I've done which has been on and of the web has been trivially easy compared to the bulk of the system. Adding a REST interface to a simulation of missile flight dynamics isn't rocket science, but is 'web programming'. Creating a good user experience ( whether on a web site or a stand-alone application ) isn't 'web programming' - "learning to program has as much to do with writing interactive applications as learning to touch type has to do with writing poetry".
Pete Kirkham on August 20, 2009 4:49 AMCan you play DVDs with the web browser yet?
Anonymous Fake Coward on August 20, 2009 6:52 AM@Beth S
"So when will I be able to write an interactive 3D application that runs inside all of the popular browsers without any special plug-ins?"
Right now:
http://tulrich.com/geekstuff/canvas/perspective.html
(requires support for the canvas tag, which is in HTML5; firefox and chrome at least should be able to run it)
> Pretty soon, all programming will be web programming.
The people who write the actual web browser are laughing at this.
Anonymous on August 20, 2009 8:57 AMMichael Braude is very right to call you guys less smarter. You are barking on and on for web because that's all you have done so far. You DON'T need to consider the whole computer when you build a site. All you care about the disk space, memory, processor, bandwidth.. You upgrade them but you don't code considering them [Not that way Computer Systems do]. How the hell you even compare? Are you stupid or you are just stupid?
At least tell me you know how to use A* algorithm properly. Oh wait, No, you DON'T!
ZiG on August 21, 2009 12:33 AMZIG, you build the car, let me develop the GPS. I don't have to know how the car works to do that. And you have no idea how to build a GPS (or web app respectively).
You are not smarter than web developers just because you know stuff from YOUR part of the programming world.
Skythe on August 21, 2009 1:02 AM> downright kludgy
Understatement of the millenium. It's a wonder any web apps appear to any decent standard at all.
Irish Al on August 21, 2009 1:35 AM@Skythe:
This seems to be an endless argument. We have our respective fields. Even if I try to explain, figure you won't get it! So, I am gonna give you the SOIL so that you can PLANT something on it!
ZiG on August 21, 2009 2:53 AMWow. People are QUITE angry about this. Great job at getting attention/activity on this article, Jeff :)
Chad on August 21, 2009 9:32 AM"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."
Learning all of that is great, but it sounds like something you'd learn from a computer science course. Many web developers feel paying such a high cost of education for things they won't be using are a waste of both time and money. It's pretty clear that most believe CS is out of the loop with today's web and thus they feel they won't benefit from it. If you thought you wouldn't benefit from it you wouldn't pay for it either.
The desktop and web are two different mediums. Like a photoshop canvas and a piece of paper are two different mediums. A good artist can draw well on both mediums. The medium does not craft itself, if code is bad it's because someone lacked knowledge and this can be done on desktop apps as well. The technologies that build web apps solve problems and at the end of the day that is what counts, whether it be HTML, CSS, or PHP. I know a MS programmer that writes her website in PHP, which alone devalues your degradation of web programmers in totality. A lack of understanding can be a bad thing, but why not do a good thing and teach those who lack said "necessary" knowledge instead of bitching about it? Just because someone lacks understanding and branding them an idiot for it is old and played out, quite frankly I'm sick of just branding them. I can't say you're much better if you don't even reach out and teach the important aspects that they are lacking and instead belittle them.
Anyway, the medium is just a medium and nothing else. Stacks of technologies solve problems. Anyone who wants to write good code will write good code because they'll research and study best practices. Where there are bad incidents, there are good ones and nothing is ever 'all.'
Daquan Wright on August 21, 2009 11:02 AM"I don't try to understand Atwood's law, I merely enforce Atwood's law."
That's what I got out of this blog post.
-Jer
Jeremiah Morrill on August 21, 2009 11:34 AM"Learning all of that is great, but it sounds like something you'd learn from a computer science course. Many web developers feel paying such a high cost of education for things they won't be using are a waste of both time and money. It's pretty clear that most believe CS is out of the loop with today's web and thus they feel they won't benefit from it. If you thought you wouldn't benefit from it you wouldn't pay for it either."
Why do you have to take a CS course to learn it? The fact of the matter is that most so-called web developers or "web guys" don't learn it all, then they work on a site that gets traffic that requires such such knowledge but they still use the naive approaches they used when building a site that gets 1000 uniques/day. CS and software engineering applies to the web, desktop, embedded system, and on the moon. It is all software, and algorithms, data structures, and patterns have emerged from professionals working in industry and academia over the years have have been proven to be useful.
John on August 21, 2009 1:17 PMJeff...this article IS tongue-in-cheek, right ? 'cause otherwise it may be necessary to lay down a smack with Lopez's Corollary:
"The number of defects detected in relation to the amount of javascript code driving a pages behavior, will be described as an Atwood per incidence of said defect".
So now you can hope that as you predict that all apps will be written in javascript, as you expect that all will work as expected, will lead to NO Atwoods."
Kind of has a nice ring to it.
Marcelo Lopez on August 23, 2009 8:40 PMI think it is great that the web has opened a door for the average guy to start coding. Of course with all these average guys out there building websites, we are going to see alot of very average, if not bad websites. But eventually the cream will rise to the top. I am just an average guy who fell into programming, self taught and sloppy, but I am having a blast.
I can't beleive they pay me to do this. I am taking college courses so I can become a professional, I have a long way to go. But I don't ever want to have the attitude expressed in that blog. I want to encourage others into the world of software development. Not make them think we are a bunch of elitist geeks.
Todd on August 24, 2009 6:49 AMi would join Michael Braude's team in a ny second!
jeff, your comment and attitude here: "Let's put aside, for the moment, the absurd argument that web development is not challenging, and that it attracts sub-par software developers. Even if that was true, it's irrelevant."
is a bit worrisome -- you are pretty dismissive about the competence of web "developers" vs. the more embedded "software engineers"...
you are pretty quick to dump your "date" which got you to this technology "milestone"... in order to dumbdown the programming technologies that are used today, a lot of real software engineering needs to take place "under the hood" ... the areas where web developers dare to even explore...
i don't want to get into a language or technology flame/war here, but i am wondering what languages and tecnologies are used on the java and .net virtual machines... does anyone know?
david on August 24, 2009 7:14 AMjohn quest, michael braude, ... we are forming a pretty good team here...
david on August 24, 2009 7:16 AMI did some web programming a few years back and it was a pain to have to make it acceptable for every possible browser, which is now plenty more browsers+versions. Also spent more time on layout than I want to, being a data and logic girl. Creating components for others to call is fine and I'm ok with that work, I just don't want to have to work so hard on look and feel (since I stink at that kind of thing anyway). ASP wasn't any particular hardship since I have been a VB-er for years.
I work for a non-profit and it's a lot quicker for me to go the client-server route than deal with the different browsers, layouts, editions of IIS, and I can control who can run the thing by either distributing or not distributing, which is another layer of security on top of what is already in the database, etc., but the "if you don't have it you can't run it" is something that non-profit people understand.
I would never enter into an argument about what takes intelligence and what doesn't because it really all depends on the project you're working on. Simple people can do simple things in a very long and successful career. Thinkers can do the extraordinary. aren't we all a bit of both, having cranked out the barely-worth-my-time stuff and the personal masterpieces?
geekette on August 24, 2009 1:37 PMOh guys! The real questions are: How can BUSINESS MAN plan and design online business application? How can manage Business Process on the net?
How can meet business, technology and human aspect? We are working on it.
Hello everyone, great discussion here.
I'm a true soul engineer, which love getting my hands into some C, C++ and other, what some may call "true programming languages", but let's face it: engineers exist to design and implement the bid of the business markets, and end users of course.
Nowadays, the "geek" developer is being replaced by the "Business Developer" in some enterprise critical areas. This Business developer, or "The business MAN" refereed by Egon, doesn't need to know about C pointers, pass by reference vs pass by value, classes, inheritance, polymorphism, etc, they just need to understand very well the business and implement the applications required by the business. And that's where Enterprise Rich Web Applications are gaining more ground.
"All programming is web programming"? Not a chance, and I believe it will never be that way. But some industries and business are focusing more in easily develop their applications to reach more users, and less costs, and Web Applications can do so much more easily.
Perhaps the joy and satisfaction of programming complex architectures, what a true craftsmen would do, won't be found easily with Web Programming, and maybe that's part of the question raised in this discussion.
But the reality is other, has it has been said before, the business demands, the engineer provides, with the least of the costs. That's why you're seeing a bunch of Web Development platforms been released in the last years, to speed the programming of the web applications.
I myself been working with an Agile Platform for developing and manage Enterprise Rich Web Applications, using Agile Web Development Methodologies for the past 4 years, and I can see in first hand the market demand for faster solutions development to keep the pace of an even faster business model changes.
And regarding the "knowledge level" of these new web developers, well, you can find that any where were there's application development, either it's web or not.
To those craftsmen out there, don't despair because the industry and markets will still require or artist hands and minds to many non-web solutions.
Cheers
Miguel Joao
Miguel Joao on August 25, 2009 7:14 AMIt makes perfect sense to write applications in javascript, since (if it used correctly and intelligently) is one of the most powerful programming languages available.
I guess what I'm trying to say is that Douglas Crockford is Jesus.
Mike on August 25, 2009 7:54 AMI didn't like this post at all...
Mr. Atwood boiled the argument down to "What's the least amount of work for the most amount of profit?" The obvious and easy answer is "web programming" but that is entirely the wrong question...
tyriker on August 25, 2009 12:34 PMSeriously, I'll come right out and say it and won't be shy. Is Michael Braude a complete idiot? If anything web programming is harder, why?
Because duh stupid, you DO have to architect. It's not all .aspx, code-behind, .ashx, etc. Unless you're a really shitty company who has no layers (Data Layer, Business layer, service layer yada yada) and you're only calling datasets sure, then that's true.
But if you're truly programming, wtf is he talking about. No Interfaces vs. Abstract classes? No true OOP? That has got to be the most naive stupid statement I've ever read.
Not just do you have to architect (if you're a lead or software engineer doing more than just the top layer) you have to worry about much much more than desktop programming. Shit, just configuration, managing so many subtleties in the Presentation Layer ON TOP OF your entire architecture is a LOT.
Seriously is this guy taken for real? I think he's a joke. I just worked on a 5 person team and we had a shitload of Interfaces, abstract classes, patterns for a WEB PORTAL.
you idiot.
Dave Schinkel, on August 25, 2009 7:03 PMso a typical .com has no Interfaces, no abstract classes, no structs, no nothing? differences between C# structs and classes?
If Microsoft hires someone as stupid as this, then I feel very sorry for MS.
This guy sounds like he just started his career with such wrong statements. He sounds very inexperienced.
Dave Schinkel on August 25, 2009 7:14 PMThis blog will create a thermonuclear explosions
and all developers will witness the boson particle vaporizing all web apps! Lol :)
I agree with @Omar Al Kababji && @Skizz. :)
no worries. is it the chicken or the egg ? :p
typedef on August 25, 2009 7:28 PMAround 98% of the new CPUs produced each year are embedded.
(http://www.embedded-europe.com/218900395;jsessionid=45XNWWO2ZVKRDQE1GHPCKHWATMY32JVN?pgno=2)
Most of those don't have an internet connection (ie your engine management system in your car).
MartinC on August 26, 2009 9:33 AM"As far as I'm concerned, the Internet is responsible for a collective dumbing down of our intelligence."
So close, and yet so far.
I guess it hadn't occurred to him that this is the biggest upskilling the world has ever seen.
Sure professional programmers may skoff at some of the code being deployed via the web, but these new "programmers" using high level languanges and interfaces are ordinary people who with no formal training are learning to fetch, find, store, manipulate, regurgitate, publish.... information and ideas on a scale, and with a level of power, the world has never seen.
The web and it's users get smarter every day, compounding.
Anonymous on August 26, 2009 9:59 PMYeah, well. I agree. A good web application imposes a small number of documents, of readable size, and no build or deployment steps between change and availability.
Anonymous on August 27, 2009 11:46 PMgo fuck urself.
Alaa Abdelhaq on August 29, 2009 3:44 AMEverything-on-the-web is a fad. It is passing already. My organisation spent five years recently migrating everytging they could to use web interfaces; now it seems we're going to spend the next five migrating it all back to desktop apps again.
Modular, platform-independent, network-based desktop apps driven off multiple data sources in our intracloud, but desktop apps nonetheless, with no HTML or Javascript in sight.
Fred on August 29, 2009 8:51 AMHe's made an underlying point that, in my experience, seems to be true. This point gets missed though because everyone is throwing this baby out with the bath water.
He is wrong to be in denial that the world has moved/is moving to web apps. Wep apps are here to stay.
The underlying point he makes is an observation I've found to be true. It's that most of the people I have worked with who have become web 'programmers' (a term I use very loosely) because they learnt asp, php or some other dynamically typed language might know roughly what inheritance or polymophism are and will proudly boast that their 'insert latest flavor of the month dynamically typed language' supports it tend to avoid using it like the plague with lines like "oooh, inheritance will just make the code complicated" or "you OO puritans are always making things complicated" - it's like they believe that bastions of switch statements are soooo much better and result in more maintainable code - wrong!
In my experience many of these people are not the patient, engineering oriented programmers I worked with in the 90s who are prepared to sit back and *think* through a good 'design' before 'constructing' it. IN MY EXPERIENCE (I stress I haven't got general statistics on this stuff - these are just MY observations) most of the dynamic language devotees tend to be the 'quick, quick, TYPE in the program' people and because there's no pesky type checking to get in the way of them starting the execution of their program they *feel* like they're having major success. Of course we all know that impatient people would also have a firm commitment to building full coverage test suite to pick up any errors not picked up the lack of compile time type checking don't we =)
The engineering approach is always a 'design' and 'construction' process whereas the 'new to programming' dudes I've seen seem to see programming as less of a 'design' and 'construction' process but more of a process whose essence is really all about 'typing' ...
I think this is why we hear the continual meaningless arguments about 'typing' efficiency of certain languages over others: "I can open a file in 3 lines of code!". Heck, if typing is your critical path in programming you've got major problems because it indicates that you've left out a whole lot of thinking time - which is a bazillion percent more important.
The same 'typing' obsession results in arguments about which language can process strings more efficiently - whoooo arhh! If most of you're code is processing strings then you're probably spending your coding life if pain, writing SQL and processing the returned results sets by hand - go and get yourself a freaking ORM for heaven's sake. Writing SQL to pull *data* from a database instead of *objects* is soooo 2006. I work on a powerful enterprise application in Java with over 1000 classes and the string manipulation in that would be <0.5% of the code, if that. What's going on that people need to process so many strings? Are they parsing the HTTP request parameters themselves? Are they tending to take 'avoidance of typing' to such extremes that most of their data attributes are stored as strings also? Maybe I'm missing something but I just bring myself to being obsessed by string manipulation because it's never feature high in my daily work. I spend most of my time working on the domain model/architecture and how the UI binds to in via MVC. Apart from setters/getters on String based attributes I hardly ever need to touch a string. Maybe code used to verify the format of user entered data in the UI? - mostly performed by libraries.
Another tendency I've noticed in the anti traditional, anti statically typed language programmers is an avoidance of using any code that they didn't write themselves: eg., "Hey, I need something to read an XML file - I know, I can write my own parser in PHP because PHP is soooo good at string manipulation. If I use a preexisting, already tested and 'used by 1000s of people' DOM parser I might have to spend time reading some documentation - as an impatient person who is frustrated by lack of perceived progress - that doesn't suit me - plus it's an insult to my dignity to use someone else's code when I'm so capable of writing my own"
In one case I was working with a guy and we needed some new functionality and before he'd even considered that it might be available in an existing open source library he started writing his own. On the other hand I went and googled it, downloaded a .jar file, spent 15 minutes reading the doco and had the feature implemented in another 5 minutes.
The mud thrown at Java and other statically typed languages as a source of code bloat is not sticking anymore. It's mentalities, attitudes, lack of experience and the complete avoidance of an engineering approach towards what used to be called 'software engineering' that causes code bloat - and FROM OBSERVATIONS OF MY OWN EXPERIENCE these attributes are most common among the PHP, Javascript, Perl and ASP programmers that I have worked. On the other hand most of the Java and C++ programmers I have worked with tend to embrace the engineering approach to 'Software Engineering' - how quaint =]
I'd even go so far as to say that the tendency, from my experience, of the dynamically typed language guys who, for whatever reason, avoid inheritance, polymorphism etc., are avoiding the very crucial features of OO that help fight code bloat. Most of the ones I've seen in my experience have a love affair with Ctrl+C/Ctrl+V and will fight tooth and nail against a refactor after I point out an opportunity for some common functionality to be 'debloated' by moving it from several places into one place - in a method of a super class. Of course they usually don't do it - but then months later, they get frustrated when they *think* they've fixed a bug only to have a tester or customer complain about it again. Yeah, of course they fixed it - but only in one instance of their copy/paste code pollution. Doing the refactor would have meant they would have only needed to fix it in one place but "I told you so" is never received well by the impatient types.
One of the disadvantages of refactoring when using a dynamically typed language is the fact that you can get a "perfectly broken" application up and running in no time - which is an exceptionally attractive goal for the impatient mind but in truth, horribly delusional.
On the other hand - when I refactor (which I do often and Mercilessly - according to my XP bible!) in Java and C++ the compiler finds things that I've inadvertently 'missed' and quite often it points out things *EARLY* that make me realize that my chosen path of changing the architecture may not work or is not the best option.
When that happens to a software engineer he's high fivin his statically typed compiler and thanking it for finding out the problem *NOW* rather than a few more hours into the refactor or a few days into testing, or worse via a customer bug report.
Were an impatient person to use a statically type language and be presented with a compile time error they would, instead of high fivin, become frustrated and curse the compiler - "Damn compiler, getting in the way of my *progress* once again" =]
So I do fully feel the Michael's pain but it's misdirected if he assumes that all web development takes place by people who don't practice sound software engineering principles using object oriented, statically typed languages. Truth is - he's right in saying that a lot of websites are thrown together newcomers to programming - but not all of them are!
One of my customers got a 'web design shop' to attempt to build a majorly sophisticated enterprise system. I had to laugh when the customer told me and I offered our services but we were judged by the customer to be 'too small'. The web design company had a big fancy office and all the web 'programmers' wore really cool, 'in' fashion clothing in all the right 'in' colors and they had really 'in' hair cuts too. They convinced the customer that it was just a matter of coming up with an SQL schema and then plonking a few PHP pages over the top of it and so the customer proceeded on a 'pay by the hour' basis - much to my shock.... well you know where this is going don't you. The web guys that Michael refers to went to town on it. I was maintaining the 'legacy' system so I was keen to know when the new system would take over... one month, two months, six months, twelve months, 18 months..... yeah bang on 2 years and almost $200K later my customer canned it... another failed web project entrusted to web designers who think they are programmers.... and so another 6 months down the track the customer has us adding new features to a legacy system that was meant to be killed off 2 years ago.
So Michael, web apps are here and the same software engineering approaches that worked in the desktop app world and the embedded app world need to be applied with equal vigor in the new world of web app development - just ask any good Java programmer =)
blinko on August 29, 2009 10:01 AMSorry Jeff, love ya', but I can't agree with you here. I pretty much agree with your first quote; "Web development is not hard". That doesn't mean that it is easy necessarily, but it doesn't challenge me in the way I am used to being challenged in my Systems Engineering position. Sorry Jeff, but all of the guys in my group could build SO. About 1 or two of the guys in my companies web development division is capable of doing what our group does.
Ed on August 31, 2009 1:31 PM...ok, so I wish I could edit the grammatical errors out of that last post, but I can't :-)
Ed on August 31, 2009 1:58 PMI look forward to the day where pixels are pushed to my screen via HTTP :)
kuoson on September 1, 2009 12:03 PMI have to agree with blinko on the point that all these "web shops" are just good for putting together "websites"--I have had personal experience with this. Give them a reasonably sized "web application" and you soon realize that they are not ready for writing software. In fact, people that don't know the difference between a website and a web application are probably the ones writing a lot of the nonsense above in the comments.
Blinko, I disagree with your statement that berates developers that decide to write their own software is a bit too general. There are lots of perfectly capable engineers that may decide to "roll their own". It's like research sometimes you have to DIY to discover the inherent flaws in other libraries or frameworks. You will probably learn more in the process than reading that fancy documentation. I am not saying to write everything yourself but *engineers* should be more willing to *engineer* than to being a script kiddie.
John on September 1, 2009 5:07 PMI am not against web application and it's not like that all web application are crappy....It needs lots of works to make a better web application. Designing may be easy and anybody can do it. If one person know HTML and Photoshop, he can easily design the front end.
Chandan on September 2, 2009 3:41 AMIf everyhting will be run in a browser, what will you do with the browser itself ? Someone has to write that, or you will have to create a WEB os, which you can RUN without anything installed on a computer.
Desktop applications remain, but the platform underneath changes. Google gears, html persistence etc. is the new platform for desktop applications. And yes, they are delivered by the web, but they are desktop again.
yuriy on September 5, 2009 8:00 AMi agree to others and its due to its complexity.
freelance on September 5, 2009 11:10 PMi agree to the above comments and web application sucks and more complex
freelance on September 5, 2009 11:12 PMI gotta chime in here. Did anyone bother to read the actual FULL article?
Yo Jeff, what's up, you going mainstream media on us by cutting out a very relevant paragraph of a quote to support your premise? I am sure someone else noticed this, but you left out "OK, so that’s not an entirely fair accusation to make." Let's not get all misrepresenting now, mmm'kay?
What Michael says is fairly correct. I would simplify it: real engineers are better programmers/developers/software engineers (whatever you title you end up with) than wannabees who went to school for (GASP!) MIS in the 90's cause "hey! they'll be tons of jobs and the pay is good!"
I can say we all, who read this blog, and highly respect Jeff even if he's wrong sometimes, have seen the code and designs and systems built by "those" people Michael is talking about.
Even if you don't have an EE or CS degree, most A-grade developers have that engineer bent to them. You know, the ones who spent their youth taking everything apart to see how it worked, and then (usually) putting it back together, wherein it also worked...mostly.
Someone tell me I am wrong?
James on September 6, 2009 6:20 AM> What Michael says is fairly correct. I would simplify it:
> real engineers are better programmers/developers/software engineers (whatever you title you end up with)
> than wannabees who went to school for (GASP!) MIS in the 90's cause
> "hey! they'll be tons of jobs and the pay is good!"
... ROTFL, I have met dunno how many "real engineers" with zero knowledge about what they were paid for ... just be realistic: crap programmers have always existed, more jobs about programming we have, more this assumption is true.
I have done everything Michael said I should not have done or I should not know, and for 10 years, but I have to agree about those people pretending to define their self "developers" without even classic C basis, or basic knowledge about memory management, pointers, struts or classes, etc etc ... too many wannabe, true, but it is not just web development.
In every sector there are good and bad worker, with a post like that Michael seems to define his-self a good programmer, isn't it? I am sure there are better programmers able to call him nooob or "not that good".
Regards
andr3a on September 8, 2009 5:49 AMYou’ve probably heard,buy the christian louboutin shoes at christianlouboutins.de up to 75% off.Nobody can ignore the existence of Christian Louboutin shoes in the fashion world. And what makes Christian Louboutin shoes so remarkable? Its exquisite quality, fine craftsmanship, sexy high heels, quirky designs and of course the red outsole known as the symbol of Christian Louboutin shoes.
http://www.christianlouboutins.de
You’ve probably heard,buy the christian louboutin shoes at christianlouboutins.de up to 75% off.Nobody can ignore the existence of Christian Louboutin shoes in the fashion world. And what makes Christian Louboutin shoes so remarkable? Its exquisite quality, fine craftsmanship, sexy high heels, quirky designs and of course the red outsole known as the symbol of Christian Louboutin shoes.
http://www.christianlouboutins.de
Should all programming be web programming? Of course not. There will continue to be important exceptions and classes of software that have nothing to do with the web. But these are minority and specialty applications. Important niches, to be sure, but niches nonetheless.
The vast majority of software is for applications that get no where near the web. Server side systems, business specific applications, embedded software, etc, etc.
akku on September 8, 2009 11:52 PMA simple shopping cart does not need the bag of tools the OP mentions. The back end for a browser-exposed real time trading system likely will benefit from many of these techniques. Sounds like the OP would find his comfort zone more in writing back ends for larger systems than in writing complete small apps. Nothing wrong with that -- although it doesn't seem a compelling reason to complain about the existence of smaller apps.
david on September 9, 2009 8:16 AMI think this blog post about a desktop app developer changing to web apps, and why, support Jeffs assertions pretty well: http://www.kalzumeus.com/2009/09/05/desktop-aps-versus-web-apps/
Chess on September 11, 2009 7:14 PMI love how the "don't be a digitial sharecropper" post is followed by the "applications that rely on showing advertising to digital sharecroppers are the future" post.
No, really - google, youtube, myspace, facebook - lovely things, I'm sure, and they don't get their revenue by making their users pay in cash.
Ther funny thing, of course, is that I don't buy applications aside from games for my home PC, and I won't pay for web apps either. But my boss will pay for stuff for work - where "it stops working because the network connection is down or the application vendor retired" are not ideal options and "storing the company's employee database on a web server" actually makes some people question how thorough an investigation has been made of the vendor's security qualifications.
The home market has gone for the advertising supported web. They're not coming back. I suppose they're the only profitable market, though, so we'ld all better follow.
"WinZip - Web Application Edition" will probably be a market leader.
Bob on September 16, 2009 4:08 PMI do web prog now... but I remember when I was "...not smart enough to do anything else." except VB... and I put out just as much bad code then as brand-new web progs do now.
Hokey on September 23, 2009 7:23 PMNOT All Programming is Web Programming, you can't just set a rule based on your sole experience, How narrow minded you are.
Ammt on October 4, 2009 3:34 AMMaybe the web programmers in your country don't use OOP web programming. Maybe only in your country the WP are stupid enough to not draw an UML or a sequential diagram. I'm 99% sure that you have no clue how to build up from ground 0 to the top a big web project. You don't even know with what problems we confront. I din both desktop applications and web projects. They both have tricky parts, but it's more easy sometimes in desktop. So read more before opening your wise mouth.
Anonymous on October 8, 2009 11:35 PMI agree that Web programmers are treated differently to other programmers. I am currently a web programmer/unix programmer. I can code in Php, Perl, Ruby on Rails, Groovy on Grails, use Mysql, configure Apache etc but can I earn the same as C++ programmer. The answer is No!, especially not in the North West of England. But I also know MS C/C++, understand inheritance, virtual functions and have also programmed C code into embedded micro controllers. But still with this experience and more I still cannot earn the same as a C++ programmer. I cant remember the last time I used CSS lol or wrote some HTML but still concidered a web programmer. I think it is a shame that there is such a distinction. If you are a good programmer, have good skills and are keen that should be enough.
Karl on October 15, 2009 10:42 AMVery much true first line of the post...There id huge difference between the two...but u can get help from us on both...
windows application development on November 6, 2009 3:59 AM| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |