I third Dan A too, but both arguments are wrong, good web programmers are not stupid and neither are good desktop app programmers.
Good engineers will produce a good system regardless of the platform.
I third Dan A too, but both arguments are wrong, good web programmers are not stupid and neither are good desktop app programmers.
Good engineers will produce a good system regardless of the platform.
Itâs posts like these that remind me that the developer community is full of self-righteous blowhards. I hate the mentality that complex code is better code. Just because youre churning out backend code on a mainframe that nobody else understands doesnt mean what youre doing is any more important.
Its easy to cast web developers as script kiddies who hack together code. And admittedly, there are plenty of them out there. However, Iâd love to see Michael Braude (as well as some of the other commenters) design a user interface that is functional, aesthetically pleasing, and intuitive to users, all while being cross-browser compliant. Easier said than done.
So far, Iâve made a great living writing applications. Not all of us can make a living by selling advertising on a blog, Jeff. Honestly, without that, would you have the audience for StackOverflow? After 23 years of coding, however, Iâd rather not read crappy code in any language.
On the plus side, you can write for many environments. Iâve never been interested in database programming, myself, but some folks love it. My latest project is building a specialized IDE for microC Linux. Sorry, not a web-able application. I understand where Michael Braude is coming from. Like me, heâs just not interested in becoming a web-programming guy. Iâm thankful that other people love creating web applications. I only hope that they, and you, appreciate the software written for other platforms.
Atwoodâs Law⌠one phrase⌠Office 2010 for the Web!
Itâs a poor craftsman who blames the tools. Sure there are crappy web apps, there are also a TON of crappy desktop apps. As a percentage of the total number available, Iâd argue that there are more crappy desktop apps than there are crappy web apps.
I run into this attitude a fair amount amongst older developers, most of whom not only donât get web development, but donât get the web at all. The overlap with developers who donât regularly use a computer at home is high.
Atwoodâs Law⌠one phrase⌠Office 2010 for the Web!
Micheal seems a little blinkered, people donât always have the same motivations. Iâm sure Google did not start as a web company because it was âeasyâ. I view a certain amount of what he says as the kind of insecurity that pervades much of the C++ community. Many C++ programmers spent a great deal of time and effort keeping up with the language and all of itâs idiosyncrasies. Some of the syntactic idioms he mentioned should never have been: time and time again easier and more consistent languages have proved this. The fact despite constant development that C++ has been caught with no adequate standard library support for concurrency. C++ might disappear not because of web programming: but it may well get supplanted by programming languages that support concurrency well, or run on platforms that manage that stuff for the user.
He does though have a point, Web Programming although can be used as a platform for many business functions cannot possibly be used to program everything. As times goes on ever more applications for software seem to be invented. It is easy to fall into the fallacy that the way you are developing software today is the only modern techniqueâ sure programs have similarities but they arenât the same. The world of software is more diverse than ever. Pick a consumer device and thereâs probably software in there. Thatâs before you get to industry. Some software if it isnât right then it causes fatalities: I can think of a couple of projects like that that friends have worked on. In this sort of system a web-page is the easy bit.
There was software 30 years before Microsoft, and a time before the Desktop. The Web is just one mass market that could converge with other mass markets. However it hasnât even fully converged with the all the software on the internet yet. Take for example routers, webservers and other infrastructure software this is not all written in Javascript or even Java. All Java programs even arenât web programming.
Developing for the web is, though, still programming. Although at times has more in common with Design. Phrased like âthe simplest thing that worksâ seem to be easier to understand when you have a visual design. If you have a safety-critical system does this advocate negligence by avoiding implementation of boundary-cases, or not ensuring the correct response time? The simplest thing in certain systems may be to implement the system completely.
WowâŚso itâs death knell week on codinghorror, eh? First COBOL and now the Desktop? Iâve been hearing about the demise of the Desktop for 15+ years now. When, exactly, is it dead?
I have to say, Jeff, the way you quoted Michael, and omitted an entire paragraph that basically acknowledges that there are smart people working on the web, greatly hurts your credibility in my eyes.
There are things that will never be brought to web. Just think about all the embedded things that you use - your tv remote most probably was designed using Verilog or VHDL, that was later baked into silicon. Assembler is still alive, even though there are a log of high level languages, and it will be like that for long times to come.
On a technical point of view,
though you generally have indeed to be much more rigorous and conceptual with client software programming, the technical complications of (serious) web programming are totally different but not that much simpler.
You can design a simple web app as well as a client app - itâs just easier to find a nice tutorial for the web app and learn directly from it nowadays.
High class applications are also very challenging in both âplatformsâ - you just have different types of problems, anyone whoâs worked seriously enough in both will tell you.
Coding and structuring the application itself is much harder in client software, but the amount of interactions (different languages, apis, servers, browsers) in a big web app also carries considerable complexity.
I personally like both.
Even our desktop applications we develop in our business for CTI are including web browser controls to display user interfaces and interact with arbitrary web servers. I believe that applications that must be developed for the desktop should be, and everything else developed for the web.
I think it is also more satisfying to create products on the web (from a dev point of view). I recently wrote about it on my blog:
The fact that the web provides a better standardized platform means that there is a whole lot more stability here. Things that are working today are likely to keep working the next year. You are free from having to support multiple operating systems in various states of patch work. Okay, you need to support a few browser quirks, but the numbers are still an order of magnitude less. It is also easier to program for the web because there is really a very limited set of core APIs that you need to learn and master. Of course, you need to learn a few languages and web frameworks, but hey, they are much easier to learn than building dialogs in MFC!
"As a software developer, I am happiest writing software that gets used. Whatâs the point of all this craftsmanship if your software ends up "
Many engineers works on stuff for the joy of it, not because it gets used by millions. Do a poll with the engineers around you - you can either work on cool stuff like compilers, graphics that you will get paid for and not many will use (i.e the engineer doesnât need to worry about how the revenue gets generated) as opposed to writing a part of web app which enables extra smileys for paid users but will be used by millions.
So, Michael will choose the former since he is an engineer. You will choose the latter since I think you are more of a entrepreneur (and the reason you started stackoverflow).
As for Desktop vs web, I will believe in the web when all these sites which serve millions start making money. In the end, you will see that these web apps are niche markets too (read: nobody will pay. they are just hanging out there since itâs free and they have lots of time.)
Jeff and Michael think about this:
If youâre going to create an application that will advertise a product, will you go for Desktop?
If youâre going to create a simple customized text editor, will you go for Web?
We should be flexible.
âThey donât understand compilers, concurrency, 3D or class inheritance. They havenât got a clue why Iâd use an interface or an abstract class. They donât understand: virtual methods, pointers, references, garbage collection, finalizers, pass-by-reference vs. pass-by-value, virtual C++ destructors, or the differences between C# structs and classes. They also know nothing about process. Waterfall? Spiral? Agile? Forget it. Theyâve never seen a requirements document, theyâve never written a design document, theyâve never drawn a UML diagram, and they havenât even heard of a sequence diagram.â
Where did you learn these things? Using e-book? Without going into forums or searching the web?
âThe reason most people want to program for the web is that theyâre not smart enough to do anything else. They donât understand compilers, concurrency, 3D or class inheritanceâ.
No kidding? The real Jeff Atwoodâs nightmare (âcoding horrorâ) is that he does not know that whatâs making a good web is not web coding itself. Itâs web contents what internet visitors are looking for, and it depends on its author, a webmaster or a web editor who could leave programing to programmers (hands) who are not smart enough to do anything else on internet, just paraphrasing âsmart enoughâ Jeff.
Jeff is pretty much right about this. Having done both, I agree that web programming is much easier than C++. But that is precisely WHY it is better. All the over-complicated crap involved in desktop apps is inefficient. Every desktop app basically has to write the browser in addition to the html. Sure, an easier job does attract less talented people but thatâs just the way the world works. Hard things get easier and become the stepping stone for even greater things.
Itâs this very concept that Bill Gates mastered, and by keeping things intentionally complicated, filled his coffers and set the computer world back 20 years.
For a âclassicâ desktop user, I find 3 main drawbacks to web applications and thatâs why Iâm not so enthusiast about them (most of them) :
Thatâs true that there are some good things with web apps but I really hope that not every single âuserâ application (specific professional apps is another subject) will be âweb appsâ.
Developer point of view : Iâm not convinced that itâs easier to program a web app than a desktop app. The difficulties are not the same (web app have to solve much more security problems than desktop appsâŚ). You can develop a crappy web app with horrible code but nothing prevent you from doing the same with a desktop app.
Whatâs so simple with javascript compared to Java,C# or VB?
Doing the same things in JS is propably a lot harder than in your old server language.
I think itâs misconception that all webapps are crap nowadays. I think pre-web the apps were as crappy as now. The diffrence is that anybody can put out a simple page on the internet - hence the crappiness!! So there are a lot more âappsâ now than before.
You can write bad code in any language on any platform. You saw it on web apps more then desktops simply because desktop apps have been around longer and peoples expectations are higher. They used to put up with crappy web apps because there were not many alternatives. Notice I am using the past tense. Today if I come across a bad web app / page / site, I jut move on to one of dozen better alternatives. Will we ever eliminate bad code on the web, probably not. New bad code is constantly being created by poor coders all the time. However they have a short life. They either learn the trade or leave as poor code simply is not tolerated today.
Will all apps move to the web, no they will not. Many will, but not all. Besides the obviously category of embedded applications which is growing daily, there are still many applications that simply donât fit the paradigm. One example is high end CAD software. This is still one category that will consume every CPU cycle and Graphics byte on the most modern PCs and still want more.