Nerdy tidbits from my life as a software engineer

Friday, May 29, 2009

Why I’ll Never Be A ‘Web Guy’

If popular culture is right, then I’m in for a disappointing career.  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.

I’m continually bombarded with questions from friends and other folks why I don’t want to work for an Internet company.  Most of them don’t understand.  When they look around at innovation in the software industry, they see cheap iphones and flashy web pages.  Nobody sees the awesome stuff going into the .NET framework, or, sadly, the amazing things you can develop on top of it (where are all those awesome WPF applications I’ve been waiting for?).  There’s a reason I work where I do.  As far as I’m concerned, the people I work with are doing the most innovative and amazing things on the planet.  What a thrill it is to be a part of it.

But why not the Internet?  The reason is that it’s the most aggravating place in the world to write commercial software for.  You have, off the top of my head, 4 major web browsers to deal with across at least two operating systems.  Each of these scenarios requires its own set of tests, and each browser will behave slightly differently depending on what OS it’s running on and what browser version it is running.  And then there’s mobile.  Want your website to look good on a cell phone?  Have fun: now you get to render a different page for every cell phone model in existence.  And just in case this wasn’t unpleasant enough, the debugging and diagnostic tools for most of these environments are non-existent.  That means you get to guess why a page renders funny or a random JavaScript error occurs, because you really have no way of figuring it out in a procedural, and scientific way (get ready for liberal use of Window.Alert).

Most of us have gotten used to the civilized world where we have compilers, IDEs, object orientated languages and debuggers.  We have strong-typing, class inheritance, and plenty of system resources at our disposal.  It’s a challenging place to be.  We can write things to disk, spawn multiple threads and render in 3D.  There’s no limit to what we can do.  And yet, most people seem to want to program in a limiting box called a web browser in a ‘language’ called HTML.

But then, that’s just it, isn’t it?  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.

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.  But I would argue that most people aren’t in this category.  For proof, try interviewing people who have lots of web experience, and contrast them with people who have lots of application experience.  In every case I’ve seen, candidates with application experience are often far better engineers than candidates with lots of web expertise.

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.

So 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.

173 comments:

Anonymous said...

You got issues web guy. take a vacation

gioerr said...

nice post, i really enjoyed it. the good news are that you are not alone.

Anonymous said...

Your post is one giant contradiction; your conclusion is that "people do web-dev because it's easy", yet when you start your argument you state you'd hate doing it because of all the complications with browser consistency and cross-platform issues.

Why do I do web dev (very well thank you very much)? I got bored of the stuff you do day in day out. The rigidity, the inflexibility and the glacial pace of innovation that the former two entail.

With web development I can rapidly prototype an idea, decide to develop it and push out a usable version (which can then be iterated upon) before you've finished your UML docs (well, not quite, but nearly). I can do this because I have a very robust web app development framework that I've carefully architected using the best practices that you've mentioned. This gives me a strong foundation, strong code re-usability and most importantly of all a large API for the boring stuff like session management, authentication and security (XSS, XSRF etc.).

That brings me on to my final point: security. There are so many way you can be tripped up and we're starting to see a real shift with more companies realising that they need their web stuff to be secure; our company has completed many code audits recently for clients who have had the bottom of the barrel developing their sites - we show them how it's been done wrong and then get paid to put it right. Most of these "not clever enough for anything but web dev" will slowly, but surely, see their jobs disappearing and more competent software developers becoming the norm.

Michael J. Braude said...

I don't think this rant is a giant contradiction. As a technology suite, web-dev is, IMO, very easy stuff. To me, cross-platform compliance is not so much a challenge as it is a tedious, frustrating annoyance. It's difficult, but not for reasons that are intellectually stimulating.

The fact that you've seen so many bottom of the barrel websites out there only illustrates my point: the barriers of entry for web development are very small. It just doesn't take much training to understand HTML + JavaScript, and the result is a lot of very bad engineering. I hope you are right and that this changes over time.

Anonymous said...

It just doesn't take much training to understand HTML + JavaScript, and the result is a lot of very bad engineering.

It doesn't take much training to drag and drop controls onto a VB.NET windows form app either, and businesses the world over run custom, in-house, poorly engineered cruft that cannot be updated because the house of cards it's built on would collapse :o) Bad software engineering is not only the preserve of the web, it's just the web stuff is more visible.

As far as the comment about doing code audits, I probably didn't explain that well, I'm saying before last year we had performed about 1 a year, last year and this we've attributed a significant chunk of our turnover to them (we probably completed 40 last year and have done the same again in the first 6 months of this year). There is a definite change going on in the industry, not fast enough granted, but it's there.

Michael J. Braude said...

...did I mention I don't want to be a "VB.NET Guy" either? =)

Anonymous said...

Yes, programming for the web sucks in many way, but it's all about the deployment (not because it's easy).

Chris said...

What do you think you're going to accomplish with just HTML and Javascript, anyways? Nothing meaningful on the web. This post is awful and misguided.

Anonymous said...

Absolutely true, not a single web developer has ever had a background in systems development or compiled language. The entire web is built with HTML and Javascript with absolutely no direction, or design. All of the people that do web development do so because they aren't smart enough to use .NET.

You're either the most ignorant developer ever or a troll for the record books. Either way, congratulations sir.

Sam Kerr said...

I liked your post.

I much prefer coding in C or doing embedded work rather than flashy web work.

Anonymous said...

As a WPF programmer, I need to ask how much you really know about programming?

There are two major problems with the following:
Window.Alert

There are also plugins/techniques available so as to not to popup a modal window.

Anonymous said...

Buddy, don't misjudge all web apps by what entry level web programmers do.

Concurrency is a hugely more complex in a web app, if you have got the right app. Scaling is a truly advanced art in the web scale.

Think about Google, Facebook, Flickr, can you even imagine what problems they had to master to scale?

Anonymous said...

Try designing a good web page sometime. That's the skill you're lacking that web people have, design skills, and to the end customer, that's all they see is the design.

Anonymous said...

Full agreement.

There are no challenging tasks except these that deals with browser mess and boring integration issues. Entire web development is based on few easy patterns.

mmurph211 said...

The web may have a low entry bar to begin hacking away websites, but so too does programming. If you look at entry level college courses in programming you'd find people who have never programmed anything in their entire lives walking out at the end of the semester capable of writing solid (albeit not very sophisticated) programs in C#, Java, etc.

Yes there are difficult and complex programming paradigms in back-end coding, but so too are there in Javascript, let alone frameworks such as Ruby on Rails, Django, and Drupal that run just under the covers. I would argue that prototypical inheritance, modular pattern design, and cross browser performance/stability are not easy things to learn.

Certainly, I would not go so far to say that web developers aren't as smart. Everyone who enters programming begins so in an ignorant state and eventually builds up the knowledge needed to master their programming domain.

Finally against some of your advanced knowledge arguments:
- compilers > each browser is a compiler and there are many to learn
- IDE > for font-end developers this ranges from Dreamweaver to UltraEdit to simply Notepad combined with a browser and it's development tools (ala Firefox with Firebug)
- Object oriented languages > Javascript is exactly that.
- Strong-typing > Not everybody has/needs it. Check out Ruby
- Class inheritance > Javascript uses prototypical inheritance which is psuedo class inheritance / psuedo object inheritance
- Spawn multiple threads > This is arguably something a front end environment does not need, however similar technologies such as AJAX and Web Workers are at a developer's disposal
- 3D > A somewhat new HTML element 'CANVAS' allows for 2D graphic generation and will soon be adding openGL 3D support. Microsoft's IE also have scaled vector graphic support.
- Process? > Please...

Dave Newton said...

There's no doubt that cross-browser issues suck--so don't do front-end CSS work.

JavaScript is a real language, and takes skill to use well, as does the back-end programming, regardless of the implementation technology.

I have a solid background in both web and what you'd consider "real" programming (embedded, device drivers, games, desktop apps) but don't believe there's the dichotomy you do.

Sekhar Ravinutala said...

Michael, your ideas are a bit dated: web development isn't about scripting today. E.g., we're writing web apps that run on Google App Engine (JPA/POJO/Servlet) and accessed by Flex and Android (Java). We avoid JavaScript like the plague. :) Tools like Google Web Toolkit (GWT) let you program in Java and automatically generate optimized JavaScript that readily runs on multiple browsers - you never mess with JavaScript.

I think what you're doing is: thinking of all the unskilled scripting stuff that happens on the web and calling it web development, as a way to rationalize your decision. I'd check out the current developments, especially cloud computing and Rich Internet Applications.

Anonymous said...

Amazing! Your post is really funny actually:

1 - People at M$ are not doing the most innovative things on the planet. I'm not going to be as ignorant as you are and say people there don't do innovative things, but in general the innovation train left Microsoft's station a long long time ago. .NET is yet another framework with its +ves and -ves sadly no one really takes it seriously because of its Windows only single view of the world (yeah yeah, Mono is nice, but I've never seen anyone that is taking it seriously in a commercial setup. Maybe I'm wrong.

2 - I have met some of the brightest people in this industry and guess what! They do web programing. Let me correct you here, web programing is not just about HTML. It too has threads, disk swapping, compiler optimization, or whatever it is that makes you feel good about yourself in addition to having to deal with web UI which in itself is full of innovative developments.

Your view of the world is very narrow buddy and I think that's partially the reason you work at M$.


People who do web programing are not idiots who don't know computer science. You're more likely to find amateurs amongst them because of the lower barrier to entry but that doesn't mean there are no smart people there. In fact, I know very few self respecting/good developers who work with .NET mostly begrudgingly because their current jobs requires them to do this.

Anonymous said...

You talk about classes etc as if they're not used within web development programs. Have you ever looked behind the scenes of a big system? The complexity of the code can be massive.

I think your views are very narrow minded. I'm web developer and have full respect for your programming skills. It's just a matter of what I learnt compared to what you did. I'm fairly sure any half decent programmer or developer could work out how another language works over time; again it's just a learning curve.

Perhaps you should also think about the how complex a site like facebook is. Imagine the data it has to process, store and send back in an instant. I know that data storage etc also relies heavily on the system it runs on and the programs that system uses, but it also has to rely heavily on the php programming it has been built upon.

Try jumping head first into that and i'm sure you'll realised you're mistaken.

Michael J. Braude said...

Sekhar - It is true that there are lots of tools that abstract JS from you, and these are pretty cool. I have much less of a problem working with those technologies; I just want nothing to do with JavaScript. Let somebody else figure out all that cross-browser JavaScript nonsense.

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.

Michael J. Braude said...

mmurph211:

compilers > each browser is a compiler and there are many to learn

That's exactly why I have no interest in being a web guy!

IDE > for font-end developers this ranges from Dreamweaver to UltraEdit to simply Notepad combined with a browser and it's development tools (ala Firefox with Firebug)

Notepad + a browser is not an IDE. I mean a full-fledged IDE with syntax checking & a built-in debugger, aka Visual Studio or Eclipse (actually, VS isn't too bad for webdev, but there's still that debugging-across-lots-of-browsers problem).

Object oriented languages > Javascript is exactly that.

Javascript is a functional / 'prototyped' language, not an OO language. There is a difference.

Strong-typing > Not everybody has/needs it. Check out Ruby

Because JS is interpreted at runtime, the lack of strong-typing leads to runtime errors. For large programs, this is a real problem because any variable can have any value you want.

Class inheritance > Javascript uses prototypical inheritance which is psuedo class inheritance / psuedo object inheritance

Not really, because there are no is-a relationships in JavaScript - also due to the lack of strong-typing.

Spawn multiple threads > This is arguably something a front end environment does not need, however similar technologies such as AJAX and Web Workers are at a developer's disposal

AJAX calls aren't spawning threads so much as handling an event in the future.

3D > A somewhat new HTML element 'CANVAS' allows for 2D graphic generation and will soon be adding openGL 3D support. Microsoft's IE also have scaled vector graphic support.

The fact different browsers have different implementations of this is exactly why I'm not interested in working with it!

Eran Kampf said...

The fact that you think the internet is just about HTML and kids writing JavaScript while talking about WPF (which was made for designers and flash kiddies) as if its totally different shows total luck of understand as to what web software is.

Did you ever try to build (architect\write) an application at web scale? One that can handle millions of concurrent requests? Process Terrabytes of data?

Oh wait, you probably didn't... Microsoft's ecosystem doesnt even has the tools to deal with such problems yet, so you probably don't even know what I'm talking about...

I suggest you do some readong on building highly scalable systems, on how Google runs its servers, on Hadoop...
Then tell me programming WPF GUIs is harder and requires better programmers...

Michael J. Braude said...

Eran -

You're not talking about the same thing. Processing terabytes of data doesn't happen in a web browser, it happens on a server farm somewhere. And that's not "web dev" - that's normal complicated server-side programming. We do plenty of that here =).

The difference between writing a WPF app and developing a web page is that the language in one case is JavaScript and the language in the other is C#. For lots of reasons, I much prefer to write in C# than JavaScript.

Jeff Tucker said...

I've done a lot of web development and I now work on the .NET framework. What most web developers (and people who criticize web development in general) miss is that these days, web sites are applications that output an HTML-based UI. The problem is that a lot of "web developers" don't realize this and don't bother to really know HTML, javascript, and CSS at all. Without that knowledge, all you're doing is using some crappy wizards and their magic to generate crap. As a web developer, it's essential that you have that knowledge in order to actually develop a good web site and we need to get that message out there and encourage these web developer Morts to start actually figuring out what they're doing. Also, there are just as many people developing crappy applications using wizards and databinding and not bothering to understand anything about good OO design and implementation.

We also need to stop yelling about the differences with web development and start promoting the similarities between application development and web development because these days they have more in common than they used to. How different is creating a UI in WPF via XAML from creating a UI in a browser via HTML? Also, different browsers aren't that hard to manage if you structure your web app so that CSS controls the look and feel 99.9% of the time and you choose a different style sheet based on the browser (emit a new link rel= tag on the server side based on the browser detected and tweak each one for each browser, which isn't all that much extra work although it shouldn't be necessary if standards compliance was correctly implemented).

I think you ought to try modern web development and take the approach of treating it like application development and applying the same rules. These days a good, scalable web application involves all the techniques you mention plus a whole lot more. Join the movement instead of fearing it and help promote something positive instead of just bitching about a different kind of Mort.

p.s. for those of you unfamiliar with "Mort" it's a persona used at MS for a developer who doesn't bother learning good practices and just hacks at the code until it compiles and sort of runs. He doesn't learn new techniques or technologies beyond the minimum needed to make it compile and run. Unfortunately, Mort probaly accounts for at least 50% of developers out there.

Eran Kampf said...

So basically this whole post is about you liking C# over JavaScript?

There's a diffe3rence between langauge preferences and saying web developers suck... there are some amazing stuff done out there...

As for the typed vs. untyped thing. There is some cool stuff you can do with dynamic languages...
Just play a bit with jQuery and do some Ruby stuff and you'll see...

ok, so these are not meant to be used by big teams, rather by a group of ninjas who know what they're doing...
Big teams contain mostly average and below programmers... that's why you need all sort of safeguards there...

Eran Kampf said...

Btw, regarding the supporting multiple browser stands discussion...

So, far from my experience the annoying thing was that you have to support all the browsers... and then there's IE that needs special attention... ;)

Jaime Navón said...

Take a look at the architecture of the JQuery library (widely used in Web development) or Tapestry framework and you will find every concept you say web developers know nothing about and perhaps a few that even you may not know.
You have a VERY narrow vision of what is Web development today. There are simple web based apps but that is also true for desktop based apps.

Michael J. Braude said...

Re Eran:

Well, yes - one reason I don't have interest in being a web-guy is because I find JavaScript to be an extremely aggravating language to work with. But it has also been my experience that the more demanding the intellectual requirements of a programming environment, the higher the quality of the engineers who work in that space. It's not that there aren't good engineers doing web dev; just that there are far less of them. So I choose to work in an environment where the bar is higher.

Re Jeff:

My primary complaint about WebDev is that JavaScript is a poor language for doing the things we want to do online. HTML + Javascript and XAML + CS are the same concepts (markup + code), but XAML and CS are standardized and compiler-enforced, where-as HTML + JavaScript are interpreted in lots of different ways.

To that end, I see Silverlight development as an avenue I would be interested in pursuing.

Chris Brandsma said...

I write for both Windows and web, and do so for large and small applications.

First off, there is an implied sentiment that web developers are idiots. Personally, I've seen just as much bad code from desktop developers as I have from web developers. Actually, to do web development right, I think there is a higher bar than there is for windows development.

But each system is complex. With windows development you have more install issues. Not to mention post-install issues. Update issues. I've done my fair share of testing on X number of systems.

Actually, the testing situation is the same. For me there is no difference in having to test on 5 browsers as testing on WinXP, Vista, Win2000, XP with office, Win7, etc. If anything, testing on the web is faster because you need fewer vms.

Then writing JavaScript. Sorry, but you are a few years behind the times. There are very good JavaScript testing tools these days. Debugger, unit testing, profiling, etc.

But here is the real mistake I see with Windows developers when they move to web (and remember, I do both): there is a basic assumption that they already know what they need to know, all that needs to be done is figure out what controls to use. I've seen WAY too many developers completely ignore state management.

Next thing you know they leave in a huff saying "web development is a toy because it can't to xyz". Each programming environment has it's own challenges. If you embrace those challenges you will be a better programmer over all. Otherwise you run the risk of a programming rut, unwilling or unable to move with changes.

As soon as a developer can no longer adapt to change, the end is near for them

Dave Newton said...

Finding JavaScript "aggravating to work with" is *way* different than being irritated with cross-browser issues, the bulk of which are CSS-related, not JavaScript.

Obviously it's okay to not like JavaScript, but it's always been my impression that the people that don't like it simply don't know it. Barring a few *very* bad things it's a very capable, expressive language.

Jeff Tucker said...

How is javascript a poor choice for what we want to do online? First, what do we want to do online? That's an important question because if the answer is something that's realtime and very CPU-heavy then anything besides C or assembly is probably a poor choice. If you want to deliver content and let the user interact with it, I don't see anything wrong with Javascript. Also, how is Javascript not compiler-enforced? If it's wrong, it won't compile. If you screw up something in your code, it will throw an error. The same is true of just about any language.

Difficulties with multiple browsers is also an issue, but so is writing desktop code that you want to work with all CPU types and operating systems. I have to get it to build for PC and all windows versions (and god forbid that someone is running an older OS), Mac, Linux, and possibly other things like WindowsCE or Palm Pre or the iPhone or Android, and then those can be on ARM chips and even different ARM chips can have totally different architectures as well. I'm not even mentioning the Motorola chips since they're not as common in mobile devices these days, although there's probably more Motorola 68k series chips in existence than anything else. Getting a common code base to build on all of those is virtually impossible and depends on the compiler interpretations of your code for each one, and you have a lot of conditional compilation with #if AMD64 or #if win9x or something like that, or if(Socket.SupportsIPv6) to give a real-world example.

This is actually far more complicated than maintaining a single codebase that works on all platforms with a web browser but requires a few annoying tweaks to get the UI not to be off by 2 pixels on Safari. This is the reason why a lot of apps are becoming web-based as well because it becomes simpler to deliver the content and code. Oh yes, the applications need installers too, don't they? That's another chunk of work that needs to be done for every version and every OS. Java and .NET solve this issue to a certain extent, but not nearly as nicely as a web browser which can just download a new .js and .html file if needed (you can send requests to a web server and skip the DL if there isn't a newer version available as well).

I'm just not seeing a compelling reason not to use web development in any LOB type scenario with any of your arguments and there are clearly advantages to going to the web as well.

Michael J. Braude said...

The problem is that Javascript was conceived to do things that are far less sophisticated than what we aspire to use it for. This makes it a great choice for fun, interactive webpages but not for the types of applications that we want to move online. For all the reasons that you just outlined, there is a strong push to migrate traditional applications from the desktop to the web browser. And as our demands grow larger and larger and our expectations increase, the limitations of Javascript will inhibit our ability as engineers to deliver the type of rich experience that people want. For things such as Facebook, Twitter, or the New York Times - DHTML is fine. But imagine moving Photoshop, Visual Studio, iTunes or Powerpoint to the web - with the same kind of experience that you get on the desktop. I just don't believe the technology is capable of producing such a product.

And since I am enjoy developing rich-clients such as those, I feel that a Javascript-centeric environment is not for me.
The fact that Google and, soon, Microsoft, can do the sorts of things they can in this environment is astounding to me. I am genuinely amazed that there are engineers out there who are able to produce such sophisticated applications based on Javascript + HTML. There was a time when this space interested me. I found myself so frustrated by the minute differences between browsers and versions and operating systems (many of which I had no ability to test myself: for instance, why didn't my Javascript work on a Safari browser running on OS X? I don't own a Mac; how do I test this? How do I debug this?) that I gave up. There are clearly many people who are challenged and engaged in this space, and there are plenty of smart people who work in it and I have nothing against them or their passion. This post is about what I want to do, and what my experience with this space has been like and what my experience with people who work in this space has been like.

There are plenty of logical reasons why businesses are developing more web applications than desktop applications, and I never once suggested that those reasons were misguided. I actually think the advantages of a web-centric application are enormous, but what saddens me is that I don't believe we will ever be able to deliver the experience we all crave because we will never get every browser maker and every operating system vendor and every device to agree on a technology that is suitable to deliver that experience. I have hopes that Silverlight becomes the answer. We shall see.

If you want to discuss this further, you know where to find me.

Gernot said...

I'm a very experienced so called "app developer" (>20 years experience in sw engineering). I was a lead architect in a 40 man years .NET project, I know what you're talking about: OOA, OOD, OOP, ULM, MDA, SOA, you name it.
And I was thinking like you. Three years ago I tried Ruby On Rails just out of curiousity and now I don't want to go back to that statically typed world.

Ruby (and other so called scripting languages) are not weakly typed. They are strongly typed too, like C# or Java (I know, Javascript is an exception). The difference is, they're dynamically strongly typed. Ruby is, in fact, one of the most modern and powerful oo languages you can work with. It has every oo concept C# has and then some (which are slowly coming to C#, too, like anonymous methods, type inference, blocks, closures...).

Ruby does not have abstract classes and interfaces. Why? Because they're not needed in a dynamic world. Interfaces are not an oo feature, they add no real value to your app, they're there to overcome technical limitations of statically typed languages.

You say that apps written in a dynamic language lead to obscure application failures because a varaiable can hold any type at runtime. This is true, but you are unti testing your applications, don't you? So that's a non issue from my experience.

Concerning javascript: There are a bunch of very good JS libs out there that abstract away the browser differences and let you program javascript in an oo fashion without worrying about the browser.

Anonymous said...

Let me guess, your next post will be called "Saved by Silverlight."

Lucian said...

This was probably said by now, but you're a narrow minded idiot.

- Static typing is not as useful as you think http://www.mindview.net/WebLog/log-0025
- JavaScript is an object oriented language. Everything is an object in it, even functions. The fact that creating objects normally doesn't use classes doesn't make it less OO
- WebWorkers are threads
- JVM is at least as innovative a platform as .NET. Qt and even Cocoa are much more innovative and capable than WPF
- IE is the most horrible browser evern made, even IE 8. If you ignore IE, development and especially debugging are much better

Denton Gentry said...

> Let me guess, your next post will be called "Saved by Silverlight."

I suspect the next post will be a response to Jeff Atwood (http://www.codinghorror.com/blog/archives/001296.html)

Mário Valente said...

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

Anonymous said...

Good strategy Michael. Ignore the shift that's been happening for the last decade. You'll have a long career.

Awful, bombastic, attention-seeking post. Thanks for wasting 5 minutes of my life.

Keith Peters said...

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

Arrogant, unsupported opinion. As is most of this post. Not that there's anything wrong with having opinions. Just don't take yourself too seriously.

Anonymous said...

Interesting... yet... not very useful!

There are a lot of application that make more sense having a web implementation and so are applications that make sens to be desktop applications.

I think each project offers the chance to do good designs an later do great coding.

I'm sorry to disappoint you but there are great web developers and bad desktop developers.

The bottom line is that you can't judge an entire technology by just knowing some guys that say they are doing web development

The post could have been great if the author considered documenting first, i would love to see the pros and cons between web and desktop apps

tharkun said...

I figure you're ignorance comes from ignoring the web. Amazing how out of date you are.

Chris Pratt said...

As others have said, bad code and design is by no means relegated to the world of web development. In fact some of the buggiest, ugliest awfulness I've ever seen in my life are *desktop* apps, many developed with .NET, no less.

The web does lend itself to its share of horrors, but that's because it is, for the most part, simple, bringing the learning curve low. That's a good thing, it puts power into the hands of people who might not otherwise be able to build the ideas and dreams in their head, many of which are fantastic and revolutionary. Yes, web development is easy, but it doesn't have to be. The truly skilled web developers out there may not be able to recite a Comp Sci syllabus, but they are talented, talented folks and deserve respect.

Remember that the ones the complain the most about the tides of time and changes to the status quo do so because they are being obsoleted. If you think you're just too good to join in on the future, then good riddance.

Anonymous said...

Michael I hope that all these comments don't dent your confidence.

I must admit though to having found your rant somewhat irritating and ill-informed.

But that was the plan right? No such thing as bad publicity...

Chris said...

you will NEVER be alone; I don't like webapps, nor do I ever want to create webapps using the current set of 'technologies'; no thanks! I prefer C++ for the desktop
Chris

zohar said...

Looking for another job would do both of you good.

Anonymous said...

You can blame more than half your issues with what you consider to be "web development" on that organisation you happen to be working at.

This post, aside from being massively informed, is nothing but trolling.

Dan said...

I couldn't be bothered putting too much effort into this comment, so please excuse me if its badly written or rushed.

Server side programming isn't "web dev"? What planet are you living on? HTML + CSS + JS is only the GUI aspect of web development and only one small portion of the work. The server side stuff definitely IS web development and an important part of it.


You also said Javascript isn't an OO language because it uses a prototype object system. Well, guess what? There are many types of object systems out there! Next thing you'll tell me that smalltalk isn't an OO language because it doesn't do OO the same way as C++ or Java does.
There are many types of object systems:
- C++ and Java style object systems with all the different possible variants (single or multiple inheritance? Interfaces? Mixins?)
- Common Lisp Object System based object systems (generic functions with multiple dispatch)
- Duck typing/prototype based object systems (a class is just a template of an object, if it has the method, then its the right type of object)

"Because JS is interpreted at runtime, the lack of strong-typing leads to runtime errors. For large programs, this is a real problem because any variable can have any value you want."

Firstly, what exactly is "strong-typing"? The accepted meaning of the term "strongly typed" appears to be: "what my favourite language is" and doesn't seem like a useful term. For example, going by the definition that you probably meant, C is weakly typed because you can access a type as if it were another type (void* anyone?).
If you meant dynamically typed, then my opinion of you is that you haven't got enough experience with different programming paradigms. Have you ever even written a sizable program in a language like Ruby or Python? I'll give you a hint: dynamic typing is rarely, if ever, a source of error.
In fact, I work on a sizable codebase professionally - in Java and C++ - and the languages static type systems still fail to detect type-based errors. Static typing helps a native code compiler, sure, but it does not help prevent errors more complicated than simple beginner errors. Maybe the compilers aren't smart enough, I don't know, but the end effect is the same: your point here is useless.

Web development is easy? Hah! Do you have any IDEA how much work needs (or should.. unfortunately too many people neglect it) to be put into things like security? Theres plenty of tough issues in web development.

Please PLEASE do some research before you bash something you obviously have no real clue about.

DISCLAIMER: I also despise web development. Its tedious. Its annoying. It doesn't give me the control I crave. (I'm very much a compilers, embedded systems and OS guy at heart) I still don't go around yelling that "web development is for people who are too stupid or lazy to learn real programming" because, seriously, that attitude is retarded.

cd said...
This post has been removed by the author.
Anonymous said...

I guess it shouldn't surprise me that with such ill informed and backward views that you work for Microsoft.

On the flip side, I'm glad you don't want to get involved in web development. I've built an incredibly successful business on the fact that "clever" engineers don't find web development "challenging" enough.

Here's the reality. It really doesn't matter whether you know what a C# struct is, the only thing that's important is delivering cost effective solutions (a concept that might be a bit alien to you at Microsoft). The nitty gritty of platforms and languages is meaningless.

You can jerk off over null pointers all you like, i'm going to go back to counting all the money i've made from web development. Idiot.

Patrick Dewane said...

Wow, that was interesting. I particuarly enjoyed the part(s) where Michael implies that web developers have no sense of computer theory. Not only do I enjoy developing for the web (in a company utilizing agile practices!), but I am a language and theory nut! When I'm not good at something I don't get defensive, I learn and try to make it better...

cd said...

Reasons I don't like web development - old ASP, IE6, IE8. Lack of a certain company working working with standards bodies. Can't for the life of me think who it is.

The fact that you go off complaining at lack of OOP when said company creates .NET just shows your own complete ignorance. But hey, go ahead, delete this too.

Anonymous said...

Dittos to the others who have already mentioned it: I find this absolutely hilarious coming from a Microsoft employee.

Oz said...

funny.. you use blogspot, which is a web app. I bet you use outlook web access to check your email, which is a web app. I can bet you twitter and have a facebook account and you post comments and share pictures with family/friends.

You do realize without web developers we wouldn't have this thing called, the web?

How are ANY of these apps any worse than VISTA? than IE? Outlook 2007 spans 52 threads to work ... that is what I call software engineering! God I wish I was THAT smart!

But I do agree with you in something.. u DO need to find a new profession!

Anonymous said...

Nice blog... shame it's not on the web.

Oh, wait a second, it *is* on the web! Jackass.

jl said...

Great post. Unfortunately all of us who agree sound like the old man yelling at kids to get off our lawn. The web is definitely the future; I'm just hoping to hold out for a while longer.

Mister Bee said...

So you have a problem with the P of MVP? I can develop with ease for both Web and Windows Applications. And web and windows services too. In C# OR VB.Net.

I suspect the difference is that you have merely encountered some badly implemented web applications. Which is like blaming the automobile industry because you just happened to buy a car which fell to bits. Is it the fault of the underlying technology or that particular implementation of it? After all there's a world of difference between an FSO and a Ferrari.

Anonymous said...

Epic fail, non-Web Guy. Kudos for having the balls not to have taken it down yet, or even edit it to make it slightly more obvious that your problem is with amateurs using FrontPage 98 to create GeoCities pages.

Mr. Shiny and New said...

So because Web development is challenging (multiple platforms, rapidly changing technologies and tools, best-practises still under development, etc) you'd rather work on something challenging, like desktop apps?

Web development is way more than HTML and Javascript. And just because you have multiple platforms to test on doesn't mean the work is somehow inferior to other programing. So there are multiple cell phones, and multiple browsers - yes, you have to do more testing. Yes your app needs to be more flexible to work on those devices. So you have fewer constraints in desktop apps; big deal. I fail to see how that makes it MORE challenging for you.

Then in a comment you say that server programing is not web programming. Guess what? Every website consists of a client component and a server component and lots of people do both. And they use debuggers and UML and there are class hierarchies and everything.

Frankly this whole nonsensical post sounds like sour grapes to me.

Anonymous said...

You're an idiot.

Anonymous said...

I thought dinosaurs were extinct. Guess I was wrong...

Anonymous said...

amen.

Anonymous said...

yeah 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...

Practicality said...

You should write everything in machine code. Since having it be challenging is more important than writing quality software.

Anonymous said...

Nobody sees the awesome stuff going into the .NET framework, or, sadly, the amazing things you can develop on top of it (where are all those awesome WPF applications I’ve been waiting for?).


Maybe, just maybe, the .NET framework isnt as awesome as you think it is. That might be an explanation as to why no-one is building applications for WPF.
It might also explain why your opinions about applications "on the the internet" are so completely backwards.

Im not sure if you have been in a car accident and a coma for a few years - my sympathies if you have. But maybe you have heard of a company called "Google". You might have a look at some of the stuff they are doing on the "internet". It might change your mind as to what is interesting or challenging.

Honestly, it doesnt surprise me that these completely backward opinions come from Redmond...

Anonymous said...

Micahel is busy working on the next version of notepad - this will be a cd only version.

This guy is everything that is wrong with Microsoft...

letstalk said...

Fuck you?

Axe In Red said...

"But then, that’s just it, isn’t it? 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."

Are you serious? I am a web programmer, and am accustomed to all of these things. Just because I don't need to compile my code doesn't mean I don't know how. I started out programming in C++. I think you need to learn the difference between a web page and a web application. Documents for my web applications include diagrams (UML, state, sequence, what have you), use cases, architectural and choreographical constraints, etc. Just because YOU don't do these things when you develop for the web doesn't mean the rest of us don't.

Anonymous said...

Hooray!!! I agree 100% brother. If these fools would at least bother to understand HOW this stuff works under the hood, then perhaps they could write some quality "web apps". I'm not saying web development is bad. I'm not into it. In fact I hate it. But, 80% of it is crapola that could have been done right the first time.

Anonymous said...

Huh. If this post is meant to be serious, I would honestly suggest that you talk to your family about your current state of mind and about how you feel about yourself and your current situation.

As for the contents of the post, I studied software engineering. I wrote compilers and garbage collectors. I wrote applications in assembly for a variety of platforms. I wrote apps in Prolog and Eiffel and Haskell. I wrote versioned object repositories and a WebDav server. I wrote applications for de-novo genome sequencing, and I wrote applications for database analysis, data mining and data migration. I also currently write a lot of web frontend code in JavaScript. JavaScript is a really neat language with a pretty unique prototype-based object model. It's functional, supports closures and does a ton of interesting stuff. I had a lot of fun learning JS, and I still have a lot of fun working with it.

I've also worked on the backend of sites. As soon as you get into topics like scaling and database sharding, writing websites can be really challenging and interesting.

I'm pretty sure you know that, actually. Given that, your angry rant about how everyone else is so stupid while you are far too smart for such a meaningless task as web programming takes on a wholly different meaning.

Anonymous said...

"But, 80% of it is crapola that could have been done right the first time."

Off course, non-web apps always do it right the first time! That's why we have to download all these patches, updates, fixes and "service packs" to get that shit working properly...

;)

Cris said...

You are misinformed, Michael. Let me input some basic concepts for you:

-web development is not easy, you can achieve an incredibly high level of complexity if you are determined to work professionally.

-web development is not scripting.

-web development can be done professionally. And in fact it is.

-the fact that most of the web developers are noobs, doesn't mean that web development is for noobs.

-web development is more accessible than desktop development, which means that you are not required to purchase an IDE or learn about a propietary technology to use it. Most of the web technologies are free to learn and use. That is what makes most of the web programmers noobs, but they give the rest of us a bad name.

-desktop applications can be written by noobs too, they just are not too frequent because web is more accessible.

-web development is challenging, and often more stressing than desktop development.

I think you need to get an update, the next time I would suggest go read about stuff, and maybe even try it out, before blogging about it.

Lucas Oman said...

Michael, in a comment above, you state:

"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 think you need to make this clear in your article. I consider myself a 'web programmer', yet I have not touched Javascript or HTML in a very long time. I help maintain a very large, object-oriented web application for a popular travel site. As you can see, your lack of clarification is making a lot of people upset.

theimthatsjeremy said...

Ok. First to everyone that left an insulting comment. Thanks for wasting my time, and proving one of Michaels points. If your not intelligent enough to actually argue back shut up.

Next To everyone that said "Your basically saying this ...". Stop He's got several points:
1. He things application development is more innovative than front end web.
2. Browser incompatibilities are extremely frustrating.
3. Debugging and development tools are rudimentary.
4. He sees the process of web development as rudimentary in comparison to application development.
5. He thinks some people pick web development because it is easier than application. Some even pick it because they are not smart enough.
6. He points out a laundry list of things that he thinks web programmers don't understand.
7. He points out that in interviewing potential programmers; the web developers know substantially less.
8. The Internet is responsible for collectively dumbing down people.

I probably missed a few points, but I think I hit the major ones. If not please correct me.

Going down the list.
1. Innovation - I think this one is too subjective. What I will say is that all web stuff is built on top of application stuff, ... that is built on top of systems stuff.

2. Browser Incompatibilities - Yes! The good news is there are libraries that help with this stuff. Prototype is one that comes to mind.

3. Rudimentary Tools - This view is unfair. The tools are not rudimentary, There is a wide range of good tools to help web development(ex firebug and web developer).

4. Rudimentary Process - Again this view is somewhat unfair. For starters many good tools exist but are spread out. Second Look at things like MVC's. There is a very clean and sophisticated method behind websites employing these methodologies and technologies.

5. Web Dev is Easier - I agree. I know people that went into it just because of that. From personal experience I can tell you that the web developers I know are not as "smart" or versed in various aspects of programming as the application developers I know.

6. List of unknown concepts - This is somewhat unfair. For the simple reason that most web developers don't need most of this information. If your writing simple HTML+Javascript pages, you don't care about re-usability. But there's more to it. Most bigger sites do have many of these concepts. Don't forget Ebay was at one point written in C++. http://highscalability.com/ebay-history-and-architecture

7. Interviewing - Again right. I can say this with confidence because I have hired for both positions in my company. But Look back to question 6 as to why this doesn't matter to most firms hiring web developers. They know what they need to know to get the job done.

8. Internet == Dumb People - I don't know.

-------------

Some thoughts. There's a toolbox cliff. .Net is at the top with a nice IDE and a zillion things cleanly integrated into it. Bravo Microsoft. At the bottom you have someone writing code in notepad. Again Bravo Microsoft. Any real developer that doesn't work with VS, falls somewhere on this slope. The same happens in the web development world.

In application development I see a portion of elite programmers that write good code. I also see this in web development.

All languages suck.

SamG said...

Michael,

were you burned out when you wrote this? Dude, your blog has "moved to the web" too.

Writing web-based business applications is incredibly complex and not easy at all. Don't confuse HTML page design with designing an application which renders its output in the browser.

Get some rest. Rethink.

Augustine said...

I think a great deal of the problem is also open-source applications. It also creates stupid software "developers."

153351 said...

This is awesome. It's like the dude who said the Beatles wouldn't make it big. I hope this stays in your archive so we can come back and laugh at you. Good luck fighting the web and web programming, you jackass.

Anonymous said...

This post and many of the comments seem like a new approach from MS to get people to stop using the browser and stick to installed apps, where MS makes their $$.

PFFFT....good luck with that.

Anonymous said...

>Javascript is a functional / 'prototyped' language,
>not an OO language

Dude. You can't call yourself "smart" and then follow up with such an inane comment. A language can be both object-oriented and functional. JS is exactly that.

It's not *class based*, if that's what you meant.

Anonymous said...

LOL troll is LOL :)

While people with the lack of skills you describe certainly do exist, there is no way such ignorance is limited to web developers only. It also depends on your definition of a web developer: as far as I understand, web developer = "html monkey with rudimentary mysql experince" (mysql specifically, I'd say). In reality, web developers encompasses a giant class of developers: software architects, server-side developers, database developers, data architects, front-end developers, etc. etc.

Before this gets any further, I'd recommend you build a Twitter clone (it's the new "hello world" app, much like a blogging application used to be a few years ago). After you consider all the scalability needs, user needs, display needs, you will see for yourself that you can write beautiful code to accomplish this.

Good luck!

Mako said...

So a M$ shill goes out of his way to insult a large number of their customers.

Classic

Gurufaction said...

Programming is all creating higher levels of abstraction. When programmers got tired of working with machine code they abstracted it with Assembler. Then assembler became tiresome and it was abstracted further with C. Then nobody wanted to manage memory stuff so came Java/C#/etc. As programmer we are always trying to make it "EASY" but easy has a trade off. The higher up you go on the abstraction ladder the less control you have and over the details.

High Abstraction requires Less Knowledge

Low Abstraction requires More Knowledge

Gurufaction said...

What if .NET development became "EASY"? Isn't that the goal? A platform needs developers in order to flourish.

Anonymous said...

Well, I hate to say this people like you, but you're just a hypocritical loser.

I've seen "wars" like this before. Some fool wants to attract some attention then posts some stupid "Why I choose ruby instead of python" article on his blog. This is just the same thing. Only the topic is different.

After all, this is only your personal prejudice (although it's a narrow minded one), so I won't waste my time here elaborating how stupid it is to just sit there and complain about something you obviously don't know your way around.

Web Development is a universe of its own. If you've only tried writing some superficial javascript, or thrown together some ASP.NET controls to make a lame "Hello World" app, don't talk about Web Dev like an expert. Web Dev and Desktop App require different engineering processes, so don't look at it under your perspective as a desktop software engineer.

People like you are the reason why this world never will have peace. At least have several years of serious Web Development under your belt, and then you'll see what I was talking about.

Actually now I regret spending 3 minutes typing this when it actually doesn't matter to me. I should have just let you sit there in your dark little corner alone.

Vipul S. Chawathe said...

I second your notion. The web is yet another medium for expression... however, it is in the end hosted atop h/w managed by an OS. Some (notably desktop) OSs ship with command interpreter terminal shell camouflaged by desktop manager GUI, others, like subnet switches, run an embedded OS with remote shell. The point I am making is understanding/studying underlying technology is respectably intelligent. However, the key notion in engineering is how a science is applied. Why should anyone expect good engineers making arguments over poor applications? We never expected infants to run nations soon as they are born. As long as a person makes a start from some feasible platform depending on his/her background, let that be as simple as html and advances reasonably until retirement, (s)he is cool in my book. And without alternative possibilities for expressing intellect, how can all the people aiming to be creative get a chance? Its one's choice why one wants to abstain from working at the intellect level where others think (s)he may have an advantage towards making contributions. The web (as seen in the reverse direction) is another cause of the internet being useful. If rendition of technology for value addition is absent then all the underlying "sophisticated" technology might as well have been pure science rather than usefully applied(so called engineering) science. Even without ECMA script, some other equivalent stepping stone would have come around for allowing young people in making advances on learning curve while the elders retire for resting...

Kow said...

If you want rich GUI in the browser, check "EXT JS". Awesome stuff.

Michael said...

Your a total moron and obviously know NOTHING about the web. Congratulations on getting out of the software development industry (since nearly every app in the world is going to the web) although i'm sure you only pretended to be a programmer in the first place

Paul said...

Pathetic. Your disrespect for the developer community is why you'll never do web programming. I wouldn't ever hire a developer that looks down on others or assumes what others know or don't know based on the area in which they apply their skills.

You may claim to know virtual methods, pointers, references, garbage collection, finalizers, etc, but you clearly lack the basic skills of working with others. Please, stay in the "desktop" environment. We don't need your kind in the web development world. PS: I don't work with anyone who doesn't daily apply the concepts you think don't exist in a web developer's mind. I also don't work with anyone who treats other developers with such contempt.

m3mnoch said...

heh.

damn right. internet is easier.

because the one of the largest internet companies -- google -- is full of dumbasses who couldn't software engineer their way out of a paper bag. they just don't understand how hard it is to write a text editor.

rightly, you scoff at the brain power at google. they are just dumb web newbs. anybody can write an app that does 300 million full-text searches per day across billions and billions of documents.

you should totally just walk in and take over the chief engineering job. show them programming care bears how it's done!

m3mnoch.

Anonymous said...

VB > C#

Discuss...

Mike Z said...

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

Sorry, dude, I was too busy getting laid in college to learn this crap.

Long live web development!

Anonymous said...

For every layer of abstraction toward general concepts any industry creates, the more people will want to join in the fun.

Neil said...

http://www.codinghorror.com/blog/archives/001296.html

...'Nough said.

Anonymous said...

There are bad developers in all manners of programming. This post blog post is nothing but trolling (successfully) for extra hits.

zvolkov said...

Can't agree more with the author's opinion. From my point of view practical web-programming in today's Corporate America is very nitpicky, not at all deep, and requires very rudimentary programming skills.

Dr Loser said...

Michael --

I don't think you've proved what you (didn't) set out to prove, in the minds of countless well-informed readers: that web development sucks and a basic understanding of comp-sci concepts is both valuable and rewarding. You, and many other intelligent commentators, do seem to be on the way to proving that "blogging" is an intellectual dead-end. Have you noticed the number of "Anonymous" commentators out there? Good lord, the blogosphere is getting to be more and more like a Klan meet, attended by illiterate Ayn Rand fanatics.

My favourite is Lucian, who at least isn't anonymous. He is, however, the epitype of the breed:

(1) This was probably said by now, but you're a narrow minded idiot.

[Mummy says I should stand up for myself and call you an idiot.]

(2) - Static typing is not as useful as you think http://www.mindview.net/WebLog/log-0025

[My hobby is to mis-represent other people's views wildly, and then link to a random web page on the subject.]

(3) JavaScript is an object oriented language. Everything is an object in it, even functions. The fact that creating objects normally doesn't use classes doesn't make it less OO

[I do not understand the concept of a "functional programming" language.]

(4) WebWorkers are threads

[Hey! I googled Javascript & threads, and I've found a draft recommendation for some obscure piece of non-standard shit that was actually published on 14th August ... days after this MS shill's article!]

(5) JVM is at least as innovative a platform as .NET. Qt and even Cocoa are much more innovative and capable than WPF

[I like to confuse platforms with applications and GUIs. Actually, I just like being confused. That way, I don't have to think very hard about actually refuting a point.]

(6) IE is the most horrible browser evern made, even IE 8. If you ignore IE, development and especially debugging are much better

[Yes, I know it has nothing at all to do with your argument; in fact, if anything, it reinforces the argument. Yes, I know IE has a huge slice of the market. But I care more about lowing with the anti-Microsoft herd than I do for, say, producing something that 50% of my potential customers can use.]

I nominate this for the classic ill-tempered blog response. It's entirely devoid of courtesy, wit, reading comprehension, focus, or relevance.

We will see more of this. I predict that, in time, all blogs will be written by spotty morons in anoraks and appended by a long tail of Anonymous gibberers who just want to flash their privates at the billions of people on the web.

[sardonic]Come to think of it, that's not too dissimilar to the average web developer ...[/sardonic]

Andy said...

Wow.

This post reeks of angst and elitism.

If you can't see the benefits of lowering the bar to development and how it positively effects personal business lives on a daily basis, well, I'm sorry -- you just don't get it.

Programming languages do not evolve to create a quaint little developer ecosystem where everyone understands the merits and values of scrum development, pointers, compilers, assembly.

They evolve because people have problems and need ways to solve these problems. How you solve the problem is irrelevant as long as it does indeed solve the problem.

It seems you've forgotten why your craft exists.

Anonymous said...

If you really hate JavaScript that much, check out GWT (Google Web Toolkit) for an alternative to it. You code in Java in Swing-like fashion and it gets compiled to JavaScript. It compiles separate code for each of the different browsers. GWT is a nice piece of engineering, definitely worth checking out.

I believe someone has tried to do something similar with C#, but I haven't checked that out.

Though, personally, I don't mind coding in straight JavaScript, especially with jQuery.

Anonymous said...

Thought all that you know about OO abtractions and processes make you superior? Try functional programming world with real science behind it, and you'll see the value of your current knowledge is next to shit.

Anonymous said...

I've been programming in multiple environments for, I can't believe this, more than 30 years. Never have I found developing software as fun as I find it now, developing web apps, which I've been doing now for I guess 12 years. Why do I find it fun? Because of the leverage you get from the internet. Nobody can stop me from developing an app and exposing it to the world. Sure I guess that's true for other environments, but the lack of barriers on the web are very exciting. Early on in my web dev experience, I stayed away from the UI, partly because my skills were needed developing the application itself, irrespective of the UI presented, but mostly because I thought that HTML UIs were crude and not much fun, with a lot of game playing and hacks to get it looking right. Now, with more of an expectation of a rich UI within the browser, the need for AJAX, etc., I enjoy the challenge of web UI. I also didn't care for Javascript, but once I discovered JQuery, all that changed. I guess from my perspective, the technology is not as important as the business that your team is trying to build. The web is where the action is.
BTW, I *do* use abstract classes, interfaces, inheritance, virtual methods, etc. I *do* know the difference between structs and classes. I do know good SQL queries and bad ones. I've used waterfall and agile practices. So the hell what? I get the feeling that you have not been a software engineer for a long time, Michael. Embrace change or perish.

benh said...

I'm a bit confused, you state that you don't want to be a 'web-guy' because there are multiple platforms and that you program at a high level?

How do you square your point in a world where your development time is locked to one platform (two, if you want to include mono), something that you stated that you wish to avoid. Also you are programing in an environment built by others, by your point, you should be developing in something sub-assembly as anything above that implies that your not bright enough.

I'm all for pointing out the problems with the web, and there are many. Though your pointing your fingers in the wrong place, and not thinking about your argument before you toss it out in the world.

callingshotgun said...

Honestly, I think you're assuming way too much about how web development works for someone who's "not a web guy". Sounds like you met a couple half-assers who learned just enough ASP.NET over the weekend to use a couple page templates and "select *" all over the damn place, and now you're assuming that's how the whole industry operates.

Web is just like desktop software. It's completely half-assable, but that doesn't mean everyone in that profession is half-assing it, and your list of things web devs "don't know" is either language dependant, or not even web relevant. It's a different skillset, and the experts in that field can probably code circles around you in scalability and (I'm sort of shocked you mentioned this one) database design/interaction, the same way you could around them for compiler design or low-level memory management.

As far as the "application developers making better engineers" thing... That's your bias again. Rather wrong if the job is interviewing for a web position :P

Anonymous said...

Ignoring the elitism and straw men for a second, is this post from 2009 or 1999?

Putting "everything is moving to the web" in quotes, like that hasn't already happened?

I look forward to tomorrow's post about how people who use IDEs instead of vi or emacs aren't real programmers either.

Yawn.

Mac said...

With your arrogance and rigid inflexibility you wouldn't last long at a dot com anyway. It's probably best for your career if you never become a 'Web Guy'.

"...each browser will behave slightly differently depending on what OS it’s running on and what browser version it is running."

This, coming from a guy who works for the company responsible for the vast majority of them? A company who insisted on making a their own crappy javascript engine, thereby fracturing any attempt at standardization.

"You just don’t have to be that smart to throw up a webpage."

I suppose that's why your using a blogging application written by Google. Because that web stuff is best left to an inferior web development team, well beneath the talents of a lofty software engineer. That web stuff isn't all the consequential anyway, who ever heard of Google anyway, am I right?

We get it, you're eating the company dogfood. You're desperately behind Google in all things web related and what better way to compensate for this inadequacy than to belittle the entire profession of web development. To marginalize us as a bunch of hacks that couldn't code their way out of a wet paper bag. Yeah, because that worked soooo well against Linux and Open Source in general.

Jackass!

L. Simon said...

Wow. Just wow.

You have obviously never worked on a serious webapp, or you are confusing web "designers" with web "developers".

I'm a fair designer, but I'm a pretty good developer. Personally, I use Python/Django for my own projects - you know, one of those environments that .NET tried to copy with MVC, because it was pulling much of the talent from the MS umbrella?

You actually said "And yet, most people seem to want to program in a limiting box called a web browser in a ‘language’ called HTML." I'm sorry, as a full-time web developer, I don't deal with HTML a whole hell of a lot. Most of my time is spent behind the scenes, making sure data is going to the right place. I have designers that can deal with that. Sure, I might *output* HTML, but it is such a trivial technology to learn I've never given it much thought. Oh yeah - and you can't "program" HTML - it's a markup language, not a programming language. No control structures involved.

As for you characterization of Javascript - well, I understand how someone with experience in only main-stream, Microsoft-supported languages could think that. There are indeed countless webmasters out there who toss in snippets of Javascript they don't understand - but it is, in reality, a powerful OO language. As previous commenters have stated, it uses the prototypical inheritance model rather than the classic model seen in most modern languages. Javascript objects can have public, private, and protected variables, just as well and Java can, if you absolutely must see it through those filters. Myself, I prefer to learn different techniques and apply each as necessary. If a project is best done in C, I'll use C. If Haskell or Erlang are the best choices, that's what I'll use. Scheme, Common Lisp, Perl, Python, Ruby, Java, Javascript - you name it, I've used it. But I guess I suck at all of them, since I'm not smart enough to do anything other than web development.

Its telling that you need a massiv IDE like Visual Studio to get anything done. I find Vim to be a much nicer alternative, especially when paired with an efficient tiling WM like ScrotWM or XMonad. But again - those things aren't part of your holy .NET, so they're garbage, right?

You've really stuck your foot in your mouth on this one - you've shown the end result of a monoculture. You know only those things which you are handed, and obviously have no desire to learn anything else. If you're indicitive of the quality of Microsoft's developers, I think I'm beginning to understand a few things.

dasil003 said...

This is a terrible attitude to take. It really just sounds like sour grapes that the web has taken off and created so many jobs for low-level people.

However to suggest that web dev is "easy" because of this and that there are no interesting problems is a tremendously ignorant attitude to take. Making these hubristic generalizations is supposed to be the realm of 21-year-old hotshot MIT grads, not a seasoned developer.

You can go infinitely deep into any paradigm of programming. So you don't like cross-browser issues. Okay, that's understandable, but you should realize that's a reasonable price to pay for true cross-platform, install-free, upgrade-free, available-anywhere software. You should also realize that javascript is an incredibly powerful and remarkably consistent cross-platform language--the incompatibilities are mostly with the DOM. I highly suggest reading Javascript: The Good Parts by Douglas Crockford to educate yourself.

If you are going to say that web programming is uninteresting you really need to also admit that all business programming is uninteresting. All OS application programming is also uninteresting. Kernel development is a little bit interesting. But really the only thing interesting is language design and pure computer science.

SamG said...

Getting extra hits on the web, particularly on the head, is not very helpful for the career either.

backdate your post to some date in 1999 and you will be ok.

SamG said...

One positive tidbit from your post is that, yes, there are people in this industry who are ignorant of basic concepts in Computer Science, compiler functionality, memory management, algorithm design, OOP/OOD principles, the list goes on.

Once you read up on web technology, you will learn that it builds on everything you cherish so much from CS.

But you have to read up, just like those ignorant "web developers" you just ranted about.

SamG said...

Some posts here suggest that few things are worth the effort, beyond compiler construction, embedded coding, C...

Career in software is so great because it offers so many options. The more you know, the more you are worth, not just in money terms - and you open additional career options with additional knowledge, understanding and insight.

What is very disturbing in your post is that you propose ignorance (or web and presumably anything but "desktop") as a way forward.

Please explain how that can "work" in software industry, anywhere.

Will said...

It's ok Michael, I understand why a Micro$oft employee thinks web programmers are a bunch of retards.

I mean, just come ON guys, look at SharePoint!

JJ said...

I don't think you can simplify web development down to just html / javascript. The reason people spend so much time debugging cross browser issues, is because they don't take time to think about / put together decent syntax. If you write good code, it doesn't break. When people do stupid stuff, they have problems. Same goes for styling. IE6 is no picnic, but it is more manageable than people think. Changing data types on the same var in js can cause problems? Don't change types. That's what will make you a better programmer. All the challenges you talk about are exactly the reasons why good web people are hard to find and valuable.

Anonymous said...

HAHA yeah. Exactly. .NET just isn't easy. Correct, that means it was made poorly. Since when does making things more complicated make it easier? Oh yeah, since Windows came out.

Anonymous said...

lol, no wonder why Microsoft produces the terrible browsers they do. They have people like you working for them.

You bash on web developers but today's web developer is commonly also a web designer, something in which you apparently know nothing about.

Anonymous said...

Micheal the raw amount of silly hatred and ranting about your post in the comments shows that you are correct. All the web developers are coming to chew down on your post :)

Great post, keep it up you aren't alone. We are just outnumbered on the internet.

applefruit said...

very interesting argument...very entertaining...

both sides are similar in their own ways...just nobody seems to respect the other side...how ignorant...

mentalpresence said...

I haven't read through all the comments, I stopped 2/3 through - by then, everything I thought was already said by someone else (I am a web developer, and share the opinion that because there is a lot of crap out there doesn't mean it's easy).

BUT - it saddens me to see the amount o people calling the author names. There is absolutely *no* reason to insult him.

Anonymous said...

This represents a specious line of thinking that's been around as long as web programming. The post isn't a contradiction, it's just not informative or interesting. If you get rid of all the pious abstractions in this business all we're really doing is solving problems. After a while patterns emerge and we use those (if we're smart) because they make sense and save time and effort. Understanding the tools we work with is just as important as any other field. Whoop-dee-frickin-do. Nothing new there.

The only prescient point to make on this topic is that bad web programmers won't be able to survive that much longer. As the industry matures and grows standards (and adopts them), hacks that don't speak the language will not make it. That's a good thing. Not because some self-involved, arrogant mook like Mike here will be happy, but because it makes all the code easier to maintain.

I would say nearly 70% of my work the past three years has been cleaning up code from incompetent 'web developers' who couldn't code their way out of a paper bag. Do I therefore think all (or even most) web developers are terrible? Of course not. I just know about these ones because I was hired to do it. The good apps don't need me.

I don't know how old Mike is, but I used to think the exact same thing about web programmers. Then I grew up. Braude is carrying the torch for the Arrogant Programmer Society that is more interested in looking clever than in helping the industry get better. These are the same scum bags that actively discourage just about anyone from getting into programming because they aren't smart enough. Programming just isn't that hard, dude. Quit acting like you invented math.

Anonymous said...

Yes, there are some really bad web developers out there, some really bad WPF and Sharepoint developers too.

No, you don't need to be a Rocket Surgeon to throw up a web page, but making a decent WebApp in an extremely hostile operating environment is a different beast.
Do you have to factor in that a percentage of your users will be actively trying to destroy your application?

Some of the worst web apps I've had to work on were put together by desktop developers (some with PhDs in CS) who just took a myopic position of “it's just html and javascript, how hard can it be?”
I was guilty of that myself - "I know c++, this stuff is soooo below me..." and, well, I made some really shitty web apps with that attitude.

If you think it's just html (btw - not a programming language, just a markup language, most webdevs know that) and javascript, and consider anything else to be not web programming, then you really haven't done anything to qualify you to pass judgement on it.

Random javascript errors get you down? Not random, deterministic. You just did it wrong.

I have interviewed and employed a lot of people with both desktop and webdev backgrounds, IME, the desktop devs struggle to make the transition to web.

But I won't call that "proof", because where I studied Maths and CS, a proof needed a little more rigour than a generalised anecdote.

So you don't wanna be a web guy? Fair enough.
Find the toolset frustrating? Also a fair call.

I find assembler frustrating, just don't like it, have held that opinion since about 1983, but I don't consider assembler programmers to be mentally deficient, just different.

It's a shame you resorted to such pubescent hubris in an attempt to validate your position.

Just because you don't like it or get it, it does not immediately follow that most people doing it are below the lofty intellectual heights you have so obviously attained.

If you don't want to do it, that is OK.

Want to launch an ill-considered ad hominem broadside against a whole industry sector that you obviously know very little about? What’s more, launch it from their backyard - Expect a little back at ya.

The interwebs will be waiting when your voice has broken.

Lightweight said...

A couple things:
We routinely do full UML analyses of web applications (built using 100% open source tools, no Microsoft anywhere - it would just slow us down and cost us money and credibility).

We all have pretty credible software engineering backgrounds (developing on C++ and other strongly typed languages before moving to web scripting languages) and we bring rigour to our web development. So do a lot of other web applications.

Regarding the dogs breakfast of web platforms you described... I think you'll find that your employer is to blame for most of it by eschewing existing standards and insisting on implementing proprietary MS-only ones (XAML, .Net, Silverlight, etc.).

For instance, if IE8 supported SVG like all the really good browsers on the web (Firefox, Safari, Opera, Chrome), we would have another platform on which to build great, innovative technologies. IE6 and IE7 have always been the primary thorn in the side of every credible web developer.

By refusing to play nicely with anyone else, your employer is responsible for the fragmentation you berate. Keep on peddlin' your .Net/Silverlight stuff... but realise that a huge proportion of developers (web and otherwise) see Microsoft as totally unnecessary. It's only going to increase due to the availability of better tools and more interesting business opportunities outside of the Microsoft monoculture.

Matt said...

Sweeping generalizations are a good way to generate web hits, but it makes for poor writing. I won't be visiting this blog again.

As one of the "web guys" who also benefitted from a CS education (and would be happy to discuss any of the buzzwords you've whipped out) I have a hard time taking you seriously. Leave the blogging and tech writing to the big kids, or make a better effort to turn out a quality article instead of flame bait next time around.

Bruno Correia said...

Michael,

1. It’s okay to feel angry at age 27, it will pass.

2. The web is a wonderful place, go to kindgirls.com and chill out a bit.

3. If you still thinking that you are really smart once you are 30, then you should apply for a job at Apple.

DCB said...

this is interesting, I agree with your comment about cross browser testing as a tedious and frustrating and not very intellectually stimulating, so much of this is bad browser standard, and a waste of money for clients and agencies (ie6)... kudos to those who have the patience to do it, I don't blame you for avoiding it. There are some tools such as firebug that help. I enjoyed the post minus the arrogance and assumption that most front end web developers don't know what they are doing.

Horus Kol said...

What a completely arrogant and ignorant position.

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.

A properly developed web application (in PHP, ASP, Python, or other) will make use of all of the same concepts and patterns as any other application developed in any other language as and when necessary.

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.

A professional web application developer will do all the same kind of process any other professional developer does.


The difference between web development and other development is that with web technologies it is much easier for amateur developers to expose themselves and their work without having to go through due process.


That said - I have seen plenty of desktop applications written in C++ that look like its been thrown together by the proverbial thousand monkeys sitting at typewriters - it's just harder for this stuff to get a large presence because the obstacles in getting a desktop application to a user vs what can be down in a browser.


And even if "everything is moving to the web" - there will always be a need for developers in C++ and other non-web development languages, as there will always be a need for server and client software. And then there will always be a need for embedded control software, etc, etc. So even if you do think that web programming is beneath you, you should always be able to find a job.


In short - get over yourself.

ericwsmith said...

I think I understand your sentiment, to be honest, I've thought the same things. However, the problem is that these days "Web Guy" isn't really the stereotype that embodies what you're trying to get across. That's because web development is pretty challenging, and has a mature and exciting ecosystem of tools. Issues with browser compatibility? Just abstract those issues away with a library like jQuery.

The stereotype I think you're describing isn't so much "Web Guy" as "Mort". The fact is, Mort exists in all domains---and that is simply about economics and will remain so until people realise that it's more expensive to write crap quickly than to write good software less quickly (or is it?).

Garth said...

Nowhere have you mentioned the challenge of providing useful and creative solutions to your customers. Is this not challenging? Are you so immersed in technology (compilers! inheritence! ooh!) that you are blind to the needs of your users? In the end, isn't that what it is supposed to all be about?

Marko M said...

I'm developer working on developing Tapestry components. Here you have to know good OOP design to develop modular/reusable components and still have to know presentation technologies (HTML/JS). So you have to know both worlds.
But I wouldn't agree that JS is trivial. It has some advanced features which only few server-side languages support: anonymous functions, dynamic prototyping... This two worlds should work together and you can't say that one of them is less important.. Maybe that's your ignorance talking from inside :)

Marko M said...

Garth, I fully agree with you! The hardest challenge in any kind of development is to do a system implementation due to customer needs. And the needs of the customer is the hardest to guess for Web applications. Requires a lot of thinking :)

Anonymous said...

You are a giant tool.

Oliver said...

You are so wrong in so many ways. I can not be bothered to show you them. Especially since all the previous posters probably have.

Anonymous said...

Web site development may be easy, but web application development is just as challenging as any other form of development or engineering. Building a professional web application requires all of the skills you mentioned - inheritance, concurrency, compiling, etc. FYI - in case you don't know, i a web application has more backend code - like java or c# then it does html or javascript. Ever heard of MVC? The web is just the view portion.

Anonymous said...

Mr. Braude: please DO find another profession.

The rest of us (programmers, be it web programmers or not) will be more than happy to not see your name associated with our profession.

Anonymous said...

The only problem that i can see with the web is designing stuff. That is the part that is hard I like the web not only in browsers, because the thing that i find fun about the internet is getting the right data to be sent places so you can make really cool internet things. it is probably hard to make a useful kind of program that you are talking about without using the internet. Any browser that people will ever use can render plain text - and when that is useful enough, people who like design, the people who do web because is is a platform for making things look nice, can use that as an api sort of thing. Javascript, CSS, and HTML (all of which i don't do much with because i like the development part of the web but at least it is important to know) are not the only languages that let you work with the web, there are also the server-side languages and stuff like that that don't need to be compatible with multiple browsers. The W3C is making web development easier and more like the kind of thing you want to do, and even without them, you can make your own "network" sort of of computers that exchange information in your way. This can be useful in many cases. Why do you think .NET is named .NET? Actually I don't know but it probably has something to do with the internet.

Tore said...

Flamewars rule. It all takes me back to such nice memories from the "Sega vs Nintendo"-flame, "Duke Nukem vs Doom"-flame and "Mac vs PC"-flame.

Nowadays its just "you suck" and "and you're gay" on sites like Youtube. That is not even fun to read.
People just don't hate each others opinions in the same way as they used to. With looong boooring text about stuff they don't like just because they prefer something else.
Is internet going to fast today? I think so. The youth of today just don't have what it takes when discussing totaly non-important-stuff via electronic message boards.

Anonymous said...

I don't believe we will ever be able to deliver the experience we all crave because we will never get every browser maker and every operating system vendor and every device to agree on a technology that is suitable to deliver that experience.

I think you mean you wont get others to follow your proprietary M$ technologys.. It's microsoft that never agrees to standards, and as a result they fall behind.

Your view is very narrow. Not all web developers are bad, but as someone had said before, web development is more immediately visible to users than desktop development, so obviously there will seem to be more "bad developers". There are many great complex web applications, just look at google maps.

I'm also going to be ignorant and say, M$ is not innovative, they have a lot of catching up to do. Are they still using a 20 year old file system for windows7? Look at google docs and mobile me they have had excellent online email clients, photo management, and google docs has had a word processor, spreadsheet and presentation software online for years now. M$ the leader in office software is only developing theirs now..

Web development and desktop development languages solve different problems and at the minute yes JavaScript will not be able to pull off a photoshop application now, but when its needed JavaScript will evolve to cater for this. It's evolving as we speak, with worker threads, canvas, O3D and OGG and OGV. These will be in all major browsers in the future; and a while after that IE might even implement these standards into their heap of **** IE, if you're lucky. As for desktop development, it will always be needed to run our mobile phones, OS and critical systems.

It's as simple as this, you need to open your eyes and see that web development will have a lot more focus in the future. Companies who don't embrace this will fall behind. I'm happy to leave people like you who are stuck in their M$ ways behind.

The future is open and free, just like the web.

Anonymous said...

lol, get out of your cave dude. Web programming is the future and javascript is a lot more powerful than you can ever imagine.

Mauricio said...
This post has been removed by the author.
Dave Peck said...
This post has been removed by the author.
Fred said...

I agree with your sentiments, until you said it's not a challenging environment for you. Of course it's challenging. It's challenging because, as you said, there are four browsers, two (actually two and seven halves) operating systems and the myriad mobile browsers. If it's not challenging for you, well... What the HELL are you doing still working for someone else?

I don't think for one second that "everything" will go web-based. I still enjoy my stand-alone games and other software. Web is just an augmentation of older systems, just as personal computing augmented, but did not replace, network systems and dumb terminals. It's an evolution.

Just as bacteria were not replaced by multi-cellular organisms, dumb terminals, network software and stand-alone software will not be replaced by the web. Innovation will follow the innovative people, not the popularly sexy.

John said...

As much as I'd like to slam this guy for being another snob working at Microsoft, what he says is true. All you have to do is interview people that claim to be web developers and you'll quickly learn that 9 out of 10 of them don't even understand the basics of the code they write.

These are developers that claim to know PHP, Rails, jQuery, etc. when they don't even know how these languages/frameworks/libraries work.

The web has its challenges but that is because of idiots. If smarter people were involved there would actually be *standards*, and browsers would be consistent. In addition developers wouldn't be praising and promoting shitty, poorly designed languages like PHP and JavaScript.

I'm on no one's side after all microsoft's IE team has the biggest bunch of idiots to begin with. The web is highly dynamic but will always be slow to make any progress: ECMAScript and CSS3 specs are perfect examples of this.

JonR said...

this post is dreck. you must be like 90 years old or something. and another thing: isn't the money small these days?

Firefly said...

Programming is easy, web or not. That's a fact. Anyone with a logical mindset can write code. Design on the other hand is much harder.

Roridge said...

100% agree with Firefly... any monkey can write any code, skill is in design and reducing the technical debt.

The implementation isn't and shouldn't be the primary observation.

For this reason I will never be a "Web Guy" or "Code Monkey".

Anonymous said...

VB

Anonymous said...

I wish I could get my time back... The time I wasted reading this pathetic hateful good for nothing piece of shit article.

Derek Martin said...

You have strong-typing, but I don't know if that's a pro or a con. I like my duck-typing.

I use PHP.
I use Eclipse as my IDE.
I use Firebug to debug my javascript, but I could be using the more-feature-rich Venkman.
I use xdebug and have used Zend Debugger, to set breakpoints and debug my PHP. Both give full stack traces.
I use all of PHP5's object-oriented features, including class inheritance, interfaces, abstract classes, finalizers, constructors, destructors, pass-by-value (php4), and pass-by-reference (php5). I use factories & polymorphism, and observers, and lots of other patterns. Yes, I even write things to disk (?).

I build my software with a port of Ant, called Phing. I'm starting to do Continuous Integration with a port of CruiseControl, called phpUnderControl. I write unit tests with PhpUnit; part of the xUnit family. I write javascript using Prototype, or jQuery, abstracting away many differences between browsers.

I have to worry about resource locking, transactions, scaling the front-end, scaling the back-end, caching, query performance, APIs, and so much more.

Being in a small start-up, I have to do a little bit of everything. I don't have one solidly defined job role. I run the daily scrum (yes, we use agile). I do code reviews. I architect code solutions. I've written requirements documents & functional specs (but not as much since going agile) & made mock-ups.

I haven't had to do anything in 3D yet, but just like Quake Online, I certainly could.

It’s a challenging place to be. There’s no limit to what we can do. And yet, some people seem to want to program in a platform-dependent box called an operating system.

But then, that’s just it, isn’t it? The reason some people want to program for the certain platforms is that they’re not able to juggle the diversity of skills required to work on the web.

They don’t understand replication, sharding, or HTTP requests & responses. They haven’t got a clue why I’d use Nginx instead of Apache. They also know nothing about web standards, GettingReal (37signals), or Power Laws (Shirkey), collective intelligence (Beighley), and they have NO IDEA how good it feels to be able to ship any time.

caseyjenks said...
This post has been removed by the author.
nassrat said...

You seriously confused web development, with script kiddies. There is real software development on the web, you just have to find the right work.

Also what's 3D inheritance, are you inventing terms now ?!?

martha said...

I recently came accross your blog and have been reading along. I thought I would leave my first comment. I dont know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.


Susan

http://3128proxy.com

Matt said...

Making such a stark contrast between web development and "other" development is really not a good call. The singularity is near.

Also, the fact that a profession has a lower barrier to entry does not make it less important. You give a long list of technical terms that web people may not know, but why should they? Those things are not always necessary to create a compelling experience.

You're obviously very irritated at the web in general for whatever reason, but please, don't resort to making attacks on people's intelligence. You are really just exposing your own ignorance.

Anonymous said...

I really want to thank a friend for waking me up today with this article. I wonder how could I missed this before..

no wonder why the warning next to your presentation is there. you have no Idea what you are talking about.

its impressive to see a programmer talk that way, or maybe its just a way to attract attention.

if it wasnt for the countless programmers doing fine work on web technologies you wouldnt have the chance send your "opinion" to millions of people, or maybe you want to explain why MySpace,Twitter, HI5 and other social networking sites are the most used tools in the entire world.

One thing you are right about is that "this is just your opinion", and I agree, dont be a "Web Guy" you dont have what it takes to take it to the next level.. like some other guys did.

Oscar.

knowbody said...

You make some good points.

I think you may end up becoming a 'web guy' yourself though, just not in the pure HTML/JavaScript fashion you describe. Silverlight (or some platform neutral clone of it) is the future of web programming. That said, there will always be a need for systems programmers because SAS requires servers and at least minimal OSes on the client. This will never change regardless of how hot web programming becomes.

Anonymous said...

Web dev is easy. Scaling web dev is a bitch.

Michael J. Braude said...

I posted a response to a lot of these criticisms on the webpage, specifically Jeff Atwood's:

http://michaelbraude.blogspot.com/2009/08/re-all-programming-is-web-programming.html

senderista said...

Please interview at Amazon and see if the SDE bar is really lower there than at MS (hint: I've interviewed at both places). Server-side programming at Web scale is vastly more intellectually demanding and CS-oriented than anything you might do on the desktop.

Dr Loser said...

Well, I've got 57 comments on my post according to gmail.

I've read through them all. They're about as much brain food as baked beans.

Let me iterate: despite the theme of the OP, which is that the man doesn't have the slightest interest in becoming a Master of the Web (or it might be bestiality on film, for all any commentators noticed), the big problem we face is not Web vs Desktop, but blogs.

Blogs are OK, I suppose, but in general they're insanely uncontrolled. Every hunched-up freak out there makes a comment without even reading the hundred comments above.

You can write stupid code in C++/C#/Haskell.

The Web gives you the perfect framework to write stupid code in almost anything. It's to do with the stateless foundation; the lack of anything reasonably resembling standards; and this weird concept of "internet time," which has produced some of the more insane dingbat ideas since Charles VI of France was convinced that he was made of glass...

But even the Web is nowhere near to being the ultimate realm of drivelling idiocy. Has anybody actually read any of the nonsense above? It's illiterate and partially insane. Good god, this stuff wouldn't pass an O-Level in English Language -- even in 2009.

Responses to blogs are the new route to Hell. And Hell, as I'm sure y'all know, is defined by Jean-Paul Sartre as "other people."

Lucky the brain-fried French bastard died before the Web started, isn't it?

Anonymous said...

You really ticked off a lot of people here :). It is arrogant and ignorant, but at the core of the matter you are correct. It doesn't have to do with the web or desktop, the fact is that most people that consider themselves programmers/developers (even designers) are below average (at best).

All the posters that say "programming is easy" I urge you to pick up a book on software engineering or software architecture and then ask yourself are you as good as you think you are?

The web comes with its challenges and can create a better all-rounder out of you, but because you get work from clients or work for a web firm, it doesn't mean you are doing things correctly. The average client just want to see it work, it doesn't mean the code you wrote isn't verbose, inefficient, unmaintainable, prone to error, and just crappy overall.

Most so-called web developers just learn some syntax and think they know all they need to know. Well you have a LOT more to learn.

The easiest way to filter out the noobs is to give them a big project to work on then try making a change and you'll see how idiotic the code is.

Anyone can be a "web guy" for all I care. If you want to software engineer, professional designer or professional web developer then at least start with best practices, and learn how to write code properly FIRST. As for the inconsistencies I agree with John, idiotic noobs are in control of the standards so what do you expect.

Dr Loser said...

"You really ticked off a lot of people here :). It is arrogant and ignorant, but at the core of the matter you are correct."

Another Anonymous fool heard from.

To what does "It" refer?
What does "arrogant" mean? And to whom does this cretin impute arrogance?

Ditto "ignorance."

What, we all have to go to a Father Confessor before we're humble enough to enter some freaky SAT test to prove that we're not "ignorant," just "drilled to respond conventionally?"

Piss off, you tiny little Prussian moron.

Nice to know that Michael is, at the core of the matter, correct, though.

Anonymous said...

old vs new, youth vs old age, we fear what we dont understand, etc etc.

Aleksey said...

If it was possible to measure how many functionality points any particular piece of code has and compare productivity of those who are so proud with their multithreaded OOP development in C++/C# and those who develop UI in HTML/JavaScript/CSS, web guys would probably be 10 times more efficient.

The problem is that functional complexity can never be measured and C#/OOP guys will always claim that their backend multithreaded stuff is more complicated than any frontend. Frontend guys are more comparable between each other because users can easily tell which UI is better (more convenient). The only way to compare backend guys is to have them do same task, have them fix all bugs and measure total completion time, which is rarely done in production because it's expensive. Since backend is usually done in C#/.Net instead of JavaScript/HTML and frontend is the opposite, this conversation is probably not C#/.Net vs JavaScript/HTML, but rather complexity of backend vs complexity of frontend.

The reason why entry into web development is so easy is due to relatively good design of web technologies. The reason why entry into C#/OOP related platform is hard - due to bad design of C# language, .Net framework and OOP pattern.

Shallow class inheritance of OOP prevents C++/C#,... people from organizing code efficiently and will die as weak pattern in technology evolution.

Web brought much better patterns, which would succeed if applied to backend.

Microsoft's luxury to disregard standards is one strong advantage over all other technologies. Is Microsoft smart enough to use it to develop something valuable for it's own advantage ? Who knows. C# got some improvements recently, but not even close to where it should be and could be.

Anonymous said...

Love it! so true. Good post :)

Sir Psycho said...

I agree somewhat. I used to be a full blown database/backend developer.

Ever since I moved to the web, programming skills have gotten very rusty for the reasons you've pointed out.

Although programming for the web is fun so I can live with that.

Anonymous said...

ROFL.. looks like you're a web guy now!

javasensei said...

This is the most STUPID post I have ever read. "Throw a webpage?" "They don't know the difference between C++ structures and a class?"... Dude, if you are planning to write about something, please please please first get some time to really know about the subject. I can see that you don't even know the difference between web pages and web applications, mr. superstar.
I pity the fool who reads this blog.

Anonymous said...

Great post, I completely agree. For the most part, "web guys" are fairly bottom of the barrel in terms of programming aptitude. The humorous part is that most are ignorant to the larger world of software development. Few seem to know about design patterns, data structures, big-o notation--basic concepts that are fundamental to programming. The problem isn't lack of ability among "web guys," it's that unfortunate people (like myself), who are educated in computer science, but happen to develop for the web, are grouped into the same category. It's degrading.

Anonymous said...

Lol at all the NERD RAGE!!!

Andrew said...

This is easily the most immature blog post I've read ridiculing the simple and barbaric ways of web developers, and that's saying a lot, because there are many.

I don't understand why you feel that nobody is watching or appreciating the things that are going on in the .NET realm. .NET is one of the most widely used development platforms in existence and continues to grow. Not to mention, much of the web app craze runs on the .NET platform!

I don't know if you've done any web development recently, but your assumption that supporting four different browsers is like supporting four separate platforms is absolutely absurd. Safari and Opera are neck and neck for standards compliance, and Firefox isn't too far off. Supporting these three browser requires little extra effort. However, if you throw jQuery or another JavaScript framework into the works, dealing with JavaScript inconsistencies between browsers is the last thing from your mind.

Supporting mobile devices on an Ajax or Flash interface is questionable. There is arguably little need to ever do so. Why would Photoshop's online editor need to run on your cell phone? Also, most websites output a simple XHTML version of the site for mobile phones, which works on almost all. You don't have to support each phone individually.

Your assertion that debugging and development tools for the web are non-existent or primitive is simply untruthful. If you're using alert() or console.log() to track down bugs, you're doing so out of ignorance. Firebug has exception reporting, error logging, breakpoints, watch statements, and allows you to examine the state of any object. WebKit has Drosera, Opera has Dragonfly, and even IE has the Developer Toolbar and MS Script debugger.

I would like you to explain to me how compilers, object-oriented programming languages, debuggers, strong-typing, inheritance, and system resources make for a more complicated experience than web development, considering web apps do ALL OF THESE THINGS. You have to understand all of these concepts to do web app development--PHP is the most widely used web language and supports everything you mentioned short of being compiled, and Java has them all.

I would also like for you to explain to me how interfaces, abstract classes, virtual methods, pointers, references, garbage collection, finalizers, passing by reference vs passing by value, destructors, or understanding structs and classes makes desktop app developers any more competent since web development encompasses all of the same things. First and foremost, JavaScript is more object-oriented than C++. It doesn't implement classical OOP, but prototypal OO, which is in many regards a more intuitive object-oriented model than classical OOP in a scripting environment. All web development languages run in a virtual machine with garbage collection. The heap is an abstraction. Pointers are useless. C# doesn't even have pointers. JavaScript's array objects are also hashes, simulating enums and structs.

What lack of process? MVC is the biggest buzz word in web app development right now. Your own employer just released ASP.NET MVC a few months back. Ruby on Rails is entirely geared around MVC, DRY, and RAD development.

If it is your assumption that web app development only goes as deep as HTML, then you have no place to be insulting the intelligence of web app developers, since you are clearly out of your element and clearly do not know what you're talking about. I would write this post off as bigotry, but it's a little more serious than that--this is pure misinformation.

Anonymous said...

This conversation brought to you based on technologies conceived by a bunch of "web guys".

ricardo said...

You have some serious issues going.

Individuals that, such as yourself, call attention on themselves by starting this flame wars deeply annoy me.

Although you have a very nice disclaimer "The opinions and views expressed on my blog are mine and have nothing to do with my employer." it seems to me now pretty obvious that the reason your company is losing the web race on his own and desperately to seeks acquisition/association to stay on the race. It is due to employing developers such as the square minded individual you introduced to us all in this post. Hope you feel proud by it.

I for one, know good and bad developers, working on both web and desktop environments. Obviously.

And just to let you know, web development is far from being limited to just HTML/Javascript and replying to your comment, not limited to ASP.NET either (should I even bother considering that?!).

Take a break, seriously, go outside.

Joel said...

No wonder most software (web-based or otherwise) are crap...the really good developers (web or otherwise) are too busy arguing on *this* blog, leaving software development (web-based or otherwise) to the unwashed masses.

Broham said...

ass hat. Move out of your mom's basement and get a girlfriend.

Anonymous said...

You don't know web-dev. It's the only answer to this post.

Anonymous said...

Thank you for this blog entry. Now I know to avoid it in the future :)

Jeff said...

Hey!!

Your website sucks. I guess that's reflective of your programming skills.

wahhwahwahwa

Anonymous said...

so what you are saying is that a lot of great web applications such as google mail, maps and blogger that you are using was written by dumb people?