ChatGPT không đến để lấy đi công việc lập trình của bạn

#ChatGPT không thể thay thế công việc lập trình của bạn

Các kỹ sư phần mềm đã gia nhập vào hàng ngũ của biên tập viên, thông dịch viên và những người khác lo lắng rằng họ sắp bị thay thế bởi trí tuệ nhân tạo tự tạo ra. Nhưng có thể ngạc nhiên khi biết rằng các lập trình viên đã phải đối mặt với nguy cơ trước đây. Công nghệ mới luôn hứa hẹn “đảo lộn” lĩnh vực kỹ thuật và những đổi mới này luôn thất bại khi không thể loại bỏ sự cần thiết của các nhà phát triển phần mềm. Thậm chí, chúng thường khiến những người lao động này trở nên càng quan trọng hơn.

Để hiểu nguyên nhân tại sao sự lo lắng về sự kết thúc của các lập trình viên lại xuất hiện và tại sao nó được thổi phồng, chúng ta cần nhìn lại quá trình tiến hóa của lập trình và máy tính. Phần mềm chỉ đơn giản là một phần sau của nhiều nhà tiên phong trong việc tính toán, những người coi phần cứng và kiến trúc hệ thống là những hoạt động trí tuệ thực sự trong ngành. Ví dụ, theo nhà khoa học máy tính John Backus, gọi các lập trình viên là “nhà lập trình” hay “kỹ sư” tương tự như việc đổi tên nhân viên vệ sinh thành “nhân viên chăm sóc”, một cố gắng giả tạo rằng công việc nhàm chán của họ quan trọng hơn những gì thực sự là. Hơn nữa, nhiều lập trình viên đầu tiên là phụ nữ, và những đồng nghiệp chauvin đầy đủ thường coi công việc của họ như công việc bí mật. Tuy nhiên, mặc dù các lập trình viên có thể nắm giữ vị trí thấp hơn trong mắt những người như Backus, họ cũng không thể thiếu, họ đã giúp những người như anh ta không cần phải lo lắng với công việc lập trình, sửa lỗi và kiểm tra.

Mặc dù thực hiện vai trò quan trọng – mặc dù ít được công nhận – kỹ sư phần mềm thường không phù hợp với các hệ thống tổ chức công ty. Vào những ngày đầu của máy tính, họ thường tự học và làm việc trên các chương trình họ tự điều chỉnh, điều này có nghĩa là họ không có một vị trí rõ ràng trong các bộ phận hiện có và việc quản lý họ có thể gây rắc rối. Do đó, nhiều tính năng hiện đại trong việc phát triển phần mềm được phát triển để đơn giản hóa và thậm chí loại bỏ giao tiếp với các lập trình viên. FORTRAN được thiết kế để cho phép các nhà khoa học và những người khác viết chương trình mà không cần bất kỳ sự hỗ trợ từ các lập trình viên. Cú pháp tiếng Anh của COBOL được thiết kế để đơn giản đến mức quản lý có thể bỏ qua các nhà phát triển hoàn toàn. Phát triển dựa trên phương pháp thác nước được phát minh để tiêu chuẩn hóa và làm cho quy trình phát triển phần mềm mới trở nên thông thường. Lập trình hướng đối tượng được thiết kế để đơn giản đến mức cuối cùng tất cả người dùng máy tính có thể tự làm kỹ thuật phần mềm của riêng mình.

Trong một số trường hợp, các lập trình viên đã phản đối những thay đổi này, lo ngại rằng các chương trình như các trình biên dịch có thể khiến họ mất việc. Tuy nhiên, cuối cùng, những quan ngại này không có cơ sở. Ví dụ, Sử dụng các ngôn ngữ lập trình như FORTRAN và COBOL đã chứng minh chúng là những ngôn ngữ bền bỉ, có tuổi thọ lâu dài, nhưng chúng không thay thế các lập trình viên máy tính. Nếu có điều gì, những đổi mới này đã đưa thêm sự phức tạp mới vào thế giới tính toán, tạo ra nhu cầu càng lớn hơn cho các nhà lập trình. Những thay đổi khác như phương pháp thác nước đã làm tệ hơn, tạo ra các quy trình hành chính phức tạp hơn làm khó khăn trong việc triển khai các tính năng lớn. Tại một hội nghị được tài trợ bởi NATO vào năm 1968, những người tổ chức tuyên bố rằng có một “khủng hoảng” trong kỹ thuật phần mềm. Có quá ít người để làm công việc và các dự án lớn tiếp tục trì hoãn hoặc gặp trục trặc.

Có lịch sử này trong tâm trí, các tuyên bố cho rằng ChatGPT sẽ thay thế tất cả các nhà phát triển phần mềm có vẻ như đã mắc sai lầm. Sa thải những kỹ sư và sử dụng trí tuệ nhân tạo để hỗ trợ việc phát triển tính năng bị chặn có thể gây ra thảm họa, sau đó sẽ cần tái tuyển những kỹ sư này trong thời gian ngắn. Những gợi ý hợp lý hơn chỉ ra rằng các mô hình ngôn ngữ lớn (LLM) có thể thay thế một số công việc nhàm chán trong kỹ thuật. Chúng có thể cung cấp các đề xuất hoàn chỉnh hoặc phương pháp để sắp xếp dữ liệu, nếu được yêu cầu đúng. Là một kỹ sư, tôi có thể tưởng tượng việc sử dụng một LLM để “tư duy” vấn đề, đưa ra các gợi ý giải pháp tiềm năng mà tôi có thể xem xét. Nó sẽ không thể thay thế việc trao đổi với một kỹ sư khác, vì LLM vẫn chưa hiểu được yêu cầu thực tế của một tính năng hoặc các kết nối trong một cơ sở mã nguồn, nhưng nó sẽ giúp tăng tốc cuộc trò chuyện đó bằng cách loại bỏ công việc bận rộn.

ChatGPT vẫn có thể thay đổi thị trường lao động công nghệ thông qua mong đợi về năng suất tăng cao hơn. Nếu nó loại bỏ một số công việc nhàm chán hơn của phát triển (và khiến Stack Overflow mất việc), quản lý có thể đặt ra nhiều yêu cầu hơn đối với kỹ sư làm việc cho họ. Nhưng lịch sử tính toán đã chứng minh rằng việc giảm bớt sự hiện diện của các nhà phát triển hoặc cắt giảm vai trò của họ chỉ tạo ra sự phức tạp thêm vào công việc và làm cho những người lao động này càng trở nên cần thiết hơn. Nếu có điều gì, ChatGPT có thể loại bỏ những công việc nhàm chán trong việc lập trình cũng giống như trình biên dịch đã chấm dứt việc phải làm việc bằng hệ nhị phân, điều này sẽ giúp nhà phát triển tập trung hơn vào xây dựng kiến trúc thực tế của tác phẩm.

Khoa học máy tính Edsger Dijkstra từng nhận xét: “Trong khi chúng ta chưa có các máy móc, lập trình tương đối dễ dàng; khi chúng ta có một số máy tính yếu, lập trình trở thành một vấn đề nhẹ nhàng, và giờ đây chúng ta có các máy tính khổng lồ, lập trình đã trở thành một vấn đề cực kỳ khổng lồ”. Chúng ta đã giới thiệu thêm và thêm phức tạp vào máy tính với hy vọng làm cho chúng trở nên đơn giản đến mức không cần phải lập trình. Không ngạc nhiên khi gặp phải sự phức tạp trong sự phức tạp, và chúng ta chưa thể cho phép

Nguồn: https://www.wired.com/story/chatgpt-coding-software-crisis/

Software engineers have joined the ranks of copy editors, translators, and others who fear that they’re about to be replaced by generative AI. But it might be surprising to learn that coders have been under threat before. New technologies have long promised to “disrupt” engineering, and these innovations have always failed to get rid of the need for human software developers. If anything, they often made these workers that much more indispensable.

To understand where handwringing about the end of programmers comes from—and why it’s overblown—we need to look back at the evolution of coding and computing. Software was an afterthought for many early computing pioneers, who considered hardware and systems architecture the true intellectual pursuits within the field. To the computer scientist John Backus, for instance, calling coders “programmers” or “engineers” was akin to relabeling janitors “custodians,” an attempt at pretending that their menial work was more important than it was. What’s more, many early programmers were women, and sexist colleagues often saw their work as secretarial. But while programmers might have held a lowly position in the eyes of somebody like Backus, they were also indispensable—they saved people like him from having to bother with the routine business of programming, debugging, and testing.

Even though they performed a vital—if underappreciated—role, software engineers often fit poorly into company hierarchies. In the early days of computers, they were frequently self-taught and worked on programs that they alone had devised, which meant that they didn’t have a clear place within preexisting departments and that managing them could be complicated. As a result, many modern features of software development were developed to simplify, and even eliminate, interactions with coders. FORTRAN was supposed to allow scientists and others to write programs without any support from a programmer. COBOL’s English syntax was intended to be so simple that managers could bypass developers entirely. Waterfall-based development was invented to standardize and make routine the development of new software. Object-oriented programming was supposed to be so simple that eventually all computer users could do their own software engineering.

In some cases, programmers were resistant to these changes, fearing that programs like compilers might drive them out of work. Ultimately, though, their concerns were unfounded. FORTRAN and COBOL, for instance, both proved to be durable, long-lived languages, but they didn’t replace computer programmers. If anything, these innovations introduced new complexity into the world of computing that created even greater demand for coders. Other changes like Waterfall made things worse, creating more complicated bureaucratic processes that made it difficult to deliver large features. At a conference sponsored by NATO in 1968, organizers declared that there was a “crisis” in software engineering. There were too few people to do the work, and large projects kept grinding to a halt or experiencing delays.

Bearing this history in mind, claims that ChatGPT will replace all software engineers seem almost assuredly misplaced. Firing engineers and throwing AI at blocked feature development would probably result in disaster, followed by the rehiring of those engineers in short order. More reasonable suggestions show that large language models (LLMs) can replace some of the duller work of engineering. They can offer autocomplete suggestions or methods to sort data, if they’re prompted correctly. As an engineer, I can imagine using an LLM to “rubber duck” a problem, giving it prompts for potential solutions that I can review. It wouldn’t replace conferring with another engineer, because LLMs still don’t understand the actual requirements of a feature or the interconnections within a code base, but it would speed up those conversations by getting rid of the busy work.

ChatGPT could still upend the tech labor market through expectations of greater productivity. If it eliminates some of the more routine tasks of development (and puts Stack Overflow out of business), managers may be able to make more demands of the engineers who work for them. But computing history has already demonstrated that attempts to reduce the presence of developers or streamline their role only end up adding complexity to the work and making those workers even more necessary. If anything, ChatGPT stands to eliminate the duller work of coding much the same way that compilers ended the drudgery of having to work in binary, which would make it easier for developers to focus more on building out the actual architecture of their creations.

The computer scientist Edsger Dijkstra once observed, “As long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming had become an equally gigantic problem.” We’ve introduced more and more complexity to computers in the hopes of making them so simple that they don’t need to be programmed at all. Unsurprisingly, throwing complexity at complexity has only made it worse, and we’re no closer to letting managers cut out the software engineers. If LLMs can match the promises of their creators, we may very well cause it to accelerate further.


WIRED Opinion publishes articles by outside contributors representing a wide range of viewpoints. Read more opinions here. Submit an op-ed at [email protected].


[ad_2]

Leave a Reply

Your email address will not be published. Required fields are marked *