반응형
반응형

[python]  랜덤 6자리 문자열을 생성하고, 중복되지 않도록 파일명을 지정한 후 이미지 캡차를 저장. captcha

import random
import string
import os
from captcha.image import ImageCaptcha  # ImageCaptcha 라이브러리를 사용해야 합니다.

# 랜덤 6자리 문자열 생성 함수
def generate_random_string(length=6):
    characters = string.ascii_letters + string.digits  # 영문 대소문자 + 숫자
    return ''.join(random.choices(characters, k=length))

# 중복되지 않는 파일명 생성 함수
def get_unique_filename(base_name, extension, directory="./img/"):
    counter = 1
    new_filename = f"{base_name}.{extension}"
    
    # 경로 내 파일명이 중복되면 새로운 파일명 생성
    while os.path.exists(os.path.join(directory, new_filename)):
        new_filename = f"{base_name}_{counter}.{extension}"
        counter += 1
    
    return new_filename

# 메인 로직
def main():
    # 캡차 이미지 생성기 설정
    image = ImageCaptcha(width=280, height=90)

    # 랜덤 6자리 문자열 생성
    captcha_text = generate_random_string()
    print(f"\n랜덤 6자리 문자열: {captcha_text}")

    # 이미지 생성
    data = image.generate(captcha_text)

    # 이미지 저장 경로 지정
    img_directory = "./img/"
    os.makedirs(img_directory, exist_ok=True)  # img 폴더가 없을 경우 생성

    # 중복되지 않는 파일명 생성
    unique_filename = get_unique_filename(captcha_text, 'png', directory=img_directory)

    # 이미지 파일 저장
    image.write(captcha_text, os.path.join(img_directory, unique_filename))

    print(f"이미지가 {unique_filename}으로 저장되었습니다.")

# 프로그램 실행
if __name__ == "__main__":
    main()

 

수정 내용:

  1. generate_random_string() 함수: 랜덤한 6자리 문자열을 생성합니다.
  2. get_unique_filename() 함수: 파일명 중복을 방지하기 위해, 기존에 존재하는 파일이 있을 경우 숫자를 추가하여 고유 파일명을 생성합니다.
  3. 폴더 생성 (os.makedirs()): 이미지 저장 경로(./img/)가 존재하지 않으면 자동으로 폴더를 생성하도록 os.makedirs()를 사용합니다.
  4. os.path.exists(): 파일이 존재하는지 확인하고 중복 파일명을 방지합니다.
  5. 경로 및 파일명 결합 (os.path.join()): OS에 관계없이 적절한 경로를 결합하기 위해 os.path.join()을 사용합니다.

실행 결과:

  • ./img/ 폴더에 랜덤한 문자열을 포함한 이미지가 저장됩니다.
  • 파일명이 중복되면 자동으로 _1, _2 등의 숫자가 추가됩니다.

 

반응형
반응형

엑셀에서 첫 셀에 입력한 공식을 아래로 한 번에 복사하여 적용하는 단축키는 다음과 같습니다:

  1. 첫 번째 셀에 수식 입력: 예를 들어, C1 셀에 수식을 입력했다면, 해당 수식을 아래로 복사하고자 합니다.
  2. 해당 셀 선택: 수식이 있는 첫 번째 셀(C1)을 선택합니다.
  3. Ctrl + Shift + ↓ (아래 방향키): 수식을 복사하고자 하는 범위를 선택합니다. 첫 번째 셀에서 **Ctrl + Shift + ↓**를 눌러 마지막 셀까지 범위를 선택합니다.
  4. Ctrl + D: 선택한 범위의 첫 번째 셀의 수식을 아래로 복사하여 적용합니다.

이 방법을 사용하면 첫 번째 셀의 수식을 여러 셀에 한 번에 복사할 수 있습니다.

 

반응형
반응형

일부 IT 리더들은 AI가 코드 작성에 더 능숙해지면서 소프트웨어 개발팀이 시니어 몇 명 수준으로 축소될 수 있다고 내다봤다.
 
초기 성과는 각기 다르지만, 결과는 분명해 보인다. 생성형 AI 코딩 어시스턴트가 소프트웨어 개발팀의 구성 방식을 바꾸고, QA와 주니어 개발자의 일자리는 위험에 처할 수 있다는 것이다. 

일부 IT 리더는 AI 어시스턴트가 코드 작성을 더 잘하게 되면서 CIO와 개발 리더들이 AI 전문가와 선임 개발자를 중심으로 팀을 재편해 AI 생성 코드를 감독하게 할 수 있다고 말했다.

클라이밋 테크 전략 어드바이저의 설립자이자 차량-그리드 간 애플리케이션 제공업체 페르마타 에너지의 전 개발팀장인 안나 데메오는 애플리케이션 개발팀이 더 간소화되고, 남은 시니어 개발자들이 제품 요구 사항을 소프트웨어 개발로 옮기는 일에 집중하게 될 것이라고 전망했다.

데메오는 특히 기업들이 AI 코딩 어시스턴트에 의존하면서 주니어 개발자, 인턴, 경우에 따라서는 제품 관리자의 역할을 AI로 대체할 것이라고 예상했다. 그는 “큰 팀에는 항상 A 플레이어와 B 플레이어가 있다. C 플레이어는 없길 바라지만 그들도 존재한다. AI는 어떤 면에서 C나 B 플레이어의 설 자리를 더 줄일 수 있다”라고 말했다. 

그는 남은 개발자들이 이제 비즈니스 요구사항을 이해하고 제품 전문가, 마케팅 부서, 기타 직원들과 교차 기능팀에서 활약할 수 있는 비판적 사고를 가져야 한다고 조언했다. 

‘편집자’로서의 개발자
데메오는 이미 일부 고객사가 AI를 중심으로 개발팀을 재편하고 있으며 시니어 개발자나 소프트웨어 아키텍트가 AI 생성 코드를 감독 및 수정하고 있다고 말했다. 그는 다양한 역할에 영향을 미치고 있는 이런 변화를 소설 출판 과정에 비유했다.

데메오는 “개발자는 더 이상 작가가 아니라 편집자다. 시니어 개발자는 콘텐츠와 독자가 누구인지, 다시 말해 고객이 누구이며 조직이 무엇을 달성하려고 하는지 이해해야 한다”라고 설명했다.

세일즈포스용 데브옵스 플랫폼 제공업체 코파도(Copade)의 에반젤리즘 담당 수석 부사장인 데이비드 브룩스는 미래의 개발팀이 제품 매니저 또는 비즈니스 분석가, UX 디자이너를 비롯해, AI 도구로 프로토타입을 생성한 다음 출시 준비가 될 때까지 코드를 조정하는 소프트웨어 아키텍트 등으로 구성될 것이라고 말했다. 그는 보안 및 규정 준수 검토 등의 나머지 소프트웨어 개발 역할을 AI가 담당할 가능성이 높다고 언급했다.

브룩스는 “언젠가는 현재의 소프트웨어 개발 일자리가 없어질 수 있다. 그렇다면 주니어 소프트웨어 개발자가 가장 먼저 피해를 볼 것"이라며 "소프트웨어 아키텍트는 코딩 대신 더 높은 수준의 시스템을 설계하며 AI가 생성한 솔루션을 확인하는 일을 주로 맡게 될 수 있다"라고 설명했다.

브룩스는 몇 가지 난관도 있다면서, 특히 다음 세대의 소프트웨어 아키텍트를 양성하는 일이 주요 과제라고 언급했다. 주니어 개발자 일자리가 줄어들면 더 높은 직급으로 자연스럽게 올라갈 수 있는 길인 도제식 교육도 이뤄질 수 없기 때문이다.

확산되고 있는 코딩 어시스턴트
개발팀 재편이 얼마나 빨리 이뤄질지는 불분명하지만, 깃허브가 최근 실시한 설문조사에 따르면 개발자들 사이에서 AI 코딩 어시스턴트의 사용은 이미 확산되고 있다. 4개국 개발자의 97% 이상이 직장에서 AI 코딩 어시스턴트를 사용한 적이 있다고 답했는데, 이는 코딩 어시스턴트가 오늘날 생성형 AI의 최대 인기 사용 사례 중 하나라는 업계의 관측과 일맥상통한다.

깃허브는 지난 1월 말 기준 코파일럿 코딩 어시스턴트 사용자가 130만 명으로 전 분기 대비 30% 증가했다고 밝혔다. 마이크로소프트에 따르면 지난 7월 말까지 7만 7,000개 이상의 조직에서 코파일럿을 도입했다.

한편 온라인 교육 제공업체 플루럴사이트의 최근 연구 결과에 따르면, 조사에 참여한 IT 전문가의 약 4분의 3이 AI로 인해 자신의 기술이 쓸모없게 될 것을 우려하고 있었다.

또한 일부 전문가는 많은 개발팀이 빠른 시일 내에 AI를 최대한 활용하기 위해 노력하는 상황에서 AI의 영향이 장기적으로 나타날 전망이라고 언급했다.

IT 컨설팅 및 서비스 제공업체 인텔리버스(Intelibus)의 설립자 에드 와탈은 기존 팀의 생산성을 높이고 AI 프롬프트 엔지니어링 기술을 구축하는 데 추가 코치가 필요하기 때문에 향후 1~2년 내에 개발팀 규모가 실제로 더 커질 수 있다고 말했다. 하지만 3명의 소프트웨어 엔지니어가 과거 5~6명이 하던 코딩 업무를 할 수 있기 때문에 장기적으로는 개발팀이 점점 더 축소될 것이라고 덧붙였다.

와탈은 더 많은 직원이 AI와 로우코드/노코드 도구를 사용해 애플리케이션을 작성하게 되면 기존 개발팀의 혼란이 가중될 수 있다면서, “직원들은 AI 생성 코드가 어떻게 작동하는지 깊이 이해하지 못할 수 있지만 코드를 작성할 역량은 충분하다”라고 언급했다.

많은 IT 리더들이 AI 코딩 어시스턴트가 궁극적으로 개발자 일자리를 줄일 것이라고 예측했지만, 일부 개발 리더들은 AI를 사용한 코드 작성과 디버깅이 현명한 방법인지 의문을 제기하기도 했다.

과대 평가된 장점?
코드 테스트 솔루션 기업 소스랩스의 수석 테스트 전략가인 마커스 머렐은 일부 조직이 AI 코딩 어시스턴트로 절약되는 시간을 과대 평가했을 수 있다고 말했다. 그는 개발자 생산성을 약 30% 개선한다는 것이 좋은 출발점으로 작용할 수는 있지만 근본적인 변화로 이어질 정도는 아니라고 지적했다. 

머렐은 “오늘날 현장에서는 팀들이 이런 도구를 통해 엄청난 이익을 얻을 수 있다고 생각해 도구에 과잉 투자하거나, 구조 및 프로세스 변경을 과도하게 진행하거나, AI 도구의 예상되는 장점만 갖고 이미 계획했던 직원 감축을 한층 더 심화하는 모습을 볼 수 있다”라고 지적했다. 

머렐은 생성형 AI가 개발자 일자리를 대체할 것이라고 생각하지 않으며, 그보다 로우코드/노코드 도구가 더 큰 영향을 미칠 수 있다고 내다봤다. AI 코딩 실험이 적당한 성공을 거두며 계속되더라도 결국 AI 대기업들은 막대한 투자액만큼의 수익을 거둬야 하기 때문이다.

머렐은 “앞으로 2~3년간 이 기술에서 온갖 생산성을 짜내기 위해 노력한 다음에는, 결국 허울에 불과했다는 것을 인정하는 데까지 매우 오래 걸릴 수 있다. 우려되는 점은 도구에 익숙해지고 나면 기업들이 모델을 운영하는 데 드는 비용을 청구하기 시작한다는 것이다. 그 때가 되면 시스템에는 큰 충격을 줄 수 있다”라고 진단했다.

 

https://www.ciokorea.com/news/350438

 

AI 코딩 도구의 급부상, 최대 피해자는 주니어 개발자?

일부 IT 리더들은 AI가 코드 작성에 더 능숙해지면서 소프트웨어 개발팀이 시니어 몇 명 수준으로 축소될 수 있다고 내다봤다. ⓒ

www.ciokorea.com

 

반응형
반응형

민감하거나 논란의 여지가 있는 주제, 또는 감정이 격해질 문제를 다루기란 쉽지 않다. 이를 위해서는 감성 지능, 공감 능력, 그리고 적극적으로 경청하는 태도가 필요하다.

IT 리더는 많은 과제에 직면하지만, 신뢰할 수 없거나 업무를 소홀히 하는 직속 직원, 특히 팀장급 직원을 다루는 것만큼 어려운 일은 많지 않다. 

스킬소프트(Skillsoft)의 CIO 올라 달리는 관리자나 임원이 직속 직원과 솔직한 대화를 해야 하는 여러 이유가 있다면서도, “근본적으로 개인이 성과 기대치를 충족하고 팀과 전반적인 문화에 긍정적으로 기여하고 있는지 여부가 중요하다”라고 말했다.

대화의 성공 여부는 다양한 관점을 이해하고, 명확하게 소통하며, 메시지가 어떻게 받아들여지는지 관찰하는 능력에 달려 있다. 

어려운 대화를 덜 고통스럽고 더 효과적으로 만드는 6가지 방법을 소개한다.

1. 열린 태도 유지하기
달리는 열린 태도를 갖고 사실에 기반해 대화에 임하는 것이 중요하다고 강조했다. 대화에 들어가기 전에 여러 관점에서 상황을 종합적으로 파악해야 한다고 그는 조언했다. 또한 “행동이나 기대에 미치지 못한 사례를 준비하면 맥락을 제공하는 데 유용하기 때문에 이런 부분을 미리 생각하는 것이 중요하다”라고 말했다. 

대화의 성공은 다양한 관점을 이해하고, 명확하게 소통하며, 메시지가 어떻게 받아들여지는지 관찰할 수 있는 능력에 달려있다. 달리는 공감 능력과 감정 지능 등의 소프트스킬이 현대 리더에게 필수이며, 이를 통해 성공한 대화와 실패한 대화의 차이를 만들 수 있다고 언급했다. 이 기술은 하루아침에 개발되는 것이 아니라 지속적으로 공부하고 연습해야 한다.

달리에 따르면 최근 스킬소프트는 생성형 AI 기반 코치인 케이시(CAISY)를 개발했다. 이 시스템은 리더가 대인 관계 기술을 개발하고 안전한 환경에서 연습할 수 있도록 지원하며, 각 시뮬레이션 후 개인화된 피드백을 제공한다. 이 시나리오에서 팀장급 직원들은 성과가 저조한 팀원에게 건설적인 피드백을 제공해야 한다.

달리는 "시뮬레이션을 하는 동안 학습자는 공감, 인내심, 그리고 적극적이고 해결책 지향적인 접근 방식으로 어려운 상황을 효과적으로 관리하는 다양한 전략을 접하게 된다"라고 설명했다.

2. 서번트 리더십으로 접근하기
ISG의 파트너인 올라 차우닝은 대화에 앞서 다뤄야 할 행동이나 성과에 대한 명확한 예시를 준비해야 한다고 조언했다. 이를 위해 지표, KPI, 개인적 관찰 등 가능한 한 객관적인 정보를 확보해야 한다. 

차우닝은 “회의 전에 팀원이나 동료들과 일상적인 대화를 나누는 것도 도움이 될 수 있다”라고 말했다.

그는 행동 문제와 관련해 구성원을 섬기는 자세로 접근하는 서번트 리더십이 효과적일 수 있다고 설명했다. 그는 “직속 직원의 집중력, 주의력, 정신 건강에 영향을 미치는 외부 요인이 있는지 물어보라. 성과 문제는 일반적으로 사실에 근거하겠지만, 성과를 저해하는 내부 요인이나 제약이 있는지 물어보는 것이 적절할 수 있다. 이후의 대화는 결과, 사례, 기대되는 변화로 이어질 수 있다”라고 말했다. 

3. 상대방의 관점 고려하기
의료 소프트웨어 및 IT 자문 기업 리버액스(Riveraxe)의 CEO 데이비드 펌프리는 대화의 목표를 검토하고 개인의 관점을 이해해 대화를 준비해야 한다고 조언했다. 그는 적극적으로 경청하고 개방적으로 질문할 것을 제안했다. 

필요할 때 건설적인 지침을 제공하는 것도 중요하다. 펌프리는 “직속 팀의 한 팀장이 프로세스 간소화에 어려움을 겪고 있을 때, 먼저 약속 일정의 자동화부터 시작해 점진적으로 확장해 나가라고 제안했다. 이런 조언과 경험은 해당 직원을 다시 정상 궤도에 올리는 데 도움이 됐다”라고 회상했다.

추가 지원이 필요해 보일 경우 핌프리는 코칭이나 교육과 같은 단계를 권장했다. 그는 “한번은 직원의 의사 소통 기술을 돕기 위해 컨설턴트를 초빙한 적도 있다”라고 말했다. 

다른 모든 방법이 실패할 경우 직원의 재능과 능력에 더 잘 맞는 직책으로 재배치하는 것도 고려해야 하지만, 핌프리는 이 방법이 마지막 수단으로 사용돼야 한다고 언급했다. 그는 “지원이 있으면 많은 직원이 개선되지만, 때로는 팀과 비즈니스의 성공을 위해 변화가 필요할 수 있다. 하지만 역할 교체 전에 해당 직원을 정상 궤도에 올리는 것이 목표여야 한다”라고 설명했다. 

팀과 목표는 항상 우선시돼야 한다. 대화의 목표는 직속 직원에게 개선을 위한 기회와 리소스를 제공하는 것이지만, 필요할 때는 어려운 결정도 내려야 한다. 펌프리는 “강력한 리더십과 의사 소통이 핵심”이라고 덧붙였다. 

4. 명확한 목표 설정하기
지니어스 솔루션(Genius Solutions)의 사장 겸 CIO인 진 마그니는 공식적인 대화 일정을 잡기 전에 직속 직원과 비공식적으로 만나 회의의 구체적인 목표를 설정할 필요가 있다고 제안했다. 

마그니는 회의가 시작되면 전체적인 맥락을 파악하고 직속 직원의 관점을 이해하기 위해 경청해야 한다고 말했다. 그는 “개방적인 질문을 통해 전체적인 상황을 파악한 뒤에 지침을 제공하라. 해결해야 할 문제를 파악했다면 구체적인 예시와 개선을 위한 제안을 통해 직접적이면서도 건설적인 태도를 취하라”라고 조언했다. 

초기 논의 후 추가 조치가 필요한 경우 코칭, 교육 또는 역할 변경 등 적절한 다음 단계를 결정해야 한다. 직원의 능력에 확신이 서지 않는다면 최후의 방법으로 인사 담당자를 개입시키거나 역할을 재배치해야 한다고 마그니는 덧붙였다. 

마그니는 "열린 의사소통과 지원으로 많은 문제를 해결해 팀이 다시 잘 작동하게 할 수 있다. 하지만 어떤 경우에는 팀과 프로젝트 또는 비즈니스 목표의 성공을 위해 역할 교체가 필요할 수 있다"라고 말했다.

5. 마음가짐을 갖추기
IT 서비스 기업 어센던트 테크놀로지스(Ascendant Technologies)의 비즈니스 개발 매니저인 매튜 프란지센은 대화에 임할 마음가짐이 갖춰졌는지 점검하는 것이 중요하다고 말했다. 그는 "객관적으로 대화에 접근할 수 있는 마음가짐을 갖춰 사실에 집중하고 전문적인 태도를 유지할 수 있어야 한다"라고 설명했다.

프란지센은 "직원을 사무실로 부르기 전에 예의 바르고, 전문적이며, 협력적인 방식으로 대화에 접근할 계획을 세워야 한다. 대화의 목표에 집중해야 한다. 그들의 행동을 바꾸고 싶은 것인가, 직면한 문제에 대한 설명을 듣고 싶은 것인가, 아니면 둘 다인가?"라며 대화를 시작하기 전에 목표를 아는 것이 중요하다고 말했다.

6. 성급한 판단 피하기
디지털 컨설팅 에이전시 디비사(DIVISA)의 CEO 디터 샤오는 직속 직원의 관점을 완전히 이해하기 위해 판단 없이 경청해야 한다고 말했다. 그는 "성과 부진의 근본 원인을 파악하기 위해 심도 있는 질문을 하고 구체적이고 건설적인 피드백과 권장 사항을 제공하라"라고 조언했다.

참여와 지원에도 불구하고 어려움이 지속되다면 개인의 역할을 재평가해야 할 수 있다. 샤오는 "역할 교체는 엄청난 혼란을 초래할 수 있기 때문에, 그 단계를 밟기 전에 개선을 위한 기회와 자원을 제공하기 위해 모든 노력을 기울인다. 대부분의 문제를 해결하는 열쇠는 열린 의사 소통과 협력적인 접근 방식이지만, 팀과 비즈니스 목표의 성공이 최우선이어야 한다”라고 말했다. 

다른 이해관계자의 개입은 직속 직원이 추가적인 코칭, 교육 또는 독립적인 중재로부터 이익을 얻는 경우에만 있어야 한다. 샤오는 "성과와 역량을 다시 정상 궤도에 올리기 위해 가능한 한 투명하고 지원적으로 문제를 해결하는 데 목표를 둬야 한다"라고 덧붙였다. 

 

https://www.ciokorea.com/news/350844

 

직속 직원과 ‘어려운 대화’ 나누기··· 6가지 원칙은?

민감하거나 논란의 여지가 있는 주제, 또는 감정이 격해질 문제를 다루기란 쉽지 않다. 이를 위해서는 감성 지능, 공감 능력, 그리고 적극적으로

www.ciokorea.com

 

반응형
반응형

[python] Generate Captcha Using Python

 

 

https://www.geeksforgeeks.org/generate-captcha-using-python/

 

Generate Captcha Using Python - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

In this article, we are going to see how to generate a captcha using Python package captcha to generate our own CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart) in picture form. CAPTCHA is a form of challenge-response authentication security mechanism. CAPTCHA prevents automated systems from reading the distorted characters in the picture.

Installation:

pip install captcha

Generating image captcha: 

Here we are going to generate an image captcha:

Stepwise implementation:

Step 1: Import module and create an instance of ImageCaptcha().

image = ImageCaptcha(width = 280, height = 90)

Step 2: Create image object with image.generate(CAPTCHA_Text).

data = image.generate(captcha_text)  

Step 3: Save the image to a file image.write().

image.write(captcha_text, 'CAPTCHA.png')

Below is the full implementation:

  • Python3

 

# Import the following modules
from captcha.image import ImageCaptcha
 
# Create an image instance of the given size
image = ImageCaptcha(width = 280, height = 90)
 
# Image captcha text
captcha_text = 'GeeksforGeeks' 
 
# generate the image of the given text
data = image.generate(captcha_text) 
 
# write the image on the given file and save it
image.write(captcha_text, 'CAPTCHA.png')

Output:

Image CAPTCHA

Generating Audio captcha:

Here we are going to generate an audio captcha:

Stepwise implementation:

Step 1: Import module and create an instance of AudioCaptcha().

image = audioCaptcha(width = 280, height = 90)

Step 2: Create an audio object with audio.generate(CAPTCHA_Text).

data = audio.generate(captcha_text)  

Step 3: Save the image to file audio.write().

audio.write(captcha_text, audio_file)

Below is the full implementation:

  • Python3

 

# Import the following modules
from captcha.audio import AudioCaptcha
 
# Create an audio instance
audio = AudioCaptcha() 
 
# Audio captcha text
captcha_text = "5454"
 
# generate the audio of the given text
audio_data = audio.generate(captcha_text)
 
# Give the name of the audio file
audio_file = "audio"+captcha_text+'.wav'
 
# Finally write the audio file and save it
audio.write(captcha_text, audio_file)

Output:

Video Player
 
 
 
00:00
 
00:13
 
 

 

Ready to dive into the future? Mastering Generative AI and ChatGPT is your gateway to the cutting-edge world of AI. Perfect for tech enthusiasts, this course will teach you how to leverage Generative AI and ChatGPT with hands-on, practical lessons. Transform your skills and create innovative AI applications that stand out. Don't miss out on becoming an AI expert – Enroll now and start shaping the future!

반응형
반응형

생성형 AI가 지루한 작업을 처리하고 오류를 찾는 데 능숙하더라도 프로그래머의 전문성과 직관은 항상 필요할 것이다.

데이터셋(Datasette)의 설립자 사이먼 윌리슨은 “지금이 프로그래밍을 배우기에 더할 나위 없이 좋은 시기”라고 말했다. AI가 코딩을 대신 해줘서가 아니다. 사실 정반대다. 그는 “대규모 언어 모델은 학습 곡선을 평평하게 만들어 젊은 개발자가 더 쉽게 따라잡을 수 있게 해준다”라고 말했다. 코딩하는 방법을 잊어서는 안 되지만, 생성형 AI를 사용해 경력 수준에 관계없이 개발자 경험을 강화할 수 있다.

‘배움에 대한 의지’를 예찬
필자는 생성형 AI에 대한 윌리슨의 견해를 살피는 것을 즐긴다. 그는 이 주제를 사려 깊게 생각하는 개발자다. 오라일리(O'Reilly Media)의 마이크 루키데스 글도 큰 주제에서 핵심을 압축해 설명했기 때문에 읽어볼 만하다. 루키데스는 생성형 AI와 코딩에 대해 “정말 좋은 프롬프트를 작성하기란 생각보다 어렵다”라는 점을 상기시켜 준다. 그는 “프롬프트를 잘 작성하려면 프롬프트의 목적에 대한 전문 지식을 쌓아야 한다”라고 말했다. 다시 말해, 먼저 ‘좋은’ 프로그래머가 돼야 한다.

루키데스는 “AI를 '인간이 얻을 수 없는 전문 지식과 지혜의 보고’로 생각해버리면 이를 생산적으로 사용할 수 없게 된다”라고 조언했다. AWS 코드위스퍼러(CodeWhisperer)나 구글 코디(Codey)와 같은 도구를 효과적으로 사용하기 위해서는 기대하는 결과물을 코칭해야 한다. 그리고 AI에게 개발 문제를 해결하는 방법을 단계별로 알려주려면, 먼저 문제를 깊이 이해하고 AI가 응답하도록 이끌어내야 한다. 

또한 개발자는 AI가 틀렸을 때 이를 평가할 수 있어야 한다. 여기엔 일정 수준의 전문성이 필요하다. 윌리슨이 언급한 것처럼 코딩 어시스턴트가 프로젝트에서 더 활발히 일하고 도와줄 것으로 기대되는 상황이지만, 그렇다고 해서 개발자가 코드를 파악해야 할 필요성까지 없애주진 않을 것이다. 그렇게 되기를 바라는 이도 없을 것이다. 다시 윌리슨의 첫 번째 요점으로 돌아가 본다.

AI를 활용한 코딩 학습
특정 언어, 프레임워크, 데이터베이스 등을 처음 접하는 개발자라면 학습 곡선이 가파를 수 있다. 예를 들어 “세미콜론을 놓쳐서 기이한 오류 메시지가 표시되고, 그 오류를 다시 찾는 데 2시간이 걸리는 경우도 있다”라고 윌리슨은 말했다. 당연히 이러한 점 때문에 학생들은 자신이 프로그래밍을 배울 만큼 똑똑하지 않다고 생각해 배움을 포기할 수 있다.

바로 이 부분에서 AI 어시스턴트가 개입할 수 있다. 윌리슨은 “컴퓨터공학 학위가 없어도 컴퓨터가 지루한 일을 대신 해줄 수 있어야 한다”라고 전했다. 챗GPT 같은 LLM 기반 어시스턴트는 지루한 작업을 자동화할 수 있다. 깃허브(GitHub) 엔지니어 자나 도건은 “사람들은 코드 생성에만 너무 집중한 나머지 LLM이 코드 분석에 유용하다는 사실을 완전히 잊고 있다”라고 강조했다. 모든 작업을 AI가 할 필요는 없다. 윌리슨의 주장에 따르면, 애플리케이션을 만들거나 망치지는 않으나 개발자의 자신감을 떨어뜨릴 수 있는, 개별적이고 지루한 작업을 자동화하는 데 AI를 활용할 수 있다. 코딩 어시스턴트가 지루한 작업을 처리할 수 있음에도 개발자가 프로그래밍의 모든 측면을 배우고 수행할 것을 요구받는 경우에 더 그렇다.

언제나 그렇듯 생성형 AI와 함께 소프트웨어 개발을 시작하는 가장 좋은 방법은, 바로 시작하는 것이다. 이해는 했지만 반복해서 작성할 필요는 없는 간단한 작업부터 자동화해 작게 시작하라. 이렇게 절약한 시간으로 더 까다로운 코딩 문제를 해결하는 방법을 배우는 데 집중할 수 있다. 전문성이 높아지면 이러한 작업도 자동화할 수 있게 될 것이다.

 

https://www.ciokorea.com/news/311336

 

칼럼 | 프로그래밍에서 AI가 대체하지 못하는 것들

생성형 AI가 지루한 작업을 처리하고 오류를 찾는 데 능숙하더라도 프로그래머의 전문성과 직관은 항상 필요할 것이다. ⓒ Getty

www.ciokorea.com

 

반응형

+ Recent posts