Skip to main content

· 6 min read

들어가며

저번에 작성한 유데미의 Next.js & React 강의 후기에 이어, 이번에는 또 다른 강의에 대한 후기이다. 이번 강의는 유데미 강의 중 [OpenAI API 마스터하기: GPT-4의 무한한 창의성 끌어내기]에 대한 수강 후기이다.

ChatGPT-3.5부터 열심히 사용하다가, 이번년도 초에는 ChatGPT-4를 유료로 결제해서 사용했었다 (현재는 Claude 무료 버전을 사용하고 있다). OpenAI의 API를 활용해 작은 서비스를 만들어보고 싶은 생각이 있었고, 좋은 기회가 생겨서 신청하게 되었다.

이 강의를 통해 기대하던 바는 다음과 같다.

  • OpenAI API 사용 방법
  • 생성 모델에 대한 개념적 이해
  • 다양한 미니 프로젝트

강의 내용

강의 대상

  • AI에 대해 궁금한 개발자
  • 생성(generative) 모델로 워크플로우를 강화하려는 소프트웨어 엔지니어
  • OpenAI에서 제공하는 도구에 관심이 있는 기업가
  • 창의적인 워크플로우를 보강하는 데 관심이 있는 콘텐츠 크리에이터

다루는 내용

  • OpenAI 의 생성 모델 및 잠재적인 애플리케이션에 대한 이해도 심화
  • 텍스트 생성, 요약, 번역 등 자연어 처리 측면에서 GPT-4 익히기
  • GPT-4 를 사용해 코드를 디버깅하고, 코드를 개선하며, 처음부터 코드 작성하기
  • DALL-E 를 사용하여 텍스트 프롬프트에 기반해 멋진 시각적 이미지와 아트워크 생성하기
  • Whisper 의 기능으로 음성 오디오를 정확한 전사본으로 변환 및 번역하기
  • AI 임베딩을 사용해 텍스트를 정제, 색인화, 검색, 비교하여 단어, 문단, 문서를 비교할 수 있는 기하학적 기능 이용하기
  • GPT-4 를 사용해 동적 Q&A 봇 만들기
  • GPT-4 로 시각적 색상 팔레트 검색 엔진 만들기
  • GPT-4 로 대화형 코드 검토 어시스턴트 작성하기
  • AI 기반 Spotify 플레이리스트 생성기 만들기
  • GPT-4 를 사용해 Reddit 댓글 감정 분석하기
  • 모든 크기의 책을 단락 몇 개로 요약하기
  • DALL-E 및 GPT-4 로 무한 대화형 나만의 모험 떠나기 애플리케이션 만들기
  • 임베딩 기반 영화 추천 알고리즘 생성하기

목차

  1. 강좌 소개
  2. 시작하기
  3. 프롬프트 엔지니어링
  4. 색 팔레트 생성기 프로젝트
  5. 주요 API 매개변수
  6. Chat API와 GPT-4
  7. GPT-4 챗봇 만들기
  8. GPT-4로 코드 작업하기
  9. 틱 토큰(TikToken)으로 예상견적 내보기
  10. GPT-4 자동 코드 리뷰어
  11. GPT-4 AI로 Spotify 플레이리스트 생성 프로젝트
  12. 임베딩
  13. 임베딩으로 GPT-4 강화하기
  14. 감정 분석 프로젝트
  15. 책 요약기 프로젝트
  16. DALL-E API
  17. Stable Diffusion과 나만의 모험 선택하기 앱
  18. Whisper: 오디오를 텍스트로 변환

사담

[강좌 소개] 부분에서 트랜스포머 구조에 대해 알려주는 부분이 있었는데, 개념적인 부분도 짧고 굵게 공부할 수 있어서 기대 이상으로 좋았다. 또한, "어떻게 활용할 수 있을까?"에 대한 니즈가 있어서 들었던 강의였는데, 다양한 프로젝트를 통해 가려운 부분을 긁을 수 있었다. 만들어보고 싶었던 기능들(ex> 자동 코드 리뷰어, 책 요약기)도 있었어서 더욱 유익했다. 앞으로도 이것 저것 발전시켜서 개인적으로 사용해도 좋을 듯 하다.

총평

다음과 같은 니즈가 있다면, 위 강의를 한 번 고려해보자!

  • 그 유명한 트랜스포머, 아직까지 개념적으로 잘 모른다... 훑어라도 볼까?
  • 생성형 모델 이용해서 서비스 만들어보고 싶다!

프로젝트 기반의 생성형 모델 강의를 찾고 있다면 추천하는 강의이다. 파이썬에 대해 기본만 알고 있더라도 충분히 따라갈 수 있는 정도의 난이도라서, 무난하게 들을 수 있을 것으로 보인다.

· 8 min read

들어가며

2023년 11월부터(벌써 5개월이 지났다) 글또 9기를 시작했다. 글또에는 글에 진심인 사람들과, 배울 점이 많은 사람들이 정말 많다. 좋은 자극을 받는 것도 좋은데, 몇 가지 혜택(?)도 받을 수 있었다. 그 중 하나가 유데미 강의를 무료로 들어볼 수 있는 기회였다! 이번 포스팅은 그렇게 듣게된 유데미 강의 중 [Next.js & React - 완벽 정복 가이드 (incl. Two Paths!)]에 대한 수강 후기이다.

참고로, 나는 Next.js & React 모두 모르는 상태로 수강을 신청했다. 강의 설명 부분의 다음과 같은 문구를 보고 용기를 얻었다.

  • 본 강의 수강을 위한 NextJS 사전 시직은 필요하지 않습니다.
  • ReactJS 지식이 있으면 좋겠지만, React 전체 복습 모듈도 있습니다.
  • 아주 기초부터 시작하니 초보 지원자도 강의를 편안하게 들을 수 있습니다.

여담으로 그동안 실무에서는 Data Engineer & MLOps Engineer로 일했어서, 프론트엔드와는 거리가 먼 개발을 했었다. 하지만, 모름지기 개발자라면 원하는 것들은 모두 만들 수 있어야 한다고 생각해서, 이번 기회에 프론트엔드도 해보고 싶어서 신청했다. 무엇보다 실제 client와 소통하기 위해서는 프론트엔드는 필수적이기에, 반드시 익혀야 하는 기술이라고 생각했다.

강의 내용

강의 대상

  • 수준을 한 단계 끌어올리고 프로덕션 준비가 완료된 React 앱을 구축하고자 하는 React 개발자
  • 풀스택 React 앱 구축을 목표로 하는 React 개발자
  • 본 강의를 수강하여 가장 인기있고 수요가 많은 테크 스택으로 작업하고자 하는 웹 기초 개발자
  • IT 기술 업계에 커리어를 시작하는데 목표를 둔 신입생 및 취업준비생

다루는 내용

  • NextJS란 무엇인가? NextJS를 왜 사용하는 걸까?
  • 왜 (대부분의 경우에) React만으로는 충분하지 않을까?
  • NextJS 프로젝트 처음부터 생성하기 & 프로젝트 이해하기
  • 파일 기반 라우팅 작업하기
  • 동적 라우트와 catch-all 라우트 추가하기
  • 페이지 사전 렌더링 및 서버 사이드 렌더링의 다양한 형태 구현하기
  • 데이터 작업하고 데이터 페칭을 추가해 앱에 사전 페칭하기
  • 서버 액션으로 양식 제출 처리하기
  • 파일 업로드 처리하기
  • 동적 및 정적 페이지 사전 생성하기
  • 페이지로 메타데이터 등의 최적화 추가하기
  • NextJS 이미지 컴포넌트를 통해 이미지 최적화하기
  • API 라우트 또는 서버 액션을 통해 풀스택 앱 구축하기
  • React Context를 통해 앱 전반에 걸친 상태 관리하기 (NextJS 앱 내에서)
  • NextJS 앱에 인증 추가하기
  • 다양한 앱에 이와 같은 핵심 개념 적용해 보기!
  • React.js 전체 복습 모듈 (모두 같은 수준에서 시작할 수 있도록 하기 위함)
  • 배운 내용을 복습할 수 있고, 핵심 기능만을 빠르게 훑어볼 수 있는 NextJS 요약 모듈

목차

  1. 시작하기
  2. (Optional) React 복습하기
  3. NextJS 핵심 (앱 라우터)
  4. 페이지 & 파일 기반 라우팅
  5. 프로젝트 시간: 파일 기기반 라우팅 작업하기
  6. 페이지 사전 렌더링 & 데이터 페칭
  7. [프로젝트] 페이지 사전 렌더링 & 데이터 페칭
  8. NextJS 앱 최적화하기
  9. API 라우트를 통해 백엔드 코드 추가하기 (풀스택 React)
  10. [프로젝트] API 라우트
  11. 앱 전반 상태 작업하기 (React Context)
  12. 완성형 앱의 예시: 처음부터 끝까지 블로그 구축하기
  13. NextJS 앱 배포하기
  14. 인증 추가하기
  15. (Optional) NextJS 요약
  16. 마무리

사담

가장 좋았던 것은 (Optional)로 되어 있는 부분이었다. [React 복습하기], [NextJS 요약] 부분인데, 바쁜 현대인을 위한 요약 섹션이다. 특히, React도 모르는 상태에서 들어서, [React 복습하기] 부분은 정말 도움이 많이 되었다. 모든 강의를 꼼꼼하게 듣는 것도 괜찮지만, [NextJS 요약] 강의를 듣다가 더 딥다이브 하고 싶은 부분에 대한 강의를 보거나, 외부 자료를 찾아보는 방식도 추천한다.

총평

다음과 같은 니즈가 있다면, 위 강의를 한 번 고려해보자!

  • 프론트앤드 한 번 해보고 싶은데? 나도 웹사이트 한 번 만들어보자!
  • React, NextJS를 많이들 쓰는데, 뭔지 한 번 배워보고 싶다!
  • 핵심 개념을 빠르게 배우고, 프로젝트에 적용하면서 배우고 싶어!

프론트엔드를 처음하는 사람도 이해할 수 있게 쉽게 설명하고, 중요한 내용들을 알차게 배울 수 있는 강의였다. 하지만 강의 내용이 많기 때문에 전부를 듣지는 못했다(총 강의 시간은 32시간이 넘어간다…). 개인적으로 학습하고, 프로젝트도 진행해보고 하려면 정말 많은 시간이 소요될 것으로 보인다. 그래서 나는 [React 복습하기] & [NextJS 요약]을 알차게 활용해서 필요한 부분만 들었는데, 이것으로도 많이 배울 수 있었다.

다음 스텝으로, 나한테 필요한 웹 사이트를 만들어서 실제로 운영해보려고 한다. 실제 트래픽도 받아보고, 이런 저런 기능들을 추가해보면 재밌을 것 같다! 기능 개발할 때도 이 강의는 좋은 레퍼런스로 활용할 예정이다. 아무튼, “프론트앤드 한 번 해보고 싶다!” 라는 생각이 있다면, 추천하는 강의이다!!

· 13 min read

들어가며

코드트리로 코딩테스트를 준비한 후기를 적어보려고 한다. 코딩테스트를 준비하게 된 배경은 역시 이직 준비였다. 2023 후기에서 세웠던 To-Do List 중 두 번째가 “이직을 위한 이력서와 포트폴리오 준비”였는데, 다행히도 1월 첫째주에 달성했다. 덕분에 여러 회사에 지원할 수 있었고, 감사하게도 코딩테스트 기회를 얻게 되었다. 지금까지 코딩테스트를 제대로 준비한 적은 없었다. 컴퓨터 공학과 출신도 아니고, 현재 재직중인 회사의 입사 과정에도 코딩테스트가 없었다. 예전에 대학원 때 “파이썬 알고리즘 인터뷰” 책을 찍먹 수준으로 잠깐 봤었고, 작년에 “이것이 코딩테스트다” 책으로 스터디를 하긴 했지만 머릿속에 “흐릿한 개념”이 있는 수준이었다. 이직 준비를 빡세게 달려볼 생각이었어서, 일단 회사에 지원하고 코딩테스트 기회가 주어진다면 단기간에 몰입해서 준비할 예정이었다. 시험 기간 전날에는 집중력이 미친듯이 올라가는 것처럼, 비슷한 전략을 취하려 했다. 시간을 효율적으로 사용해야 하기 때문에, “빈출 유형”을 찾고 개념과 기본 구현을 익힌 다음에 백준에서 유형별로 문제를 풀어보는 정도로 준비하려고 했었다. 2-3일 정도 진행하던 중에, 현재 참여하고 있는 글또를 통해 코드트리를 사용할 수 있는 기회가 생겨서 신청했다. 백준이나 프로그래머스나 리트코드로도 충분히 준비할 수 있겠지만, 뭔가 새롭게 하고 싶은 마음도 있었고, 코드트리의 “실력 진단”이나 “깔끔한 개념 설명”이 마음에 들어서, 코드트리로 준비하는게 효율적이라고 판단했다. 지금 돌아보니 정말 좋은 선택이었다.

학습 방법

코드트리는 백준, 프로그래머스, 리트코드처럼 “코딩테스트”를 준비할 수 있는 플랫폼이다. 다른 점은 유료라는 것과 유료인만큼 “효율적으로 학습”할 수 있다는 점이다. 알고리즘 문제를 통해 나의 실력을 점검하고, 내 실력에 맞는 커리큘럼을 추천해준다. 문제는 해당 커리큘럼을 완벽하게 하려면 1-2달은 있어야 하는데, 나에게는 1-2주의 시간만 가능했다는 것이었다. 코드트리에서 별도로 추천해준 커리큘럼이 있긴 했지만, 그것 또한 시간이 많이 걸리기에 조금 따라하다가 포기했다. 대신, “기업별 커리큘럼”에서 “최다 빈출 유형”을 선정하고, 해당 유형 중에서도 가장 빈출이었던 3가지 유형을 공략하는 전략을 취했다. 어차피 전부 공부할 수는 없다고 생각했고, 최다 빈출인만큼 반드시 출제될테니 이것만큼은 꼭 맞추자는 생각이었다. 코테를 준비할 때마다 유형 1개씩에 대해 익힐 수 있다면, 3-4번의 코테를 보고 나서는 웬만한 문제는 맞출 것이라 생각했다.

그렇게 선정한 유형은 “완전 탐색”, “시뮬레이션”, “백트래킹”이었다. 어디선가 본 글에서 대부분의 알고리즘 문제는 “완전 탐색”으로 풀 수 있다고 했었다. 해당 글 덕분에, 알고리즘에 대한 큰 개념을 잡을 수 있었다. “알고리즘 유형을 트리 구조로 표현한다고 하면, 대부분의 경우 루트 노드에는 완전탐색이 있고, 그 밑으로 시뮬레이션, 백트래킹, 다이나믹 프로그래밍 등등이 생기는거구나. 탐색해야 할 n이 커졌을 때를 위한 세부적인 알고리즘이 자식 노드로 들어간다고 생각해도 되겠다!”라는 생각이었다. 뇌피셜이기에 틀릴 수도 있다.

이렇게 유형을 3가지로 좁혔지만, 유형들의 모든 문제들을 풀어보는 것도 불가능했다. 퇴근하고 매일 3시간씩 달리는 것은 불가능해서, 2시간 정도씩 준비했었는데 해당 시간으로는 역부족이었다. 따라서, 모든 문제를 풀어보지는 않고, 개념과 기본 구현 방법을 익히는데 집중한 이후에 실제 문제 풀이는 2-3개만 하는 방식으로 3가지 유형에 대해 학습했다. 참고로, 코드트리로 준비하기 전에는 백준을 활용했었다. 백준에서는 “투 포인터” 유형만 학습했었다.

코딩테스트 결과

일반적인 코딩테스트와, 면접에서 진행하는 라이브 코딩테스트를 포함해서 5번의 테스트를 치뤘다. 그 중 한 곳을 제외하고는 모두 통과했다. 준비했던 3가지 유형(완전 탐색, 시뮬레이션, 백트래킹) 중 1개 혹은 2개는 무조건 나왔고, 구현 문제도 꽤 많았다. 대부분 “알고리즘” 자체는 3가지 유형에서 1-2문제를 출제하고, 나머지 1-2개는 “구현” 문제를 출제했었다. 데이터 엔지니어 포지션이어서 그럴 수도 있고, 온라인 코딩테스트에서 ChatGPT를 완벽하게 막기가 어렵다보니 오히려 “구현”에 집중한 것 같기도 하고, 이유는 잘 모르지만 아무튼 그랬다. 그리고 라이브 코딩테스트에서는 더더욱 어려운 문제보다는, “투 포인터” 혹은 “완전 탐색” 유형이 정말 대부분이었다. “어떻게 사고하는가”, “어떻게 시간 복잡도를 더 줄일 수 있는가”, “문제를 이해하고, 로직을 생각하고, 코드로 쳐내는 과정을 빠르게 할 수 있는가”를 보려고 하는 것 같았다.

정리

코드트리를 통해 코딩테스트를 준비했던 것은 매우 탁월한 선택이었고, 너무 감사한 기회였다. 사용하면서 나중에 또 사용하고 싶어서, 실제 가격까지 알아볼 정도로 매우 만족했다. 가장 크게 느낀 장점들은 다음과 같다.

  1. 백준, 프로그래머스를 제대로는 아니지만 깨작깨작 사용했다보니 새로운 마음으로, 새로운 플랫폼을 사용하고 싶었다. 코드트리는 새로운 플랫폼이라는 점에서 일단 좋았다.
  2. 코드트리는 알고리즘을 실력별로, 유형별로 깔끔하게 분류했다. 그리고, 유형별로 “개념”, “기본 구현 방법”, “쉬운 문제부터 어려운 문제까지”가 모두 모아놓았다. 백준이나 프로그래머스를 사용할 때는 구글링과 함께 학습을 해야 했는데, 코드트리에서는 그런 수고를 덜 수 있었다. 즉, 시간을 효율적으로 사용할 수 있었다.
  3. 개념 설명이 매우 담백했다. 장황하게 설명하지 않고, 핵심만 설명했기에 빠르게 “어떻게 구현하는가”, “어떻게 문제에 적용하는가”로 넘어갈 수 있었다.
  4. 구현하는 방법을 알려주는 것도 좋았다. “검증된 코드를 익히자”라는 생각으로 일단 코드의 로직을 소화한 이후에 나의 것으로 다시 리팩토링 했다. 역시, 시간을 아낄 수 있었다.

만약, 자신이 아래에 해당한다면 코드트리로 코딩테스트를 준비하는 것을 고려해보는 것을 추천한다.

  1. 새로운 마음으로 새로운 플랫폼에서 코딩테스트를 준비하고 싶다.
  2. 코딩테스트를 처음 준비한다.
  3. 코딩테스트를 준비는 해봤지만, 느낌상 찍먹 수준이다. 공부는 했지만 막연한 느낌이 든다.

지금까지 코드트리로 코딩테스트를 준비한 후기였다. “글또”를 통해 좋은 기회로 무료로 “코드트리”를 사용할 수 있는 기회를 얻은 것은 맞지만, 반드시 좋은 후기를 남겨야 하는 것은 아니었다. 따라서, 위 후기는 리얼 100% 찐이다. 실제로 코드트리를 접한 이후 주변에서 코딩테스트를 준비해야 하는 사람들에게는 “금전적으로 여유가 있다면 한 번 써보는 것도 좋다!”라는 식으로 추천한다. 생각보다 마음을 먹어야 하는 금액이기에, 모두가 쉽게 하기는 어려울 것이라 생각한다. 하지만, 그만큼의 가치는 한다고 생각한다.

참고 자료

· 15 min read

서론

글또 9기에 참여하게 되었다. 원래는 글을 쓸 목적으로 참여한 것은 아니었다. 그동안 공부하며 노션에 정리했던 것들을 블로그에 올리고 싶었고, 그럴 수 있는 좋은 계기가 될 것 같아서 참여했다. 노션에 정리했던 것들은 환경 구축 방법, 간단한 명령어와 개념 정리 등등으로, 미래의 내가 참고하고자 적었던 것들이다. 내용이 깊지도, 많지도 않았다. 그런데 9기 참여자분들이 제출한 글을 보고 있으니 “튜토리얼” 정도의 정리본을 제출하면 안될 것 같은 생각이 들었고, 원래 참여한 목표와는 다르지만 “글을 한 번 써보자”라는 생각이 들었다. 그렇게 2023년 회고글을 작성하게 되었다.

커리어 돌아보기

통계학과를 다니던 대학교 시절, 우연찮게 코딩(파이썬)을 접하게 되었다. 통계학도 재밌었고 파이썬도 재밌었는데, 두 개를 합치면 인공지능이 된다고 해서 인공지능에 관심을 갖기 시작했다. 그렇게 보아즈라는 빅데이터 연합 동아리에서 데이터 사이언티스트에 대한 꿈을 키웠다. 그 당시에도 코딩 자체가 재밌긴 해서 “개발자”와 “데이터 사이언티스트”와의 진로를 놓고 매우 고민을 했었는데, “원래 가던 길을 가는 것이 낫겠다” 싶어서 대학교 졸업 후 인공지능 대학원에 입학했다. 석박 통합 과정이었는데(석사 과정 없음 ㅠ), 그 당시 “엄청난 박사가 될 것이야!”라는 넘치던 낭만을 주체하지 못하고, 호기롭게 석박 통합 과정을 시작했다(석사 과정이 없었음 ㅠ). 그렇게 인턴 시간을 포함한 2년의 시간이 흘러, 학위를 마치지 못한채 휴학하고 대학원을 나오게 되었다. 쉽게 내린 결정은 아니었다. 1년 넘는 시간 동안의 치열한 고민 끝에, “AI 연구자” 보다는 “데이터 엔지니어” 혹은 “MLOps 엔지니어”가 훨씬 즐겁고, 보람차고, 잘할 수 있을 것이라는 생각에 도달했고, 그렇게 돌고 돌아 “개발자”의 길에 들어서게 되었다.

인공지능 모델 개발은 해봤지만 소프트웨어 개발은 해본 적이 없기에, “배울 수 있는 곳”에서 커리어를 빨리 시작하고 싶었다. 대학원을 휴학한지 얼마 지나지 않아, 좋은 기회로 스타트업에(지금도 재직 중임) “데이터 엔지니어”로 취업이 되었다. 그 당시 팀장님께서는 MLOps를 곧 바로는 아니지만 슬슬 도입하는 것이 좋겠다고 생각하고 있으셨다. 그래서인지 대학원에서 데이터 사이언티스트에 대해 경험한 것 + MLOps에 관심 있어하는 것을 좋게 보셨던 것 같고, 그렇게 나는 “배울 수 있는” 좋은 기회를 얻게 되었다.

그렇게 9개월의 시간이 흘러 2023년 1월이 되었고, 본격적으로 MLOps 플랫폼 구축을 시작하게 되었다. 데이터 사이언티스트분들이 “모델 연구”에만 집중하기 위해서는 어떤 기능이 가장 우선적으로 필요한지에 대한 조사부터 시작해서, 다른 회사는 어떻게 시스템을 설계하는지, 모델 관리나 코드 관리는 어떻게 하는지, 자동화된 배포 파이프라인은 어떻게 구성하는지 등등에 대한 스터디와 시스템 설계를 진행했다. 팀장님께서 전적으로 일임해주셔서, 즐겁게 배우고 개발할 수 있는 시간이었다(지금도 진행중이다).

고민은 끝이 없다

대학원에서는 “어떻게 하면 엔지니어로 전향할 수 있을까? 바로 취업은 될까? 그냥 취업은 되긴 할까?”라는 고민이 많았다. 운이 좋게도 바로 취업이 되고, 좋은 기회로 MLOps 플랫폼을 구축해볼 수 있는 기회를 얻었지만, 여전히 고민은 많다. “이대로 괜찮은가? 지금의 경험이 좋은 경험이긴할까? MLOps 플랫폼이 앞으로도 필요할까?” 등등이다. 2016년 알파고의 등장 이후로, 2017년 발표된 Transformer 논문과 Transformer 구조의 계속된 발전속에서 등장한 2022년 ChatGPT까지, AI 기술은 아주 빠른 속도로 발전하고 있다. 이제 AI 분야의 연구는 LLM을 넘어서 sLLM(small-LLM)과, 멀티모달을 향해 달리고 있다. 뿐만 아니라 WebGPU 기술이라든가, 오픈소스인 LangChain 진영의 OpenGPTs 등등, 데이터 privacy 문제 없이 사용할 수 있는 “나만의 LLM”을 향해 빠르게 발전하는 것으로 보인다. 여기서 고민은 더욱 깊어진다. “3년 후에도 과연 데이터 사이언티스트들은 살아있을까? 소수의 뛰어난 연구자들을 제외하면, 대부분 나만의 LLM으로 대체되지 않을까? 그렇게 되면 그들의 생산성을 높이기 위해 필요했던 MLOps 플랫폼은 필요 없지 않을까? 그럼 내가 경험한 것은 어떤 의미가 있을까? 역시 근본인 백엔드로 시작했어야 했나?” 등등 고민은 꼬리에 꼬리를 물고, 결국에는 답을 찾지 못한채 자책하게 된다.

조금 다른 얘기인데, 또 다른 고민도 있다. 지구가 많이 아프다. 온난화라는 용어로는 표현이 되지 않아서, “지구가 끓고 있다”라고 표현하는 시대가 되었다. “2050년에 탄소중립을 실천해요!”라는 표어는 이제 나이브한 표현이 되었고, 2030년까지가 “지구의 골든타임”이라고 말하고 있다. 지구온난화로 인한 피해는 이제 남 얘기가 아니다. 작년에만 해도 강남에 비가 미친듯이 와서 침수 피해가 많았고(우리 회사 건물도 완전히 잠겨서 몇 달 동안이나 건물 복구가 되지 않았다), 올해 여름은 미친듯이 더웠는데, 올겨울에는 역대급 한파가 예정되어 있다. “10년 뒤 나는 살아있을 수 있는가? 살아있다고 해도, 내가 알고 있는 세상은 맞는가?”라는 고민은, 시간이 지날수록 점점 피부에 와닿고 있다.

생각의 방에서 나가자

이렇게 진로에 대한 고민과 지구 온난화에 대한 걱정은, 나를 생각의 방에 가뒀다. 힘을 내기가 어렵고, 지금 하는 것들에 어떤 의미가 있는지에 대한 회의와 허무감이 밀려온다. 그러던 중, 오늘 우연히 “서사의 위기(한병철 저서)”라는 책에 대한 내용을 알게 되었다. 저자는 “스토리”와 “서사”를 개념적으로 나눠서 설명한다. 스토리는 “그냥 이야기”이고, 서사는 “나만의 이야기”이다. 제목에서 볼 수 있듯이, 요즘은 “서사”가 없다는 것이 이 책에서 핵심적으로 말하는 내용일 것이라고 이해했다. 진짜로 읽은 것은 아니고 들은 내용이라 부정확한 이해일 수 있겠지만, 지금의 나에게는 꼭 필요한 생각이었다. 생각의 방에 갇힌 이유는, 모든 것이 허무하게 보이는 이유는, “서사”가 아닌 “스토리”를 위한 삶을 살고 있었기 때문이라는 생각이 들었다.

잠잠히 생각해보니, 나에게는 “서사”가 있었다. “소프트웨어 엔지니어로서, 지구 온난화 문제 해결에 기여하는 것”, 이것이 바로 나의 “서사”이다. 인공지능이 재밌었던 이유는, 그 기술로 인한 파괴력이 대단했기 때문이었다. 상상이 현실이 될 수 있는 기술이기 때문이었다. 그래서 인공지능 필드를 떠나고 싶지는 않았고, 내가 더 보람차게 일할 수 있는 “엔지니어”로서 인공지능 연구를 돕고, 그렇게 만들어진 기술을 세상에 연결하고 싶었다. 그리고, 내가 중요하다고 여기는 “지구 온난화”문제를 해결하고 싶었다. 한 순간에 생긴 서사는 아니지만, 나에겐 분명 서사가 있었다. 나의 서사 속으로 다시 들어가니, 자연스럽게 생각의 방에서 나오게 되었다. 사실 생각해보면, 죽음은 언제나 있다. 오늘 내가 죽을 수도 있다. 그럼에도 오늘 내가 하는 일이 의미가 있게 여겨지는 이유는, 그 삶의 결과가 아닌 과정 자체가 나에게 큰 의미가 있기 때문인 것이다. “서사” 속에서 살아가기 때문인 것이다.

다시 즐겁게 배우자

다시 가벼운 마음이 되었다. 오늘 내게 주어진, “배울 수 있는 기회와 삶”에 감사할 수 있게 되었다. 지구 온난화로 인해 내가 죽을 수도 있고, 인공지능 기술의 발전으로 나의 일자리가 사라질 수도, 악용되어 살인 기계가 나올 수도 있다. 그렇지만, 속단할 수는 없다. 생각의 방에서 나오니, 동일한 고민과 걱정도 다르게 소화할 수 있음을 느낀다. 중요한 나의 서사를 다시 한 번 적어본다. “소프트웨어 엔지니어로서, 지구 온난화 문제 해결에 기여하는 것”. 이 방향을 위해서 나는 무엇을 해볼지 생각해본다. 사실 잘 모르겠다. 그것이 현재 내 위치이다. 인공지능 기술에 대한 이해도 부족하고, 데이터 엔지니어링, 모델 서빙, 기본적인 CS 지식들, 지구 온난화를 위한 기술에 대해서는 무엇이 있는지 등등 부족한 지식들이 많기에 모르는 것 같다. 지금의 내가 준비할 수 있는 것은 “좋은 소프트웨어 엔지니어”가 되는 것이다. 그 이후에는 지구 온난화 해결을 위한 좋은 동료들을 만나러 갈 것이다. 어디로 가야하는지는, 내가 준비되었을 때 그 다음 길이 보일 것이라 믿는다.

구체적인 To-Do List를 작성하며 글을 마친다.

  1. [소트프웨어 근본 지식 습득] 일주일에 한 개 이상 ByteByteGo에 나오는 개념들을 내 것으로 만들고 블로그에 올리자.
  2. [견문 넓히기] 인공지능 기술을 적극적으로 사용하는 기업에 가보자. 그러기 위해서는 이력서와 포트폴리오가 필요하다. 다음주 일요일까지 이력서 마무리 하자.