(Replying to PARENT post)
(Replying to PARENT post)
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.
(Replying to PARENT post)
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.
(Replying to PARENT post)
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.
(Replying to PARENT post)
- 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.
(Replying to PARENT post)
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).
(Replying to PARENT post)
Also, itβs the solution we wanted for decades for true portability, but most people just havenβt accepted that fact.
(Replying to PARENT post)
(Replying to PARENT post)
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.
(Replying to PARENT post)
(Replying to PARENT post)
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.
(Replying to PARENT post)
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?
(Replying to PARENT post)
https://www.amazon.com/Dream-Machine-M-Mitchell-Waldrop/dp/1...
https://www.amazon.com/Dealers-Lightning-Xerox-PARC-Computer...
(Replying to PARENT post)
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.
(Replying to PARENT post)
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)
(Replying to PARENT post)
(Replying to PARENT post)
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?
(Replying to PARENT post)
(Replying to PARENT post)
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
(Replying to PARENT post)
(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.