APIs, Not Apps: What the Future Will Be Like When Everyone Can Code
An anonymous reader writes: There's been a huge push over the last few years to make programming part of the core academic curriculum. Hype or not, software developer Al Sweigart takes a shot at predicting what this will be in a future where some degree of coding skill is commonplace and he has an interesting take on it: "More programmers doesn't just mean more apps in app stores or clones of existing websites. Universal coding literacy doesn't increase the supply of web services so much as increase the sophistication in how web services are used. Programming—by which I mean being able to direct a computer to access data, organize it, and then make decisions based on it— will open up not only a popular ability to make more of online services, but also to demand more.
Almost every major website has an Application Program Interface (API), a formal specification for software to retrieve data and make requests similar to human-directed browsers. ... The vast majority of users don't use these APIs—or even know what an API is—because programming is something that they've left to the professionals. But when coding becomes universal, so will the expectation that websites become accessible to more than just browsers."
Almost every major website has an Application Program Interface (API), a formal specification for software to retrieve data and make requests similar to human-directed browsers. ... The vast majority of users don't use these APIs—or even know what an API is—because programming is something that they've left to the professionals. But when coding becomes universal, so will the expectation that websites become accessible to more than just browsers."
. . . everyone will just think that they can code.
Hey, I have a Black & Decker cordless drill! And a can of Spackle . . . I guess that makes me a dentist!
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
So with this API stuff, what you are proposing is that all systems should be divided up into functional blocks, where every block has a single logical purpose, and that savvy users are able to chain these functions together however they see fit to suit their purposes?
Where have I heard this idea before? Oh yeah... it's called The Unix Philosophy.
If it's in you sig, it's in your post.
"But when coding becomes universal, so will the expectation that websites become accessible to more than just browsers" That's just not true. Website want you to go to the ... you guessed it, the website!
Do you really think everyone will offer access to content without making you see these pesky ads?
Ain't gonna happen dude.
You can't lower the bar much more without crushing a foot.
You can lead a horse to water, but you cannot make it drink.
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
The assertion seems to be that since code will be ubiquitous, then everyone will learn to code is provably silly.
Cars have become universal, yet the ability to fix them decreases with every generation.
Literacy is nearly universal now, would anyone assert that people write better now than they did 100 years ago?
Let's use even a code-like example: mods for first person shooter...the modding community used to be robust for these games but as the level of quality and complexity of the games have improved, I'd posit that the modders have (largely) disappeared; it just takes to much time/effort for hobbyists to make something comparably decent that doesn't look like crap compared to professionally produced levels.
-Styopa
and code will learn you.
I assume it will be like now, when everybody can write, only less.
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
If we have AI good enough to drive a car by itself, then surely, we will have AI good enough to access the online services that the article is talking about. Instead of a future where everybody knows how to code, wouldn't it be better to create one where nobody needs to code?
I've been trying to teach my wife vlookup in Excel and it's futile. API coding? Puleeze
The fact that a primary education provides a basic understanding of a thing doesn't mean that your're suddenly proficient to the point that you use it, in depth, in your daily life. Even if you could, it doesn't mean you'd want to.
Maybe I'm wrong.
People get a basic understanding of Biology so they don't need doctors.
People get a basic understanding of Chemistry so they just purchase elements and make their own chemical compounds (who buys soap when you can make it?).
People (might) get a basic understanding of music so they simply put on their own performances.
Right?
Website and services have been moving *away* from giving away API access for free. Twitter doesn't want third-party devs to write Twitter clients; they want to control the experience end-to-end. There's a few reasons off the top of my head:
In short, companies like Apple and Google and others would frequently rather build their own apps rather than allow third parties to "mash up" or build innovative new apps using their services and data (which in many cases is really the user's data).
Amen! The bottleneck of coding is not getting a program to "work", but making it maintainable: easy to add or change requirements and easy to study (read) to fix.
I've inherited "amateur" programs before, and they are often just not worth it. It was often less total resources to start from scratch.
Now, I'm fine with small personal automation utilities, but it shouldn't be expected that if the author (newbie programmer) moves on to another job, that a regular programmer should be expected to maintain it.
If it has shared utility or data, then it's best to have an experienced professional code it.
(Except, maybe in the few cases that the "professional" is so big of a jerk that the amateur is the better alternative.)
Table-ized A.I.
Sure, just like when they teached automotive repair in high school, every student left repairing their own cars!
And when they teached shop in middle school, every student left being able to build their own houses! Magnificent!
Just because something is force-taught to kids, does not mean the majority will pick it up after school. The vast majority will take their C+ or B-, move onto the next class, and forget everything they learned before the year is even over.
I agree that giving the kids the option to learn coding as part of school would be a step forward. So would bringing back shop and art class. But please let's not live in a dreamworld where every kid LOVES coding - it isn't going to happen.
Two words: Visual Basic.
That's what it's going to be like. Every shitty webpage, just like every shitty office suite in the past, will come with its tailor-made API that allows people to develop basic cargo-cult, copy/paste "programming" skills. People will just do that. And that's basically going to be it.
Nothing will change. People will look at something that does what they want to do, copy the code from there (usually without attributing the source or contributing anything to it) and slap together an ugly, frankenstein-esque monstrosity that will more by accident and chance produce something that, provided no special case happens, do more or less what they intend to do, with more or less accuracy.
In other words, nothing new to see here, please move along.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
When would that be, Al? Come on. Put down the pipe and back away. Most people can't even figure out how to use their fucking turn signals, and you think they'll somehow magically become programmers.
I think there'll still be apps, but things will evolve to having apps in parallel with APIs. For example, for an appointment-management service there'll be an app (or more than one, eg. a webapp for desktop use and a mobile app or mobile-optimized webapp for phone/tablet use) for customers who just want to let clients make appointments and want to be able to manage those appointments and don't need a lot of customization. There'll also be API access that would let customers get at the basic operations (with appropriate authentication and filtering for safety) that the apps themselves use so more sophisticated customers can use the service's functionality through a custom interface. It won't be an exclusive-or situation either, a customer may have their Web developer use the API to integrate setting up appointments into their own client web site while their staff use the standard webapp to manage appointments.
Neither the app nor the API will likely be free, either. The customer's clients won't pay in the above scenario, but aside from a trial period the customer would have to pay for access to the service (the amount probably depending on their usage and what features they want access to). We're about to hit a point where merely being able to get a huge userbase won't be considered valuable, you'll need to have a feasible roadmap for getting a revenue stream from your users. A thousand users each paying a monthly subscription will be more valuable than a million users not paying you anything. And frankly it's a lot easier to maintain paying users if you start them out as paying users.
There are always going to be people who are, to put it bluntly, thick as shit and have absolutely no aspirations to increase their intelligence level.
To do something right, you often have to roll up your sleeves and get busy.
This isn't an exact analogy, but calculus is more than 250 years old, and it's not like everyone is doing calculus. In fact, never mind calculus: there are plenty of people who, though they have sat in an algebra class, don't get even rudimentary algebra. So, why are we imagining that someday everyone is going to code?
quiquid id est, timeo puellas et oscula dantes.
When everyone can code there will be no such thing as a "web service" API because enough people would have been smart enough to spend their time developing useful transports rather than always relying on the lowest common denominator/lowest hanging fruit (e.g. http).
When everyone can code APIs will be designed properly as abstract interfaces that will not break every time something changes.
When everyone can code people will leverage the Internet to communicate directly among themselves as they see fit on their own terms. They will refuse to be limited, harassed, spied upon, sold and censored by massive content companies (Google, facebook, linkedin, twitter...etc) which currently are relied upon to facilitate most communication.
When everyone can code all of the mobile platforms will be completely open and free with no restrictions. They will maximally protect the interests of the user rather than interests of vendors and app vendors.
When everyone can code entire classes of vulnerabilities will become impossible due to sufficient effort having been spent on constraint based systems to avoid and detect problems with certainty.
When everyone can code DSLs will have displaced general purpose languages for most coders allowing them to operate more efficiently in their domains of interest. Coders will be grateful rather than whine about having to learn yet another language.
When everyone can code hell will have frozen completely over and re-purposed as a skating rink for angels.
There will never be a time when specialized programmers are unnecessary.... NEVER...
Fredrick Brooks, "The Mythical Man Month" needs to be consulted by those who think otherwise... His sage advice is a true today as it was in the 70's when he wrote that book, all that's changed is the names on the technologies.
Yea, you might have a rash of folks who can drive the mouse around, but you will need the specialized skills working behind that UI to keep it all working...
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
Because it worked out so well when we got everyone "programming" their own stuff in Excel and Access.
So many people today have the ability to take videos. And yes they do a bit for personal use but they mostly stick with pictures. However we are still consumers of video content for most of the time. Why would this be different with computers? I'm not going to write every app I need from a set of APIs. How many of us do that now? The average person is still going to get a game with the great graphics and physics engine from some company. You aren't going to put that together yourself with a bunch of API calls.
1) Each website will inevitably have its own API that is incompatible with every other similar service. With service APIs, no one will bother with standardization on anything but the base protocol, because no generic standard satisfies any individual service's full functionality.
That's pretty much a description of how web pages worked just fifteen years ago. Nobody misses the days when most websites were designed for IE or Netscape and you couldn't make a website that worked well in both without taking quite a few special behaviors into account. Today, Microsoft is pushing Edge, Chrome has a significant market share, and Firefox's trailblazing changes made it normal for a browser to use tabs and block pop-ups by default. Not only has standard behavior improved for the better, the industry leaders are all trying to adhere to standards.
Your instant messaging providers would still be incompatible with each other, for instance, because company A wants a whiteboard mode and company B wants custom emoticons.
Recognizing that is the state of things doesn't mean it will stay that way forever. Consider how many websites have realized that managing their own authentication process is a bad idea. There are still plenty of problems, but it is becoming normal to use an inter-operable system. Right now trapping people into a single messaging system is a business model, but I don't think it will stay that way.
2) Because it's easier/cheaper/faster, everything will depend on some company being in business and providing their service. If somebody makes a service that does text-to-speech extraordinarily well, for instance, and does it as an online API call instead of locally on the device, then if that company goes out of business the service dies with them and everything that depended on their particular text-to-speech engine would stop working.
Unless it's an open source service, then five more will spring up in it's place. If that text-to-speech service is widely desired, an open source version is guaranteed to spring up eventually.
Wait a moment... aren't these types of problems happening today? Business as usual then. Carry on.
Business as usual is widely panned, but we already live in a world where business as usual has radically changed in just a couple decades. I carry a computer in my pocket that is massively more powerful than I could have predicted twenty years ago. Yesterday I talked to it and got an answer. When I was a kid, I couldn't have gotten that answer without a trip to the library and possibly weeks of waiting for the library to get the book exchanged from another geographically distant library.
Business as usual for the average person is change, not measured in generations or even decades, but measured in months.
Now tell me why, as a designer/owner of a website, I should give a shit if someone wants me to provide something other than the web page I've provided already. No one shopping on Amazon - or reading one of my fables - has any need (and probably much less desire to code) accesses to the data otherwise. Make the argument something more substantial than "Information wants to be free, man."
Which will then have their own twists to the API - and the service will still be down and gone (and probably discarded) in that "eventually" you mention. You didn't solve the problem, you just created an never ending series of speed bumps.
That day will never come. That's how the world works. People are getting progressively lazier and its pretty long stretch to say that there will ever be a point when "everyone can code"...
Baby steps. Young people would be much better served by learning to brainstorm, reason, and think abstractly. And those basic skills will server them whatever they do. At most, teach coding as a way to obtain these basic skills, but not as an end to itself.
I'm sure this future feels a lot closer in San Francisco.
But I'd have just pointed at pants. Those are ubiquitous too. How many people do you know that could make a pair? Or even repair them? Hem them? Replace a button?
Then I guess I must be in a minority. I've replaced buttons on store-bought clothes. I've even made my own pants, but they have a drawstring closure instead of a button closure because I haven't learned buttonholes yet. And before I learned pants, I was making ankle-length shirts to wear.
Well... Mario Maker launched last week.... I'd say the number of average people designing game levels has quite possibly spiked to an all time high. ;)
For one thing, this is Nintendo catching up to where Sony was years ago with LittleBigPlanet. For another, around the launch of Super Mario Maker, Nintendo went on a DMCA takedown streak on YouTube, handing out copyright strikes to uploaders of TAS and Kaizo videos.
Yeah I'll get excited when most paid programmers can code. I'd say about 25% are reasonably competent and 10% are actually good. I too have done a lot of rewriting.
One case was - the guy was a pretty good software architect, and a terrible coder. The overall system worked well and the structure made sense. It was extensible. But if you looked inside any function, the lines of code were all kinds of bad. They didn't know about 80% of the errors their code threw only because the other errors hid them. For example, an important hourly,cron job was full of error-ridden code, but they didn't get the error messages because the cron job hadn't run for five months.
Management has no way of knowing how much technical debt they've accumulated, so they don't know - can't know - that a certain programmer put them $150,000 further in the hole.
Yet not everyone becomes a writer
Not everyone becomes a published writer, but a knowledge worker needs to write in order to communicate with co-workers.
Shit, everyone has a browser that supports JavaScript and everyone could start programming TODAY with zero entry cost, if they wanted to.
Does Safari for iPad support user-entered JavaScript, or just JavaScript downloaded from an external web server?
Imagine that you wanted a way to measure wireless signal strength as you deployed your first wireless network in 1997. You'd need to buy special equipment where today, you just download an app.
Since when does iOS have a public API to determine signal strength? Last time I checked, it didn't, and Apple's App Store forbids use of non-public APIs. This is why WiFi-Where was removed. iPhone and iPad users end up needing to buy "special equipment" in the form of an Android phone because unlike iOS, Android has public Wi-Fi APIs.
"What the Future Will Be Like When Everyone Can Code"
This is NEVER going to happen. Stop trying to make it happen. It doesn't NEED to happen. FFS, not everyone needs to know how to "code".
Replace the word "Code" in the title with nearly any activity and you'll immediately see how fucking stupid it is. For example:
What the Future Will Be Like When Everyone Can Wire A House
What the Future Will Be Like When Everyone Can Ride A Unicycle
What the Future Will Be Like When Everyone Can Crochet
What the Future Will Be Like When Everyone Can Mow The Lawn
What the Future Will Be Like When Everyone Can Adjust A Carburetor
What the Future Will Be Like When Everyone Can Solder
What the Future Will Be Like When Everyone Can Read An X-Ray
Enough already. Please stop with this delusion that everyone needs to code or even wants to.
Just cruising through this digital world at 33 1/3 rpm...
There is bad code for sure. There is also bad architecture and feature specs. In my experience there are often very fuzzy business requirements, sometimes legitimately: the customer can't tell you what they need they just ask for something "better". Example something I'm currently dealing with: the customer asks to be able to add multiple addresses instead of one to each order. Well is there only one address of a given type allowed (postal, physical, fax, etc) or an arbitrary number of each type? If so how do you know which should be listed first? They aren't sure but they need the feature in a couple months so they can demo it to customers.
So I end up making something as general as possible "just in case" someone somewhere might want to do things that way. Then a few months later I expect someone to complain: we screwed up and added 5 postal addresses to one customer, that make no sense why didn't you warn us?
Anyways, sometimes bad architecture comes about by poorly nailed down design requirements. Sometimes that can be helped by asking the customer more, and sometimes they don't know so are no help All you can do as a dev is tell them it is likely going to be 5X more work to do it in a way that will support all scenarios "just in case" vs doing it the "one true way". If they say fine you need to live with the legacy junk until they feel free to free you up to do a refactor on the code and not spend the whole release trying to pound out new features (fat chance in hell). Sometimes the best you can do is write code that doesn't suck to bad in what the expected typical use case is, and drag it forward as long as you can to meet the current requirements. Once it breaks to the point of no return you have to pay all the tax of the lack of good specs you had all along. This doesn't excuse crappy coding at the method level though: that is a matter of skill and hopefully anyone that considers themselves a professional continues to learn from code reviews, training etc and gets better over time. If you don't you suck and need to go.
Ugg. The future where it's all API's is already here. The fact is learning API's is often a pain in the ass. Maybe most people could code if you told them they would be killed in five years if they didn't learn to code, but no, we are not moving towards everyone being able to code, or everyone even being that computer savvy, or people knowing how to turn their problems into specific algorithms.
Democracy Now! - your daily, uncensored, corporate-free
If you cannot automate tasks as part of your job, someone else who can will be more cost effective, or someone else will fully automate your job. Either way, I imagine being able to script some automation together will be an essential part of being able to gain work in the future, especially as so much of general work consists of repetitive tasks.
Sites like iftt and other introductions to scripting solutions, make this type of automation easy for the general population to get the building blocks of automation without the overheads of making a request to an IT specialist.
How many programmers work on mail merge or the many other office functions that have been solved many times over already? Yes, just as today, there will be some spreadsheets from hell and some vb messes, but the same productivity pressures will retain more of the capable ones than the mess generators.
Middle managers creating their own crap scripts can still have a huge impact on their productivity, and this is an area that some traditional IT departments have not supported very well other than to try to lock it down, albeit with some good reasons.
I hear some ludicrous predictions for the future all the time. This pretty much takes the cake. There is no concern whatsoever that all or a majority of people could possibly be proficient enough programmers to interface usefully with arbitrary API's from day to day.
Recall that the majority of people cannot pass a basic algebra class. Just the idea of a variable is beyond about half of people. I'd be happy if most people just got educated enough about programming to realize how friggin' ludicrous this prediction is.
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
I doubt that we will be awash in coders as a result of high school literacy in code.
This is much the same that a high school curriculum of science, math, language arts does not make the world flush with chemists, engineers, theoretical mathematicians. What it does create is a community that has a level of appreciation, and the potential to specialize in that particular field.
Think of it as having a whole lot of engineers that have become managers. They can still code if they needed to, but generally won't. However, the engineering concepts are known even if they aren't being used.
Enough said.
Unless computers become AIs, they will never be able to deal with fuzzy logic and imprecise specifications. As XKCD said " No language will free you from the burden of having to clarify you ideas."
To make a computer program you have to be able to formalize your ideas and present them in a logical format to the computer. Even when you have lots of tools to make the details easier, the fundamental requirement remains. You have to get the flow of your ideas in to a logical format that can become something an imperative device can execute.
Well, some minds are better at that than others. Some people are not very good at the kind of logic and creativity that programming requires. So they aren't going to become programmers, even if there was some real reason for it.
Yeah, right, just like everyone can cook.
...when anybody can service their car. ...when anybody can be a surgeon. ...when anybody can be a hooker...oh wait.
Dumb article.
How many people studied math in school?
Everyone. You can't get through elementary school without math.
How many people use anything more advanced than multiplication and division?
How many of them are actual mathematicians?
Now... How many people HATE math cause they either never had aptitude for it OR due to the way they were taught math?
Besides that... What's the use of a half the humanity of below average programmers?
Mit der Dummheit kämpfen Götter selbst vergebens
Oh indeed, asking representatives of customers about requirements sure isn't very effective. Even worse is trying to get requirements by asking someome in our department, who asked someone in the users' department, who may or may not have asked the users. I always try hard to actually watch real users actually do the task, and say "show me when might you need multiple addresses ". If it's not possible to get to the users desk, I try to talk to them on the phone get screenshots , etc. I want to understand their process better than they do, so I can build tools which improve their process.
We love to complain about poorly specified requirements, yet we often do a poor job of getting the requirements. Rarely have I been turned down when I asked "can I come see?" We fail to ask "what happens with the information my program gives you? What do you do with it after you run my program?" All too often the answer is "I paste it into a spreadsheet and ... so I can get the information I actually need." Then what do you do next? "I type those numbers into foo.exe." Of course foo.exe just puts the information into the same database that we got the initial data from. The entire process they do each day is a 30-minute way of accomplishing "insert into daily_summary select sum(blah) from items".
I am so sick of this kind of propaganda that the industry is pumping out. It's complete BS. It's an attempt to drive down labor costs since most companies cringe at the idea of having to pay a technically adept worker what they are worth. Everyday on my ride in to work I have to listen to these stupid radio commercials trying to sell people on IT by simply taking a 6 month online course. Give me a break... If it were that easy, then yes, everyone would probably be a coder or IT professional, but it's not and the industry is changing at such a fast pace that even IT professionals have to keep up to date with industry standards, new technologies and best practices regularly in order to not be left in the dust. This propaganda is nothing more than an ill conceived attempt at driving down labor costs. Companies need to suck it up and pay people what they are worth whether they are coders or not! People claiming to be programmers are a dime a dozen but good programmers are very hard to find.
You'd be surprised how many can't even file a decent bug report, even if you give them a template with six simple questions on it.
"Oh, I thought I only had to answer one".
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
why would you buy an iPad if you want to do programming?
I was thinking of the case of someone who already owns an iPad and wants to start doing programming without having to spend hundreds on a new computer.
I code, a lot. But I don't need an API for everything. Beside my work, I'm at 99% a regular computer user. If I want to read twitter feeds, I go to twitter.com, why should I mess with the API? My needs aren't so specific that I should write my own code.
And even when I do the remaining 1%, I rarely use website APIs, even when they are available.
"Saddles, Not Sore Feet": What the Future Will Be Like When Everyone Has Leatherworking Skills To Make Their Own Saddles
- Daily Tribune, 15th March 1789
Nothing you can't solve with an adapter API controlled by 47 tons of incomprehensible XML.
Of course, now you have two problems.
https://xkcd.com/927/
Confucius say, "Find worm in apple - bad. Find half a worm - worse."