사회복지부터 백엔드 개발까지
✨ 많은 이들이 통과하는 “대입”의 문. 근데… 어느 문으로 들어가지?
우리나라 고등학생의 70% 이상은 대학에 진학한다. 대부분의 학부모와 학생들은 “어느 대학교에 갈 수 있을까”를 가장 주요하게 신경쓴다. 우리나라 대학교는 서열이 있고, 그들은 이 서열에 민감하다.
나도 대학 진학을 희망하는 70%의 고등학생 중 하나였다. 그러나 나의 관심은 달랐다.
어느 학과로 진학하지?
고등학교 학년이 하나씩 올라갈수록 진학할 수 있는 대학이 어디인지는 비교적 명확해진다. 성적과 생활기록부로 겨냥할 수 있는 대학을 가늠할 수 있기 때문이다. 따라서 대학교 서열 표와 같은 자료를 뒤적이던 나의 친구들과는 달리, ‘어느 대학에 갈 수 있는지’는 나의 주된 관심사가 아니었다.
나에게 중대한 문제는 ‘어느 학과로 진학해야 하는가’였다. 이건 성적과 생활기록부로 파악할 수 없는 문제였다.
- 대학에서 가르치는 분야는 정규 교육 과정(국/수/사/과/영)과 다르게 현실과 맞닿아있다. 본인의 전공 및 연관 분야의 직업을 택하는 사람도 많다.
- 고등 교육기관이니만큼 배움에도 깊이가 있을 것이라 생각했다. 전문 분야를 깊이 익힐 수 있다는 건 곧 역량 상의 차별성이다.
- 어느 분야의 고등 교육 과정을 이수할 것인가는 나의 정체성과도 맞닿아 있다. 내가 관심도, 소질도 없는 현대 무용 같은 학과에 진학할 수는 없는 노릇이다.
🚩 내가 내린 판단은 다음과 같다.
- 나는 사람 그 자체에 관심이 많다. 국어 과목의 비문학 문제에 심리학자들의 주요 이론이 나오면 지문을 읽지 않고 문제의 답을 다 맞출 정도였다.
- 사람을 돕는 데에도 관심이 많다. 고등학교 친구들이 고민을 들어줘서 고맙다고, 친구들 간 갈등을 중재해줘서 고맙다고 준 쪽지가 아직도 서랍 한 켠에 보관되어 있다.
- 사람에 대한 이해를 바탕으로 + 사람을 도울 수 있는 학과. 사회복지학과였다.
✨ 냉정한 이타주의자
내가 사회복지학과를 전공했다고 하면 흔하게 볼 수 있는 반응이 있다.
- 좋은 일 하시네요. (사회복지사의 이미지를 가장 분명하게 나타내는 말 아닐까 한다)
- 사람 돕는 거 아냐? 뭐… 봉사하고 그러냐?
- 너가 착한가보다. 그런 학과도 가고.
이런 반응들의 공통점이 있다. 감정이나 성품에 기반한 반응이라는 것.
“사회복지학과”라고 했을 때 흔히 떠올리는 이미지는 “친절하게 미소 짓는 봉사자가 형편이 어려운 어르신께 연탄을 드리는”… 이런 이미지다.
물론 내게도 어려운 이들을 돕고자 하는 사명감이 있다. 나 하나가 아닌 공동체 전체를 위한 삶을 지향한다. 나는 여름마다 홍수로 인해 큰 피해를 입은 지역의 농경지를 복구하는 수해 복구 봉사활동을 3년 간 개근하고 있다.
그러나 사회복지의 관점에서 나의 주된 관심사는 그런 감성적인 것들이 아니었다. 지극히 이성적인, 측정 가능하고 객관적인 것들이었다.
-> 지원 대상자가 지닌 욕구 중 가장 시급하며 중요한 욕구를 파악하는 방법
-> 욕구를 실현 가능한 요구사항으로 설계하는 전략
-> 성과에 대한 명확하고 객관적인 지표(자기기입식 설문지, 측정한 지표 등)
사람에 대한 관심도 좋고, 어려운 분들을 돕는 것도 좋다. 그러나 그건 감성적으로 막연하게 이뤄져서는 안 된다. 사회복지사는 사회적 약자의 삶의 질을 끌어올리고 보편적 복지를 실현하는 전문가다. 전문가에게는 니즈를 파악하는 역량, 달성 가능한 목표로 치환하는 능력, 프로젝트 계획 능력, 프로젝트의 효과/효율을 측정하는 능력이 필요하다.
혹자는 나에게 “사회적 약자들을 돕는 숭고한 일을 돈벌이 사업처럼 바꾸려는 거냐!”라고 반문할지도 모르겠다. 나의 관점을 더욱 펼치기 전에 오해를 풀 필요성을 느낀다.
나는 사회적 약자를 돕고 전반적인 삶의 질을 높이는 숭고한 활동을 “돈벌이 같은 활동”이라고 한 적이 없다. 그런 활동들이 얼마나 효과가 있었는지, 투입한 자원 대비 효율이 어땠는지는 반드시 측정해야 한다고 말할 뿐이다. 나는 그렇게 반문하는 사람들에게 묻고 싶다.
“가용한 자원은 한정되어 있고, 그렇기에 복지를 실현하는 활동에 신중하게 접근해야 한다. 이성적이고 객관적인 측정 방법이 없으면 그 활동이 정말로 가치가 있었는지 어떻게 증명할건가?”
감정보다 논리나 이성에 기반하여 판단하고 행동하는 나의 모습은 같은 학과의 친구들 내에서 “별종” 취급을 받았다.
-> 너는 상황을 논리적으로 판단하는 것 같다.
-> 감정적인 다른 친구들과는 다르다.
때로는 이런 반응도 보였다. (나의 무엇을 보고 그렇게 생각하나?라고 물었을 때 뚜렷한 답을 한 친구가 없었다. 말로 설명하기 어려운 나의 인상인 듯 하다.)
-> 인상은 새내기인데 말하는 건 4학년이다.
-> 말하는 단어에서 지성이 느껴진다.
내 관점이 사회복지에 대한 일반적인 이미지와 다소 다르다는 것은 안다. 그러나 어쩌겠나. 분명 필요한 관점인 것을.
✨ 요구사항 파악, 프로젝트 설계, 성과 측정… 매력적인데!
나와 다른 학교를 나온 친구 중에서 개발자를 준비하던 친구가 있다. 그 친구는 내가 어떤 성격의 사람인지 잘 안다. 그렇기에 내게 “마침 유행하는데 논리적 사고력도 필요한” 개발자를 권유했다.
코로나가 유행했던 시기라 Youtube를 조금만 둘러봐도 “00언어 기초 문법”같은 영상이 많았던 시기였다. 나는 패기롭게 C언어를 독학하기 시작했다. 가장 어려운 언어를 해도 재미가 있고 이해할 수 있으면 할 만 하겠지. 라는게 나의 생각이었다.
-> 처음으로 “Hello, World!”를 출력했다.
-> 간단한 사칙연산을 수행했다.
-> 터미널로 입력값을 넣은 뒤 의도했던 출력값을 얻었다.
수치와 정해진 종류로 한정된 입력과 출력. 논리적인 로직 설계. 추상적인 요구를 구체적인 코드로 바꾸는 구조. 매력적이었다! 더 발전시키고 싶었다. 그런데 뭔가 부족했다. 직관적으로 봐도 이건 “프로그램”이 아니었다.
- DB에 데이터를 넣는다던데. 그건 어떻게 하지?
- 파일 하나에서만 뭔가를 하는 건 아닌 거 같은데. 각각 역할이 다른 여러 파일들을 만들 수 없나?
- 기능을 더 고도화하고 싶은데. 어떤 구조로 해야 할 지 모르겠네.
당시에는 ChatGPT를 필두로 하는 LLM이 갓 등장한 시기였다. 환각도 지금보다 월등히 많았고, 초보적인 수준의 나는 아직 스스로 학습할 수 있는 관점을 기르지 못했다. 나 스스로 학습하고 성장할 수 있는 개발자가 되기 위해서는 “프로젝트 전체의 맥락과 개발자의 감각”을 학습해야 했다.
그게 “풀스택 개발자 학원”에 등록하게 된 이유였다. 프로그램의 전체 흐름을 이해하기에는 6개월도 짧다는 것을 알았으나, 내게는 충분히 가치 있는 시간이었다.
- FE부터 BE까지 이어지는 전체 흐름을 파악했다. 어떤 데이터가 어디서 출발해서 어디를 거쳤다가 응답이 되는지를 안다. 개발자의 기틀이 쌓였다.
- 언어의 문법을 익히는 것 그 이상의 구조를 배웠다. 여러가지 라이브러리를 사용하고 API도 설계해보니 프로그램에 무엇이 부족하고, 뭐가 필요한지 알게 되었다.
- 스스로 학습할 수 있다. 언어의 기초 문법만 알았을 때는 프로그램에 뭐가 부족한지도 몰랐다. ‘클래스 간 커플링’, ‘클래스의 책임’같은 기본 개념을 알고 있으니 이제 프로그램에 무엇이 부족한지도 보인다. (예시: JSON을 수동으로 파싱하는 게 번거로운데, 관련 도구는 뭐지?)
✨ 지금의 나는 어떠한가
나는 프론트엔드도, 백엔드도 좋다. 둘 다 데이터를 다루고, 검증하고, 결과를 산출하는 논리적이고 정확하며 객관적인 성격이 가미되어 있다.
나는 아무래도 백엔드가 더 좋기는 하다.
- 더욱 치밀한 수준의 검증과 보안이 요구된다. (화면 깨지기 vs 회원 정보 유출)
- 시각적 요소 및 사용자의 편의를 고려하는 것 보다 데이터 처리를 더 선호한다.
단순한 기능 개발 뿐 아니라 인프라, 횡단 관심사를 개발하는 것도 좋다.
- 횡단 관심사: 프로젝트에 있는 모든 기능이 의존하는 기능. 애플리케이션 자체를 이해해야 하기에 단편적인 기능 그 이상의 넓은 시야를 기를 수 있다.
- 인프라: 서버를 지탱하는 역할. 백엔드 개발자는 “기능만 만드는 사람”이 아니라 “서버를 관리/유지/확장하는 사람”이다. 모니터링, 로깅 등 기능을 관리하는 기능이 있어야 좋은 기능이 개발된다.
- 백엔드 개발자는 기능을 넘어 서버 그 자체를 다루는 직군이다. 그러니 단순한 기능 구현을 넘은, 넓은 범주를 관리하는 영역들이 매력적이다. (나로 인해 로그인이 막혀 프로젝트 전체의 일정이 지연되는 경험은 힘들고도 뜻 깊은 경험이었다)
습득하고 싶은 역량이 많아서 우선순위 조정 후 차근차근 익히려고 한다.
- (1순위) Docker + 모니터링 기능 기반 프로파일링(Pyroscope) 개발
- 대량 트래픽 발생 도구: 프로파일링 기능을 검증할 목적으로 학습 예정.
- CI/CD 기능: GitHub Actions, Jenkins. 현재 사이드 프로젝트에서 개발한 팀원이 있어서 참고할 예정
- 비동기 요청: 사이드 프로젝트 팀에 WebSocket 기반 실시간 채팅 기능의 도입을 추진할 계획.
- AWS: 사이드 프로젝트의 Confluence에 관련 문서가 있음을 확인. 참고할 예정.
나는 너무 섵부른 계획까지는 세우지 않는다. 위의 항목들을 거친 후에는 자연히 또 새롭게 익힐 역량들이 나타나리라고 생각한다. 기능 개발에서 인프라/횡단 관심사까지 나아간 나의 발자취처럼 말이다.