4 ms·
I would expect layers of abstraction to continue to build up and programming to become something like using spreadsheets to do your actual task. But
by JohnBooty 5y ago
I would expect layers of abstraction to continue
to build up and programming to become something
like using spreadsheets to do your actual task.
But in general, people have been saying this for 50+ years.
It hasn't happened yet for (at least) two reasons.
1. Increased demands on programmers have increased at least as quickly as their productivity has skyrocketed.
2. Non-trivial systems will require some non-trivial encoding of business and data logic. You can simplify the tools all you like, but at some point the tools are no longer the limiting factor and some complex logic has got to be dictated to the dang computer, somehow, by somebody. It is then going to need to be tested and deployed. It is also going to have to be built in ways that are maintainable. Most programmers struggle with these things in 2022; we are nowhere near making this easy for laypeople. If anything I feel that infrastructure has gotten way more complicated in the last 10 years.
Something does need to change. The current situation is unsustainable, with programmers commanding insane salaries. At some point it becomes a limiting factor on the economy.
But our tools are decades away from being usable by non-programmers. I see no possible solution besides increasing the supply of programmers.
- mrtksn 5y agoJust because it has not completed doesn't mean it isn't happening. These days very small number of people know how computers actually work(how many know assembly or even C?) but there's a huge number of people building their businesses by programming machines do things. In the last 20 years, people were using languages close to English to express their ideas to a computer and make it do work. You touch computer science stuff only when you dive deep in something that hasn't been commercialised completely and when the market is large enough it quickly develops into services where you tell the computer do things in "plain English". The cloud is a good example where 20 years ago you would have to understand the architecture of server systems and networking, these days it's just a form you have to fill and express some rules about accessing the resources in "plain English". Similar abstractions have been happening everywhere, from AI to game development or graphics generation everything is so abstracted that all you need is to learn the tool through a few tutorials to be productive. Many people start from the high level abstractions and dive deeper later on since many years. You first build your multiplayer game, make some money and then maybe you learn about stuff like DNS, TCP/IP. That's only possible because networking and server management is completely abstracted and the game developers only interact with the cloud provider's SDK that handles all kind of edge cases and optimisations.
- hackerfromthefu 5y agoThis seems perhaps an idealistic take on how effective the layers of abstraction are. To examine just one of the examples >> these days it's just a form you hav to fill and express some rules about accessing the resources in "plain English". I'm of the opinion getting the cloud to run your systems effectively, and without blowing a large hole in your budget, may be a little harder than it seems from that sentence.
- lanstin 5y agoBecause when you configure your AWS like this, you get public buckets and so on. With private datacenters, Dev Ops can mean Dev can be responsible for their own stuff; with AWS, DevOps is there to keep dev from sending all the company data to the whole world.
- 8note 5y agoas far as expressing things in plain english goes, id think of the various voiceboxes. i can get the computer to turn my lights on and off using plain english, along with some other things
- JohnBooty 5y agoThose are simple states - binary on/off states for the lights, etc. It falls apart fast when you start trying to explain actual engineering stuff in plain English: iterations, complex nested conditional logic, error handling, massaging and sanitizing data, etc. You could describe each of those steps in English, but what have you gained at that point? You've still had to express all of the same exact complexity, but you've done it in a language that is far more clunky than a programming language designed for the task. It's like trying to tell a musician how to play one of Beethoven's symphonies using English instead of sheet music. Even if you could, why? You've expressed the the same exact thing, but in language that is orders of magnitude clunkier.
- JohnBooty 5y agoOh yeah, I remember people saying that about SQL a long time ago. People wouldn't need database engineers any more. Same with Visual Basic. No more application developers. Just drag and drop! You might ask yourself why VB6 or Delphi didn't simply rule the world forever. We had those ~25 years ago and with those tools, non-engineers could drag and drop their client/server database-CRUD apps together. Hell, you could do most of that stuff in FoxPro or dBase even earlier, minus the GUI. You touch computer science stuff only when you dive deep in something that hasn't been commercialised completely and when the market is large enough it quickly develops into services where you tell the computer do things in "plain English". You're fantasizing away the enormous middle ground of development work that lies between "hardcore computer science-y stuff" and "things non-engineers are able and willing to accomplish." The "plain English" bit is hilarious. Human languages are extremely imprecise. That's why we have specialized "languages" for lots of things: math, music, etc. Maybe you are living in another universe where AppleScript took over, I don't know. Ask yourself if "plain English" tools have replaced engineers in other specialized disciplines. Can I tell my keyboard to write me a song in "plain English?" Can I design an airplane in "plain English?" Can I build a bridge in "plain English?" These days very small number of people know how computers actually work(how many know assembly or even C?) Sure, only a small % of work requires low-level languages, or knowledge of how a CPU works. But the bottom line is, somebody needs to describe complex processes to the computer in a very precise way that handles lots of edge cases, filthy data, errors, etc. At some point, somebody has to write that logic and if there's more than one person doing it they'll need a development pipeline of some sort. And they'll need to do it in a maintainable and scalable way. The tools are generally not the limiting factors here. You could replace Javascript and Python and Ruby with world's friendliest, code-free GUIs but you'd still have to describe those processes in an equal amount of detail and do it in equally maintainable and scalable ways, and I doubt it would be as terse or as expressive as the aforementioned languages. Similar abstractions have been happening everywhere, from AI to game development or graphics generation everything is so abstracted that all you need is to learn the tool through a few tutorials to be productive. I am not denying the power of these tools. However, I see these more as "opening up new avenues" as opposed to "eliminating the need for all kinds of nitty gritty development work that actually makes businesses go." Drag and drop all the sweet zero-code shit together you want in Unreal Engine; somebody has still got to sanitize and massage the weirdo sometimes-broken JSON that our partner's API likes to return sometimes and handle the error states when it can't be fixed.
- analog31 5y agoSomething that I think about, is that we live in the greatest tech driven economy in the history of humanity, and it grows at a rate of about 2% per year. What I don't believe is that every programming activity contributes equally to that growth. By "activity" I loosely mean anything from a solo programmer to a large software business. Some are assets to the economy, others are liabilities, yet they pay the same salaries either way. Economic growth is close enough to 0%, that a decent rule of thumb is that whether any specific activity is an asset or a liability to the business that engages in it, is a coin toss. This is reflected in comments made by developers themselves, to the effect of, "I don't know why we're doing this, it's going to cost a lot of money and make things worse." These kinds of comments are about projects that they're working on themselves.
- bee_rider 5y agoCould also be that much of the work is zero-sum. For example ads to some extent just shift consumers from one company to another without actually creating anything (although, some might cause new demand). The stock market is exists to allocate resources more efficiently, but some of the shorter-term stuff looks more like pouring a ton of math and software work into coming up with better gambling strategies...
- chii 5y ago> coming up with better gambling strategies... "better gambling" means better predictions of the future. this means making use of all available information, which means higher market efficiency. It's not useless to do better in the stock market.
- JohnBooty 5y agoIt's hard to say, because so much of the work of keeping a company running is so far removed from income generation or anything else. Does cleaning the company toilets contribute to the company's growth? I mean, not really, but on the other hand if nobody ever does it then it becomes an impediment. A lot of programming work is like that.
- Terry_Roll 5y ago> 1. Increased demands on programmers have increased at least as quickly as their productivity has skyrocketed. So does anyone know what the most productive programming tool is then?
- visarga 5y agoI think it's the code library. You import stuff and use it right away, without needing to know 99% of the internal details. That has empowered us to do amazing things quickly. But having to deal with 100,000 libraries has become its own problem.