IT

주니어 개발자를 대체할 chatGPT

생각파워 2023. 2. 25. 20:08

chatGPT에 푹 빠져서 살고 있다. 업무 결과를 딱딱 내는 이 녀석에게 일 시키는 게 재미있다. 가끔 내 생각을 넘어서는 결과를 낼 때는 좀 오싹한 기분이 들기도 한다. 아직은 어설프지만 나보다 실력 있는 후임을 봤을 때 느낌이려나? 조만간 이 녀석은 나를 넘어설 것이고, 난 갈길을 잃을 것이다. 많은 개발자가 내 전철을 밟지 않을까?

 

이년 전쯤에 파이썬으로 윈도우 프로그램을 짠다고 헤맨 적이 있었다. 정보를 10개 정도 받아서 코드를 자동으로 생성하는 코드 생성기를 만들고 있었다. 실력이 미천해서 창을 제대로 그리는데만 일주일이 넘게 걸렸고, 중요 로직을 포함해서 한 달 넘게 시달렸었다. 누가 결과를 내라고 다그치지 않았던 토이프로젝트였기 때문에, 흥미가 반감되고 자연스럽게 묻혔었다.  

 

chatGPT를 가지고 놀다가 그 생각이 나서, 프로그램을 한번 시켜봤다.

폴더를 선택해서 폴더안에 존재하는 한글 파일 전체를 하나로 합치는 GUI프로그램을 파이썬으로 작성해 줘

 

20초 만에 결과를 토해낸다.

 

import os
import glob
import hwp5
import PyPDF2
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt5.QtGui import QIcon


class MergeFiles(QMainWindow):
    def __init__(self):
        super().__init__()

        self.file_list = []
        self.folder_path = ''
        self.file_types = ['한글 파일 (*.hwp)']

        self.init_ui()

    def init_ui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('한글 파일 병합하기')
        self.setWindowIcon(QIcon('icon.png'))

        select_folder_button = QPushButton('폴더 선택', self)
        select_folder_button.move(20, 20)
        select_folder_button.clicked.connect(self.select_folder)

        merge_button = QPushButton('병합하기', self)
        merge_button.move(20, 70)
        merge_button.clicked.connect(self.merge_files)

        self.show()

    def select_folder(self):
        folder_dialog = QFileDialog()
        folder_path = folder_dialog.getExistingDirectory(self, '폴더를 선택하세요', os.getenv('HOME'))
        self.folder_path = folder_path

    def merge_files(self):
        if self.folder_path == '':
            return

        merged_file = PyPDF2.PdfFileMerger()

        # 폴더 선택 버튼으로 선택한 폴더 내에 있는 한글 파일들을 병합합니다.
        for file_path in glob.glob(os.path.join(self.folder_path, '*.hwp')):
            hwp_file = hwp5.HwpFile(file_path)
            plain_text = hwp_file.to_text()
            merged_file.append(PyPDF2.PdfFileReader(str(plain_text), 'rb'))

        # 병합된 파일을 저장합니다.
        save_dialog = QFileDialog()
        save_path = save_dialog.getSaveFileName(self, '파일 저장', os.getenv('HOME'), 'PDF 파일 (*.pdf)')
        merged_file.write(save_path[0])

        self.close()


if __name__ == '__main__':
    app = QApplication([])
    merge_files = MergeFiles()
    app.exec_()

밑에 깔끔한 설명도 덧붙여 준다.

이 코드는 PyQt5를 사용하여 GUI 프로그램을 작성했습니다. 사용자는 '폴더 선택' 버튼을 눌러 폴더를 선택하고, '병합하기' 버튼을 누르면 선택한 폴더 내에 있는 모든 한글 파일들을 하나로 합친 후, PDF 파일로 저장할 수 있습니다.
glob 모듈을 사용하여 폴더 내에 있는 모든 한글 파일을 가져왔습니다. 그리고 hwp5 모듈을 사용하여 한글 파일을 PDF 파일로 변환하고, PyPDF2 모듈을 사용하여 PDF 파일들을 하나로 합쳤습니다. 마지막으로 사용자가 선택한 저장 경로에 병합된 PDF 파일을 저장했습니다.

나에게 이런 지시가 떨어진다면 얼마나 걸린다고 답변할까? 아무리 빨리 한다 해도 20초를 이길 순 없을 것 같다. 어제 하루 종일 실행을 시켜봤는데, 오류가 나는 부분도 있고, 내용을 잘 이해 못 하는 경우도 많았다. 그래도 초급 프로그래머를 가르치는 것보다는 훨씬 나은, 아니 비교할 수 없는 느낌이었다. 이제 프로그래머가 필요하나라는 생각까지 들게 만들었다. 퇴직하려면 많이 남았는데, 앞이 캄캄했다.

 

꼬인 군번이라 항상 후임이 하나 있었으면 했는데, 이제 필요 없어졌다. 설계만 잘하면 웬만한 프로그램은 하나 만들어 낼 수 있을 것 같은 자신감이 든다. 내가 이럴진대, 다른 고수들이야 말해 무엇할까? 어디까지 바뀌게 될지 지켜볼 일이다. 

반응형