Ask HN: what still sucks about web development?
Anything from framework features, editors, technologies, hosting, deployment, standards, conventions, whatever. What are the biggest obstacles preventing you from easily writing modern web applications? And if you have and ideas on how to fix it, I'd be interested in that as well.
I'm less interested in non-technical issues (dealing with clients, etc.) Two words: Internet. Explorer. The number of man-hours wasted on working around IE bugs probably counts in the billions. Are these bugs fairly common? Is there no way of writing an IE "spell checker" - meaning that you throw code at it and it makes it IE compatible? There are these days. Tools like jQuery and CSS Reset help normalize some issues, but some persist. See: IE haslayout bug I think Dreamweaver being pushed about as a leading web development tool is harmful. It's actually very bad for what needs to be done and almost always contributes to bad code. The best IDE for frontend web development should be a text editor with syntax highlighting, block-start/end matching and a few hotkeys to speed up the writing of HTML (ZEN Coding anyone?). The design view is very harmful and the code editor is not much better. No matter where ever you untick "Use tabs" or similar, Dreamweaver will still use tabs. It really ruins code. Another thing is many web developers will use meaningless class/id names and fall back to generic terms such as "floatLeft", which is pretty bad. Although there is SASS, this isn't often available in a lot of projects so you do often have to repeat yourself a lot in CSS... unless you resort to the above. Which is worse? That's left as an exercise. Then there's people who still use HTML that went stale over ten years ago just to do a quick job. Yeah, you save time by writing <i> by a) writing less characters and b) not having to define any potential CSS rules but then it loses all meaning. That is, unless, you give it meaning which then makes it redundant since a better alternative could have been used. Another thing is how you're forced to use a lot of divs to come up with a good pure HTML/CSS solution to something. Although there is now HTML5, it's obviously not supported by the older browsers which a good percentage of the Internet still uses. Rant over. Layout. The legacy layout model and the cryptic CSS work arounds we employ to get it to work are terrible. Absolutely. And are there any significant efforts or new ideas for dealing with this problem? I'm pretty sure your question is squarely aimed at experienced developers, but I would like to offer a perspective from someone coming into web development from a completely different industry (film editing). I decided to abandon my career as a film editor because I found my interests and ambitions leaning more toward interactive media and web development. Having left editing at a time when video standards were all over the board (it wasn't uncommon to receive projects shot over 10 different formats), it wasn't all that surprising to see that web development is in a similar state of frenzy. The sheer number of languages/frameworks/libraries/etc… is enough to make a person's head spin off. Honestly, being quite new, I don't fully understand how you experienced guys keep up. My own personal solution was to just choose a language (semi-arbitrarily) and dig in. So my point in all this, from a purely newbie standpoint is that MY biggest frustration so far has been the sheer number of technologies to choose from. I'm definitely not lost on the idea that this is a positive thing from the standpoint of innovation. Like most other industries, the REALLY good ideas tend to float to the top. But you asked for frustrating things, and navigating through all the different options has been MY most daunting challenge thus far from a technical standpoint. Choosing something and digging in I think applies at all experience levels. The processing of choosing changes with experience. I've noticed that. The more I get into web development and the more I learn, the better I am at recognizing the tools that apply to my needs. When you start fresh in any industry, the biggest challenge is trying to find the tools that best suit you. Sometimes those tools are not the ones that everyone is fawning over. I'm still new enough to not really know the subtle distinctions, but I agree that the more knowledgeable you become, the more critical you become of the tools you choose. I do feel that it's a difficult time for people coming into this industry with little background in programming, but at the same time I also recognize that the contributions of experienced programmers are making programming more assessable than it has ever been in the past. In some ways, that's a positive thing. At the same time it also means that so many people entering the field will never come to understand the core concepts that make programming an art. The biggest problem is the technology stack is too tall. With Ruby on Rails adding Jquery, Coffeescript, SASS, and SCSS it's exposing some obvious shortcomings in today's web frameworks. The high level problem is that web developers are trying to do things (state) in web browsers over a protocol (HTTP) that was not designed for it. Every server-side web framework is always going to be Frankenstein-ish like RoR has become. Meta-frameworks may start to become necessary. There's a few out there like Haxe, and GWT is sorta one. Websockets may also start to become a more widely used alternative to Ajax. HTML and JS are going to be a problem for a while, but can maybe be abstracted almost completely. "Ruby on Rails adding Jquery, Coffeescript, SASS, and SCSS" Eh? None of those things that you listed is for emulating state over HTTP. In any case, Rails is supposed to be a "tall" stack – it's supposed to be a highly opinionated framework. If you want to attack stateful apps in browsers, aren't Sproutcore/Cappuccino better targets? Using Jquery to do ajax requests and updating part of a web page is emulatimg state over http. Coffeescript, SASS/SCSS are just examples of making the Rails stack even taller. I don't have any experience with Sproutcore or Cappuccino but both look like clientside-only frameworks and would only extend the state & stack problems that I already dislike. "Using Jquery to do ajax requests and updating part of a web page is emulating state over http." Only if you use it that way. Also, Sproutcore/Cappuccino are not add-ons to Rails. They're stand-alone client-side frameworks. What is the standard framework for abstracting most of the browser-specific behaviors (like those IEx hacks) away? I'm not even talking about dynamic behaviors; just simple standard HTML / CSS jazz. In 2011 I would hope there would be a simple way of expressing my desires that does not involve slogging through books and blogs to figure out how to hack a few small bits together so that some asinine browser can render a page in the same way as a newer version of said browser (I've seen this with IE, FF, and Chrome) Perhaps because I deal with it much less than the other stuff, but SSL. Getting it set up, being tied to one IP (until all older browsers have died) and to a lesser extent the fact that "trustworthy" certs still cost so much and the racket with greening. Other than that overflow on iframes in Chrome (big hassle today!), SOAP(!!) and the general lack of a decent editor/IDE that doesn't have at least one infuriating feature. Aside from IE like someone mentioned I would have to say DreamWeaver (answering the question in the title not the one you posted in your post) I have this job for the summer recoding sites that were built using DreamWeaver. They took Photoshop files, sliced large chunks of it and used DreamWeaver to make it a "website" if you can call it that. It's all a horrible mess. Oh god, I would honestly get a new job. For me it's testing. My testing consists of refreshing the browser, clicking some browser, then examining the console window. I know I can use PhantomJS but I can't bring myself to learn how to use it. Legacy Browser Support and lack of video standards. Thanks Google for throwing the hammer down recently and telling everyone they wouldn't support any browser older than 3 major revisions. HTML, CSS, Javascript, browsers, database, IDE, at least one server side language, and hosting for a simple web app.
Web development sucks. We are just used to it. Performance. Security. I feel like a rant. Editors: The best editor/editing environment of the bunch is the Microsoft offering of visual studio. The biggest problem is that it is only well suited for Microsoft products. There are a few others and there is eclipse that some people seem to worship but is clunky hog of a thing that is nowhere as smooth as Visual Studio. A lot of people still use fairly basic text editors. Standards: At first there was Netscape it was good. Then IE came along and it was good and Netscape was a garbage. Then Firefox came along and it didn't crash as much as IE. Then Chrome came along and IE was crap.
While I like the way Chrome has done so much, I really hope Google doesn't do too much to dominate the browser market. Competition is needed. Competition was needed when Microsoft was winning the browser wars. The actions that Google has taken of late seem to not much different from the bullying Microsoft employed all those many moons ago. Javascript: The things you can do with Javascript are fantastic. The language of javascript is a dogs breakfast. Instead of pushing the language forward and making it more integrated with the browser, add-ons such as jquery have been created. Having one dominant language (that was set by Netscape) makes programming for the web a sometimes painful experience. Using Javascript and trying to make it work with every browser can get ugly. There is room for new language or two in the browser. I am very happy to be moving on from the dominance of IE6 but I am cautious of what the future holds. You couldn't pay me to use an IDE. I always end up liking a simple shell and text editor better. Frameworks. MVC itself isn't hard for me to grok, but doing USEFUL things with Django and friends is kind of hard having never done it before. All the tutorials assume that you're already an ace OO guy. Even after learning how to properly deploy rails apps in production, it still sucks. I want to be able to install the heroku deployment process on my own servers. Close enough? https://github.com/mislav/git-deploy