6 ms·
How did software development end up dominated by web dev?
I am a junior/newbie preparing to enter the industry. however scouring the job boards, it seems that everything is web-based these days. And UI development plays an important role in web development \something i'm not fond of).
How did things come to this?
- arduinomancer 5y agoThe "how" is really that computers just got powerful enough and internet speed got fast enough to a point where there is no longer a need to have a native app for most companies Users already have to go to your website: why even bother having an extra step of downloading your app if they don't need to?
- garbagecoder 5y agoAsk yourself how much time a user spends in various apps. I would get that other than old productivity apps and games most users spend almost all of their time in browsers. Also, it’s the solution we wanted for decades for true portability, but most people just haven’t accepted that fact.
- epc 5y agoFewer gatekeepers, more users, lower development costs, tighter feedback loops.
- mikewarot 5y ago>Fewer gatekeepers, lower development costs, tighter feedback loops. There are far more gatekeepers when you've got an application spread across the internet. The ISP or Cloud providers can lock you out, you can lose your certificate, DNS, connectivity. The browser, ad-blocker, or a random change to java/javascript, etc can change your results. Governments of all levels, along with their spy agencies, and large profit driven corporations can intervein between your code and the end user. A cable could get cut, or WiFi go down, a Telco or Apple or Google could decide your "app" isn't in their interest. >more users - I agree, but they're used to "free", and aren't always the customer. >lower development costs How is having an "app" that works through all the above simpler than a program installed (or just thrown into a folder, and run as a "portable" program) not far easier to support? You can write to the screen almost directly, and probe files/folders in the same way, with no gatekeepers. >tighter feedback loops. Since you can't run it on your desktop and be confident, you have to test across all your users, or a wide swath of output devices, browsers, OSs, etc.
- epc 5y agoAll of those are absolutely potential roadblocks and yet, somehow, web applications displaced desktop applications as the preferred user experience. Purity does not always win out over utility. I don’t particularly miss having to decipher which version of MSCVRT.DLL I need for which Windows app.
- PaulHoule 5y agoFor many kinds of application software the web is clearly superior. (1) You can tell people to go to a URL and it almost always "just works". Contrast that to considerable work to develop a Windows installer, Mac DMG file, RPM/DEB/other packages for Linux, etc. (2) Once you put installers and packages in the field you will discover some people have machines in an odd state and your software won't work on them. Some people will give up (either your competitor wins or indifference wins), others will lead you into a rabbit hole solving their problems. (3) Something will go wrong with your software. For a low risk change, say fixing a typo, you can deploy a change to a web app in minutes even with the discipline of version control, automated tests, and cache invalidation in place. For other platforms the process of building and testing installers, wait for/fight with the app store, then getting the people to really upgrade is a huge hassle that could stretch on for days or weeks. (4) If you don't have the software versions synchronized, client/server protocol mismatch will complicate your efforts to fix bugs and add features. (5) Data is safer in a data center or a cloud than it is for a client device that could can be lost, stolen or destroyed in a opportunistic or targeted way (6) No cross-platform UI framework is better than the web browser in terms of (a) UI quality (b) ease of development or (c) range of devices supported. (7) Any system for e-commerce, internet of things, digital twins, machine learning, space travel, compilers, data structures, weapons systems, etc. has a user interface on the critical path My heroes right now are people like Walt Disney and Jim Henson who built seductive systems and spaces to enchant people. I find that opportunity meaningful in U.I. work.
- polishdude20 5y agoIt's the easiest way to get software out to a user.
- jstx1 5y agoThis isn't something that has happened to software development as a field, nor is it a problem in any way. It's just that the web is a really big deal so there are many jobs working on web stuff.
- jbothma 5y agoNot directly the answer to your question, but if I may comment on the background to your question: - There's a place for backend focused development for the web. So you don't have to be an expert in frontend. But it helps to understand frontend concerns so you can speak a frontend dev's language to build interfaces that work for their needs. Be it server-side or APIs. - there are fun technicalities of frontend - state management, asynchrony, software architecture for these problem spaces - lots of things that turn out to be technically interesting where you might be able to carve out a niche for yourself so you don't have to spend most of your time pushing pixels - like desktop and probably mobile app development has gui frameworks where you can assemble UIs with components with largely existing styling that just needs configuration, the web frontend space has component libraries with style plugins like bootstrap and material ui, where a lot of styling is done for you, and you can focus on assembling the application rather than visual design or pixel pushing. It's not perfect for all cases, but it's effective for many. Which means if you don't want to be designing and building websites, you can still build good looking applications for the web and focus most of your time on functionality.
- user10874967111 5y agoThis thread tells you all you need to know. People have literally forgotten that non-web programming makes up 1% of jobs and yet 99% of actual software that powers society is non-web software.
- smorgusofborg 5y agoI think you could make a similar criticism about construction and architects.. Why would an architect care about burning their limited years to establish themselves on renovations of the vast quantities of older and uninteresting house stock and why we care about software that we can rarely be paid for? I'm sure many a homeowner is annoyed that they can't get a great architect to do their renovations, yet few are annoyed enough to influence the market.
- simplestats 5y agoThe analogy fits in terms of what you're doing in the biggest job category is the shortest-term and perhaps smallest modifications. But if you're the software analog of an architect who is actually trained well enough to be able to do both the "less inspiring" stuff as well as more desirable creative projects, then you can probably get into a different field of programming (VR, data science, security) that also pays better too.
- ahartmetz 5y ago1% of all jobs or of software jobs? It is much more than 1% of software jobs. There is still some "desktop" work, and a lot of embedded.
- deleted 5y ago[deleted]
- deleted 5y ago[deleted]
- ThrowawayR2 5y agoWhy wouldn't it have come to this? Every revolution in communications (printing, radio, telephones, TV) came with an explosion of consumer demand and industries/jobs to serve it. The internet revolution is no different. If anything, it's more profound since coupling a more capable communications medium with the ability to execute logic against the information received is really two revolutions in one (three if you count the concurrent rise of wireless data over cellular networks). That being said, if you prefer not to work in web technologies, those jobs certainly exist: middleware/platforms, embedded systems/IOT, some of the stuff FAANG does, etc. Remember, all those people writing web stuff rely on a very tall stack of layers and platforms to do what they do. You can find these jobs, with a little patience and persistence.
- dyeje 5y agoBecause write once, run anywhere is a compelling concept.
- salawat 5y agoOne word: Monetization. If I can get you to use my hardware to do computations you were perfectly capable of doing on your own hardware given the same code, you're more liable to be comfortable paying me rent. Throw in that web apps have a lower barrier to entry in terms of grokking libraries written in a systems programming language, and you have the "Software Engineering world being dominated by Web Dev". Sad, isn't it?
- Jugurtha 5y agoDistribution. You develop software. How do you get it in the hands of users? Shrink-wrap, on-premises, downloadable executables and installers, SaaS (through the browser in one environment, or supporting lower browser cardinality than user environments'). Once you choose SaaS as distribution mode, you're writing for the web. Therefore a part of your problem, an important one, becomes web development.
- scotty79 5y agoLargest hardware platform and with built in multi-user access.
- danmaz74 5y agoMobile development (for iOS or Android) is very big too. But, more relevant for you, both web and mobile development require a lot of back-end development where you don't need to have any contact with UI/UX.
- thevagrant 5y agoThe barrier to entry was low early on. Developers openly shared information as the Internet gained adoption. View source meant an inquisitive person could teach themselves new tricks. Web development in its infancy was simple so a whole generation of developers could learn as the technology improved. As a developer in the 90s and early 00s it wasn't cheap or easy for everyone to get Visual Studio/Delphi/Borland C++ Builder, not to mention obtaining the knowledge to drive those tools effectively. Web development might be more difficult today but for a decade or two it massively smashed barriers to entry.
- closeparen 5y agoA lot of the work in bigger companies is "backend." You work on APIs that are probably invoked somewhere in the service of a web request, but may not be directly web facing. And if they are web facing, you have a mobile or frontend developer colleague who implements the client. You don't have to do frontend if you don't want to. Obviously if you want to work in startups and build a product from scratch it'll be pretty important. If you want to work in big companies, the backend path has less skills churn (we don't throw out our framework every 6 months) and higher growth potential (it is easier to have a big impact on the org vs. churning out features, which is a low to mid level position).
- mikewarot 5y agoThe users have a job to do, they want to be able to do it via their laptop, tablet or phone. The tools exist to make it happen, as cobbled together as they are, so they don't care about UI anywhere near as much as a power user on a desktop connected via Gigabit to the servers in an office environment. We were able to cobble together enough things via the web to make it possible for the user to get things done, with very rough edges, which have been sanded off a bit in the past decade. It is still light years less productive than the desktop power user, but the corporations and end users don't care. Eventually we'll have programs that run on the end user's machine inside a VM, talking to the servers hiding behind web servers, doing a crude imitation of IBM 3270 terminals used in the 1970s for data entry. Everyone will herald it as success.
- rixed 5y agoAlmost all responses state distribution as the main advantage of the web, and I certainly agree. I just wanted to add that what we really need is a form of distributed operating system, and the web is the closest implementation of that, albeit a painfully poor one. So, follow up questions might be: how come we have been unable to agree on some shared abstraction of a user and an app at the OS level? And are we now stuck forever in a world where software is grown organically rather than engineered? (as per Dijkstra's famous analogy)
- aristofun 5y agoHere are the good books trying to answer your question among others: https://www.amazon.com/Dream-Machine-M-Mitchell-Waldrop/dp/1732265119/ref=tmm_hrd_swatch_0?_encoding=UTF8&qid=1641114548&sr=8-4 https://www.amazon.com/Dream-Machine-M-Mitchell-Waldrop/dp/1... https://www.amazon.com/Dealers-Lightning-Xerox-PARC-Computer/dp/0887309895/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=1641114586&sr=8-4 https://www.amazon.com/Dealers-Lightning-Xerox-PARC-Computer...
- throwawaygal7 5y agoBuilding and packaging desktop apps is a huge pain, and a maintenance nightmare. Ask anyone who does it. Fixpack releases, bug fixes, packaging and dependency management over N operating systems... it's a special he'll. Now, do it in the browser and you can update the page without notifying anyone, making a formal release or jumping thru many flaming hoops
- specialist 5y ago"Client/Server" killed off desktop and workgroup apps. With it came all that consultancy driven enterprisey crap: n+1 tiered architectures, execrable design patterns (MVC v MVP v MVCC), meta markup languages, schemas and mappings, yadda yadda. Web development is just the opportunistic parasite that snuck in after enterprisey dev blew apart the industry. Everything that sucks about enterprisey dev also sucks about web dev. Then pile on top the insanity of HTML, CSS, JavaScript... Almost makes one wistful for X-Windows. Web dev didn't have to suck. It could have just been an update to time sharing and smart terminals. But every generation has to reinvent everything from scratch every time. It's some kind of natural law. Lather, rinse, repeat. -- There are precisely two good parts that "the web" bequeathed onto the world: HTTP and URLs (URIs). Those really were game changers. For one, both are "open". All of the alternatives were in the same idea space as Xanadu. Closed gardens, proprietary. At the moment, I don't recall any other contenders for the use cases HTTP and URI solve. The only close analogs I can think of are the SNMP stack based on ASN.1 and MIBs (OIDs). And omg that stuff sucked. Oh, some of it's coming back to me. X.500 (for addressing) and CORBA (for RPC) and the like. We are SO LUCKY HTTP and URIs showed up.
- julianeon 5y agoThe killer feature is web dev is: people can see your stuff. Instantly. That's so powerful that, over time, it ends up sucking a lot of devs in, who do great work which struggles with visibility. Like I could probably look up a Haskell library right now which is a monumental feat of software engineering, that has like 1k users, total. Then I could look up some web dev app that's piss poor compared to that, which has like 1 million users. That ends up exerting a gravitational pull over time, and that's why web dev dominates the software development discourse.