Posted on 10/19/2020 8:49:54 PM PDT by SeekAndFind
In 1930, John Maynard Keynes predicted that wed be having 15-hour workweeks by the end of the century. But by the time it was 2013, it was clear that the great economist had gotten something wrong.
Welcome to the era of bullshit jobs, as anthropologist David Graeber coined it. Since the 1930s, whole new industries have sprung up, which dont necessarily add much value to our lives. Graeber would probably call most jobs in software development bullshit.
I dont share Graebers opinion, especially when it comes to software. But he does touch an interesting point: as more and more processes are automated, most jobs are obsolete at some point. According to one estimate, 45 percent of all jobs could be automated using current technology. And over time, they probably will.
In software development, where things move pretty fast anyway, you can see this happen in real-time: as soon as software testing became a hot topic, automation tools started springing up. And this is just one of the many areas where the bullshit-parts the parts that are iterative and time-consuming of software has been automated away.
This begs the question, though, whether developers are making themselves obsolete by building automation tools. If more and more machines can write code for themselves, what do we need humans for?
Software developers are builders at heart. They build logical links, algorithms, programs, projects, and more. The point is: they build logical stuff.
With the rise of artificial intelligence, were seeing a paradigm shift though. Developers arent designing logical links anymore. Instead, theyre training models on the heuristic of these logical links.
Many developers have gone from building logic to building minds. To put it differently, more and more software developers are taking on the activities of data scientists.
If youve ever used an IDE, then you know how amazing assisted software development can be. Once youve gotten used to features like autocomplete or semantic code search, you dont want to go without them again.
This is the first area of automation in software development. As machines understand what youre trying to implement, they can help you through the process.
The second area is that of closed systems. Consider a social media app: it consists of many different pages that are linked among each other. However, its closed insofar as it isnt designed to directly communicate with another service.
Although the technology for building such an app is getting more and more easy to use, we cant speak of real automation yet. As of now, you need to be able to code if you want to create dynamic pages, use variables, apply security rules, or integrate databases.
The third and last area is that of integrated systems. The API of a bank, for example, is such a system since it is built to communicate with other services. At this point in time, however, its pretty impossible to automate ATM integrations, communications, world models, deep security, and complex troubleshooting issues.
The three areas of automation. Image by the author, but adapted from Emil Wallners talk at InfoQ. Software development is a bumpy road, and we dont really know when the future will arrive.
When asked whether theyll be replaced by a robot in the future, human workers often dont think so. This applies to software development as well as many other areas.
Their reason is clear: qualities like creativity, empathy, collaboration, or critical thinking are not what computers are good at.
But often, thats not what matters to get a job done. Even the most complex projects consist of many small parts that can be automated. DeepMind scientist Richard S. Sutton puts it like this:
Researchers seek to leverage their human knowledge of the domain, but the only thing that matters in the long run is the leveraging of computation.
Dont get me wrong; human qualities are amazing. But weve been overestimating the importance of these problems when it comes to regular tasks. For a long time, for example, even researchers believed that machines would never be able to recognize a cat on a photo.
Nowadays, a single machine can categorize billions of photos at a time, and with a greater accuracy than a human. While a machine might be unable to marvel at the cuteness of a little cat, its excellent at working with undefined states. Thats what a photo of a kitten is through a machines eyes: an undefined state.
In addition to working with undefined states, there are two other things that computers can do more efficiently than humans: firstly, doing things at a scale. Secondly, working on novel manifolds.
Weve all experienced how well computers work at a scale. For example, if you ask a computer to print("I am so stupid")
two-hundred times, it will do so without complaining, and complete the task in a fraction of a second. Ask a human, and youll need to wait for hours to get the job done
Manifolds are basically a fancy, or mathematical, way of referring to subsets of space that share particular properties. For example, if you take a piece of paper, thats a two-dimensional manifold in three-dimensional space. If you scrunch up the piece of paper or fold it to a plane, its still a manifold.
It turns out that computers are really good at working in manifolds that humans find hard to visualize, for example because they extend into twenty dimensions or have lots of complicated kinks and edges. Since many everyday problems, like human language or computer code, can be expressed as a mathematical manifold, there is a lot of potential to deploy really efficient products in the future.
Where we are in terms of computer scalability and the exploration of novel manifolds. Were working on areas one and two, but have barely touched area number three. Image by the author, but adapted from Emil Wallners talk at InfoQ.
It might seem like developers are already using a lot of automations. But were only at the cusp of software automation. Automating integrated systems is almost impossible as of today. But other areas are already being automated.
For one, code reviews and debugging might soon be a thing of the past. Swiss company DeepCode is working on a tool for automatic bug identification. Googles DeepMind can already recommend more elegant solutions for existing code. And Facebooks Aroma can autocomplete small programs on its own.
Whats more, the Machine Inferred Code Similarity System, short MISIM, claims to be able to understand computer code in the same way that Alexa or Siri can understand human language. This is exciting because such a system could allow developers to automate common and time-consuming tasks, such as pushing code to the cloud or implementing compliance processes.
So far, all these automations work great on small projects, but are quite useless on more complex ones. For example, bug identification software is still returning many false positives, and autocompletion doesnt work if the project has a very novel goal.
Since MISIM hasnt been around for a long time, the jury is still out on this automation. However, youll need to keep in mind that these are the very beginnings, and these tools are expected to become a lot more powerful in the future.
Some early applications of these new automations could include tracking human activity. This isnt meant like a spy-software, of course; rather, things like scheduling the hours of a worker or individualizing the lessons for a student could be optimized this way.
This, in itself, presents huge economic opportunities because students could learn the important stuff faster, and workers could serve during the hours in which they happen to be more productive.
If MISIM is as good as it promises, it could also be used to rewrite legacy code. For example, lots of banking and government software is written in COBOL, which is hardly taught today. Translating this code into a newer language would make it easier to maintain.
Being a software developer will remain exciting for a long time to come. Photo by Brooke Cagle on Unsplash
All these new applications are exciting. But above them looms a big Damocles sword: what if the competition makes use of those automations before you catch on? What if they make developers totally obsolete?
These are certainly two buzzwords in the world of automation. But theyre important nevertheless.
If you dont test your software before releases, you might be compromising the user experience or encounter security issues down the road. And experience shows that automated testing covers cases that human testers didnt even think of although they might have been crucial.
Continuous delivery is a practise that more and more teams are picking up, and for good reason. When you bundle lots and lots of features and only release an update, say, once every three months, you often spend the next few months fixing everything that got broken in the process. Not only is this way of working a big hindrance for speedy development, it also compromises the user experience.
Theres plenty of automation software for testing, and theres version control (and many other frameworks) for continuous delivery. In most cases, it seems better to pay for these automations than to build them yourself. After all, your developers were hired to build new projects, not to automate boring tasks.
If youre a manager, consider these purchases an investment. By doing so, youre supporting your developers the best you can because youre capitalizing on what theyre really good at.
Oftentimes, projects get created somewhere in upper management or close to the R&D-team, and then get passed down until they reach the development team which then has the task of making this project idea real.
However, since not every project manager is also a seasoned software engineer, some parts of the project might be implementable by the development team, while others would be costly or pretty much impossible.
That approach may have been legitimate in the past. But as lots of the monotonous parts of software development yes, those parts exist! are being automated, developers are getting a chance to get more and more creative.
This is an excellent chance to move developers left, i.e., involving them in the planning stages of a project. Not only to they know what can be implemented and what cant. With their creativity, they might add value in ways that are not imaginable a priori.
Its been a brief five years since Microsofts Satya Nadella proclaimed that every business will be a software business. He was right.
Not only should developers shift left in management. Software should shift up in priorities.
If the current pandemic taught you anything, then it is that much of life, and value creation, happens online these days.
Software is king. Paradoxically, this becomes more apparent the more of it gets automated.
When I was at school, people who liked computers were deemed unsociable kids, nerds, geeks, unlikeable creatures, and zombie-like beings devoid of human feelings and passions. I really wish I were exaggerating.
The more time is progressing, however, the more people are seeing the other sides of developers. People who code are not regarded as nerds any more, but rather as smart folks who can build cool stuff.
Software is gaining more power the more its being automated. In that sense, your fear of losing your developer job due to automation is largely unfounded.
Sure, in a decade in a few months even youll probably be doing things that you cant even imagine right now. But that doesnt mean that your job will go away. Rather, it will be upgraded.
The fear that you really need to conquer is not that you might lose your job. What you need to shake off is the fear of the unknown.
Developers, you wont be obsolete. You just wont be nerds that much longer. Rather, youll become leaders.
Written by
No machine can do my job until it learns how to drink.
yes and no.
Programming was and is a skill and an art but, like industrialization, we’ve distilled a lot of it down to rote techniques which can be automated and auto-coded by machine or quickly assembled by unskilled staff.
Like everything else that doesn’t completely eliminate the need for the actual, skilled, software engineer but those jobs will be harder to come by.
Seriously, most of what I write is designed to be automated or part of automation. But there seems to be a never ending stream of things to automate.
We can all be cops.
Yeah sure. And machine trading will be making money for people playing the stock market.
Might, maybe, could be, if, granted, theorized, prognosticated, possibly, perhaps, conceivably, perchance, credibly, feasibly, .......Not a chance...
Problem is only idiotic brainless Indian programmers who just copy-paste code are the ones getting hired at present. Seems decent American programmers are stuck in the computer games industry or stuck
unemployed. Even here, if you dont have a few AAA titles currently under your belt, you wont get an interview. This is the only niche where Indian by-rote copy-pasting isnt useful.
To write the code for the machines that write the code.
My degree in Computer Science is from 1980 - 40 years ago. And 40 years before that, in 1940, there was pretty much no such thing as a computer. Hmmm.
ping
This is being said since the 1970s. The newest fad/hype is no code/low code.
"we’ve distilled a lot of it down to rote techniques which can be automated and auto-coded by machine or quickly assembled"
Salary scales indicate they have been obsolete since about 2002.
Starcitizen eh? Check out embedded systems programming (consumer electronics, that sort of thing) that’s where i shifted after my stint in games programming. You have the same people attempting to get jobs there but they fail miserably.
That got parlayed into cloud programming is a similar issue - they can copy and paste the java and python - but they don’t understand how the cloud pieces fit together or how to do it cheaply and efficiently.
Some programming will move to higher levels of abstraction. Humans will still provide the creativity and big picture designs, but automated systems will fill in the blanks. This will grow out of model based systems engineering. But there will always have to be low level systems coders. OS and driver builders. Or programmers in domains that are so specialized and or small-market that it isn’t cost effective to automate.
“Yeah sure. And machine trading will be making money for people playing the stock market.”
It already has!
Know my way around GCP, AWS, and Azure. I can write decent micro-services. Last project was a MLB reply service used to rewind and replay games in offseason for developer support. Got a commendation from The Commissioner of Baseball for it just 2 months before the season shut in March due to the WuFlu and my teams furlough.
Fail miserably when given whiteboard 30-minute coding tests taken from some Indian CS textbook given by some Indian H1B technical or engineering manager. Most of it is miscommunication as cant understand their accent. So I stick to games development for now.
Yeah, like at Long Term Capital.
But hey, knock yourself out.
“Yeah, like at Long Term Capital.
But hey, knock yourself out.”
I have no idea what your point is.
Methinks the last time the MBAs pushed their wet dream of eliminating software developers (that is before the currently waning fad of "offshoring" ) it was called "4GL development".
Disclaimer: Opinions posted on Free Republic are those of the individual posters and do not necessarily represent the opinion of Free Republic or its management. All materials posted herein are protected by copyright law and the exemption for fair use of copyrighted works.