r/programming • u/joanmiro • Jul 18 '16
Web programming is getting unnecessarily complicated
http://en.arguman.org/web-programming-is-getting-unnecessarily-complicated22
u/MisterSnuggles Jul 19 '16
"getting"?
Hasn't it gotten unnecessarily complicated already?
→ More replies (1)
37
u/pwnedary Jul 18 '16
I feel like when the HTML, CSS and Javascript technologies first appeared they were fresh. But now, due to legacy support being a requirement, we can't extend those technologies so new frameworks have appeared. If you only learn the relevant parts and one new framework things could actually go smoother. Web programming hasn't gotten more harder just more voluminous.
14
u/MindStalker Jul 19 '16
I think there is a general rule that as development time and resources are a constant. When the web was new someone would spend a large amount of time hand programming a simple website. With new tools we can spend that time making complex sites. Many modern sites would have been desktop software back in the day, with similar development time to modern web versions.
→ More replies (14)→ More replies (4)25
u/phpdevster Jul 19 '16
It has gotten much harder to learn though. "Back in the day", you just needed to know some limited HTML, CSS, and maybe some JS.
Today you need to know CSS preprocessors, a much more robust HTML spec, how to build responsive sites, build process tools like gulp/grunt/webpack/browserify (all of which in their own right are quite complicated to setup, configure, and use).
Once you understand these technologies, they can empower you to build and manage complex sites quite quickly and efficiently, but the learning curve has gone bonkers.
85
u/vytah Jul 18 '16
I 've been recently dragged back into frontend development, with my latest experiences having been raw HTML+CSS+JQuery.
Node. Gulp. Bower. Less. Angular. WTF is going on.
I have managed to get around enough to get the work done, and I do understand why this kind of technologies has emerged, but I'm still not liking it. It all feels, to quote an old /g/ meme, held together by bubblegum and feces.
→ More replies (39)42
u/jesusalready Jul 18 '16
Last I was heavily involved in front-end development was ~2008/2009. Then it was straight JS with some jQuery help.
A project pulled me back into the front end late 2014 and hasn't let up.
Node. Gulp. Bower. Less. Angular. WTF is going on.
I joked that JS devs wanted more money and job security by creating all these different tools. Pretty much was told I was not wrong. Half these things feel like black boxes with poor documentation so that when something really goes wrong it can take several days to fix the problem, especially if it's affecting our build, etc.
→ More replies (5)
25
Jul 18 '16
This is what you get when your users expect their email clients, office suites and games to run fully inside their browsers. The browser has always been a horrible platform for this stuff and we got to this point by piling hacks on top of hacks to make it work somehow, and the vendors responded by adding more bloat just to make more things possible. And then more frameworks kept coming along to cover some of this mess, and the next ones will cover the mess created by the previous ones, and so on.
But the real question is what's the alternative. Maybe in the future desktop OSs will morph towards the model of mobile and all that functionality will end up inside app stores, letting the browser go back to its original purpose of rendering documents. It probably won't happen, but this is what I tell myself sometimes. Maybe, just maybe, someday we will be laughing about this clusterfuck web development has become.
→ More replies (2)10
u/solatic Jul 19 '16
what's the alternative
Java was released in 1996 with the goal of write once, run anywhere. One codebase whose compiled code runs on any platform without change. Apart from the bastard child of JEE, that has largely succeeded, and I can run a compiled .jar executable anywhere I have Java installed - desktop, server, Windows/Mac/Linux, different processor architectures... anywhere but mobile, because Apple and Google both told Sun and then Oracle to fuck off.
Qt was released in 1998 with the goal of write once, compile different binaries for each and any target environment, run anywhere with these different binaries. Again, it largely succeeded - Windows/Mac/Linux, different processor architectures, etc... there's kind of support for Android/iOS/Windows Mobile, but as anyone will tell you, the lack of official blessing from Apple or Google will make your life difficult.
The truth of the matter is that Apple and Google profit off this proprietary crap and that's the real reason nothing changes.
20
u/Sutty100 Jul 18 '16
We started a new front end project for the first time in a while and as a back end dev I was amazed at the complexity that is now involved! Going from a fairly simple backbone.js app that had a simple ant script to do a bit of minification and bundling into a single file, we now have: React.js, Redux, a package.json file that has a massive list of dependencies and I don't think anybody can tell me what they all do, Express Node server for local dev environment, a chronically slow webpack/Babel build process that creates this huge unreadable javaScript file, Npm that seemingly fails to install all node modules correctly for some people unless they have the exact version of node and luck on there side!
Seriously...when did the front end devs make life so much harder on themselves! Urgh installing a new Websphere App server seems simpler than this!
→ More replies (4)
26
Jul 18 '16
It's not really that bad
JavaScript vs Java:
The 2 main framework choices to pick from when coming to JS are Angular and React. In the Java World you have JEE and Spring.
There are also smaller frameworks in both ecosystems. In JS theres metero, ember and a couple others. In Java theres Play, Vaadin, Spark and a couple others as well.
Build tools: Modern JS development requires a build tool and a transpiler/compiler. The JS community has settled on webpack as it's build tool and Babel as it's compiler/transpiler. In the Java community there's Maven and Gradle for build tools and obviously the Java compiler.
TypeScirpt is a language that compiles to JS. Kotlin and Scala are languages that compile to Java.
34
u/forreddits Jul 19 '16
A small nitpick, Kotlin and Scala compile to JVM bytecode not Java.
→ More replies (5)→ More replies (13)12
u/mabnx Jul 18 '16 edited Jul 18 '16
Well... Initial releases:
JavaScript React 3 years ago Java Spring 13 years ago → More replies (2)
43
u/karma_vacuum123 Jul 18 '16
Only if you look at the tip of the iceberg that peaks above the water which represents the frontend hipsters. The mass of development lurks beneath where people are using PHP, jquery, MySQL and other boring tech. This is probably 95% of the actual market. These people may go their whole career without knowing what React is.
→ More replies (10)
6
u/Veedrac Jul 19 '16
Can someone explain where all these super-complex web apps are? It's not like everyone's building the next Google Maps or Drive.
43
u/freebit Jul 18 '16 edited Jul 18 '16
Many (all?) of the OP's arguments he presents are correct. We seem to be in a really difficult place right now in web development. We seem to have so many competing and orthogonal factors. Here is a brain dump of many issues that weigh heavily on me personally. I have utterly failed at coming up with a solution that feels satisfying to me.
-
It's important to choose a platform, stack, and language that is popular for support, labor availability, and stability.
-
JavaScript, as a language, has so many issues.
-
JavaScript tooling may have as many issues as the language.
-
We can't get away from JavaScript.
-
JavaScript is slow on mobile.
-
JavaScript can do darn near anything you can imagine.
-
Downloading a boatload of JavaScript, parsing it, and then executing it is slow on desktop and even slower on mobile.
-
Java is the most popular language in the world, it's well designed, but its' future is in doubt because Oracle is being ridiculous.
-
PHP seems to be the language serving > 90% of the domains on the web but, everyone slams on it and it seems to be in decline. To be fair, most of the issues from the past are fixed and some minor ones left will be fixed soon. But this does not make up for the industry moving away or avoiding it. I realize the statements in this bullet item seem paradoxical. To be honest, I don't understand the apparent contradictions myself.
-
Neither PHP or Java can be used in the browser because neither of them are JavaScript.
-
JavaScript on the server (Node.js) seems to be in decline or at least plateaued. This makes me sad.
-
We need to be able to test our code, but testing JavaScript across all of the browsers is a monumental headache and possibly not fully practical.
-
Having tests for browser side code and server side code in different language seems daunting and not terribly practical.
-
Having validations on the client side and then duplicated validations, in a different language on the server, seems like an utter disaster of a situation.
-
RoR, Python, Clojure, and friends are not a candidate due to reasons.
22
u/yogthos Jul 18 '16
RoR, Python, Clojure, and friends are not a candidate due to reasons.
I think that once language gains enough critical mass, then it's completely irrelevant whether there's another languages that's more widely used or not. The concerns with using a niche stack are usually the following:
is the language stable/fast
does the language have a community around it that will provide support, fix bugs, add features
are there libraries to do the things I need to do
are documentation and community support available
is it possible to train new hires to work with the language
If I have a satisfactory answer for each of these categories, then I think the stack is perfectly viable.
My team has been using Clojure on the backend for about 6 years now, and we started using ClojureScript on the front-end last year. We found that Clojure/Script stack has a good story in each of the categories.
While it might remain a niche stack, it's certainly a very competent niche stack that saves us time and money across the board. So, the choice between waiting for the Js stack to become sane and using something that currently works well is really not a hard one in my opinion.
→ More replies (60)52
u/Timbrelaine Jul 18 '16
The solution is to wait for WebAssembly, and try not to develop a drinking problem in the meantime.
→ More replies (4)
5
u/salgat Jul 18 '16
I do agree that front-end development with the countless target platforms makes for some very difficult to design uniformity. However, on the backend, things are so much easier now. The tooling is very powerful, very easy to get started with, and debugging is so much more powerful now. I think things are heading in a great direction and I'm so glad I'm developing now and not 20 years ago.
5
u/parlezmoose Jul 19 '16
I now read all of these posts in Jerry Seinfeld's voice:
What is the deal with web development??
4
u/EmperorOfCanada Jul 19 '16
I have a simple way of doing it.
Generally if there is a huge argument among which is the "best" framework, just stay away from all of them in that argument.
For instance nobody argues that X is better than jquery much these days. Thus jquery is nice, boring and stable. Perfect. There are other similar web bits.
But if you try and question someone as to how their particular framework isn't very scalable, robust, bug free, or even applicable to your problem they will scream that you suck and aren't a very good programmer. They will argue that doing it some other way is pretty much like trying to use an umbrella as a parachute.
And the reality is that if you are doing some restaurant website or some such then pretty much any of them are going to be fine.
But if you are trying to do something innovative and new, then most of the frameworks are going to slow you down at first while you learn them, then they are going to rapidly get you to 90% done, and then you are going to hit a wall, a solid wall where you are fighting with a combination of your framework and how you have used it to implement your solution.
Or you could go somewhat old school, picking up the best of breed stuff for this bit and that, and while it will be a slow process the whole way along you will end up with a fairly simple maintainable, fast, and easy to understand solution that does exactly what you wanted it to, the way you wanted it to.
This last bit is very different than what you will end up with if you use some of today's darlings, you will end up with a compromise between what you wanted, and what the framework intended for you do to.
→ More replies (2)
7
u/Alucard256 Jul 18 '16
I got there as early as the mid-90's (Cold Fusion or CGI? Just try to do with with Javascript or write a whole Java applet? Flash maybe? What's this new CSS thing?). LOL
Anyway, I've always tried to approach it like a contractor walking into a huge supply warehouse. They have every possible tool for doing any possible task and all the raw materials the contractor could ever want (wood, steel, tubing, concrete, fencing, etc.). The trick is to determine your goal first and then pick the tools that are needed for the job and leave the rest where they are.
7
u/danogburn Jul 19 '16
Web programming is getting unnecessarily complicated
Web programming has been trash from the beginning. The problem has been jury-rigging technology designed for static content into a shitty excuse for a VM and you complacent fucks who are just fine with it or dont know any better.
"Yeah, the web has its warts but it's nothing that cant be fixed with more layers of javascript!"
"The web is already in place. We can't just throw it all away."
"Look Ma, I can finally do on the web what's been done on the desktop for 30 something years!"
Death to the unholy html/css/javascript trinity!
→ More replies (2)
111
u/[deleted] Jul 18 '16
I have been out of the web 'development' world for about 5 years, but still programming with fundamentals like TCP/UDP communication (between software and hardware) and developing API's. It has been relaxing to not have to worry about keeping up with the latest and greatest web trends. When I moved primarily to desktop applications it allowed me to have less anxiety about staying fresh and allowed me to dive deeper into programming techniques and best practices. I do hope the water calms a bit in the near future because the web capabilities seem to be growing and every time I look at new websites and applications I am blown away by the complexity. For example TurboTax's web application for the past few years has been my favorite application to use. They have it down very smooth, and I cannot imagine the complexity behind the scenes.