All Programming is Web Programming

I didn’t like this post at all…

Mr. Atwood boiled the argument down to “What’s the least amount of work for the most amount of profit?” The obvious and easy answer is “web programming” but that is entirely the wrong question…

Around 98% of the new CPUs produced each year are embedded.
(http://www.embedded-europe.com/218900395;jsessionid=45XNWWO2ZVKRDQE1GHPCKHWATMY32JVN?pgno=2)

Most of those don’t have an internet connection (ie your engine management system in your car).

“As far as I’m concerned, the Internet is responsible for a collective dumbing down of our intelligence.”

So close, and yet so far.

I guess it hadn’t occurred to him that this is the biggest upskilling the world has ever seen.

Sure professional programmers may skoff at some of the code being deployed via the web, but these new “programmers” using high level languanges and interfaces are ordinary people who with no formal training are learning to fetch, find, store, manipulate, regurgitate, publish… information and ideas on a scale, and with a level of power, the world has never seen.

The web and it’s users get smarter every day, compounding.

Yeah, well. I agree. A good web application imposes a small number of documents, of readable size, and no build or deployment steps between change and availability.

go fuck urself.

Everything-on-the-web is a fad. It is passing already. My organisation spent five years recently migrating everytging they could to use web interfaces; now it seems we’re going to spend the next five migrating it all back to desktop apps again.

Modular, platform-independent, network-based desktop apps driven off multiple data sources in our intracloud, but desktop apps nonetheless, with no HTML or Javascript in sight.

He’s made an underlying point that, in my experience, seems to be true. This point gets missed though because everyone is throwing this baby out with the bath water.

He is wrong to be in denial that the world has moved/is moving to web apps. Wep apps are here to stay.

The underlying point he makes is an observation I’ve found to be true. It’s that most of the people I have worked with who have become web ‘programmers’ (a term I use very loosely) because they learnt asp, php or some other dynamically typed language might know roughly what inheritance or polymophism are and will proudly boast that their ‘insert latest flavor of the month dynamically typed language’ supports it tend to avoid using it like the plague with lines like “oooh, inheritance will just make the code complicated” or “you OO puritans are always making things complicated” - it’s like they believe that bastions of switch statements are soooo much better and result in more maintainable code - wrong!

In my experience many of these people are not the patient, engineering oriented programmers I worked with in the 90s who are prepared to sit back and think through a good ‘design’ before ‘constructing’ it. IN MY EXPERIENCE (I stress I haven’t got general statistics on this stuff - these are just MY observations) most of the dynamic language devotees tend to be the ‘quick, quick, TYPE in the program’ people and because there’s no pesky type checking to get in the way of them starting the execution of their program they feel like they’re having major success. Of course we all know that impatient people would also have a firm commitment to building full coverage test suite to pick up any errors not picked up the lack of compile time type checking don’t we =)

The engineering approach is always a ‘design’ and ‘construction’ process whereas the ‘new to programming’ dudes I’ve seen seem to see programming as less of a ‘design’ and ‘construction’ process but more of a process whose essence is really all about ‘typing’ …

I think this is why we hear the continual meaningless arguments about ‘typing’ efficiency of certain languages over others: “I can open a file in 3 lines of code!”. Heck, if typing is your critical path in programming you’ve got major problems because it indicates that you’ve left out a whole lot of thinking time - which is a bazillion percent more important.

The same ‘typing’ obsession results in arguments about which language can process strings more efficiently - whoooo arhh! If most of you’re code is processing strings then you’re probably spending your coding life if pain, writing SQL and processing the returned results sets by hand - go and get yourself a freaking ORM for heaven’s sake. Writing SQL to pull data from a database instead of objects is soooo 2006. I work on a powerful enterprise application in Java with over 1000 classes and the string manipulation in that would be 0.5% of the code, if that. What’s going on that people need to process so many strings? Are they parsing the HTTP request parameters themselves? Are they tending to take ‘avoidance of typing’ to such extremes that most of their data attributes are stored as strings also? Maybe I’m missing something but I just bring myself to being obsessed by string manipulation because it’s never feature high in my daily work. I spend most of my time working on the domain model/architecture and how the UI binds to in via MVC. Apart from setters/getters on String based attributes I hardly ever need to touch a string. Maybe code used to verify the format of user entered data in the UI? - mostly performed by libraries.

Another tendency I’ve noticed in the anti traditional, anti statically typed language programmers is an avoidance of using any code that they didn’t write themselves: eg., “Hey, I need something to read an XML file - I know, I can write my own parser in PHP because PHP is soooo good at string manipulation. If I use a preexisting, already tested and ‘used by 1000s of people’ DOM parser I might have to spend time reading some documentation - as an impatient person who is frustrated by lack of perceived progress - that doesn’t suit me - plus it’s an insult to my dignity to use someone else’s code when I’m so capable of writing my own”

In one case I was working with a guy and we needed some new functionality and before he’d even considered that it might be available in an existing open source library he started writing his own. On the other hand I went and googled it, downloaded a .jar file, spent 15 minutes reading the doco and had the feature implemented in another 5 minutes.

The mud thrown at Java and other statically typed languages as a source of code bloat is not sticking anymore. It’s mentalities, attitudes, lack of experience and the complete avoidance of an engineering approach towards what used to be called ‘software engineering’ that causes code bloat - and FROM OBSERVATIONS OF MY OWN EXPERIENCE these attributes are most common among the PHP, Javascript, Perl and ASP programmers that I have worked. On the other hand most of the Java and C++ programmers I have worked with tend to embrace the engineering approach to ‘Software Engineering’ - how quaint =]

I’d even go so far as to say that the tendency, from my experience, of the dynamically typed language guys who, for whatever reason, avoid inheritance, polymorphism etc., are avoiding the very crucial features of OO that help fight code bloat. Most of the ones I’ve seen in my experience have a love affair with Ctrl+C/Ctrl+V and will fight tooth and nail against a refactor after I point out an opportunity for some common functionality to be ‘debloated’ by moving it from several places into one place - in a method of a super class. Of course they usually don’t do it - but then months later, they get frustrated when they think they’ve fixed a bug only to have a tester or customer complain about it again. Yeah, of course they fixed it - but only in one instance of their copy/paste code pollution. Doing the refactor would have meant they would have only needed to fix it in one place but “I told you so” is never received well by the impatient types.

One of the disadvantages of refactoring when using a dynamically typed language is the fact that you can get a “perfectly broken” application up and running in no time - which is an exceptionally attractive goal for the impatient mind but in truth, horribly delusional.

On the other hand - when I refactor (which I do often and Mercilessly - according to my XP bible!) in Java and C++ the compiler finds things that I’ve inadvertently ‘missed’ and quite often it points out things EARLY that make me realize that my chosen path of changing the architecture may not work or is not the best option.

When that happens to a software engineer he’s high fivin his statically typed compiler and thanking it for finding out the problem NOW rather than a few more hours into the refactor or a few days into testing, or worse via a customer bug report.

Were an impatient person to use a statically type language and be presented with a compile time error they would, instead of high fivin, become frustrated and curse the compiler - “Damn compiler, getting in the way of my progress once again” =]

So I do fully feel the Michael’s pain but it’s misdirected if he assumes that all web development takes place by people who don’t practice sound software engineering principles using object oriented, statically typed languages. Truth is - he’s right in saying that a lot of websites are thrown together newcomers to programming - but not all of them are!

One of my customers got a ‘web design shop’ to attempt to build a majorly sophisticated enterprise system. I had to laugh when the customer told me and I offered our services but we were judged by the customer to be ‘too small’. The web design company had a big fancy office and all the web ‘programmers’ wore really cool, ‘in’ fashion clothing in all the right ‘in’ colors and they had really ‘in’ hair cuts too. They convinced the customer that it was just a matter of coming up with an SQL schema and then plonking a few PHP pages over the top of it and so the customer proceeded on a ‘pay by the hour’ basis - much to my shock… well you know where this is going don’t you. The web guys that Michael refers to went to town on it. I was maintaining the ‘legacy’ system so I was keen to know when the new system would take over… one month, two months, six months, twelve months, 18 months… yeah bang on 2 years and almost $200K later my customer canned it… another failed web project entrusted to web designers who think they are programmers… and so another 6 months down the track the customer has us adding new features to a legacy system that was meant to be killed off 2 years ago.

So Michael, web apps are here and the same software engineering approaches that worked in the desktop app world and the embedded app world need to be applied with equal vigor in the new world of web app development - just ask any good Java programmer =)

Sorry Jeff, love ya’, but I can’t agree with you here. I pretty much agree with your first quote; “Web development is not hard”. That doesn’t mean that it is easy necessarily, but it doesn’t challenge me in the way I am used to being challenged in my Systems Engineering position. Sorry Jeff, but all of the guys in my group could build SO. About 1 or two of the guys in my companies web development division is capable of doing what our group does.

…ok, so I wish I could edit the grammatical errors out of that last post, but I can’t :slight_smile:

I have to agree with blinko on the point that all these “web shops” are just good for putting together “websites”–I have had personal experience with this. Give them a reasonably sized “web application” and you soon realize that they are not ready for writing software. In fact, people that don’t know the difference between a website and a web application are probably the ones writing a lot of the nonsense above in the comments.

Blinko, I disagree with your statement that berates developers that decide to write their own software is a bit too general. There are lots of perfectly capable engineers that may decide to “roll their own”. It’s like research sometimes you have to DIY to discover the inherent flaws in other libraries or frameworks. You will probably learn more in the process than reading that fancy documentation. I am not saying to write everything yourself but engineers should be more willing to engineer than to being a script kiddie.

I am not against web application and it’s not like that all web application are crappy…It needs lots of works to make a better web application. Designing may be easy and anybody can do it. If one person know HTML and Photoshop, he can easily design the front end.

If everyhting will be run in a browser, what will you do with the browser itself ? Someone has to write that, or you will have to create a WEB os, which you can RUN without anything installed on a computer.

Desktop applications remain, but the platform underneath changes. Google gears, html persistence etc. is the new platform for desktop applications. And yes, they are delivered by the web, but they are desktop again.

i agree to others and its due to its complexity.

i agree to the above comments and web application sucks and more complex

I gotta chime in here. Did anyone bother to read the actual FULL article?

Yo Jeff, what’s up, you going mainstream media on us by cutting out a very relevant paragraph of a quote to support your premise? I am sure someone else noticed this, but you left out “OK, so that’s not an entirely fair accusation to make.” Let’s not get all misrepresenting now, mmm’kay?

What Michael says is fairly correct. I would simplify it: real engineers are better programmers/developers/software engineers (whatever you title you end up with) than wannabees who went to school for (GASP!) MIS in the 90’s cause “hey! they’ll be tons of jobs and the pay is good!”

I can say we all, who read this blog, and highly respect Jeff even if he’s wrong sometimes, have seen the code and designs and systems built by “those” people Michael is talking about.

Even if you don’t have an EE or CS degree, most A-grade developers have that engineer bent to them. You know, the ones who spent their youth taking everything apart to see how it worked, and then (usually) putting it back together, wherein it also worked…mostly.

Someone tell me I am wrong?

What Michael says is fairly correct. I would simplify it:
real engineers are better programmers/developers/software engineers (whatever you title you end up with)
than wannabees who went to school for (GASP!) MIS in the 90’s cause
“hey! they’ll be tons of jobs and the pay is good!”

… ROTFL, I have met dunno how many “real engineers” with zero knowledge about what they were paid for … just be realistic: crap programmers have always existed, more jobs about programming we have, more this assumption is true.

I have done everything Michael said I should not have done or I should not know, and for 10 years, but I have to agree about those people pretending to define their self “developers” without even classic C basis, or basic knowledge about memory management, pointers, struts or classes, etc etc … too many wannabe, true, but it is not just web development.

In every sector there are good and bad worker, with a post like that Michael seems to define his-self a good programmer, isn’t it? I am sure there are better programmers able to call him nooob or “not that good”.

Regards

Should all programming be web programming? Of course not. There will continue to be important exceptions and classes of software that have nothing to do with the web. But these are minority and specialty applications. Important niches, to be sure, but niches nonetheless.

The vast majority of software is for applications that get no where near the web. Server side systems, business specific applications, embedded software, etc, etc.

A simple shopping cart does not need the bag of tools the OP mentions. The back end for a browser-exposed real time trading system likely will benefit from many of these techniques. Sounds like the OP would find his comfort zone more in writing back ends for larger systems than in writing complete small apps. Nothing wrong with that – although it doesn’t seem a compelling reason to complain about the existence of smaller apps.

I think this blog post about a desktop app developer changing to web apps, and why, support Jeffs assertions pretty well: http://www.kalzumeus.com/2009/09/05/desktop-aps-versus-web-apps/