벌써 4월이 끝나가고 있다.
아무것도 안한 것 같은데 시간이 이렇게 빨리 지났다는 것이 신기하다.
아직 4월이 다 지나지는 않았지만, 주말이 아니면 회고를 쓸 시간이 없을 것 같아서 이번 달에도 미리 써본다.
이번 달에는 2025년 목표를 다시 돌아보면서 이번 달에 무엇을 했고, 느꼈는지 정리해보려고 한다.
진로 관련 목표
전공
1. 졸프
드디어 오픈소스 읽기를 어느 정도 마무리하고 구현을 시작했다.
사실 오픈소스를 100% 이해한 것은 아니지만, 코드를 읽으면서 복잡한 구조를 통으로 이해하고 구현하기보다, 작은 단위로 이해하고 구현하는 것을 반복해야겠다고 느꼈다.
(소공에서 나온 개념으로 비유하면 incremental development 방식으로..)
나는 CREATE 구문에 대한 구현을 맡았다.
파서가 CREATE 구문을 파싱해내면, 그 순간 가상 데이터베이스 엔진에 테이블을 생성하는 것과 관련된 명령어를 입력하고 실행시킨다.
내가 맡아서 구현하는 부분은 테이블을 생성하는 것과 관련된 명령어를 입력하고 실행을 지시하는 부분까지이다.
다른 팀원 한 명은 SELECT 구문에 대한 명령어 입력 및 실행 지시 부분을 구현하고 있고, 다른 팀원은 파일 시스템과 각각의 명령어를 실행하는 부분을 구현하고 있다.
다른 스터디로 읽고 있는 database internals 책을 보니 파일 시스템과 관련된 '스토리지 엔진' 파트가 DBMS 에서 꽤 중요하게 다뤄지는 부분이라고 한다.
sqlite 1.0 버전에서는 gdbm 이라는 데이터베이스 구현용 라이브러리를 사용하여 스토리지 엔진을 구현한 것으로 보여서 우리는 gdbm 기능을 흉내내도록 간단하게 직접 구현할 예정이었다.
그런데 이 책을 읽으면서 아무리 간단해도 스토리지 엔진을 한 명이 구현하는 건 쉽지 않겠다는 생각이 들어서 다음 회의 때 역할을 다시 분담해봐야겠다고 생각했다.
2. 컴퓨터 그래픽스
중간고사 없이 팀플과 기말고사만 보는 수업이었다.
중간고사가 없어서 시험기간에 널널하게 공부할 수 있어 좋았다.
하지만 이제 팀플을 본격적으로 시작해서 바빠질 것 같다.
주제를 논의할 때 2차원 사진/영상 기반으로 3차원 데이터로 복원하는 '3DGS' 라는 것을 처음 알게 되어, 이를 활용한 주제를 해보자는 아이디어가 나왔고, 최종적으로 '8번 출구' 게임을 흉내내서 T동 8층에서부터 1층을 향해 탈출하는 게임을 만들기로 했다.
처음에는 3DGS 기법을 이용해 학교 복도를 스캔하여 3D 복원한 공간을 만들 생각이었는데 생각보다 잘 안 만들어져서 복도는 유니티 에셋을 이용하고 복도에 배치할 컴포넌트를 3DGS로 스캔하여 배치하기로 했다.
테스트로 찍은 걸 봤는데, 하나의 물체에 대해서 변환한 결과는 퀄리티가 꽤 좋아서 신기했다.
유니티는 처음이라 걱정이 조금 되긴 하지만, 그래도 재미있는 결과물이 나올 것 같아서 기대된다.
3. 소프트웨어 공학
소프트웨어 개발 방법론과 객체지향적 설계, use case diagram 그리는 방법을 배웠다.
use case diagram 말고는 다 한번씩 들어본 내용이라서 대체로 아는 내용이겠거니 생각했는데, 생각보다 내가 알던 것 이상으로 깊은 의미(?)를 배울 수 있어서 유익했다.
여러가지 소프트웨어 개발 방법론, 객체지향적 설계 모두 '유지보수하기 좋은 프로그램' 을 만들기 위해 철저하게 '모듈화'와 '재사용'을 어떻게하면 극도로 활용할 수 있을지 머리를 쥐어짜낸 결과물같다는 느낌을 받았다.
에타를 보면 가끔 사람들이 왜 소공을 더 일찍 안 배우냐고 아쉬워하는 모습을 봤었는데, 나도 이제는 그 이유를 알 것 같다.
4. 기계학습심화
기계학습심화는 컴그와는 반대로 중간고사를 보고 기말고사 없이 팀플만 하는 수업이다.
중간고사까지 전통적인 기계학습 방법과 기본적인 딥러닝 내용을 배웠는데, 생각보다 재미있게 들었다.
딥러닝 파트를 들어갈 때 쯤 수업 시간에 교수님께서 유튜브 영상을 하나 보여주셨다.
https://www.youtube.com/watch?v=SN-BISKo2lE
영상을 보면서 많은 생각을 했다.
제프리 힌턴 교수님 말씀에 따르면 과거 농경시대에는 인간의 체력이 중요했지만, 산업혁명은 인간의 체력적 한계를 돌파할 수 있도록 해주며 더 이상 인간의 체력이 중요하지 않게 됐다.
그리고 정보화시대에 오면서 점점 인간의 지식이 중요해졌다.
하지만 AI 혁명은 인간의 지적 한계를 돌파할 수 있도록 해줄 것이며 앞으로 더 이상 인간의 지적 능력이 중요하지 않게 될 것이라고 한다.
이 영상을 보고나서 조금 충격을 받았다.
그 동안 인간과 다른 생물의 차이는 지적 능력에서 온다고 생각했는데, AI가 인간의 지적 능력을 대체한다면 이제 인간에게 남아있는 가치란 무엇일까 하는 생각이 들었다.
이 수업이 끝나고 다음 수업을 함께 듣는 친구와 수업가는 길에 영상 이야기를 했다.
그리고 이야기를 하면서 이제 AI가 발전하고 나면 인간에게 남아있는 능력은 '인간을 이해하는 능력'이라는 생각이 들었다.
인간은 감정을 갖고 있고, 감정에 따라 비이성적, 비합리적 선택을 하기도 하는데, 그런 사람의 행동을 이해할 수 있는 건 같은 인간 밖에 없지 않을까, AI는 모델을 학습시킬 때부터 항상 최적의 결과를 지향하도록 학습되므로 인간의 비합리적 선택을 이해하려면 시간이 조금 더 필요하지 않을까..하고 생각했다.
그래서 AI 시대에 지적 능력을 AI가 가져간다면 어떤 능력을 갖고 있어야 경쟁력이 있을지 고민해봤을 때,
사람을 이해하는 인문학적 지식, 사람을 대하는 능력이 중요해지지 않을까 하는 생각을 해봤다.
그런데 한편으로는 사람이 사람을 이해하는 과정 역시 '다른 사람의 행동' 이라는 결과를 기반으로 예측하고 공감해서 행동하는 게 아닐지 생각해본다면 심리학 연구 데이터를 기반으로 AI를 학습시켜서 사람을 이해하는 것처럼 행동하는 AI 모델도 충분히 만들 수 있을 것 같다는 생각이 들기도 한다.
아직 찾아보진 않았지만 분명 관련 논문도 이미 있을 것 같다 ㅋㅋ
그리고 AI는 기존 데이터를 기반으로 인간이 지시하는 일을 잘 처리해주지만, 아직 일을 스스로 처리한다거나 새로운 가치를 스스로 창출해내지는 못한다고 느껴졌다.
그래서 AI를 활용해서 더 많은 가치를 창출할 수 있는 사람이 경쟁력을 갖는 시대가 오지 않을까 하고도 생각을 해봤다.
이것 마저 가져간다면 그때는 웹툰 '꿈의 기업' 이 현실로 나오는 것일테니 그땐 진짜 인간에게 꿈만 남아있을지도 모르겠다.
결국 이런 저런 생각을 해봤지만 어차피 앞으로의 미래는 아무도 모르기도 하고,
작년에 들었던 수업에서 어떤 교수님께서 '이런 시대 일수록 더 펀더멘탈한 지식을 공부해야 한다'고 말씀하셨던 생각이 나면서 더 코어한 지식을 공부해야겠다는 생각도 들었다.
근데 이것보다 당장 급한 건 이제 기계학습심화도 팀플을 해야 한다는 것이다.
팀플이 너무 많다...ㅎ
동아리 활동
1. 백엔드 파트스터디
일단 지난 달 회고에서 적었던 백엔드 파트 스터디의 경우, 지원자 수에 비해 활성화가 많이 되지는 않아서 조금 아쉬었다.
그래도 4월달에 진행했던 첫 번째 모임은 기대보다 만족도가 높았다.
백엔드 정규 스터디 내용을 기반으로 학습하신 분, 프론트 관련 내용을 학습하신 분, SOLID 원칙을 학습하신 분, 오픈소스 활동을 준비하면서 관련 경험을 공유해주신 분들의 이야기를 들으면서 시야를 확장할 수 있는 계기가 되었다.
나는 블로그에 EnumSet 자료구조의 내부 구현을 뜯어본 경험, synchronized 키워드의 동작을 공부한 내용을 정리하였다.
어떻게 enum set이 빠르고 효율적으로 벌크연산을 제공할 수 있었는지,
synchronized 키워드는 모니터 방식으로 어떻게 하나의 자료구조에 여러 스레드가 접근하는 상황에서 데이터의 일관성을 유지할 수 있는지 복습할 수 있는 기회가 되어서 좋았다.
그리고 클래스 다이어그램을 보니 Set 이라는 자료구조를 interface 로 정의해두고 이에 대해 다양한 구현체가 존재했는데, EnumSet 이외에는 어떤 Set 구현체가 있는지 찾아보고 각 구현체별 차이점을 공부해보고 싶다는 생각도 들었다. (글감 추가~)
2. 고급 백엔드 스터디
원래는 개발팀 내에서 자체 스터디로 할까 하다가 우리가 스터디한 걸 다른 사람에게 공유하는 식으로 하면 서로 자극도 받고 커뮤니티에 지식 공유도 되고 좋지 않겠냐고 해서 지디지 스터디 형식으로 하게 됐다.
고급 백엔드 스터디에서는 위에서 잠깐 언급한 database internals 라는 책을 가지고 스터디를 진행한다.
일주일에 20 페이지 정도 분량으로 일주일에 3시간 정도씩 투자하여 학습할 예정이고, 서버 개발팀 4명이 멘토가 되어 매주 화요일 밤에 학습한 내용을 발표하는 형식으로 진행할 예정이다.
스터디를 위해 학습하는 것 외에도 발표자료를 만들어야 하는 일이 추가로 생기긴 했지만, 4명이서 분량을 나눠 담당하다보니 크게 부담이 되지는 않을 것 같다.
이 스터디를 하면서 공부한 내용을 졸프에 적용할 수 있다면 적용해보고, 졸프에 적용하면서 느낀 점을 다시 책을 읽으면서 공부하고 가능하면 발표때도 공유해본다면 좋은 시너지가 될 것 같아서 조금 기대도 된다.
개발 & 유지보수 경험
1. 큰소리 프로젝트
중간고사를 맞아 4월 중순부터 쉬어가고 있다.
마지막으로 논의했던 내용은 '비밀번호 찾기' 기능이었는데, 생각보다 고려할 요소가 많아서 아직 시작을 못했다.
처음에는 비밀번호 찾기를 클릭하면 사용자가 '이메일, 학번' 을 입력하고, 학번과 이메일이 일치하면 이메일로 비밀번호를 초기화해서 보내주는 방식으로 간단하게 생각했다.
그런데 다른 팀원이 '그럼 내가 다른 사람의 학번과 이메일만 알면 초기화를 마음대로 할 수 있는 거 아니냐' 라고 말한 것에서 시작해 1시간 넘게 토론을 했다.
물론 초기화를 해도 그 이메일에 접속을 못하면 비밀번호는 알아낼 수 없지만, 다른 사람의 비밀번호를 임의로 초기화해서 그 사용자를 불편하게 만들 수는 있기 때문에 개선해야 될 문제라고 생각했다.
그래서 이 문제를 해결하기 위해서 이메일로 비밀번호를 초기화하는 링크를 보내주는 것으로 기획을 바꿨다.
(링크를 클릭하면 비밀번호 재설정 창을 보여주거나, 링크를 클릭하면 그때 비밀번호가 초기화되는 방식인데, 임시 비밀번호를 사용자가 직접 클릭해서 생성하는 건 이상하다고 생각해서 비밀번호 재설정 화면을 보여주기로 했다.)
그런데 여기에서 다시 생각난 문제점은, '그 링크를 클릭하는 사람이 초기화하려는 이메일' 을 어떻게 식별할 것이냐는 것이다.
그래서 내가 생각한 아이디어는 이메일 주소를 서버가 가진 jwt 토큰 암호화용 시크릿 키로 암호화해서 링크에 덧붙여 보내주고, 사용자가 그 링크를 클릭하면 서버는 링크에 들어있는 암호문을 복호화해서 복호화한 이메일에 대해 초기화를 진행하는 아이디어를 생각했다.
(아니면 지금 생각해보니 이메일을 해싱해서 링크에 담아주고, 서버는 이메일-해시값 쌍을 저장해뒀다가 사용자가 보낸 해시값을 해시테이블에서 찾아 초기화를 하는 방법도 있을 것 같다. 그러면 다른 사람의 이메일을 강제로 초기화시키고 싶어도 해시값을 알 수 없으니 초기화 시킬 수 없다. 물론 이 경우 해시 알고리즘이 유명한게 워낙 많아서 내가 초기화 시키려는 이메일을 유명한 알고리즘으로 해싱해서 서버로 보낼 수도 있으니 salt를 쳐야 한다.)
결론적으로는 이런 흐름으로 하기로 했다.
이렇게 하면 다른 사람의 이메일/학번을 알고 있더라도, 그 사람이 직접 사이트에 들어가서 바꾸지 않는 이상 비밀번호는 바뀌지 않는다.
왜 많은 사이트들이 비밀번호 변경을 이렇게 구현했는지 조금 이해할 수 있었다.
2. 돌봄다리
이것도 시험기간에 들어가서 4월 중순부터 휴식기에 들어갔다.
아마 다음 주 수요일부터 다시 시작할 것 같은데, 현재 사진/파일/영상 업로드가 가능한 게시판 기능을 구현하고 있다.
게시판 기능 구현은 유명한 예제인데 아직까지 한번도 안해봤어서 이번 기회에 구현해볼 수 있어서 좋은 기회라고 생각한다.
3. 지뎃시 개발팀
지뎃시 개발팀도 앞으로 방향을 고민하면서 시스템을 조금 바꾸기로 했다.
일단 코어타임 횟수를 화수 2번에서 화요일 1번으로 줄이고, 고급 백엔드 스터디가 끝나면 코어타임을 하기로 했다.
그리고 매주 최소 1개 이상의 push 를 하고, 작업 상황을 코어타임에 공유해서 작업이 2주 이상 밀리면 벌금을 걷기로 했다.
결론적으로 이번 달엔 개발 경험은 돌봄다리에서, 유지보수 경험은 큰소리에서 할 수 있어서 좋았던 것 같다.
확실히 실제 사용하고 있는 유저가 있어야 개발할 때 유저 관점에서 한 단계 더 깊게 고민하기 좋은 것 같다.
취업
네이버는 서류 전형에서 떨어졌다.
자소서가 문제였을 수도 있겠지만, 일단 CS 테스트가 어려웠어서 그 부분도 크게 마이너스가 됐을 것 같다.
그래도 덕분에 내가 어떤 부분의 지식이 약한지 알 수 있는 계기가 되어서 좋았다.
4월에는 한화생명 신입 공채에 지원서를 넣었다.
자소서 마지막 문항이 입사 후 이루고 싶은 목표를 적는 것이었는데, 이 문항이 제일 어려운 것 같다..
지원할 수 있는 인턴이나 공채 공고가 1학기에도 꽤 자주 보여서 여유가 되는대로 틈틈히 써야겠다.
지금도 쓸 수 있는 공고가 꽤 많이 있다
그리고 3월 25일부터 큰소리에서 소규모로 하고 있는 1일 1백준 모임에 참가했다.
매일 난이도 상관 없이 하루에 한 문제를 풀어서 카카오톡 공지에 댓글로 적어야 하고, 문제를 못 풀었으면 카운트가 쌓인다.
카운트가 일정 횟수 쌓이면 (아마 4번 이었던 것 같다) 단톡방에 있는 모든 사람에게 음료수를 쏴야 한다.
현재 14명이 모여있어서 1000원씩만 쏴도 14000원이다 ㅋㅋ
브론즈 문제를 풀고 넘기는 것도 가능해서 부담없이 참가하고 있다.
오히려 쉬운 문제를 빠르고 정확하게 푸는 연습을 해야 코테 공부에 도움이 될 것 같아서 브/실/골을 적절히 섞어서 풀다가 가끔씩 플레 하나를 푸는 정도로 진행하고 있다.
AI 활용해보기
드디어 RAG 강의를 다 들어봤다.
근데 내가 기초적인 강의를 들어서 그런지는 모르겠지만 RAG 라는 개념이 크게 거창하진 않았다.
엘라스틱 서치를 사용해서 기존 데이터 중에 원하는 데이터 셋을 선별하고, 해당 데이터를 LLM에 프롬프트로 줘서 답변을 생성하는 느낌.
데이터를 가지고 기존 모델을 추가 학습시키거나 튜닝하는 느낌일 줄 알았는데 생각보다 너무 간단해서(?) 놀랐다.
물론 내가 제일 기초적인 강의만 보고 그렇게 느낀 걸 수도 있으니, 다른 영상들을 더 찾아봐야겠다.
하나 생각나는건 2024년 if kakao 에서 RAG 관련 발표 세션 영상을 지나가듯 본 것 같다.
그리고 다음 달에는 꼭 커서 AI를 사용해보고 싶다.
작년에 세오스에서 연사 초청을 통해 창업팀에서 1인 개발을 하신 이야기를 들었는데, 그때 사용한 툴이 커서 AI 였다고 한다.
늦었지만 이제라도 한번 AI의 발전을 느껴봐야(?)겠다.
그 밖에도 MCP 라는 개념을 코딩애플 유튜브를 통해 알게 됐다.
이것도 한번 공부해보고 싶은데, AI 발전은 정말 빠른 것 같다.
일단 커서부터 한번 사용해봐야지
진로 외 목표
돈 공부
이번 달에는 8500원을 실현수익으로 벌었다 ^_^
신경을 많이 쓰지는 못했는데, 이건 너무 떨어진 것 같은데? 싶은 주식을 샀다가 다시 원래대로 돌아올 때 팔았다.
이때 트럼프 관세로 말이 많아서 주식 변동이 컸던 때다 보니, 이건 다시 오르겠다는 나름의 확신을 가지고 샀는데 다행히 예측이 잘 맞았다
근데 이렇게 수익을 보면서 든 생각은, 주식으로 8500원을 버는 것보다 1달동안 식비로 8500원을 아껴서 돈 버는 게 더 쉽겠다는 생각이 들었다 ㅋㅋㅋ
다음 달에는 식비를 조금 아껴봐야겠다.
운동
시험기간도 있었고, 신경쓰는 일이 많다보니 헬스장은 따로 가지 않았다.
그래도 생각날 때마다 방에서 틈틈히 팔굽혀펴기를 30개씩 하고 있다.
이번주 수요일에는 오랜만에 클라이밍을 갔다왔는데, 내가 악력이 약하다는 것을 깨달았다.
팔/다리는 힘이 남았는데, 악력이 없어서 도전해보고 싶은 곳을 못 깬게 아쉽다.
그래도 노랑-초록-파랑-빨강-갈색-회색 난이도에서 쉬운 파랑 난이도까진 깨서 좋았다.
파랑 난이도부터 조금씩 다이나믹한 요소가 들어가기 시작하는데, 다음엔 조금 어려운 파랑도 깨보고 싶다.
그때까지 악력을 좀 더 키워놔야지..
책
이제는 고급 백엔드 스터디를 하면서 강제로 책을 읽기 시작했다.
그 전에는 오브젝트 책을 조금 읽었었는데, 지하철을 타고 왔다갔다 할 때 아니면 읽질 않다보니 초반부를 못 벗어나고 있다.
자기 전에라도 조금씩 읽어야겠다.
그리고 최근에 같은 학교 선배님이 작성하신 블로그 글을 뒤늦게 발견해서 읽어봤다.
금융권 SI 에서 부족한 도구를 가지고 불편한 점을 해결하면서 조직에 기여하는 과정과 후기를 정리하신 글이었다.
글을 읽으면서 나도 저런 경험을 하고 싶고, 그런 경험을 저렇게 체계적으로 글로 잘 녹여내고 싶다고 감탄하면서 읽었다.
전에는 금융계 회사는 기술적인 제약이 많아서 불편하다는 이유로 가고 싶지 않다고만 생각했는데,
같은 상황에서 불평하기보다 주어진 도구로 문제를 풀고자 노력하시는 모습을 보면서 멋있다고 생각했고,
문제 해결 과정을 공유하는 과정에서 느끼신 점이 마치 내가 회사를 다닌 것처럼 생생하게 느껴져서 정말 인상깊었다.
특히 이 글을 읽고 나서 '신뢰자본'의 중요성을 깨닫게 되고, 나는 지금 주변 사람들에게 어느 정도의 신뢰자본이 쌓여있을까, 회사에 가서도 신뢰자본을 잘 쌓을 수 있을까 고민해보는 계기가 되었다.
그래서 이 글에서 소개받은 '함께 자라기' 라는 책을 (사실 전에도 이름은 들어서 알고 있었긴 하지만) 꼭 읽어보고 싶어졌다.
한 달 동안 있었던 일만 가지고 회고를 쓰는데 4시간이 걸렸다.
그만큼 지난 한 달동안 기억하고 싶고, 의미있었던 일들이 많았던 것이라는 방증같아서 뿌듯하기도 하다.
벌써 곧 5월이 오고 여름이 온다고 생각하니 시간이 정말 빠른 것 같다.
5월에는 빨간 날도 많고, (마지막) 축제도 있고, 생일도 있으니 이번 달보다 더 재밌는 달이 될 것 같아서 기대된다.
5월달도 화이팅~
'자기계발 > 생각 정리' 카테고리의 다른 글
2025년 3월 회고 (4) | 2025.03.29 |
---|---|
2025년 2월 회고 (2) | 2025.03.01 |
2025년 1월 회고 (1) | 2025.02.01 |
2024년 회고 & 2025년 계획 (7) | 2024.12.31 |
2024년 2학기 회고 (12) | 2024.12.14 |