After the launch of artificial intelligence ChatGPT, it has had an impact on people's work and lives in many ways. The author of this article is a self-taught programmer who once thought programming was an important skill, but the advent of GPT-4 has changed the way he works. The programming skills he once cherished, the sense of accomplishment he gained from solving problems, seemed to be gone in the face of AI. This forced him to rethink the value of programming, what will programming look like in the future?
Just as my parents believed that I could read and write, I took it for granted that my children would be able to code like me. Programming is an emerging art, a fundamental skill, and one that is becoming increasingly important. Proficiency in coding is a great addition to a child's literacy skills and keeps them competitive for the job.
As I write these words, my wife is pregnant with our first child and is about three weeks away from her due date. I'm a professional programmer, but by the time kids can type, programming as a valuable skill may have faded out of this world.
With GPT, I lost my passion for programming
The first time I came up with this idea was on a Friday morning in the summer of 2023, when I was working on a small side project. My friend Ben and I decided to try to make a New York Times-style crossword puzzle entirely by the computer. In 2018, we made a crossword puzzle game with the help of software, and we did very little – just a few changes in some places as needed. Now, let's try to develop a crossword puzzle generator that doesn't require human intervention.
In the past, developing similar projects involved both hardware and software, and Ben was better at hardware. We once made a neon sign that glows when the subway approaches a station near our apartment. Ben was in charge of making the glass tubes and connecting the circuit boards of the transformers, and I wrote the code to process the traffic data. Ben also had some programming experience, but it was brief, and more than twenty years have passed, so the main programming work was left to me. For the new crossword project, though, Ben introduced a third "participant". He subscribes to ChatGPT Plus and uses GPT-4 as a programming assistant.
Then, something strange happened. Ben and I discussed some of the programs needed for the project. Then, very quickly, Ben got it right. At one point, we needed a command that could print a hundred random lines of content from a dictionary file. I thought about it for a while and didn't have an idea, so I tried to use Google search. I tried a few things I could find, and just as I started writing code, Ben told GPT-4 what we had and got the code that worked perfectly.
Commands like this are notoriously cumbersome, and should be looked up by everyone, so they don't really programming. A few days later, Ben said he wanted to develop an iPhone app that could rate words in the dictionary, but he didn't know how painful it was to develop an iPhone app. I've tried a few times and all of them have been halfway through.
I find Apple's development environment difficult to get started with, not only to learn Xi a new programming language, but also to be familiar with new programs for editing and running code. You'll also learn Xi various "user interface components" and how to put them together, and finally, you'll need to figure out how to package your application. There are mountains of things to learn Xi, and it doesn't seem worth it.
However, the next morning, an app appeared in my inbox that was exactly what Ben was looking for. It works flawlessly and also has a very cute design. Ben says it took him a few hours to do it, and GPT-4 did most of the tedious work.
Nowadays, most people have had experience with AI, but not everyone is impressed with it. Ben recently said, "I didn't really respect it until I started asking it to write code for me." "I suspect that people who are already suspicious by nature, who watch ChatGPT output blunt words or false facts, will still underestimate what is happening.
Knowledge and skills that would have taken a lifetime to master can now be swallowed in one bite. Programming has always been an endless and colorful field for me. Now, I find myself wanting to write an elegy for it.
I remembered Lee Sedol. Lee Sedol was once the world's top Go player and a national hero in South Korea, but is now best known for losing to a computer program called AlphaGo in 2016. At the beginning of the competition, Lee Sedol believed that he could easily beat the AI. However, after a multi-day match, he lost.
Lee Sedol said at a press conference: "I am sorry for my incompetence. Three years later, he retired. There seems to be a question plaguing Lee Sedol: What will become of this thing that has taken him most of his life?
I used to be obsessed with programming and worshiped it
My obsession with computers began when I was six years old. It was in Montreal in the early 90s, when my brother and I were playing Mortal Kombat. He told me about some "special moves" – some terrifying and witty ways to defeat your opponents, but none of us knew how to cast them.
He dialed up to an FTP server at the MS-DOS terminal and typed in some obscure commands. Soon, he printed out a page of code - the instructions for the special moves used in the game. We went back to the basement and started throwing heads at each other.
I used to think my brother was a hacker. Like many programmers, I used to dream of hacking and controlling remote systems, not to create chaos, but to find something hidden.
In 1986, Loyd Blankenship wrote in The Hacker Manifesto: "My sin is to be too curious. "There's a scene in the 1995 movie Hackers where Dade Murphy proves himself in an underground club: someone pulls out a colorful computer book from his backpack, and Dade recognizes each one from the cover: a green one about the international Unix environment, a red one about the N.S.A. trusted network, and a guy in a pink shirt playing with an IBM PC on the cover. Dade put his expertise to work on the school's sprinkler system and helped clean the tanker's ballast – all with the click of a keyboard. This story teaches us that knowledge is power.
But how do you learn hacking? When I was in fifth grade, my family settled in New Jersey. When I was in high school, I went to the Borders bookstore in Short Hill Mall and bought Ivor Horton's Beginning Visual C++. It's 1200 pages long – my first magic book. Just like many other tutorials, it's simple at first, and then, suddenly, it's not that simple.
Medieval students referred to the moment when a beginner encounters a Xi failure as the "Bridge of Asses" (or "the bridge of stupidity"). The term derives from the fifth proposition in the first volume of Euclid's Geometry, which is the first incomprehensible concept in the book. Those who succeed in crossing the donkey bridge will continue to master geometry, and those who can't do it will only sigh. Section 4.3 of Getting Started with Visual C++, on "Dynamic Memory Allocation", is my donkey bridge. Unfortunately, I didn't cross over.
But I didn't give up on the subject, and I still remember the moment when things changed. It was a long-haul flight, and I brought a bulky laptop and a CD-ROM with the Borland C++ compiler. The compiler converts the code you write into machine-executable machine code, and it took me days to get the compiler up and running. Conventionally, the first program for every programming beginner is "Hello, world."
When I try to run my version, I just see an endless stream of error messages. One problem was solved, and another popped up. I've read the Harry Potter series, and I feel like I have a broomstick, but I haven't learned the spell to make it fly. I knew what might happen if I could do it, so I tried to stick to it. What I've learned from this is that programming isn't really about knowledge or skills, it's about patience, or rather an obsession with it. A programmer is someone who can endure endless boredom.
Imagine explaining how to assemble furniture to a fool on the phone without pictures, in a language you rarely speak. Imagine again, the only response you get is that you make a ridiculous suggestion and the furniture is getting less and less assembled. So, when you're finally done, you'll feel relieved.
I distinctly remember lying down in the aisle of the plane and pressing enter one last time. Then, I sat up, and this time the program actually did what I wanted it to do. "Hello, world" appears above the cursor, as if a wise man wakes up and introduces himself to me.
Most of us don't become the kind of hackers described in Hackers. The so-called "hack", in the words of programmers, is tinkering – expressing creativity through code. I never formally learned programming, I was just Xi around and getting the computer to do the little things that were useful or enjoyable.
In my freshman year, in 2006, in order not to miss Tiger Woods' ranking at the Masters, I wrote a program to search for leaderboard information on pgatour.com and text me when he made a birdie or bogey. Later, after reading Ulysses in English class, I wrote a program that randomly selected sentences from the book, counted their syllables, and compiled haikus – a more primitive linguistic rumination than today's chatbots, but which, I think, are already capable of writing real poetry:
I’ll flay him alive
Uncertainly he waited
Heavy of the past
As a programmer
I've been through the best of times
I started to get serious about programming. I offered to develop a program for a friend's startup. I've come to understand that the computer world is vast, as orderly as layers of sediment in geology. From web browsers to transistors, each subdomain or system is built on top of other, older subdomains or systems, layered but organized.
The deeper you dig, the more you'll get the kind of "mechanical empathy" that racer Jackie Stewart calls – a perception of a machine's strengths and limitations and knowing how to make it work.
In a friend's company, I felt my mechanical empathy growing. When I was a sophomore, I watched Edge of Danger with a friend, and he suggested that I make a game based on it. I thought about it for a few hours, and then told him with great disappointment that it was beyond my ability.
However, the idea resurfaced when I was in my junior year, and that's when I finally found a solution. I now have a better idea of what this machine can do. I spent the next 14 hours developing the game. After a few weeks, playing the game has become a regular activity among my friends. The experience was profound. I can understand why people are willing to spend the time of their lives in the arts and crafts: there's nothing more fun than watching others enjoy what you make.
During this time, I was completely immersed in a "house of cards" state and put my Xi aside. I work hard, but not in my Xi. One night, I was in the basement with 6 machines running a program in parallel. I put a print full of numbers on the floor and thought about a path planning algorithm. At the cost, I had a nightmare – taking a final exam and knowing nothing. In 2009, during the worst financial crisis in decades, I graduated with a 2.9 GPA (grade point average).
But I still got my first full-time job with ease. I have experience working as a programmer and no one asks me how my grades are. For young programmers, this is their booming time. Companies are vying for top programmers. The scramble for experienced programmers is so fierce that they complain about "job emails flying all over the place". The popularity of computer science majors in college began to explode. (My degree is in economics.) Programming "bootcamps" that claim to turn beginners into well-paid programmers in less than a year are starting to emerge.
During an interview when I was in my twenties, the CEO of the company asked me how much I thought I was worthy. I said a number that embarrassed everyone. He drafted a contract on the spot and offered a salary ten percent higher than what I was asking for. The skills of a "software engineer" are highly prized.
At one company I worked for, someone got into trouble by using HipChat (the predecessor of Slack) to ask a question directly to one of my colleagues. He was told to "never use HipChat directly to contact engineers". We are too important for you to do that!
It's a time when interest rates are close to zero and the tech sector is growing at an astonishing rate. Some norms have taken shape, and companies like Google are telling the industry that programmers can enjoy free espresso and hot food, world-class healthcare and parental leave, on-site gyms and bike rooms, casual attire, and "20% of the time," meaning they can spend one day a week doing whatever they like.
People believe that their skills are so important that a superstition arises. For example, estimating how long a coding task might take is considered stupid, as a programmer could dig up a bunch of bugs at any time. Deadlines are a curse, and if the pressure to deliver is too great, programmers can get an extra few months just by saying the word "burnout."
I didn't feel right from the start. Is what we're doing really that precious? How long can this boom last? When I was a teenager, I did some web design. At the time, the work used to be popular and respected. You can complete a project in a weekend and earn thousands of dollars. But then comes tools like Squarespace, which allows pizzeria owners and freelance artists to create their own websites with just a few clicks. For professional programmers, a portion of the high-paying, relatively effortless jobs disappear.
The reaction of the programmer community to these changes is that you have to keep upskill and Xi harder, more obscure things. Software engineers, as a species, love automation. Inevitably, the best of them build tools that make other types of work obsolete.
This instinct explains why we are so well taken care of: code has a huge leverage. A piece of software can affect the jobs of millions of people and even replace programmers themselves. We should think of these advances as rising tides, which gradually submerge our bare feet, but as long as we continue to learn Xi, we will not be overwhelmed by the tide. This is wise advice, unless there is a tsunami.
ChatGPT is here, and it's changed what we do
When we were allowed to use AI chatbots at work to help with programming, I deliberately avoided using them. I thought my colleagues would do the same. But soon, I saw the color of the AI chat session on their screen — that Q&A-style zebra stripes. It's a common claim that these tools will make you more efficient, and in some cases, they can help you solve problems up to ten times faster.
I'm not sure I want that. I love the programming process itself and the feeling of being a useful person. The tools I'm proficient in, such as the text editor I use to format and navigate through code, can meet both needs. They have strengthened my practice of the craft – and while they allow me to get the job done faster, I still feel like I'm taking a credit for it. But artificial intelligence, as people have described it, seems to be different. It provides a lot of help, and I'm afraid it will rob me of the satisfaction of having both the pleasure of solving puzzles and the satisfaction of being a problem solver. I can be infinitely more productive, but all I can show is results.
The actual work of most programmers is rarely exciting. In fact, they tend to be bland. A few months ago, I came home from work and told my wife that I had a very pleasant day solving a particularly interesting problem. I'm working on a program to generate tables, and someone wants to add a header that spans multiple columns – and our custom layout engine doesn't support this feature. The work was urgent: these forms were used in important documents. So I locked myself in my room for most of the afternoon.
There are a number of sub-problems that need to be addressed: how do you get layout engine users to express that they want a cross-column heading, what should their code look like, and some trivial details that can lead to bugs if ignored. For example, what if one of the columns in the cross-column header was deleted because there was no data? I know it's a good day because I have to take out a pen and paper – I'm drawing possible scenarios and double-checking my logic.
However, what if you take a bird's-eye view of what happened that day? a table gets a new title, and it's hard to imagine anything more mundane. For me, the fun is all about the process, not the result. What would this process look like if it only required a three-minute ChatGPT conversation? As programmers, our job involves many other things besides literal coding, like mentoring newcomers and designing systems, but coding has always been fundamental.
Throughout my career, I have been chosen by employers for my ability to solve trivial programming puzzles. However, suddenly, this ability became less important.
Generated Formula AI Conquest
I learned a lot from Ben, who kept telling me that he had amazing results with GPT-4. It has proven to be not only good at handling trivial matters, but also has the qualities of a veteran engineer: it can come up with solutions to problems from a rich knowledge base.
In one project, Ben attached a small speaker and a red LED bulb to a portrait of King Charles. His idea is that when a user types text on a website, the speaker will play a sound and the light will flash a message with Morse code. But writing a program for the device to get messages bothered Ben, which seemed to require specialized knowledge, not only about the microcontroller he was using, but also about Firebase, the back-end server technology that stores messages, and I grunted a few words when Ben asked me for help.
In fact, I'm not sure if what he wants is possible. Then he asked GPT-4, and it told Ben that Firebase had a feature that could make the project much simpler. And just like that, here's some code that's compatible with microcontrollers.
Even though I was scared of using GPT-4 and a little uncomfortable with having to pay OpenAI $20 a month in order to use it, I started exploring its capabilities through Ben. Together, we work on our crossword puzzle project. I'd say, "Why don't you try using this cue," and he'd hand me the keyboard. I would say, "No, you do it". Together, we gradually figured out what this AI could do. Ben has more experience in this area than I do and seems to be able to use it more efficiently. As he later said, his own neural network had already begun to align with GPT-4's. I would say he has acquired mechanical empathy.
Once, he did something that particularly surprised me, he had this AI develop a snake game, like the one on old Nokia phones. After a brief exchange with GPT-4, he asked it to modify the game to show how far you deviated from the most efficient route when you lost the game. It took the robot about ten seconds to complete this task. Frankly, I'm not sure I'll be able to do this job.
The chess scene has been dominated by artificial intelligence for decades, and one player's only hope is to be paired with a robot. This half-human, half-AI team (aka the so-called centaurs) may still be able to beat the best humans and AI engines on their own. Programming hasn't evolved to the level of chess, but centaurs have appeared. At the moment, GPT-4 is a worse programmer than me, and Ben is even worse, but the combination of Ben and GPT-4 is dangerous.
Soon, I gave in. I developed a small search tool that I wanted to highlight where the user's query matched the results. I slice the user query into words, which complicates things. My patience was put to the test, and I started thinking about GPT-4. Maybe I can take the time to write the "cue words" or talk to the AI instead of spending an entire afternoon on programming.
In 1978, computer scientist Edsger W. Dijkstra pointed out in an article titled "On the Folly of 'Natural Language Programming'" that if you use your native language instead of using a formal programming language like C++ or Python to instruct a computer, you are rejecting the validity of computers. A formal programming language, he wrote, is "a very effective tool for cutting out all sorts of nonsense nonsense that is almost unavoidable when using our native language." Dijkstra's views became a consensus in the programming community.
In 2014, when the article was circulated again on Reddit, one commenter wrote, "I'm not sure which of these two situations is more terrifying: 'how obvious is this idea' and 'many people still don't know about it.'"
Edsger W. Dijkstra (1930-2002)
When I started using GPT-4, I could understand what Dijkstra was saying. You can't just say to the AI, "Help me solve this." "Maybe that day will come, but now it's more of an instrument that you have to learn to play. You have to explain what you want carefully, just like communicating with a beginner.
On the search highlighting issue, I found myself asking GPT-4 to do too much at once, only to fail and start all over again. Each time, my prompts became less ambitious. In the end, I didn't talk to it directly about the problem of search or highlighting, I broke it down into concrete, abstract, explicit sub-problems that add up to what I want.
After discovering the capabilities of artificial intelligence, my work life began to change. GPT-4 is like a hammer, everything is a nail in my eyes. I finally understood why the computer screen in the office was always full of chat boxes, and how Ben became so productive. So I opened up and used it more often.
I went back to the crossword project. Our puzzle generator prints out lines of letters like "s", "c", "a", "r", "*", "k", "u", "n", "i", "s", "*", "a", "r", "e", "a" in an unsightly text format. I wanted to translate this output into a beautiful web page that would allow users to explore the words in the grid and display the score information at a glance. But I know the task is tricky: each letter must be marked with the word it belongs to, whether horizontal or vertical. It's a very delicate question that will likely take up my entire evening.
What does the future look like?
My baby was about to be born and I didn't have much free time, so I started chatting with GPT-4. We talked back and forth, and sometimes had to look at some code to understand what it was doing, but I barely did the programmatic thinking that I once thought it was. I didn't think about numbers, patterns, or loops, and I didn't use my brain to simulate the activity of a computer. As another programmer, Geoffrey Litt, wrote after a similar situation: "I never let my programmer brain get involved. "So what did I do?
Perhaps because he felt that the game of Go was permanently devalued, Lee Sedol chose to quit the game. I first learned Xi programming because I thought computers were like magic. The computer gives you power, but you need to study its secrets - learn Xi a spell, which requires a special way of thinking. I felt like I was chosen. I buried my head in hard work, thought hard, and accumulated obscure knowledge. Then, one day, many of the same ends can be achieved without thinking and knowledge. From a certain point of view, this can make most of one's work seem like a waste of time.
Whenever I think of Lee Sedol, I think of chess. About thirty years ago, when machines conquered the game, people feared that there would never be any reason to play it again. However, chess has never been more popular than it is now – and artificial intelligence has made this game much more lively. A friend of mine recently started learning to play chess Xi. He can always use an AI coach who can give him a game that fits the boundaries of his abilities and tell him what went wrong when he loses. At the same time, chess grandmasters are studying the moves of the computer as if they were reading an oracle. Learning Xi chess has never been easier, and delving into its deepest secrets has never been more exciting.
Computer science has not yet been conquered. GPT-4 is impressive, but the average person can't navigate it like a programmer. I still feel safe in my career. In fact, I feel safer than before. As software development becomes easier and more popular, programmers will turn more to design, configuration, and maintenance. While I've always felt that the little parts of programming are the most engaging and important, they're not particularly good at them. I didn't pass a lot of programming interviews at big tech companies. What I'm relatively good at is knowing what's worth doing, what users like, and how to communicate on a technical and human level. A friend of mine called this AI moment "the moment of revenge for mediocre programmers." As the importance of coding itself begins to diminish, perhaps soft skills will shine.
It left me unsure of what to teach my child after he was born.
I even think that when my children grow up, we look at "programmers" the way we look at them in the same way that we look back at the history of "computers" now. Typing out C++ or Python code yourself may end up looking as ridiculous as issuing binary instructions on a punch card. Dijkstra may be shocked that letting the computer do what you want to do might be as simple as politely making a request.
So maybe it's not the skills that need to be taught, but the spirit. I sometimes wonder what I might have done if I had been born in another era. In the agricultural era, a coder might have studied waterwheels and crop varieties, and in the Newtonian era, he might have been fascinated by glass, dyes, and time measurements.
I recently read oral accounts about the history of neural networks, and I was shocked that many of the people I interviewed – people born around the '30s of the 20th century – had played on the radio as children. Perhaps the next generation will spend the middle of the night exploring the artificial intelligence that was once seen as a black box by their parents. I shouldn't be worried about the end of the programming era. The spirit of hacking lives on!
Resources
[1]本文转自 InfoQ,https://www.infoq.cn/article/0PY4NyD9cPDe4pEQlRVa;原文译自A Coder Considers the Waning Days of the Craft, The New Yorker, [2]https://www.newyorker.com/magazine/2023/11/20/a-coder-considers-the-waning-days-of-the-craft
- END -
Article source: Hui Pu Author丨James Somers Translation丨Xue Mingdeng
Disclaimer: The copyright belongs to the author. The platform is not responsible for the authenticity, validity, accuracy and completeness of the information or materials in the article. If there is any infringement, please contact us to delete it as soon as possible.