Being a programmer is very cool, especially in Bulgaria. Demand keeps soaring, the trend is to make more and more money (+20 percent in 2021, if we believe this survey), while ordinary doctors, teachers… all the other members of professions that are, let's be honest with ourselves, more important to society, barely make ends meet.
It follows, then, that if you belong to this trade and have ego issues, you quickly start seeing yourself as the final authority, the crème de la crème. And online you become a force of nature with an opinion that always carries weight.
Meanwhile, though, with the rise of technology and artificial intelligence, we keep hearing the forecast that many professions will soon vanish, replaced by machines. That we live in a period much like the dawn of technical progress, when whole lines of work will be left without a livelihood. As Svetlin Nakov aptly put it, soon there will most likely not even be drivers.
And programmers? This fear is neither exaggerated nor new. A survey of 550 programmers by Evans Data Corporation, back in 2016, showed that their biggest career fear was exactly this—being replaced by artificial intelligence.
As If Programmed
Can artificial intelligence leave us on the street? And if so, is it time for those of us who earn our bread by coding to sign up for courses in bricklaying, plastering and tiling, where the shortage keeps growing and artificial intelligence hasn't even taken its first steps?
Well, that is a joke, of course. Even if we do get to algorithms that write code, everything suggests that the moment when they can do it autonomously is not too close. When they can do, on their own, the work of today's programmers—who are, in my opinion at least, a bit spoiled by their social standing.

Chipper Programmers
But then… projects of this kind could instead help us at work—take over part of writing repetitive code, the so-called boilerplate, for which we not only have no Bulgarian word, but which even feels strange to me to write in Cyrillic.
A month ago the GitHub Copilot project drew a lot of eyes to the topic. It also came along to warm up programmers' old fears of being left jobless.
The platform was created by the most popular network for sharing code. Something like a programmers' Facebook with more of the qualities of a programmers' Twitter, if that network carried any weight in Bulgaria. Copilot speaks almost all popular computer languages and is said to save programmers a great deal of work thanks to the artificial intelligence built inside it. Its authors describe their project as something far more powerful than the familiar little tools for automatically completing bits of code, which, again untranslatably into Bulgarian, are called autocomplete.
As a colleague wrote to me on the subject, sending a link to Copilot: “Today it looks cool. Tomorrow you're fired.”
Will computers really learn to write programs on their own?
The Programmer Program
1. -><[>-<+++]->>++++[++++++++++++++++++<+]>.---.+-+++++++..+++.+>+<><+[+><><>+++++++++.+-<
2. -++++[++[.--------.+++.------],.-----]]
Hello, world! The well-known, most basic little sentence that makes up a computer program. It is usually where anyone learning a new programming language begins. Here it is in an esoteric language (that's what niche and lesser-known programming languages are called) by the name of… and this one we won't translate, even though we could: Brainfuck.
The language is especially interesting because it has exactly 8 commands, and each of them “fits” into a single byte. And that's all there is to it. Yet it meets every requirement for Turing completeness. (Those great programmers who haven't yet left us a garnish—some short but juicy little comment—will do so now.) Put very simply, this means you can do practically anything with it that today's computers are capable of.
Well, even a monkey could type the incredible combination of characters above, so it's hard to imagine it's in a computer language.
But that is exactly where one of its interesting applications lies, which we can find here, from good old 2013.

Code Monkeys
The basic idea in brief: if you give enough—and I mean really enough—monkeys a typewriter each and make them bang on the keys long enough, sooner or later one of them will type the very work Shakespeare would have written.
Kory Becker spent a long time choosing a suitable language to experiment in. Assembly came closest, but even it turned out to be too rich in syntax. In Brainfuck, by contrast, everything is so simple and plain that it can't possibly be more so. He settled on genetic algorithms, which group individual units of data by quickly trying out a huge number of variants.
And so Becker's neural network started generating combinations of commands until its second part, which checks the results, confirmed it was on the right track. The first little word set as a target—“Hi”—took 5,700 generated combinations, and the program needed only 1 minute. Reaching the traditional starting sentence above required 580,900 combinations, which took 2 hours.
Later, in 2015, Becker also showed how the program could learn to generate functions, not just results—a fundamental skill when it comes to programming.
(You can find all the code of the venture on GitHub.)
I Created You… You Will Destroy Me
Oh, come on, 2 hours for the most elementary starter program, which even the most computer-hostile non-programmer could create in seconds once the simplest rules were explained to them?!
Yes, but it shows that generating code is possible after all. Of course, things get far more dramatic when it comes to real programs. They are complicated, complex, and don't fit even in the head of the experienced specialist working on them.
Programming is a profession whose main work consists of breaking a problem down into subproblems. And those are solved only once they have been reduced to the simplest possible logic. SOLID is an acronym for the most basic rules of quality code, with which the training of every beginner programmer starts (or at least should). And its very first letter—“S”—stands for “Single Responsibility”: every component that does more than one thing should be split until you arrive at components responsible for just one task.
The Program Plan
So, if the computer can perform these simple tasks after all, does that mean it can do everything? Especially considering its advantages over the average programmer—its time is much cheaper, it doesn't whine about a Multisport card, the gym-pass perk Bulgarian employers hand out, and… it can do quite a few tasks at once.
Yes, there will be mistakes, just as there are now—for example, Facebook's AI-based algorithms mistook the Digital Stories piece on algorithms entering politics for campaigning about whom to vote for in the upcoming elections.
And still, in many areas machine learning gradually works better and better—again the example of Facebook, but this time with its facial recognition systems. Almost without error they can suggest which of your friends is in the shot, even if they aren't clearly visible, even if their features have changed over time.

Word by Word, Code
Not long ago we told you the Digital Story of the GPT-3 algorithm. It is no accident that it is considered an extremely important step in the development of artificial intelligence, because it processes a huge volume of information and, on that basis, proposes the continuation of whatever it is given.
GPT-3 was created for an entirely different purpose—to process texts, to power programs that imitate conversation with a human, to help with machine translation.
But it also leaves room for all sorts of experiments. Programmer Sharif Shameem gave it a web design task. He asked it to create “a button on a web page the color of a watermelon”… and in response came HTML and CSS that successfully met the criteria. That must be quite encouraging for web developers who are fed up with tinkering with these more routine parts of a product. It is no accident that the easiest way to ask for a beating (or crude jokes) in the company of software people is to tell them HTML is a programming language.
Then Shameem moved on to tasks from programming proper, where GPT-3 again produced, if not brilliant and precise solutions, then at least results that came pretty close. And that could be made to work with far less effort from the programmer than starting everything from scratch.
Little Programmer, Don't You Worry!
All right, by now it may be obvious that algorithms can help us with small pieces of code and make our lives easier. But is it realistic that one day they'll throw us overboard?
The well-known futurist Gerd Leonhard predicts that the programming profession will disappear in just 10 years, swallowed by artificial intelligence. What's more, learning to program is already a waste of time. Suddenly many millions of specialists around the world will be left on the street. (Well, Mr. Leonhard clearly hasn't visited Bulgarian programming forums lately, because here almost everyone is rushing to become a software engineer.) In his view it is far wiser to turn to the humanities, which will never be swallowed by machines.
Tulip, Robot, or C?
Now it's time to return to GitHub Copilot, which provoked so many comments on the subject. GitHub is something like the online Mecca of programming. A huge code repository used by a staggering number of software companies. In 2018 it was bought by Microsoft, and Copilot is precisely an initiative of the new owners.
“Trained on billions of lines of code, it saves you a huge amount of time, allowing you to stay focused on the things that matter,” its creators advertise. It is already available as an extension for the popular programming environment Visual Studio Code.
Its name comes from this idea: we pilot, it just helps. It lends a shoulder wherever we need one.
Or is it the Trojan horse that will throw us out of this fine profession?

Code of Honor
Copilot is said to understand considerably more context than any software assistant before it. Behind it stands practically the same project that makes the aforementioned GPT-3 possible—OpenAI.
The nonprofit was founded in 2015 by Elon Musk and like-minded people, who donated more than a billion dollars in total. Its goal is to develop artificial intelligence that will dictate the future of the field. In doing so, it entered direct competition with Google's DeepMind (you'll find Musk's arguments for why this battle matters here).
Specifically, it uses the AI system OpenAI Codex. It has been trained on huge volumes of freely available code and human languages.
And there's more. The creators claim it is enough to set up a convention by which Copilot writes the code for you. Then you just leave comments about what you want to achieve, and the assistant writes the code that makes it happen by itself.
Code Is Cool
Copilot is useful in the last step of programming, as we described it a moment ago. Namely—if you have split your code into small functions with clear names, well-named input and output parameters and precise comments. Then Copilot comes along and fills in the blank.
Maybe because I haven't been in this field all that long, even this description alone sounds to me as if it takes away a pretty large part of the pure pleasure of programming. Most colleagues, though, would certainly welcome such relief.
For now it only uses the context of the file it is open in, not the whole project, but the idea is for that to change very soon.
Code Machine
Motivating and quite ambitious promises—so far, so good. But how do things look in practice after programmers' first attempts to invite the copilot into their cockpit?
Internal tests on a Python project showed that Copilot offers a suggestion ready for immediate use in 43 percent of cases, and the figure rises to 57 if we allow it up to 10 attempts. Whether that is a lot or a little—especially as checked by its own creators—we leave you to judge.
Harri Edwards of OpenAI says Copilot surprised him with how precisely it understood comments and generated accurate suggestions. And it always gave 10 options to choose the best from. Naturally, we all love our own children, flaws and all.

The Programmer Can Sleep Easy, Because…
Not everyone is as enthusiastic as Harri (me included, as you may have noticed). Here, for example, is a collection of quite good arguments for why Copilot by itself cannot change programming. First of all, software engineers spend most of their time solving the bigger-picture problems and breaking them into subproblems, and far less of it goes into the final functions. Besides, we much more often have to read, understand and “tinker with” our own or someone else's code than create lines with entirely new content.
Plenty of people will confirm it—it's easier to sit down and write a function yourself than to get your head around the way someone else did it. Since, even according to its creators, Copilot succeeds on the first try in fewer than half of the cases, you could say we will lose more time reading, making sense of and fixing its suggestions than if we just sat down and wrote our solutions ourselves.
Debugging, roughly speaking, is the process of tracing the connections in code to find where a problem is hiding. With artificially generated code, especially if it grows truly large, this activity will become an even bigger nightmare.
Algo… Rhythm!
It's no secret that a large part of programming is searching for information online. Yes, the jokes that if StackOverflow, the biggest question-and-answer network for programming, went down, we'd all be out of work are no accident.
Artificial intelligence can undoubtedly be a big helper in this respect. If we think about it, it becomes clear that it already is. The very fact that Google finds the answer to almost every problem we've stumbled into while programming pretty quickly shows that algorithms can be of use here.
But evidently not enough, at least for now, to make the manual searching pointless…
(Or the swearing. Before I took up programming professionally, I thought driving in the center of Sofia was the activity that most powerfully provoked our inner need to spout our colorful opinion of the world with a variety that a Kusturica character would envy.)
And security? Couldn't such software one day be used to “wedge” vulnerabilities into our code? Whether deliberately or by accident, simply because the algorithm chose a working solution to suggest to us. But not a secure one…

Come On, Pencho, Code!
There are other players with similar ambitions, such as the projects of the startups Enzime and Debuild. Both are promising, but neither has yet been released as a widely available solution.
Clearly this is a field only now taking its first timid steps, but will it advance, and how fast? Plenty of challenges await it.
So, at least for now, our jobs look safe, regardless of Mr. Leonhard's threats. If the flagship of the most advanced AI systems is barely toddling at the lowest level of programming, the moment when software can make complex decisions, deliver finished projects and resolve architectural questions seems, if not impossible, then very far off.
Cluck-Code
Whether it is really possible, time will tell.
Personally, I'm keeping my fingers crossed for it.
I don't know about you, but for me it would be a relief to argue with an AI coder. Because, how shall I put it, programmers are not the gentlest conversation partners if you try to open a more provocative topic. Not to mention if you make a mistake in your post. Or hold an opinion different from their Absolute one.
I keep hoping algorithms will be more tolerant and communicative. Otherwise, if they communicate in the spirit of the discussions in, say, this group, woe betide us. Better they don't come at all…




