8 ms·
Web development is just broken
- davidw 16y ago> Give me all of this and you’ll make me a much happier coder. I think comments regarding ponies would be superfluous... I mean, it's not as if things are the way they are just to make your life miserable. It's a matter of the incentives involved. And anyway, if you want to 'just get started', PHP is pretty good at that. You can have your hello world page up on the internet in a few minutes.
- krainboltgreene 16y agoA "Hello World" PHP site is nowhere near the complexity of a web web application. More importantly, when you start cutting corners by avoiding those steps (As so many PHP developers seem to do) the complexity gets worse.
- davidw 16y agoI'm not really a fan of PHP, but I think it's fair to say that it does let you get started doing really basic stuff quickly and easily. Especially when it came out, that was a pretty big point in its favor compared to the other things out there at the time.
- ryanpetrich 16y agoWeb development is complicated because it grew organically, isn't at the mercy of a single vendor and its security model supports both untrusted clients and servers. If you want simple and straightforward, go back to writing Windows Forms applications (or a similar equivalent)
- Yoric 16y agoI've survived the Windows 3.1 SDK, so please stop patronizing me :)
- ryanpetrich 16y agoIt's not patronizing to point out that things are much simpler on other platforms and that if you want simplicity it would be easier to stick with them.
- olegp 16y agoThis is exactly the problem we're trying to address with Akshell (http://www.akshell.com http://www.akshell.com). At the moment, web development is the equivalent of using Linux in the early 90s - you need to enjoy the process of getting it running more than you care about producing results. We're hoping to bring the Apple experience to web app development by providing a consistent set of core libraries, ready made API wrappers, a browser based IDE and one click deployment.
- Yoric 16y agoInteresting. Any reason it sounds so much like "Haskell"?
- olegp 16y agoMerely a coincidence, we're JavaScript all the way down. Although if you really wanted to, you could run something like this: https://github.com/sviperll/ghcjs https://github.com/sviperll/ghcjs
- ollysb 16y agoLooks very interesting. Having now seen how beautiful coffeescript is, are you considering making this an option? Being able to build a whole app in coffeescript seems very appealing.
- olegp 16y agoYou can use Coffee Script now, we just don't have syntax highlighting support yet. More discussion on this: http://groups.google.com/group/akshell/browse_thread/thread/2a103a22a5574034 http://groups.google.com/group/akshell/browse_thread/thread/... If you would like us to add more Coffee Script related features, please post a suggestion that others could vote on here: http://feedback.akshell.com/forums/108269-general http://feedback.akshell.com/forums/108269-general
- Yoric 16y agoHow does Akshell handle security policies, btw?
- foxylad 16y agoGoogle Appengine (and presumably Azure) takes you some of the way there - it removes all the sysadmin side of things, and solves the scaling problem at the same time. You still need to choose a framework etc, but it is a compelling choice for a developer-centric startup.
- kolektiv 16y agoSorry, this might be too pedantic, but I can't listen to someone saying that something "solves the scaling problem" when it doesn't. Both of those examples solve the "having more machines when you need them" problem, but scaling is a) domain specific, and b) a logical problem not a hardware one in general. A million machines and an insoluble deadlock is not a scaling solution. I'm sure that you know this, but in case anyone out there less well informed takes that at face value I felt compelled to add to it!
- augustl 16y agoDidn't Rails solve this problem? Simple apps are simple to deploy. Everyone use Apache with Passenger. And Rails itself makes it easy to get results fast. You're up and running in no time. Of course, if your web app is advanced, Rails may or may not be a good fit. But it'd OK that it's hard to write advanced apps.
- Tycho 16y agoOn the bright-side, these things provide a nice barrier-for-entry that makes it easier to find jobs. But I agree it does feel quite 'broken' a lot of the time. I've been trying out jQuery-ahm, which lets you reduce ajax calls to one line, and send everything else back from the server - the data and the logic/functions/instructions. I'm not sure how well this scales (debugging could be a problem), but I'm using it for simple things like tooltips. I feel that writing all the normal ajax code for a simple tooltip (for instance the example given in the Rhino book) is preposterous.
- kaylarose 16y agoI would skip the jQuery-ahm, especially since you are already committed to jQuery as a dependency. //Overly simplified example $.get('tooltips.php?id=tooltip-id',function(data){$('#tt').text(data);});
- Tycho 16y agoYeah I see your point, but when I said 'one line' I meant more like 'one word.' jQuery-ahm just uses a 'ahm' class on the html link to the Ajax endpoint. like <a href='/tooltip3' class='ahm'> and that's it. The line of jQuery you wrote is still very dense.
- vixen99 16y agoFor the record, the author's own response is evidently "OPA". (https://mlstate.com/opa/documentation_-_introduction#1 https://mlstate.com/opa/documentation_-_introduction#1) which is commercial software though you can try it for non-commercial uses.
- Yoric 16y agoYou're right, I should have mentioned something. I've just added a disclaimer.
- reirob 16y agoI absolutely agree with the author! Remembering programming GUI applications in 90th it feels that there is a huge regression. Just to add, it is not enough to know 1 single programming language - you need 4: HTML (not really programming but still syntacs and semantics to learn), JavaScript, server side language (php, java, ...), SQL. Not talking about all the different configuration languages that might be needed (XML, ...). Not yet speaking of the difficulties for session handling. Where are all those nice innovations from the past MVC, OODBs, ... It would be great to have ONE single language that is enough to build a reasonably complex web site without having to cope with all the other syntaxes. I think that because of this something like Node.js might have success, even if I don't like JavaScript. But I still don' t get it why there are no persistent, performant, scalable data stores available inside programming languages itself (HappS seems promising for this, but then you still have to use JavaScript). I hope that after almost 2 decades something more simple will appear.
- rhizome31 16y agoIt seems that nowadays you could in theory write web apps pretty much entirely in JavaScript. You mentioned Node.js for server-side logic. Then there are data stores that support JavaScript as a native query language (MongoDB, CouchDB...). For the client side, you can send an almost empty document to the browser and build the UI entirely in JS. Projects like CouchApps seem to head into that direction. However I'm not convinced that it's really a good thing for separation of concerns. You made a comparison with GUI development, but actually it's not uncommon to use a separate language to specify layouts when creating GUIs (Qt, Android...) The reason for that is that the declarative style of markup languages can often be a better fit than describing layouts programmatically. As for databases, it's great to have a (more or less) standard interface to query relational database that can easily be used from virtually any programming languages and from the command line. A lot of web apps are not limited to interact with a db and the filesystem but also need to interact with legacy systems. Less technical people might also want to be able to use off-the-shelf graphical tools to query the database. That might be a reason why ZODB, a Python-specific data store, hasn't been tremendously successful, despite meeting your requirements (notwithstanding scalability perhaps).
- dansingerman 16y agoWeb development is not broken, it is just non-trivial; you need to think at different levels of abstraction: server-side, client-side, database, etc., and there are usually different technologies for each. But web-based software is taking over the world; empirically it is not broken, it is very very successful. And if you want to imagine some magical technology that solves these problems, you are probably falling for the silver bullet fallacy - anything that is advanced enough to solve complex problems (which web software now does) needs to be sufficiently complex to solve those problems. And any abstraction layer is likely to suffer from leaky abstractions (http://www.joelonsoftware.com/articles/LeakyAbstractions.html http://www.joelonsoftware.com/articles/LeakyAbstractions.htm...) That's not to say that improvements can't be made (Rails is one example that aims to make the web development process more coherent and consistent), but fundamentally (and empirically) it works.
- Yoric 16y agoI'm not saying that web software is broken, just the development process. As someone mentioned in the comments, we're basically back 20 years in terms of developer experience.
- sebilasse 16y agoit's pretty simple. OS: Linux programming language: Ruby web server: Apache + Passenger database management system: Mysql server-side web framework: Ruby on Rails - includes ORM client-side web framework: jquery + backbone.js deployment: capistrano and adjust those settings when it doesn't work for you. worked for all my projects, and I did some really non-trivial CRUD applications.
- jasonkester 16y agoI don't buy it. Sure, if you're planning to do something special, you can pick and choose all the bits the author talks about. But if you're doing that, you (hopefully by definition) know what you're doing and are able to make intelligent choices about all of them. If you just want to build a web app, all you need do is pick one of the big 3 stacks and get going. The Microsoft Stack gives you everything you need with no mandatory decisions on your part. Same with LAMP (read the acronym and you've got your list of pieces). Even Rails has a standardized stack at this point. If you don't want to bother with the details, you don't need to.
- bhousel 16y agoEven Rails has a standardized stack at this point. It does? What is it this week?
- AffableSpatula 16y agoPosts like this remind me of an Alan Watts quote: "It must be obvious... that there is a contradiction in wanting to be perfectly secure in a universe whose very nature is momentariness and fluidity."
- ekidd 16y agoThis is largely a solved problem, at least if you choose the right framework. For example, Rails + Heroku gives you sensible defaults for your programming language (Ruby), you web server (Heroku), your database (PostgreSQL), your server side web framework (Rails), and your client side web framework (Prototype—perhaps not my favorite, but certainly a default). You can have this all set up from scratch in well under half an hour, your first time through. If you don't like Rails, you can find similar pre-configured environments elsewhere. The real web development headache is just how many of these layers you need to understand: SQL, a server-side language, HTML, CSS, JavaScript, and multiple libraries designed to make server-side and client-side coding sane. According to other comments in this thread, the author has a commercial product designed to address the issues he raises. But if so, he does not seem to realize that he's working on a problem with many existing solutions.
- deleted 16y ago[deleted]
- Yoric 16y ago> The real web development headache is just how many of these layers you need to understand: SQL, a server-side language, HTML, CSS, JavaScript, and multiple libraries designed to make server-side and client-side coding sane. So I take it that you agree with me on the brokenness of web development, even if you consider that setting things up is not all that bad? You mention the layers themselves as a headache, and I could certainly have added them to my rant - for many, they are a nightmare by themselves. But let's just assume that we're all seasoned developers and that no language or sum of languages is too scary for us, as long as they interoperate correctly. We still have a nightmare, here, because these languages simply do not cooperate. Just getting them to work together takes considerable amounts of glue. And please tell me if I missed something, but last time I checked, RoR + Heroku really didn't solve much of the glue nightmare.
- bricestacey 16y agoThere is no glue nightmare. You get a full stack each time you type `rails new myproject` that works seamlessly. You can code right away and put off tweaking your database and web server until later. Also, if you add additional libraries there is no dependency hell because RVM and Bundler are each a work of art.
- mgkimsal 16y agoIt should be titled "web development for the platforms and scenarios I target has too many moving parts." "I don’t care about browser wars - my standard toolkit must work on all browsers, end of the story". ALL browsers is very broad, and "work" is pretty vague. "Behave the same way"? Or just "not cause an error"? You want one codebase to work the same way on links, IE9, Safari and Blackberry? All of those browsers are part of the community on "the web". "I don’t want no glue - the web is one platform, time to stop forcing us to treat it as a collection of heterogeneous components". No, the web is a collection of heterogenous components - stop trying to force everyone to treat is as one platform. The portability and interop is what's allowed people to keep migrating bits and pieces around to get something that works best for them. I can change my logic from PHP to Node.js without having to relearn a new markup language for a different browser ecosystem - the CSS, JS and images I used earlier will still work from a new server. The broad scope of what 'the web' is, and all the various technologies involved and required are what make web development so interesting. "Web developers" is an extremely broad range of people, constantly evolving and churning and growing and changing. If you want "one platform", you're free to focus solely on writing only Rails apps that talk to a Silverlight front-end, for example, or use only a PHP/IIS/Flex stack. If you focus only on that one stack, some of your issues and concerns will be addressed, and you can become an expert in that one set of technologies. Beware that the larger web world will eventually evolve past you, and much of your skill won't be moveable to the next stage of web evolution. "Web development", almost by its nature, requires a "jack of all trades, master of none" type of person, who can understand a broad range of problems and solutions, but also needs to call in experts for specific areas when required.
- Yoric 16y agoI disagree with parts of what you say. Your answer largely sounds like: "I like it how it is, I'm an expert, don't you even dare to think of a better way". > I can change my logic from PHP to Node.js without having to relearn a new markup language for a different browser ecosystem - the CSS, JS and images I used earlier will still work from a new server. Sure, you won't have to relearn a new markup language and that's clearly good. But, look, your database will still stop working and your client-server I/O will suddenly show a completely different behavior. The current generation of web development requires a modularity that generally doesn't fit the application, and it shows.
- kls 16y agoI think the larger problem is that the "web" is maturing and as such, clear delineations of roles are forming just as they have in other areas of developers. Lets take for example game development. You have your physics developers, you engine developers, your level developers, level designers, and artists (I am skipping a bunch of other diciplins but for brevity this will do). Anyways, back it the old days it used to be a 2 man show, usually an artist and a developer and they would knock out a game. As the industry matured and the technology involved became more complex specialization occurred. The same thing is now taking place in the web and we are seeing the technology start to converge around the idea of specialization. SOA and REST has compartmentalized the server side into addressable business resources for performing business computation and access to data. Used correctly a business developers can provide information and processing to the internet without having to touch a single line of HTML or JavaScript. They can write services in pure Java, C#, Python or whatever. This allows a Java developers the ability to provide deep specialization in Java and provide the products of the specialization to other developers in the work flow without encumbering that Java developers with ancillary technologies. Further many app servers externalize the management of environmental resources such as file access, which becomes the domain of an infrastructure admin. Server administration and configuration can now be performed by technical personnel that specialize in infrastructure related concerns rather than developmental concerns. This is a good thing because it allows more capacity from developers by freeing them up to develop. Finally, the client side frameworks have finally liberated the UI from the Hodge-podge of technology soup that we created in ASP, PHP, JSP, whateverP. This in my opinion is where the web went wrong. We created the idea of the documents that just souped all of the technologies together and everyone from all distinct roles had to work in this mix. While it was great for the one man show developer the whateverP where always trading of ease of use for the developer for ease of use for the designer or vice-verse. One only needs to look at the contrast between PHP and JSP to see the two distinct philosophies at work. So as the web has matured you are now seeing more delineated roles than the old web developer or web master or web guy. Now you see delineations like, SOA/REST developers, Content Manager, SEO Developer, Web Designer, UI Developer. There are companies like Wavemaker that are trying to make it easy for the one man show developers to write modern web application and I believe that products such as it will grow in popularity as the solo developers looks for tools to keep up, but the reality is that the web has matured and with maturity comes complexity. Complexity that is more and more managed by groups of specialist as opposed to the generalist.
- wccrawford 16y agoI've written web apps professionally for years now. I recently went back and wrote a GUI app. It was horrifying. First, I had to pick a language. Then a GUI framework. Finding a combination of those that was cross-platform was trivial... As long as the answer was 'Java' and 'Swing'. -sigh- I really wanted to write it in Ruby, but Shoes was not a good solution (too many features missing... Ones that I desperately needed) and all the other GUIs required special installation, or weren't up-to-date in the Ubuntu repos. In the end, I chose Mirah. Java, but with some Ruby-ish syntax. That was it's own special torture because it's such a new language that there isn't much out there in the way of documentation or examples. (One time that I complained about that, someone suggested I contribute some. https://github.com/wccrawford/TV-Director https://github.com/wccrawford/TV-Director is sample that is the answer to that.)
- davidw 16y ago> all the other GUIs required special installation, or weren't up-to-date in the Ubuntu repos. If you can get past the snide comments by "in the know" people who used it in 1998 and didn't like it, Tcl and Tk are actually still a good way of doing cross platform GUI development, depending on what your needs are.
- ebiester 16y agoNeed: not ugly as sin.
- davidw 16y agoNeed: to look at what Tk looks like these days, not in 1998. Is it perfect? No. It has improved a lot though, and if you want cross platform, you're probably never going to get "Apple beautiful". You're going to get a jeep, that gets you where you need even if it's not as nice to look at as the Ferrari. Tk also screwed something up that PHP later copied in a certain sense: it made it really easy for people to do something. Many of those people were not "qualified" to create UI's and thus went on to make some really ugly stuff. Moral of the story: if you create tech that makes things significantly easier, lowering barriers to entry, try and foster a culture that helps create "beautiful" results.
- deleted 16y ago[deleted]
- Fester 16y agoWeb development complexity mentioned here is just a reflection of a complexity of the outer world. Activities you perform throughout the day require you to make choises which in it's turn requires knowledge gathered during one's life. Yes, you can't be an 'average Joe' to build a web application, but you can't be the same Joe to build a motorcycle or go rafting or found a glass factory without a (impressive amount of) domain specific knowledge. World is complex. Technologies are. Deal with it. Another thing that seriously bugs me is the approach to mask completely different goals and processes by imaginary simplicity of overlaying technology stack. Writing a web app and making it scale are totally different goals, choose what are you going to do first. Textual documents storage will differ from video hosting by a couple of orders of magnitude. The more generalization you achieve, the less freedom you'll have.
- benaston 16y agoIf this post was written 3 or 4 years ago I might be inclined to agree, but with elastic compute, REST, HTML5, CSS3, jQuery, JSON, decent modern browsers and NoSQL databases we really are in (or are very close to) a pretty good place IMO. If the OP is complaining that he needs to know a lot of technologies to construct a website... well, I think that is the nature of the beast and falls out of the de-coupled nature of web-apps.
- tmcneal 16y agoerr.. other than perhaps jQuery, I don't see how any of your examples refute what the OP is stating. To stay current with modern web development (such as the technologies you listed), developers need to continually improve the breadth and depth of their knowledge.
- benaston 16y agoThe OP states that web dev is overly complicated and broken. I counter that modern tools are far from being broken, and are infact lightyears ahead of what was available only 3 or 4 years ago. Not a refutation per se, but a counterpoint. * elastic compute - easier - no need to worry about hardware * REST - easier - no need to worry about WSDL and XML * HTML5, CSS3 - agreed powerful standards to create create UIs * jQuery - much easier than hand-rolling * JSON - easier and lighterweight than XML * decent modern browsers - improved standards adherence, so easier and quicker to write for multiple browsers * NoSQL databases - easier to work with (no ORMs), quicker to set-up (no schema) than relational dbs
- Yoric 16y agoActually, I have the feeling that, just by listing the number of technologies/languages/protocols that you now need to understand before coding any non-trivial application, you're arguing for me :)
- crikli 16y agoFrom TFA: "You have reached that stage, because you have the time and skills to do this, but what about Joe beginner? Do they deserve this?" Joe Beginner will be fine provided he has the tenacity to learn, learn, and continue to learn. What he "deserves" isn't relevant. The reality is we're all Joe Beginner at something. For example, I have been writing code for almost 30 years (started real young) and have been doing web-dev for 10 years, but I'm Joe Beginner dealing with Ruby on Rails, MongoDB, and several other technologies I'm trying to wrap my head around. Part of...well, actually one of the key aspects of being a programmer is maintaining a complex and diverse skill set. This was true back in the 80's when I started with AppleBasic, it was true in the 90's when we were writing Win32 in C++, it's true now, and it's not going to change. Call me crazy, but I think using three or four different languages is of the things that makes web development really fun, more fun than trying to wade through pointer pointers to figure out where the hell I forgot to toss memory back on the heap. And isn't that why most of us hack anyway, because it's freaking fun?
- Yoric 16y agoInteresting point of view. I started coding 7 years after you (started real young, too) and I'm pretty sure the reason I picked up coding was because it was so easy to just get "hello world" running in GWBasic (and then Turbo Pascal).
- crikli 16y agoGood 'ol Turbo Pascal. I wrote an encrypt/decrypt program in TP and a friend of mine and I used to pass encoded messages back and forth on 3.5" floppy disks. To the subject at hand...I think it's a question of motivation. "Easy" was never part of the seduction; I wanted to make games, freak my folks out by making the screen flash and beep when they turned the computer on, hack the computers at school to lock out Walt the dickhead computer teacher guy, etc. "Fun" was always the motivation; "easy" never part of it because easy is...sorta boring. "Easy" has value, to be certain: IMO it's a signal that it's time to automate that task. For example, I used to hack Apache vhosts files by hand. Now it's easy, and we've automated it (and the rest of the LAMP stack setup, for that matter).
- albahk 16y agoWeb development isn't broken - its just difficult to do. Which is why you have to know all this stuff to do it well. Modern Property development is broken. First I need to have a registered architect design a building, then I need to purchase the land, then get government approval, then deal with contractors and bank financing. I just want to choose a spot in a city and then start building my dream building. This is 2011 and this is the best we can do? </sarcastic example>
- kabdib 16y agoY'all saying "This is largely a solved problem" are in denial. Also: You need to kill the standards committees that keep coming up with stuff like WSDL and SOAP. Pretty much anything based on XML and you should get out the pitchforks and torches. Stop hurting yourselves. I am speaking as an OS guy who also does embedded systems. We have our own pieces of hell to deal with (over-designed and under-implemented protocols in USB and networking, natch; also hardware engineers who like to take away components to save money). The last time I looked at web development it was a steaming heap of vile, corrupted technologies that barely talked to each other. Maybe alien unicorns have descended and made everything fluffy and nice since I looked last. There /is/ hope. I mean, you deprecated BLINK tags. Honestly, do the database people and the client people ever talk to each other? Do the people doing browsers ever talk to the people doing IDEs? Or is this like different tribes, and they are trying to screw each other over in some kind of zero-sum game? Y'all are fooling yourselves if you think there's not a problem. Look at the number of frameworks; these things wouldn't exist unless something needed fixing. Last time I was in the bookstore it seemed like there a dozen linear feet of dead trees describing frameworks. God knows how many there are online. I think you need an intervention.
- dansingerman 16y agoWeb development has long since moved on past WSDL and SOAP; they've now been relegated to the domain of Enterprise software. As for the claim that the proliferation of frameworks indicates a problem, well I completely disagree. They are so many frameworks because progress is being made improving the technology all the time. This is a good thing; it is how progress is made. By your logic there is a problem with the automotive industry (people keep making new cars), the computer hardware industry (new chips), in fact pretty much every industry that exists today. It's human (hacker?) nature to think there must be a better way, and do something about it.
- absconditus 16y agoEnterprise software is where much of the industry is employed. SOAP is becoming more prevalent, not less.
- LostInTheWoods2 16y agoThe author is right, if by broken he means insanely difficult. The number of things that a person has to be aware of to launch even a simple web application is simply daunting. Even after launch, there are even more pitfalls and gotchas awaiting. We've come to accept this insanity as normal, and perhaps the time has come to demand better.
- spacemanaki 16y agoSome of those don't look like problems from the mobile side of things. For mobile, replace "you’ll need to choose" with "you're forced to use". While the OS and security stuff might be simpler, it's not exactly solved on the handsets. Depending on the platform, you'll having to deal with potentially dozens of device models and several different form factors (BlackBerry, I'm talking about you). And if you find a serious bug in the current live app? Have fun waiting several days to a week to get it updated in the app store/market/world. Building software is hard.
- SingAlong 16y agoIf you try applying this POV to any field, it'll sound like "developing anything on any platform is broken" If you want to develop something significant, you'll have to dive deep and spend some time boosting yourself on the learning curve. Speaking of web development, most good MVC frameworks today solve this problem for you. Ex: when you use rails, it makes your dev server a command away. It automatically creates an sqlite database by default. If you are building trivial stuff, you do not have to understand SQL and directly deal with the database. All you have to understand is some ruby and a bit of high-school HTML to create simple sites. Whether those bare minimal skills (i.e, minus CSS, minus Javascript) help you build a startup or get profitable is a topic for another day. But it does get you started! Deploying... whether you use Heroku or any other platform or your own rock solid VPS, is upto you. The blog post, IMO, sounds like the rant of a tired programmer.
- jeberle 16y agoWriting an application that can support 1,000s of concurrent users (some malicious) connecting from any operating system and client program, that provides a rich user experience, and one that is read/write and backed by a database is complicated. If you want simple, shorten this list of requirements.
- Yoric 16y agoIt is. But I'm pretty sure that we can do much, much more to help developers support 1,000 concurrent users / malicious users / client programs / rich user experience / etc. Current-generation frameworks just don't provide that much help at any of these levels.
- lucisferre 16y agoJoe Beginner huh? Is this just complaining that web development is hard? Seriously, why don't I start a rant saying: "hey building a house is hard, how the heck are us beginners supposed to do it?". If you want a web-site made easy use Wordpress or something else that provides what is needed for basic scenarios out of the box. If you are expecting standard interfaces for web-servers, programming languages and web standards that are not going to change regularly as software development matures as a profession you are insane. Just take an example of something that is already relatively standard like SQL, now write some SQL for MSSQL and then switch to Oracle... Lets face it beginners should not be building non-trivial web applications where things like scaling matter. At least not on their own, and if they do they should expect it to be a challenge and a difficult learning process they will need to dedicate themselves to. .NET tried this, they wanted to make web development as easy as drag-and-drop. In the end .NET ended up with two things: 1. A ton of absolutely crap legacy spaghetti code in corporate web applications 2. An group of developers who never really learned how to write code or understand the first thing about real web development.
- jjm 16y agoJust some thoughts: The further away you move from low level control for abstractness (read: easy) you give up just that. Control. One of the requirements for this abstractness is everyone has their 'own' ideas of what 'easy' is, thus you always end up seeing framework N1,N2,N3... and so on. If you take a look at Rails, there is much argument about "well I don't like Ruby, much prefer lang xyz", or "I don't like the magic, I like abc" (just giving an example). This exists for everything out there today, because we are all different. It feels like everyone expects to just load up an IDE and start coding, but this will probably never be the case again. The Internet has brought us the ability to not only fork code but fork ideas. Having to rely on a main branch of well water (read: visual studio, xcode) leaves you powerless (see my main point about giving up control) in the end, (eventually as iterations increase). Perhaps when something is not in physical form, the concept easily escapes us. There are many ways to 'hammer a nail', or 'code hello world'. The basic principal remains the same, blunt force 'could' be applied or you could just use a screw, or... (you see my point). It is again probably the Internet which has increased the iteration of improvement, and obviously people do find it confusing to have to 'shop' amongst hundreds of options. If you look at it, it's no different than what we do at a grocery or hardware store today. So, maybe it is really one's lack of understanding with the fundamental problem at hand (that your trying to solve). Knowing that, you could choose the right tool, level of abstraction, faults, etc... for the job at hand.
- Yoric 16y agoFrankly, I believe it's that we're working at the wrong level of abstraction. High-level of abstraction is good – and it's good that there are several competing high-level abstractions. That's exactly what happens in desktop programming, e.g. you typically don't use the same languages for UI development, games, scientific processing, etc. But one of my points is that we definitely haven't reached this level of maturity on the web.
- krosaen 16y agoIsn't this just the problem of choice? If you really want an end to end cohesive development stack here you go: use google app engine with Java and gwt, all java, all eclipse, all the way to the client side javascript / packaging etc. But I'm happy to have the choice to use python, and play with different client side javascript libraries to suit my various needs (I do use app engine). And maybe next week I'll use clojure on the server side next week and coffee script on the client; that's the beauty of choice. Overall if there were a single SDK for web development ala IOS development of android development, I would enjoy it less. I'll take the rough edges along with the additional choices and flexibility.
- Yoric 16y agoNo, it's definitely not the problem of choice. It's the problem of glue.
- Hominem 16y agoAgreed, there are a boatload of moving pieces. Throw in a work queue and there are even more. A "full stack" like using ASP.NET MVC,EF and IIS will get you to a dirt simple app pretty quickly but it still feels like too much for what you are actually producing.
- bxr 16y agoRight now with the web we are prisoners of our own devices. We took a document fetching/presentation system and beat on it until we had an application platform, and we're feeling the pain. We have built workarounds on top of workarounds to try to make applications look better, work better, and better to develop, but we're still stuck with the browser and its limitations. Reading some of the posts here, it seems like some people have developed Stockholm syndrome for the browser. What we have turned the web into is a resurrection of mainframe computing. Our terminals are just a little bit better this time. It was the only vector for exceptional ease for the user so we flocked there, the trouble is, talking to the terminals makes up have to do a lot of less than ideal things on the serverside. Sure we may have prettied up some parts and made more and more tech for talking to the terminals, but its not great. We and bitched and moaned about the state of the terminals and over the last decade they've even became a smidge better.
- johnwatson11218 16y agoHas anyone ever thought about how nice it would be to have one really nice strong, static, inferred type system that ran from the javascript in the gui all the way to the db and even spanned any rpc stuff? Then imagine if there was a single IDE that could catch type errors anywhere in the stack. In my opinion this is why there are no trivial webapps. Even something that wants to add up a list of numbers and store in the db has to deal with so many type systems (or lack thereof), even though all your data becomes strings as it is posted over HTML.
- Yoric 16y agoI like your dream.
- BerislavLopac 16y agoOf course Web development is broken. Because Web was never meant to be developed for. Originally, Web was intended as a collection of resources -- actually, a filesystem of sorts. But it grew out of proportions as it became popular since it allowed users to see color and pictures and animations on the Internet, which was up to that point either limited to plain text, or required some heavy-weight, non-standard applications to be installed on the client. Actually, the name used for the application used to access the Web -- a browser -- tells a lot about how it was intended to use: to "browse" the resources, not to execute them. Could you imagine what desktop development would look like if you were limited to using just some sort of file viewer to program for it? Each Web application is, actually, two completely unrelated Web applications. One is executed on the host and is preparing the data for the Web server to serve; but there is another, which is running in each of the users' browsers, only connected to the former one by asymmetric pairs of requests and responses. Even if it consists only of HTML (and CSS), it still has code being interpreted and evaluated on the client; ajax apps only emphasize this. So it's not Web development that is broken; in fact, it is a miracle how what was created by the developers to work around the fundamental limitations of the platform, which was never meant to be one.
- Yoric 16y agoInteresting. Maybe my next rant will be called "Web development was never built in the first place" :)
- diminish 16y agoweird low quality article, if u havent started yet dont bother to read; most probably written by a qbasic guy missing 80s! voila c'est merde. To start with php, or ruby on rails or python django and learn some html/css to target billions of devices worldwide.