31 5월 2025

[사회과학] [박진영의 사회심리학] 외롭다고 느낄수록 수명 짧아진다

[사회과학] [박진영의 사회심리학] 외롭다고 느낄수록 수명 짧아진다

[박진영의 사회심리학] 외롭다고 느낄수록 수명 짧아진다

입력
게티이미지뱅크 제공

게티이미지뱅크 제공

마음과 몸이 하나라는 것을 가장 잘 보여주는 예라고 하면 아마 ‘외로움’일 것이다. 기존 건강상태, 교육수준, 소득, 성별, 나이, 우울증 여부 등과 상관 없이 외로운 사람들은 그렇지 않은 사람들에 비해 더 빨리 노화하고 각종 심혈관 질환, 고혈압, 면역 반응 이상, 기억력 및 인지능력 감퇴에도 더 취약하다는 연구 결과들이 있다.

외로운 사람들은 그렇지 않은 사람들에 비해 응급하지 않은 수술을 받았을 때에도 사망 확률이 더 높았다는 연구 결과도 있었다. 이렇게 외로움이 직접적으로 건강과 수명에 영향을 미칠 수 있음을 시사하는 연구 결과들이 다수 보고되고 있다. 따라서 의료 현장에서도 또 공공 보건 차원에서도 외로움의 악영향을 줄일 수 있는 방안들에 대한 논의가 활발하게 이어지고 있다.

최근 설신 유 콜롬비아대 어빙 메디컬 센터 소속 연구자 등의 연구에 의하면 외로움의 악영향은 ‘누적’ 되는 듯 보인다. 1996년부터 2004년까지 약 9000명의 사람들을 대상으로 외로움을 측정하고 이후 2019년도에 외로움과 사망률간의 상관관계가 있었는지 살펴본 결과 우선 십여 년 전에 단 한 번도 외롭다고 응답하지 않은 사람들에 비해 한 번 외로웠다고 응답한 사람들이 더 중, 장년, 노년층에 이르렀을 때 사망률이 높았던 것으로 나타났다.

또한 한 번 외로웠다고 응답한 사람보다 두 번 외로움을 보고했던 사람들이 더, 두 번 외로웠던 사람들보다 세 번, 그러니까 더 긴 시간에 걸쳐 외로웠던 사람들이 더 사망률이 높은 편이었다.

한가지 중요한 사실은 외로움은 ‘주관적’ 지표라는 점이다. 그러니까 겉으로 보이기에 친구가 별로 없고 사회적 활동을 잘 하지 않는다고 해서 외로운 것도 아니고 항상 수 많은 사람들에 둘러 쌓여 있는 소위 ‘인싸’라고 해서 외롭지 않은 것도 아니다.

달리 말하면 사람들마다 인간관계에서 원하는 것이 다르고 어떤 이유로 이게 충족되지 않으면 언제 어디서든 우리는 외로움을 느낄 수 있다.

예를 들어 나의 경우 친구들과 자주 보지 않아도 이따금씩 연락하고 또 마음이 잘 통한다고 여겨지는 친구 몇 명만 있으면 외로움을 느끼지 않지만 기본적으로 원하는 인간관계량이 많고 원하는 친밀도 또한 매우 높은 사람의 경우 사람을 아무리 많이 만나도 사회적 허기인 외로움이 충족되지 않을 수 있다.

이 외에도 인간은 어차피 타인과 100% 마음을 통할 수 없다거나 노화와 죽음에 이르는 과정에서 많은 사람들이 혼자가 된다는 존재론적인 이유로 고질적인 외로움을 느끼는 사람도 있을 수 있겠다.

이 경우 그냥 그게 사는 것이라고 받아들이기 때문에 삶의 다양한 시점에서 이따금씩 존재하는 좋은 인연들이 실은 전혀 당연하지 않고 고마운 기적이었음을 깨달으면 어느 정도 편해질 수 있겠다. 하지만 안타깝게도 모두가 그렇게 할 수 있는 것은 아니다.

이렇게 외로움은 마음이 결정하는 주관적인 것이어서 이 연구에서도 객관적 사회적 고립 지수(objective social isolation index), 예를 들어 같은 가구 내 구성원 수, 거주지 인근의 친한 친구 수, 거주지 인근의 친척 수, 종교적 또는 기타 자선 단체 자원봉사 빈도, 그리고 이웃과의 만남 빈도 등을 통제했음에도 불구하고 외로움은 여전히 미래 사망률을 예측했다.

외로움은 결국 마음에 달린 것이지만 그렇다고 여기에 사회적 요인이 전혀 없는 것은 아니다. 예를 들어 극심한 경쟁으로 인해 마음을 터놓고 이야기할 사람을 찾는 것 조차 힘겨운 사회와 비교적 그렇지 않은 사회가 있을 것이다.

여러가지 이유로 사람들의 등급을 나누고 다름을 틀림으로 치부하며 차별해서 인간의 가장 근본적인 욕구인 소속 욕구를 충족하는 데 어려움이 많은 사회와 비교적 그렇지 않은 사회가 있을 것이다. 외로움에 보다 취약한 사회가 있다는 얘기다.

한국 사회의 개개인의 행복 지수가 최하위에 속하는 것 또한 혹시 외로움에 취약한 사회인 게 한 몫 하는 것은 아닌지 생각해본다. 그런 주제에 또 함께 살기를 추구하기 보다 조금이라도 더 남들 위에 올라가서 차별을 ‘하는’ 쪽에 붙는 게 목표이고 속은 곪았어도 겉만 멀쩡히 꾸며서 ‘과시’하는 것이 사회 규범인 것 또한 상당히 큰 문제라는 생각이 든다.

우리 사회에서 외로움을 해소하기 위한 솔루션이 가능할까. 이제부터라도 논의해봐야 하지 않을까.

Yu, X., Cho, T. C., Westrick, A. C., Chen, C., Langa, K. M., & Kobayashi, L. C. (2023). Association of cumulative loneliness with all-cause mortality among middle-aged and older adults in the United States, 1996 to 2019. Proceedings of the National Academy of Sciences, 120(51), e2306819120.

※필자소개
박진영. 《나, 지금 이대로 괜찮은 사람》, 《나를 사랑하지 않는 나에게》를 썼다. 삶에 도움이 되는 심리학 연구를 알기 쉽고 공감 가도록 풀어낸 책을 통해 독자와 꾸준히 소통하고 있다. 온라인에서 ‘지뇽뇽’이라는 필명으로 활동하고 있다. 현재 미국 듀크대에서 사회심리학 박사 과정을 밟고 있다.

Loading

29 5월 2025

[인공지능 기술] [알아봅시다] 개발자의 chatGPT 활용법

[인공지능 기술] [알아봅시다] 개발자의 chatGPT 활용법

25931365-b065-467e-bd43-44127efdf182.png

서론

현대 소프트웨어 개발 환경에서 AI 비서로 자리 잡은 ChatGPT는 단순한 문답을 넘어 다양한 개발 단계에서 생산성을 크게 향상시켜 줍니다. 이 포스트에서는 코드 작성부터 테스트, 문서화, CI/CD 파이프라인 통합까지 개발자가 ChatGPT를 활용할 수 있는 대표적인 방법들을 살펴봅니다.


1. 코드 스캐폴딩(Scaffolding) 및 초기 구조 생성

  • 프로젝트 템플릿 생성

    • “새로운 Django 프로젝트 기본 설정 코드를 생성해줘”

  • CRUD 엔드포인트 초안

    • “Express.js로 users CRUD API 라우터 코드를 짜줘”

  • 디렉터리 구조 제안

    • “React + TypeScript 프로젝트 구조를 어떻게 잡는 게 좋을까?”

 
javascript
// 예시: Express.js CRUD 스캐폴딩 const express = require('express'); const router = express.Router(); // GET all users router.get('/users', async (req, res) => { // ChatGPT가 제안한 기본 로직 }); // POST create user router.post('/users', async (req, res) => { // ... }); module.exports = router;

2. 디버깅 및 오류 해결

  • 에러 메시지 분석

    • “이 Node.js 에러 스택을 보고 원인과 해결 방법을 알려줘”

  • 코드 리뷰를 통한 버그 찾기

    • “다음 함수에서 잠재적인 null 참조 버그가 있을까?”

  • 리팩터링 제안

    • “이 파이썬 함수의 가독성을 높이도록 리팩터링해줘”


3. 코드 문서화 및 주석 작성

  • 함수/클래스 설명 자동 생성

    • “이 함수의 역할을 한 문장으로 요약해줘”

  • README.md 작성 보조

    • “이 프로젝트의 README 템플릿을 작성해줘”

  • 주석 일관성 유지

    • “이 자바스크립트 코드에 JSDoc 스타일 주석을 추가해줘”

 
markdown
/** * @function addTwoNumbers * @param {number} a - 첫 번째 숫자 * @param {number} b - 두 번째 숫자 * @returns {number} 두 수의 합 */ function addTwoNumbers(a, b) { return a + b; }

4. 테스트 케이스 및 자동화 스크립트 생성

  • 유닛 테스트 템플릿

    • “Jest를 이용한 add 함수 테스트 코드를 작성해줘”

  • 통합 테스트 시나리오

    • “API 엔드포인트 /login에 대한 통합 테스트 계획을 제안해줘”

  • 테스트 커버리지 개선 아이디어

    • “이 모듈의 경로 커버리지를 높이려면 어떤 테스트가 필요할까?”


5. 코드 리뷰 및 최적화 제안

  • 성능 병목 분석

    • “이 SQL 쿼리가 느린 원인과 인덱스 최적화 방안을 알려줘”

  • 비효율적 로직 리팩터링

    • “이 루프를 더 효율적인 함수형 스타일로 바꿔줄래?”

  • 보안 취약점 점검

    • “이 PHP 코드에서 SQL 인젝션 취약점이 있나?”


6. 새로운 기술 학습 및 예제 생성

  • 라이브러리 사용 예제

    • “Pandas에서 groupby와 pivot 테이블을 사용하는 예제를 보여줘”

  • 비교 분석

    • “Django와 Flask 중 어느 것을 선택해야 할까?”

  • 공식 문서 요약

    • “React 공식 문서에서 useEffect 훅 사용법을 요약해줘”


7. CI/CD 파이프라인 및 DevOps 자동화

  • GitHub Actions 워크플로우 생성

    • “Node.js 프로젝트용 GitHub Actions 워크플로우 YAML을 생성해줘”

  • Dockerfile 최적화

    • “이 Dockerfile을 멀티스테이지 빌드로 최적화해줘”

  • 배포 스크립트 작성

    • “AWS EC2에 배포하는 Bash 스크립트를 작성해줘”


8. 커밋 메시지 작성 및 이슈 템플릿

  • 의미 있는 커밋 메시지

    • “다음 변경 내용을 설명하는 커밋 메시지를 작성해줘: 사용자 로그인 로직 수정, JWT 토큰 방식으로 변경”

  • 이슈 템플릿 자동 생성

    • “버그 리포트용 GitHub 이슈 템플릿을 만들어줘”


결론

ChatGPT는 단순히 대화형 AI를 넘어, 개발 생산성을 높여주는 올인원 도구로 발전했습니다.
코드 스캐폴딩에서부터 디버깅, 테스트, 문서화, DevOps 자동화에 이르기까지 일련의 개발 과정을 ChatGPT와 협업함으로써 더 빠르고, 더 안정적이며, 더 효율적인 소프트웨어를 구현할 수 있습니다.
오늘 바로 ChatGPT를 개발 워크플로우에 통합해 보세요!


이 글이 도움이 되었다면, 댓글과 공유 부탁드립니다!

Loading

28 5월 2025

[인공지능 기술] Gradio 설치 및 실행 방법

[인공지능 기술] Gradio 설치 및 실행 방법

1. Gradio란 무엇인가?


Gradio는 Python으로 개발된 오픈 소스 패키지이다.
Gradio를 사용하면 몇 줄의 코드로 ML 모델, API 또는 임의의 Python 함수에 대해 사용하기 쉽고 커스터마이징할 수 있는 UI 구성 요소를 빠르게 생성할 수 있다.
Gradio GUI를 Jupyter 노트북에 직접 통합하거나 링크로 다른 사람과 공유할 수도 있다.

00 image.png 

2. Gradio 설치


Gradio를 설치하는 방법은 다음과 같다.
터미널에서 다음 명령을 실행하거나 Google Colab에서 실행할 수 있다.

pip install gradio

 Jupyter Notebook을 사용하는 경우에는 다음과 같이 입력한다.

!pip install gradio

 

3. Gradio 애플리케이션을 실행하는 방법


Gradio 애플리케이션을 실행하는 방법을 알아보자.
다음은 사용자의 이름을 입력받아 인사 메시지를 생성하는 간단한 Python 애플리케이션이다.

#!pip install gradio
import gradio as gr

def user_greeting(name):
    return "안녕하세요! " + name + "님, 첫 번째 Gradio 애플리케이션에 오신 것을 환영합니다!????"

app = gr.Interface(fn=user_greeting, inputs="text", outputs="text")
app.launch()

???? 에러 메시지 발생 (ModuleNotFoundError: No module named 'tqdm')

  • 내가 코드를 실행 했을 때는 위와 같은 에러 메시지가 발생 했는데, 에러 메시지에 따르면 gradio 모듈을 찾을 수 없고, gradio 모듈의 일부 파일에서 tqdm 모듈을 찾을 수 없다고 한다.

???? 해결 방법

  • gradio와 tqdm 모듈의 호환성 문제가 있을 수 있기 때문에 gradio와 tqdm 모듈을 최신 버전으로 업데이트 하였다.
    pip install -U gradio
    pip install -U tqdm
    • Gradio 애플리케이션이 실행되었다.

 

명령 프롬프트에서 Gradio 응용 프로그램 실행

Gradio 애플리케이션을 명령 프롬프트에서 실행할 수 있다.
명령 프롬프트에서 다음과 같이 입력한다.

python app.py


애플리케이션을 실행하면 다음의 URL을 열어서 결과를 확인할 수 있다: http://127.0.0.1:7862

  • 이 URL은 각자의 환경에 따라 다를 수 있다.

 

Jupyter Notebook에서 Gradio 애플리케이션 실행

Jupyter Notebook에서 코드를 실행할 수도 있다.
인터페이스를 생성한 후 app.launch()를 사용하여 애플리케이션을 실행할 수 있다.

app = gr.Interface(fn=user_greeting, inputs="text", outputs="text")
app.launch()
  • 이렇게 하면 새로운 위젯이 생성된다.

[출처] Gradio 설치 및 실행 방법

Loading

25 5월 2025

[一日30分 인생승리의 학습법] [Git] 다중 리모트를 사용하여 여러 Git 연동하기(Gitea, GitHub)

post-thumbnail


Git 다중 리모트를 사용하여 Gitea와 GitHub 연동하기

 

한 프로젝트에서 Gitea와 GitHub를 동시에 관리하려면, Git의 다중 리모트(remote) 기능을 사용하면 된다. 다중 리모트를 설정하면, 동일한 로컬 저장소에서 두 개 이상의 원격 저장소로 데이터를 주고받을 수 있게 된다.

여기서 진행할 순서는 다음과 같다:

  1. Gitea와 GitHub 레포지토리 리모트 설정.
  2. 각 리모트를 구분하여 push/pull하는 방법.
  3. 다중 리모트 관리 시 주의사항.

1. 사전 준비: 프로젝트 리포지토리 설정

  • 현재 Gitea의 레포지토리 (wbapp)는 master 브랜치로 연결되어 있다.
    • Gitea의 URL 예시: http://gitea-ip/your-username/app.git
  • GitHub에도 동일한 프로젝트(wbapp)를 만들고, 이를 main 브랜치로 관리하려고 한다.
    • GitHub의 URL 예시: https://github.com/nyaongdev/app.git

먼저 GitHub에 새로운 레포지토리를 생성하고, 여기에 다중 리모트를 설정하도록 하자.


2. 다중 리모트 설정하기

2.1 기존 리모트 상태 확인

로컬 저장소에서 리모트 설정을 확인하려면 터미널이나 명령 프롬프트에서 다음 명령어를 사용한다.


git remote -v

이 명령어를 입력하면 현재 연결된 리모트 목록이 나타난다. 예를 들어:


origin  http://gitea-ip/your-username/app.git (fetch)
origin  http://gitea-ip/your-username/app.git (push)

현재 origin이라는 이름으로 Gitea 리모트가 연결된 상태다.

2.2 GitHub 리모트 추가하기

이제 GitHub 리모트를 추가해야 한다. GitHub 리모트를 추가할 때는 리모트의 이름을 다르게 설정하여, 두 개의 리모트를 구분할 수 있도록 해야 한다. 여기서는 github-nyaong이라는 이름으로 GitHub 리모트를 추가할 것이다.


git remote add github-nyaong https://github.com/nyaongdev/app.git

이제 git remote -v 명령어를 다시 실행하면 다음과 같은 출력이 나올 것이다.


origin         http://gitea-ip/your-username/app.git (fetch)
origin         http://gitea-ip/your-username/app.git (push)
github-nyaong  https://github.com/nyaongdev/app.git (fetch)
github-nyaong  https://github.com/nyaongdev/app.git (push)

이제 origin은 Gitea, github-nyaong은 GitHub를 가리키고 있다.


3. 리모트를 구분하여 Push/Pull 사용하기

이제 각각의 리모트로 push와 pull 작업을 할 수 있는 방법을 살펴보자.

3.1 Gitea와 GitHub에 Push

  • *Gitea (origin)**에 push:
    
    git push origin master
    
  • *GitHub (github-nyaong)**에 push:
    
    git push github-nyaong main

각 리모트를 지정해 브랜치를 푸시(push)할 수 있다. 여기서는 Gitea에는 master 브랜치로, GitHub에는 main 브랜치로 푸시하는 방식이다.

3.2 각각의 리모트에서 Pull

  • *Gitea (origin)**에서 pull:
    
    git pull origin master
  • *GitHub (github-nyaong)**에서 pull:
    
    git pull github-nyaong main

이를 통해 각각의 원격 저장소에서 변경 사항을 로컬 저장소로 가져올 수 있다.

3.3 두 리모트에 동시에 Push하기

Gitea와 GitHub 두 리모트에 동시에 변경 사항을 push하고 싶다면, 두 리모트를 한 번에 지정하여 푸시할 수도 있다.


git push origin master
git push github-nyaong main

이렇게 명령어를 두 번 실행하여 두 곳에 동시에 변경 사항을 적용할 수 있다. 더 자동화하고 싶다면, Git 훅(hook)이나 스크립트를 작성해 한 번의 명령어로 여러 리모트로 푸시하도록 만들 수 있다.


4. 다중 리모트 사용 시 주의사항

4.1 브랜치 관리

  • Gitea에서는 master 브랜치를 사용하고, GitHub에서는 main 브랜치를 사용하는 상황이므로, 브랜치 간의 동기화가 중요하다. 이를 위해 로컬에서 적절히 checkout하고 변경 사항을 푸시해야 한다.
  • 예를 들어, master 브랜치에서 작업한 후 main 브랜치에도 동일하게 반영하려면, 브랜치 병합(merge)을 하거나 리베이스(rebase)를 사용해야 할 수 있다.

# master 브랜치에서 작업 후 main 브랜치로 병합
git checkout main
git merge master
git push github-nyaong main

이와 같이, 각 브랜치가 서로 다르게 유지되지 않도록 주기적으로 병합하여 두 리모트의 코드가 일관되도록 관리하는 것이 좋다.

4.2 충돌 관리

  • 같은 프로젝트를 여러 리모트에 동기화하다 보면, 가끔 충돌(conflict)이 발생할 수 있다. 이 경우, Git은 충돌을 해결해야 푸시할 수 있도록 하며, 이를 해결한 후에 다시 푸시하면 된다.
  • 만약 Gitea와 GitHub 양쪽에서 모두 병렬적으로 작업하고 있다면, 주기적으로 pull을 통해 양쪽의 변경 사항을 확인하고 반영해야 한다.

4.3 협업 시 고려사항

  • 만약 팀원들과 Gitea를 통해 협업하고, 개인적으로 GitHub에도 저장하고 싶다면, Gitea에서 작업한 후 GitHub에 백업하는 형식으로 생각하면 된다.
  • 모든 작업이 Gitea를 기준으로 이루어지고, 완료된 작업을 GitHub에 푸시하는 순서를 정하면 충돌을 줄이고 관리하기 쉽다.

5. 마무리

이제 하나의 프로젝트에서 Gitea와 GitHub 두 리모트를 동시에 관리할 수 있게 되었다. 다중 리모트를 사용하면 하나의 로컬 저장소에서 여러 원격 저장소로 쉽게 데이터를 동기화할 수 있어, 사내의 Git 서버와 외부의 GitHub를 동시에 사용하는 것이 가능해진다.

  • Gitea는 사내 협업을 위한 주요 원격 저장소로 사용하는 형태
  • GitHub는 개인 백업이나 외부 프로젝트 관리용으로 사용하는 형태

[출처] https://velog.io/@nyaong/Git-%EB%8B%A4%EC%A4%91-%EB%A6%AC%EB%AA%A8%ED%8A%B8%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EC%97%AC%EB%9F%AC-Git-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0Gitea-GitHub

Loading

25 5월 2025

[chatgpt] [ChatGPT] Function calling

 

 

Function Calling이란?

Chatgpt Chat Completions API를 사용하면, 질문을 하고 답변을 얻을 수 있다.
Function Calling을 사용하면, 질문에 적합한 애플리케이션 함수와 매개변수를 추천받을 수 있다. 

즉, 애플리케이션에서 어떤 함수를 호출하는게 좋을지 gpt에게 물어볼 수 있는 기능이라고 볼 수 있다.

예제코드

open ai에서 가져온 파이썬 예제 코드이다. 한줄한줄 읽어보면, 어떤 방식으로 사용하는 건지 쉽게 감이 온다. 

import openai
import json


# 항상 같은 날씨를 리턴하는 예시용 더미 함수이다. 
# 실제 개발환경에서는 상황에 맞는 코드를 구현해야한다.
def get_current_weather(location, unit="fahrenheit"):
    """Get the current weather in a given location"""
    weather_info = {
        "location": location,
        "temperature": "72",
        "unit": unit,
        "forecast": ["sunny", "windy"],
    }
    return json.dumps(weather_info)


def run_conversation():
    # Step 1: chatgpt에게 질문과 이용할 수 있는 함수 목록을 전달한다. 
    messages = [{"role": "사용자", "content": "서울 날씨는 어때? "}]
    functions = [
        {
            "name": "get_current_weather",
            "description": "위치를 전달하면, 현재 날씨를 알려준다",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "구군시  전달한다. ex. 서울특별시",
                    },
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        }
    ]
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0613",
        messages=messages,
        functions=functions, # 이 곳에서 함수 정보를 전달한다.
        function_call="auto",  
    )
    response_message = response["choices"][0]["message"]

    # Step 2: GPT에서 함수 호출을 하라고 했는지 확인하기 
    if response_message.get("function_call"):
        # Step 3: GPT에서 호출하라고 한 함수를 실제로 호출하기 
        available_functions = {
            "get_current_weather": get_current_weather,
        }  # 이 예제에서는 호출할 수 있는 함수를 1개만 두었지만, 실제로는 여러개를 추가할 수 있다. 
        function_name = response_message["function_call"]["name"] // GPT가 제안한 함수 이름 확인하기 
        fuction_to_call = available_functions[function_name] // GPT가 제안한 함수 할당하기  
        function_args = json.loads(response_message["function_call"]["arguments"])
        function_response = fuction_to_call(
            location=function_args.get("location"),
            unit=function_args.get("unit"),
        ) # GPT가 제안한 함수를 GPT에서 찾은 매개변수로 전달하기 

        # Step 4: 함수 호출로 얻은 결과를 gpt에게 다시 보내주기 send the info on the function call and function response to GPT
        messages.append(response_message)  # API으로 호출받은 값을 확장하기 
        messages.append(
            {
                "role": "function",
                "name": function_name,
                "content": function_response,
            }
        ) 
        second_response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo-0613",
            messages=messages,
        )  # gpt에게 응답 결과 다시 전달하기 
        return second_response


print(run_conversation())

참고

https://platform.openai.com/docs/guides/gpt/function-calling
https://github.com/joshlong/chatgpt-spring-boot-starter
https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb

출처: https://americanopeople.tistory.com/427 [복세편살:티스토리]

Loading

24 5월 2025

[사회과학] [박진영의 사회심리학] ‘내가 싫은 것’ 아는 것도 중요하다

[사회과학] [박진영의 사회심리학] ‘내가 싫은 것’ 아는 것도 중요하다

[박진영의 사회심리학] ‘내가 싫은 것’ 아는 것도 중요하다

입력
게티이미지뱅크 제공

게티이미지뱅크 제공

내가 어떤 사람인지 자신의 다양한 특성을 분명하고 일관적이게 정의할 수 있고 시간과 장소가 바뀌어도 자신이 어떤 사람이라는 느낌을 확실히 가지고 있는 상태를 심리학적 용어로 자기 개념 명확성(self-concept clarity)이 높다고 표현한다.

반대로 자기 개념 명확도가 낮은 사람들은 흔히 자신이 어떤 사람인지 잘 정의하지 못하고 자신의 다양한 모습에 대해 잘 이해하고 받아들이기보다 혼란스러워하는 모습을 보인다. 긍정적인 자기지각인 자존감이 때로는 좋고 때로는 나쁜 결과물들과 관련을 보이는데 어쩌면 자기 개념 명확성이 이를 설명할 수 있다고 보는 학자들이 있다.

예를 들어 자기 자신에 대해 대체로 긍정적으로 생각하고 있지만 자기 개념 명확성이 낮은 사람들의 경우 자존감이 외부의 영향에 의해 크게 좌우되는 반면 자신에 대해 긍정적으로 인식하는 정도는 그다지 높지 않지만 스스로를 잘 알고 있는 사람들의 경우 외부의 영향에 의해 자존감이 흔들리는 정도가 비교적 덜 했다는 연구들이 있다.

필자의 경우 역시 어렸을 때 자연스러운 실제 나의 모습을 잘 파악하고 받아들이기보다 외부에서 좋다고 하는 모습들을 최대한 따라하고 거기에서 오는 보상이나 긍정적인 반응들을 기반으로 자존감을 높이 쌓았던 적이 있다.

예를 들어 매우 내향적인 편이지만 사람들로부터 좋은 반응을 얻기 위해 열심히 외향적인 척을 하고 주변 사람들의 반응이 좋은 편이라면 거기에 기대어 기뻐하고, 반응이 좋지 않다면 위기감을 느끼는 위태로운 시간을 상당히 오래 보낸 것 같다.

이렇게 자기 개념 명확성이 낮으면 외부 자극에 쉽게 흔들리고 영향을 받는 모습을 보인다. 자기 개념 명확성이 낮은 사람들이 자극적인 광고에 더 쉽게 영향을 받고 자신을 과시하기 위한 소비를 한다는 연구 결과도 있었다. 어쩌면 자기 자신을 잘 모르는 사람들이 많은 사회일수록 명품 소비나 유행이 쉽게 번져나가는 것일지도 모르겠다.

최근 연구들에 의하면 자기 개념 명확성이 낮은 것이 ‘자기 통제’에도 부적 영향을 준다고 한다. 통린 장 북경대 심리학자 연구팀에 의하면 자기 개념 명확성이 낮은 사람들의 경우 ‘미래의 자신’을 현재 자신의 연장선으로 보기보다 자신과는 다른 새로운 사람, 마치 타인처럼 바라보는 경향이 높았다.

이런 특성이 자기 개념 명확성이 낮은 사람들이 원하는 목표를 이루기 위해 끈기있게 노력하지 못하는 현상을 일부 설명했다.

내가 어떤 사람인지 아는 것은 장기적으로 내가 원하는 것이나 나에게 바람직한 것이 무엇인지 파악하는 능력, ‘장기적인 비전’을 갖는 것과 관련이 있고 장기적인 비전을 갖지 못하면 끈기있게 노력하는 행동이 저하된다는 것이다.

뭐 하나에 정착하지 못하고 서로 다른 것들을 이것저것 손대기만 하며 오랜 시간 갈아타기만 하는 경우 어쩌면 자기통제력 자체가 낮기보다 자신이 어떤 사람인지 잘 모르는 것이 더 중요한 원인일지도 모르겠다.

물론 다양한 일을 하다 보면 자신이 좋아하는 것과 싫어하는 것을 알게 되고 그 과정에서 자기 개념을 좀 더 명확하게 알게 되기도 한다. 사실 대부분의 사람들이 삶에 걸쳐 다양한 도전과 실패를 통해 자신에 대해 알아간다. 이런 점에서 아무 것도 하지 않기보다는 뭐라도 하는 것이 훨씬 나을 수 있다.

자신이 좋아하는 것을 아는 것 못지 않게 ‘싫어하는 것’을 아는 것 또한 올바른 길을 찾아가는 데 있어 매우 중요하므로 기분 나쁜 경험이나 실패 역시 아무 것도 하지 않는 것 보다는 훨씬 낫다.

살아간다는 것에 대해 내가 좋아하는 것들과 싫어하는 것들에 대한 리스트를 만들어 나가는 과정이라고 한다면 그 어떤 경험도 무의미하지 않을 것이다.

Jiang, T., Wang, T., Poon, K. T., Gaer, W., & Wang, X. (2023). Low self-concept clarity inhibits self-control: The mediating effect of global self-continuity. Personality and Social Psychology Bulletin, 49(11), 1587-1600.

※필자소개
박진영. 《나, 지금 이대로 괜찮은 사람》, 《나를 사랑하지 않는 나에게》를 썼다. 삶에 도움이 되는 심리학 연구를 알기 쉽고 공감 가도록 풀어낸 책을 통해 독자와 꾸준히 소통하고 있다. 온라인에서 ‘지뇽뇽’이라는 필명으로 활동하고 있다. 현재 미국 듀크대에서 사회심리학 박사 과정을 밟고 있다.

Loading

18 5월 2025

[사회과학] [박진영의 사회심리학] 때론 ‘불확실성이’ 삶에 도움이 된다

[사회과학] [박진영의 사회심리학] 때론 ‘불확실성이’ 삶에 도움이 된다

[박진영의 사회심리학] 때론 ‘불확실성이’ 삶에 도움이 된다

입력
게티이미지뱅크 제공

게티이미지뱅크 제공

요즘은 간단한 것도 점점 더 잘 모르겠다는 생각이 든다. 예를 들어 ‘스트레스’라고 하면 무조건 나쁜 것 같지만 스트레스가 하나도 없는 환경인 경우 그만한 자극과 보상 또한 없는 환경이어서 금방 ‘지루함’을 느낄 가능성이 높다. 배움의 과정 또한 항상 익숙한 것에서 벗어나 새로움을 찾는 틀을 깨는 불편한 과정을 통해 일어난다.

물론 그렇다고 스트레스가 항상 좋아서 매일매일 24시간 스트레스를 받고 살아야 한다는 것은 아니다. 다만 우리가 쉽게 긍정적 또는 부정적 경험이라고 이름 붙이고 단정짓는 삶의 많은 경험들이 실제로도 그렇게 간단하게 완전히 좋거나 나쁜 경험인 경우는 많지 않다는 것이다. 그 사이의 어딘가 또는 전혀 다른 무엇인 경우가 의외로 많다.

일례로 ‘사랑’은 좋기만 한 경험인가. 사랑을 몰랐더라면 겪지 않았을지도 모르는 복잡한 감정과 외로움에 대한 노래들만 수천 곡은 되는 것 같다. 결혼도 아이를 갖는 것도 ‘좋은’ 일인가. 사람마다 삶의 시기마다 다른 답이 나오겠지만 삶의 경험이 아주 많은 사람들이라면 그 때 그 때 다르다거나 복잡하다는 답을 내놓을 것 같다.

제시카 알퀴스트 텍사스공대 심리학자에 의하면 ‘불확실성’ 또한 그렇다. 많은 이들이 불확실성을 줄이고 싶어하고 불확실성이 높은 상황을 곧 나쁜 상황이라고 생각하지만 꼭 그렇지만은 않다는 것이다.

예를 들어 불확실성은 주의를 집중시킨다. 사람들의 시선을 기록하는 아이트래킹(eye tracking) 실험들에 의하면 사람들은 같은 자극이라고 하더라도 확실하게 불쾌하거나 확실하게 아무렇지 않은 자극보다 불확실하게 불쾌한(예를 들어 언제 튀어나올지 모르는 무엇) 자극에 가장 많이 시선을 쏟는 경향을 보인다.

공포 영화를 예로 들어보면 무서운 자극이 항상 정해진 법칙에 의해 나타나는 경우 무서운 것을 떠나 일단 ‘재미가 없다’고 느낄 것 같다. 연구들에 의하면 기분이 좋은 것 또한 마찬가지다. 갑자기 확실하게 나타나는 것보다 불확실하게 나타나는 것(예를 들어 한번에 짠 나타나기보다 서서히 모습을 드러내는 기프트 카드)이 더 주의를 집중시키고 기분을 좋게 만들어 주는 것으로 나타났다.

아무래도 앞으로 하게 될 경험이 무엇인지 그 정체를 알 수 없을 때에는 긴장이 서서히 고조되다가 정체가 드러날 때 긴장감이 해소되는 클라이막스를 경험하게 되지만 처음부터 결말을 전부 알고 있다면 긴장감이나 기대감이 전혀 생기지 않고 궁금하지도 않을 것 같다.

그러고 보면 두근거리는 긴장감이나 과연 무엇일까 기대하고 설레어하는 것 정체를 알게 되었을 때의 기쁨 및 실망 모두 아직 알 수 없다고 하는 ‘불확실성’의 산물인 셈이다.

불확실성이 없다면 그로 인한 고통 또한 없겠지만 두근거림 설레임, 그만큼 조고된 기쁨과 실망 모두 없을지도 모르겠다. 불확실성이 없다면 인간으로서 겪는 감정의 풍부함과 깊이가 지금과는 많이 다를 것 같다.

물론 존재하는 불확실성을 앞에 두고도 불확실성을 느끼지 못하면 생존에도 큰 문제가 생긴다. 내 미래가 위태위태한데 나만 그걸 전혀 모르고 있다거나 일의 진행 방향에 다양한 가능성이 존재하는데 그것도 하나도 모르고 있다면 미리 준비하는 행동이나 다양한 선택지를 따져보는 행동이 불가능해질 것이다. 물론 불편하지만 불확실성은 꼭 느껴야 하는 불편함 중 하나다.

물론 불확실성이 불편한 정도에도 개인차가 있어서 불확실성을 무조건 안 좋게만 바라보는 사람들에 비해 불확실성에도 좋은 면이 있음을 아는 사람들이 더 적응적인 행동을 보인다는 연구들이 있었다.

예를 들어 불확실성을 보다 긍정적으로 바라보는 사람들은 확실하지만 가치가 낮은 보상을 선택하기보다 좀 더 불확실해도 가치가 높은 보상을 선택하는 경향을 보였다. 불확실성을 삶의 일부분으로 끌어안을 줄 아는 사람들은 가짜 뉴스나 만병통치약 같은 허황된 무엇에 빠지는 일 또한 적은 편이었다.

불론 그렇다고 불확실성이 항상 좋으며 불확실성이 높은 삶을 살아야 한다는 이야기는 아니다. 삶에서 늘 좋거나 나쁜 건 생각보다 별로 없고 불확실성 또한 그렇다는 이야기다. 어쩌면 이 또한 한쪽으로 치우치지 않고 기울어지지 않으며 지나침도 미치지 못함도 없는 ‘중용’의 아름다움에 대한 이야기일지도 모르겠다.

Alquist, J.L., & Baumeister, R.F. (2024). Learning to love uncertainty. Current Directions in Psychological Science, 33(6), 355-360. http://doi.org/10.1177/09637214241279539

※필자소개
박진영. 《나, 지금 이대로 괜찮은 사람》, 《나를 사랑하지 않는 나에게》를 썼다. 삶에 도움이 되는 심리학 연구를 알기 쉽고 공감 가도록 풀어낸 책을 통해 독자와 꾸준히 소통하고 있다. 온라인에서 ‘지뇽뇽’이라는 필명으로 활동하고 있다. 현재 미국 듀크대에서 사회심리학 박사 과정을 밟고 있다.

[출처] https://n.news.naver.com/article/584/0000032395?sid=110

Loading

5 5월 2025

[사회과학] [박진영의 사회심리학] 등산 vs 케이블카…정상 풍경 감흥 다를까

[사회과학] [박진영의 사회심리학] 등산 vs 케이블카…정상 풍경 감흥 다를까

[박진영의 사회심리학] 등산 vs 케이블카…정상 풍경 감흥 다를까

입력
연합뉴스 제공

연합뉴스 제공

처음에는 귀찮기만 했는데 막상 하고 나니 뿌듯하기도 하고 결과물에 애착이 가는 그런 경험을 다들 한 번쯤은 해보았을 것이다. 학교에서 과제 때문에 억지로 만들었지만 막상 만들고 나니 왠지 버리기 아깝고 소중해 보이는 미술 작품 같은 것들이 한 예다.

흔히 IKEA 효과라고 불리는 현상으로 같은 가구도 이미 조립 된 채로 온 것보다 내가 직접 노력을 들여 조립한 가구가 더 가치 있어 보이는 현상을 일컫는다.

하지만 때로는 예상했던 것보다 너무 많은 노력을 요하거나 노력 끝에 생각보다 만족스러운 결과물이 나오지 않았다면 아까운 돈과 시간, 노력을 낭비한 것 같아서 속상하기만 하다. 작업을 시작하기 전에 귀찮은 마음이 너무 커서 결과물이 어땠든 귀찮고 성가셨던 기억이 더 크게 남는 경우도 있다.

어떨 때 노력이 소모되었는지 여부가 큰 영향력을 미치는지 알기 위해 프제미스와프 마르코프스키 샌디에이고캘리포니아대 연구팀은 다음과 같은 실험을 했다.

어떤 과제를 하고 나서 정해진 액수 만큼의 보상을 돈으로 받거나 경제적으로 같은 가치를 갖는 머그컵으로 받을 수 있게 했다. 여기서 돈은 아무런 추가적 노력 없이 받을 수 있었지만 머그컵은 계단을 꽤 올라야지만 (추가적 노력 필요) 받을 수 있다고 알려주었다.

여기에 더해 어떤 보상을 받을지 선택하는 ‘타이밍’을 달리 해서 한 조건의 사람들은 ‘미래’를 생각하며 돈과 머그컵 중 무엇을 원하는지 선택하게 했고 다른 조건의 사람들에게는 이미 계단을 걸은 후 (노력이 이미 발생) ‘과거’를 생각하며 돈과 머그컵 중 선택하도록 했다.

그러니까 아직 계단을 오르지 않은 참가자들에게는 지금 그냥 돈을 받거나 아니면 계단을 오르고 나서 머그컵을 받을 수 있다고 말했고 이미 계단을 오른 조건의 참가자들에게는 이 머그컵을 받기 위해서는 계단을 올라야 하는데 참가자들은 이미 계단을 올랐으며 따라서 이 머그컵을 가지거나 또는 이를 돈으로 바꿀 수 있다고 말했다.

그러자 아직 노력이 발생하지 않은 조건의 사람들은 같은 보상이라면 가급적 노력 없이 얻을 수 있는 돈을 더 많이 선택한 반면 이미 노력이 발생한 조건의 사람들은 이들보다 더 높은 빈도로 머그컵을 선택하는 경향을 보였다(물론 이들 중 절반은 돈을 선택했다. 하지만 전자에서는 약 70% 가 돈을 선택).

노력이 어떤 선택을 더 가치있게 느끼게 해 주는 효과는 “이미 그 노력이 발생하고 나서 노력한 과거를 돌아 볼 때”에 한해 발생한다는 것이다.

물론 여기에도 개인차가 있어서 대체로 노력을 통해 얻는 보상을 긍정적으로 바라보는 사람들과 대체로 그렇지 않은 사람, 노력이 적당할 때에는 괜찮았지만 노력이 지나쳤을 때에는 보상을 덜 매력적으로 바라본 사람, 이와 반대로 노력이 지나쳤을 때 더 보상을 매력적으로 바라본 사람 등 다양한 행동 양상이 관찰되었다.

험난한 산을 힘들게 올라서 꼭대기에 섰을 때와 자동차나 케이블카 등을 타고 손쉽게 올랐을 때 보이는 풍경은 같지만 그 ‘의미’는 사람들마다 얼마든지 다를 수 있을 것 같다는 생각이 든다. 결과를 결과로만 보지 않고 그 ‘과정’에서도 의미를 찾는 사람과 그렇지 않은 사람의 개인차가 있을 것 같다.

물론 사람마다 중요하게 여기는 것이 다 다르다는 점도 고려해야 할 것 같다. 산을 좋아하는 사람에게는 등산이 큰 의미가 있겠지만 산을 별로 좋아하지 않는 사람에게는 등산이 그저 쓸모없는 일로 느껴질 수 있을 것 같다.

또한 대체로 힘겹게 노력해서 성공하는 것을 최고의 가치로 여기는 사람이 있는 반면 하루하루 소소하게 행복하고 평온하게 지내는 것을 최고로 여기는 사람이 있을 것 같다.

또 나의 경우 기초 체력이나 에너지 수준이 상당히 낮은 사람이어서 가급적이면 내가 좋아하는 것에 에너지를 쓰고자 하는 경향이 있다. 그래서 개인적으로 큰 가치를 두지 않는 일에 많은 시간과 노력을 쓰고 나면 되려 허무함을 느끼는 것 같다. 물론 소중한 이들과 만나는 시간 같이 내가 중요하게 여기는 것에는 노력을 아끼지 않는 편이다. 노력을 집중하는 편에 가까운 것 같다.

여러분은 어떤 편인지 주변 사람들과 함께 이야기해보면 즐거운 탐구 시간이 될 것 같다.

Marcowski, P., Białaszek, W., & Winkielman, P. (2025). Effort can have positive, negative, and non-monotonic impacts on outcome value in economic choice. Journal of Experimental Psychology: General. https://doi.org/10.1037/xge0001738

※필자소개
박진영. 《나, 지금 이대로 괜찮은 사람》, 《나를 사랑하지 않는 나에게》를 썼다. 삶에 도움이 되는 심리학 연구를 알기 쉽고 공감 가도록 풀어낸 책을 통해 독자와 꾸준히 소통하고 있다. 온라인에서 ‘지뇽뇽’이라는 필명으로 활동하고 있다. 현재 미국 듀크대에서 사회심리학 박사 과정을 밟고 있다.

Loading

27 4월 2025

[사회과학] [박진영의 사회심리학] 고통을 직면해야 더 나은 삶을 살 수 있다 

[사회과학] [박진영의 사회심리학] 고통을 직면해야 더 나은 삶을 살 수 있다 

[박진영의 사회심리학] 고통을 직면해야 더 나은 삶을 살 수 있다 

입력
 

01 0000032079_001_20250426080025670.jpg

 

게티이미지뱅크 제공

흔히 긍정적인 시각을 갖는 것이 좋다고 할 때 많이 하는 실수 중 하나가 어려움의 존재 자체를 인정하지 않거나 회피해버리는 것이다.

예를 들어 대부분의 사람들이 나이가 들면서 한 두 가지씩 지병을 갖게 되지만 나는 해당되지 않을 것이고 나만은 많은 사람들이 실패하는 문턱에서 실패하지 않을 것이고 삶에서 우리가 통제할 수 없는 부분들은 언제나 많지만 내 삶의 요소들은 통제할 수 있는 게 더 많을 것이고 대부분의 인생은 굴곡져있으나 내 인생만큼은 평탄할 것이라고 믿는 (또는 믿고 싶어 하는) 경우를 적지 않게 본다.

그렇다면 거꾸로 이제 곧 큰 병에 걸릴 것이고 엄청나게 실패할 것이며 내 삶의 아무 것도 통제할 수 없을 것이며 인생이 계속해서 바닥을 칠 것이라고 생각하라는 거냐는 반문을 듣기도 한다. (사실 필자의 경우는 한동안 이랬던 기간이 있어서 이것도 꽤 현실적인 예측일 수 있다는 생각을 했다)

중요한 것은 예측의 옳고 그름을 떠나 인생이라는 큰 숲을 볼 때 삶에는 행복하고 즐거운 시간들 못지 않게 그렇지 않은 시간들이 언제일지 모르지만 언젠가는 찾아올 수도 있음을 (물론 안 올 수도 있다) 큰 저항감 없이 받아들이는 것이다.

우선 저항한다고 해서 마음만 복잡해질 뿐 달라지는 것은 없고 대부분의 인간이 어느 정도의 괴로움을 안고 살아간다는 것을 인정할 줄 알아야 되려 고통 속에서도 담담하게 다시금 일어설 수 있는 힘을 얻을 수 있기 때문이다.

일례로 ‘구체적인 사건이나 결과’에 대해 갖는 낙관주의는 독이 될 수 있음을 보여준 연구들이 있었다. 어떤 일이 가급적 잘 되기를 바라고 이를 위해 최선을 다하겠다고 생각하는 것은 좋지만 ‘무조건 잘 될 거야’라고 생각하는 것은 노력을 증가시키지 않았고 따라서 성공률을 더 높이지도 않았다.

다만 잘 안 되었을 때 좌절감은 더 큰 편이었다. 자신이 하는 일이 잘 되는 것이 당연하다고 생각하는 사람들의 경우 좌절을 겪었을 때 신과 세상을 원망하는 모습을 보이기도 했다.

사실 특정 사건의 발생 여부에 대해 우리가 할 수 있는 일은 별로 없다. 실력과 노력이 둘 다 충분했어도 타이밍의 문제 같이 ‘운’에 의해 넘어지는 일이 부지기수다. 이보다는 우리가 좀 더 관여할 수 있는 삶의 ‘과정’과 자신의 ‘태도’, 일을 해석하는 나의 시각 등에 대해 긍정적인 생각을 갖는 것이 좋다.

예를 들어 어제의 내가 그럭저럭 잘 지내왔듯, 내일과 미래의 나도 여전히 넘어지고 다칠지언정 살아낼 거라고 결과가 어찌되었든 그 과정에서 많은 것들을 배울 것이고 그 경험들이 새로운 나를 만들어갈 가능성을 생각해 보는 것이다.

삶은 결국 ‘시간’이기에 언제 어디서 무엇을 하든 나의 시간들을 조금이라도 반짝이게 할 수 있다면 일의 결과는 우리가 생각하는 것보다는 (보통 실패의 무게보다 걱정의 무게가 좀 더 크기 때문에) 나에게 큰 영향을 주지 않는다.

우리 삶에서 가장 빛나는 순간들은 가장 어두운 순간들과 긴밀하게 연결되어 있다는 사실 또한 고통을 직면해야 하는 중요성을 말해준다. 삶을 대하는 성숙한 자세는 삶의 기쁨이 곧 가장 큰 고통이 되기도 한다는 역설을 이해하는 것이다.

예를 들어 세상에서 가장 행복한 사람일수록 그만큼 삶에서 기쁨을 주는 소중한 것들을 많이 가지고 있기 때문에 잃을 것이 많기 때문에 잃는 순간에는 누구보다도 큰 아픔을 겪게 될 수도 있다. 기쁨과 고통은 보통 맞닿아 있기 때문이다.

오랜 기간 많은 공을 들여 간절하게 바래온 일일수록 실패가 쓰라린 법이고 누군가를 사랑할수록 그 사람과의 헤어짐이 아픈 법이다. 소망할 줄 알고 사랑할 줄 아는 사람일수록 좌절의 쓰라림과 이별의 아픔을 안다. 만약 단 한 번도 아픔을 겪지 않은 사람이 있다면 아무것도 소중하게 여기지 않고 사랑하지 않은 사람일 것이다.

우리가 겪은 아픔들은 그만큼 내 삶에는 소중한 것들이 많으며 나는 치열하게 살아왔다는 반증이기도 하다. 이렇게 기쁨과 고통이 사실 하나에서 온다는 것을 알고 나면 삶이 쉽지 않은 이유가 자연스럽게 납득되기도 한다.

마지막으로 결국 누구나 다 늙고 병들고 죽고 만다는 명제, 삶의 유한함과 고통에 대해 직시해야 하는 또 다른 이유는 그래야 힘들어 하는 타인에게 측은지심을 가질 수 있기 때문이다. 모두 자신이 겪는 아픔이 가장 아픈 법이다.

타인의 아픔은 짐작만 할 뿐 직접 겪지 않기 때문이다. 그래서 손쉽게 서로의 아픔을 경쟁하려고 들고 내가 진짜 힘들었고 너의 인생은 편하기만 했다고 그래서 억울하다고 싸우려 든다. 이렇게 아무 것도 변하지 않은 채 모두의 괴로움이 좀 더 늘어나게 된다.

피해의식에 관한 연구들에 의하면 내가 세상에서 제일 힘들다고 생각하는 순간 또 다른 괴로움들을 안고 살아가고 있을 타인들이 미워지고 괜히 보상받고 싶다는 생각을 하게 된다. 여기에서 각종 ‘이기심’이 튀어나오게 된다. 나는 힘들게 살았으니까 지금부터는 좀 이기적으로 막 살아도 된다고 생각하는 모습을 보이게 된다.

이와 달리 ‘이제부터 함께 해결하자’는 방향으로 나아가려면 나를 포함한 모든 사람들이 자기만의 어려움을 안고 살아간다는 사실을 인정해야 한다. 여기서부터 어떤 것이 좀 더 해결 가능한지, 어떤 것이 사회적 단위의 노력을 요하는지, 서로 어떻게 도울 수 있는지 등의 좀 더 건설적인 대화가 가능해진다.

인간이 겪을 수 있는 고통들을 직면해야만 더 나은 삶을 살 수 있다는 것은 오랫동안 다양한 종교와 철학자들에 의해 전해져 왔다. 인간이 고통을 이겨내는 방식에 대한 심리학의 연구 또한 같은 이야기를 한다는 것이 당연한 것 같으면서도 신기하다는 생각이 든다.

삶이 던져주는 좋은 것들을 사랑하는 만큼 아픔 또한 받아들일 수 있다면 힘든 때에 마음이 지하로 추락하는 일은 어느 정도 피할 수 있을 것 같다.

※필자소개
박진영. 《나, 지금 이대로 괜찮은 사람》, 《나를 사랑하지 않는 나에게》를 썼다. 삶에 도움이 되는 심리학 연구를 알기 쉽고 공감 가도록 풀어낸 책을 통해 독자와 꾸준히 소통하고 있다. 온라인에서 ‘지뇽뇽’이라는 필명으로 활동하고 있다. 현재 미국 듀크대에서 사회심리학 박사 과정을 밟고 있다.

Loading

23 4월 2025

[인공지능 기술] 개발자가 맞닥뜨린 갈림길…‘바이브 코딩’을 배우거나, 은퇴하거나

[인공지능 기술] 개발자가 맞닥뜨린 갈림길…‘바이브 코딩’을 배우거나, 은퇴하거나

‘바이브 코딩’은 앞으로 개발자가 코드를 짜는 방식이 될 것이다. 지금 배우지 않으면 개발자로서 커리어는 끝난다.

01 3967678-0-70166200-1745395027-shutterstock_1724042191.pngCredit: Photoongraphy / Shutterstock

 

제목을 보고 분노하기를 바란다. 화내라. 책상을 쾅 내려치고 고개를 절레절레 흔들어라. 그리고 진지하게 받아들여라. 바이브 코딩(Vibe Coding)을 배워야 한다. 그렇지 않으면 소프트웨어 개발자 커리어는 끝난다.

바이브 코딩은 최신 세대의 코드 생성 툴, 즉 LLM(흔히 말하는 챗GPT)을 활용하는 방식을 귀엽게 부르는 말이다. 커서(Cursor), 코드라인(Codeline), 탭나인(Tabnine) 같은 수많은 툴이 있는데, 솔직히 말해 전부 별로다. 이제 여기에 이 분야의 원조 격인 깃허브 코파일럿(GitHub Copilot)까지 본격적으로 가세하고 있다. 대부분은 비주얼 스튜디오 코드(Visual Studio Code)의 파생 버전이거나 플러그인 형태다.

게임 개발 경험이 전혀 없는 사람이 GPT로 게임 하나를 뚝딱 만들어서 대통령이 트위터에 올리고, 그걸로 백만장자가 되는 일이 가능하다는 말은 아니다. (사실 그보다 더 황당한 일이 실제로 벌어지기는 했다.) 생성형 AI 코딩 툴이 훌륭하다는 얘기를 하려는 것도 아니다. 오히려 더 엉망이고, 보안 취약점이 더 많은 코드를 낼 가능성이 크다. 여기서 말하려는 건 단 하나다. 이런 툴을 배우지 않으면, 곧 업계에서 은퇴할 준비를 해야 할 거라는 점이다.

어디서 들어본 이야기

뻔한 이야기다. 이런 일은 예전에도 있었다. 커리어 초장기에 필자는 한 개발자를 만났다. 편의상 톰이라고 부른다. 톰은 전형적인 구세대 개발자였다. 키보드를 눈으로 보며 타자 치는 식의 ‘독수리 타법’으로 프로그래밍을 하던 사람이었다. 톰은 비주얼 베이직(Visual Basic)으로 보고서 하나 만드는 데 6개월이 걸렸다. 예전에는 어떤 언어를 썼는지는 모르겠지만, VB는 책을 통해 독학했다고 했다. 톰이 휴가를 간 동안, 원래는 둘이 함께하기로 했던 보고서를 10일 정도 만에 끝냈다. 일부러 톰이 할 부분은 남겨뒀는데, 그때부터 톰은 나를 싫어했다.

어떻게 그렇게 빨리 해냈느냐고? IDE를 활용했고 인터넷 검색을 했다(이때는 ‘구글링하다’라는 말이 없던 시기였다). 우리가 자바로 전환했을 때 필자는 인터넷에서 자바를 일주일 만에 익혔고 동시에 J빌더(JBuilder) 사용법도 배웠다. 반면 톰은 브루스 에켈의 『씽킹 인 자바(Thinking in Java)』 책을 사서 여전히 독수리 타법으로 쿵쾅대며 타이핑하고 마치 성경이라도 되는 듯 그 책에 의존했다. 톰은 새로운 방식으로 배우고자 하지 않았다. 세상이 바뀌는 걸 비난하면서 낡은 방식에 머무르고 싶어 했을 뿐이었다.

현재 링크드인에는 두 부류의 사람이 있다. 1년 전까지만 해도 웹3를 외치던 사람이 지금은 바이브 코딩에 대해 과장된 주장을 늘어놓는다. 그리고 또 한 부류는 ‘톰들’이다. 보안이 어쩌니, 코딩은 예술이니 하면서 온갖 불평을 늘어놓는 사람들이다. 만약 당신이 톰이라면, 이제 퇴직 알람을 맞춰야 할 때다. 새로운 방식으로 일하는 법을 배우는 것은 개발자라는 직업의 일부다.

비즈니스 소프트웨어를 만드는 개발자는 예술가도 아니고 코드 시인도 아니다. “소프트웨어 장인 정신” 같은 건 아무도 신경 쓰지 않는다. 상사의 말이 맞다. 새로운 방식을 배우고 더 빠르게 코딩해야 한다. 그게 아니면, 키보드 좀 잘 두드릴 줄 알고 구글 검색 하나 잘하는 20대를 만난 뒤 결국 은퇴를 택했던 톰이 된다. 그게 전부다. 바이브 코딩을 하든가, 은퇴하든가.

LLM이 정말 그렇게 대단하냐고? 그렇다. 완전한 애플리케이션을 생성할 수 있냐고? 그렇다. 결과물이 형편없을 거냐고? 그건 사용자의 실력에 달렸다. LLM은 만병통치약이 아니다. “코딩 없이도 할 수 있다”라는 새로운 세대의 구호는 사실 이전 세대의 “코딩 없이도 할 수 있다”라는 말과 전혀 다르지 않다. 단순한 것만 하려면 정말 코딩 없이도 되기는 한다. 하지만 버전 2.0이 필요하거나 복잡한 뭔가를 만들려면 결국 코딩이 필요하다. 예전과 똑같다. 달라진 건 단 하나, 코딩 툴의 속도와 품질이 더 좋아졌다는 점뿐이다.

 

시간이 필요하다

바이브 코딩 툴을 처음 써서 만든 애플리케이션은 형편없을 것이다. 툴이 무척 답답할 것이고 스스로 잘 활용하지 못한다고 느낄 것이다. 하지만 그건 도구 탓이 아니라 사용자 탓이다. 이런 툴은 아직 성숙도나 안정성 면에서 J빌더, (아마 이 정도까진 아니겠지만) 비주얼 베이직 4.2, 자바스크립트 1.0 수준이다. 사용하다 보면 이상한 동작을 해서 짜증이 나고 당장이라도 때려치우고 싶어질 수도 있다. 하지만 점점 적응하고 이런 툴과 함께 일하는 방법을 익히면 점점 속도가 붙기 시작한다.

코딩을 조금이라도 할 줄 아는 사람이라면 이런 툴은 처음 구조를 잡는 단계 이후부터는 오히려 속도를 늦출 수 있다. 툴이 내리는 이상한 결정에 고개를 절레절레 젓게 되겠지만, 결국에는 이 툴을 원하는 대로 사용하는 방법을 배우게 된다. 지금까지 새로운 개발 툴이나 기술을 배울 때 항상 그랬던 것처럼 말이다.

일단 요령이 생기면 새로운 역량을 얻게 된다. 필자 역시 코딩은 할 줄 알지만, 자바스크립트를 제대로 배워야겠다고 생각한 적은 별로 없었다. 그런데도 최근에 제법 복잡하고 방대한 자바스크립트 애플리케이션을 3주도 안 돼서 완성했다. 물론 생성형 AI 없이도 언젠가는 다 했을 일이다. 하지만 필요한 API를 일일이 검색하고 확장 포인트를 익히는 데는 시간이 꽤 걸렸을 것이다. 심지어 지금보다 훨씬 괜찮았던 시절의 구글링을 한다 해도 말이다. 필자가 바이브 코딩으로 완성한 결과물은 예전 같으면 석 달은 걸렸을 작업이었다. AI 덕분에 생산성이 10배 증가한 건 아니지만, 평소보다 작업 속도가 5배는 빨라졌다.

다가올 바이브 코딩 시대, 살아남고 싶다면 지금부터 준비해야 한다. 다음은 실전에 바로 쓸 수 있는 몇 가지 팁이다.

  • 우선 커서, 코드라인 같은 툴의 무료 버전부터 시작하라. 뭐든 상관없다. 그리고 곧바로 최소 40달러는 지불하라. 코드가 그려지는 걸 멍하니 보고만 있어선 실력이 늘지 않는다.
  • “시간만 있었으면 만들었을” 프로젝트를 골라라. 예를 들어, 줌 녹화 저장 문제를 스스로 해결했던 어떤 사람처럼 말이다.
  • 깃(Git)을 자주 사용하라. AI 코딩 툴은 종종 어이없는 짓을 종종 저지른다. 복구하려면 버전 관리에 익숙해야 한다.
  • 본격적으로 코딩을 시작하기 전에 LLM과 설계 대화를 나눠라. 결과를 마크다운 형식으로 받아두면 좋다. 대부분의 바이브 코딩 IDE는 이 마크다운을 지침 설정에 넣을 수 있다. 모델에게 같은 설명을 반복하지 않아도 된다. 혹시 까먹으면 다시 넣어주면 된다.
  • 매 단계마다 결과를 검토하고 모델이 엉뚱한 짓을 하면 과감히 되돌려라.
  • 답답해도 버텨라. 써먹을 줄 알게 되면 이런 툴은 무기가 된다.
  • 지금 시점에서는 클로드 3.7 소넷(Claude 3.7 Sonnet)이나 제미나이 2.5 프로(Gemini 2.5 Pro) 혹은 실험 버전(Gemini 2.5 Experimental)이 가장 쓸 만하다.

바이브 코딩은 곧 현실이 된다. 개발자는 앞으로 이렇게 코딩할 것이다. 지금 배우기 시작하라. 아니면 은퇴 준비를 하라.
dl-itworldkorea@foundryco.com

[출처] https://www.itworld.co.kr/article/3967678/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%A7%9E%EB%8B%A5%EB%9C%A8%EB%A6%B0-%EA%B0%88%EB%A6%BC%EA%B8%B8%EB%B0%94%EC%9D%B4%EB%B8%8C-%EC%BD%94%EB%94%A9%EC%9D%84-%EB%B0%B0.html

Loading