티스토리 뷰

각오했던 1학기가 끝났다. 사실 종강은 3주 전에 했지만, 부산 여행도 다녀오고 에너지를 다시 채우는 데에 시간이 걸렸다.
어떤 경험이든 일단 시작해보고 생각하자, 라는 마인드를 가진 덕분에 내 1학기가 이처럼 다채롭게 힘들고 재밌을 줄 예상하지 못했다.
아쉬움이 하나도 남지 않는다면 거짓말이겠지만,
상반기를 후회없이 열정으로 불태우고 배우고 얻은 것들이 많아서 하반기도 부지런히 달리고자 하는 마음이 자연스럽게 생겨났다.
이번학기의 활동을 크게 4개로 나누어 보자면,
6전공 수업 & 스터디 , 팀플 , 외주 , 과외 가 있었다.
이들을 거치면서 배우고 느낀점을 간략하게라도 기록해보고자 한다.
사망년이라면 이 정도 전공은 버텨야죠
이번 6전공에서 중요하다고 생각하는 과목을 꼽자면 자료구조, 데이터베이스, 운영체제 이 세 과목이다.
코딩테스트를 준비하고 논리적인 코딩을 하기 위해 첫걸음이라 생각하는 자료구조 과목을 제대로 소화해 내고 싶었다. 우리학교는 c언어로 수업을 진행하는데, 다행히 난 c언어와 잘 맞아서 이론을 이해하고 문제를 풀어내는데에 재미를 느꼈다. 자료구조 공부에 소홀해질까봐 매주 정기 스터디를 모집했다. 작년도 교안의 의사코드를 보면서, 개강 한달 전부터 머리를 맞대면서 삽질한 덕에 학기 중의 실습이나 과제는 편했다. 학교 수업이 자세하게 진행되지 않아서 혼자 고민했으면 더 힘들었을텐데, 스터디원들이 있어서 같이 고민하며 코드를 고쳐나가는 과정에서 내 코드에 대한 자신감도 생기고, 배운 개념들에 대한 이해도 높아졌다. 아쉬운 점이라면 배운 개념들을 블로그에 꾸준히 포스팅 하고 싶었는데 하지 못했다는 점이다. (그래서 파이썬으로 다시 짜보면서 정리할 계획이다!)

데이터베이스 과목에서는 MySQL 과 MariaDB를 사용하고, 구현 언어는 Java 였다. Java를 잘 알지 못해서 걱정이 많았는데, 끝의 B-Tree 구현하는 과제가 어려웠던 것을 제외하면 수업을 이해하고 따라가는데에 무리가 없어서 다행이었다.
3-level-architecture과 data independency, schema, integrity constraints 와 같은 중요 개념을 짚으면서 관계형 데이터베이스의 기초를 공부하고, SQL 문(DDL,DML,DQL)을 배웠다. SQL 공부는 암기가 80이었고 20의 응용력이 필요했다. 처음에 원하는 데이터를 뽑아내기 위해 테이블들을 join하고 조건에 맞게 select 하는 논리회로 자체가 어려웠는데, 해보면서 익숙해졌다.
후에 View, Privilege, Conceptual Database design 까지 배우고 나서 이 수업이 마무리되었다.
수업이 끝난 후 데이터베이스에 관한 기초적인 개념은 알게 되었지만, 그래서 이것을 개인적인 공부에서 어떻게 이어나갈 수 있을까 라는 생각이 들었다. 여태 했던 프로젝트에서 어깨 너머로 보았던 데이터관리가 전부라, 더 자세한 DB 선정과 관리에 대한 궁금증이 생겼다.
이번에 백엔드 파트 공부하며 다루고 싶은 부분이기도 하다!

학교 커리큘럼에 컴퓨터구조 -> 운영체제 과목을 수강하게 되어있는데, 개인적으로 컴퓨터 구조 수업을 잘 소화하지 못해 이번 운영체제 과목은 시작하기 전에 열심히 공부하기로 다짐하고 또 다짐했다. (프로그래밍 수업보다 이론 수업에 확실히 약하다...)
운영체제 근본이라는 공룡책을 구입해서 공부할까 했는데, 현실적으로 시간적인 부담도 있어서 교안과 함께 공룡책을 정리해놓은 블로그 포스팅 글의 도움을 받으며 공부했다.
많은 도움을 받았던 블로그 링크이다 ⬇️⬇️
https://parksb.github.io/article/5.html
🦕 공룡책으로 정리하는 운영체제 Ch.1: Overview
Abraham Silberschatz의 Operating System Concepts는 운영체제의 바이블로 불린다. 이번에 운영체제 수업을 들으면서 Operating System Concepts 9th Edition의 내용을 정리해보기로 했다.Ch.1은 책 전체 내용이 담겨있
parksb.github.io
https://jhnyang.tistory.com/notice/31
운영체제(OS) 목차 &책 추천
운영체제를 처음부터 쭈우욱 순서대로 공부하고 싶으신 분들을 위해 뒤죽박죽으로 게시된 글들을 순서대로 정리해봤어요 # 운영체제 책 추천 운영체제하면 뭐니뭐니 이미 너무너무 유명한 공
jhnyang.tistory.com
개인적으로 스레드와 프로세스 스케줄링 , 메모리 관리 단원을 배울때 가장 재밌게 공부했었다.
운영체제 공부는 프로젝트에 써먹기 위한 지식과는 거리가 있고, 전공자로서의 지식을 배운다는 만족감이 더 컸다. 백엔드 공부를 하게 될때 알고 있어야 하는 기초 지식 정도(분명히 다시 또 공부해야겠지만)는 학기 중에 끝내두려 노력했다.
크롬 익스텐션 개발 팀플
SW오픈소스개론이라는 과목을 수강했는데, 오픈소스의 개념과 사용에 관한 과목이었다. 이 과목에는 팀플이 있었는데, "오픈소스를 사용하라" 라는 문장 하나만 주어진 프로젝트였다. 여태 팀플은 적어도 한명은 아는 사람과 같이 했었는데, 이번에는 처음 보는 선배들과 정해진 것 하나 없는 프로젝트를 시작하게 되었다.
사용하는 언어와 툴, 주제 제한이 없는 프로젝트의 기획을 세우는 건 생각보다 막막했다. 개발 기간이 한달 남짓이라 해보지 않은 아주 새로운 것을 할 시간은 없었는데, 팀원들이 공통적으로 경험이 있는 웹 개발이면서 개인적으로 궁금했던 크롬 익스텐션 을 개발을 해보자는 의견을 냈고, 모두의 찬성을 얻어 결정되었다. 어떤 서비스를 만들까 여러가지 아이템을 고민해보았는데, 비대면 수업과 회의를 하면서 집에만 있는 상황에서 일상이 무기력해지고 계획한 일을 제대로 끝내지 못한다는 문제점에 공감해서 자기관리에 도움을 주는 서비스 : MOTI 를 만들기로 했다. 이 서비스를 크롬 익스텐션으로 개발하면, 크롬은 많은 사람들이 사용하는 브라우저라 사용과 배포가 편리하다는 장점이 있기도 해서 서비스 주제와도 잘 맞았다.
이 수업은 github를 잘 사용하는 것이 중요하기도 했다. 이 수업 이전에 다른 프로젝트들을 하면서 github에 익숙해 있던 상태라 다행이었다. 개발을 시작하기 전에 "프로젝트 수행 규칙"을 먼저 세워 레포 readme.md에 띄워두었다.
- branch 이름, commit-message 규칙을 정해 목적과 의도를 한눈에 알아보고 명확하게 파악할 수 있도록 하기
- 발생한 문제 상황 Issue 등록하기
- Issue 해결하면 commit-message에 달아두고 닫기
...와 같은 기본적이지만 중요한 규칙들을 정리해두니 원활한 협업에 도움이 되었다.

Typescript와 React를 이용해서 개발했다.
React에 대한 깊은 이해 없이 단순 웹 개발 지식만을 가지고 시작했던 터라 초반에 많이 헤맸었다. Node.js만을 가지고 개발할까 했지만, 컴포넌트를 나누어서 작업을 할 수 있는 편리함과, react-app-rewired를 사용해서 번들링을 커스터마이징 할 수 있어 React를 사용했다.
프로젝트에서 TS를 사용한 적이 처음인데, type을 꼭 명시해줘야 하는 부분에 익숙치 않아서 컴포넌트 상태관리 코드를 짤 때 어려움을 겪기도 했다. 이 부분을 완벽하게 이해하고 속 시원하게 해결하지 못했어서 지금 나의 해결해야 하는 과제이기도 하다.
팀에 디자이너가 없었는데, 마침 css를 할 수 있는 사람이 팀에서 나 혼자였고 자연스레(?) 배치와 디자인까지 혼자 하게 되었다. 사실 이 디자인하는 부분이 코딩하는 부분보다 더 힘들었던 것 같다. 개발 시간도 촉박했어서 디자인에 공들일 시간이 없었다. UI 디자인을 해본 친구에게 물어가며 완성했지만 아직 볼때도 아쉬움이 많다... 이 이후로 디자이너가 정말 대단해 보인다.
+) 얻게 된 팁 : 디자인과 CSS 코딩을 모두 맡게 되었다면 ... 배치와 디자인을 최대한 상세히 모두 정해놓고 코딩할 것 !!
정해진 디자인 없이 코딩부터 하면서 디자인을 고민한다면 시간은 몇배로 걸리고 계속해서 디자인을 엎으면서 굉장히 지친다.
하지만...앞으로 나는 둘다 맡아서 하는 일은 없었으면 좋겠다...
이 수업에서 남은 아쉬움이라면 오픈소스 수업인데, 처음에 기획했던 것처럼 제대로 오픈소스를 이용하지 못했다는 점이다. 선택한 오픈소스의 특성이나 방향을 제대로 파악하지 못해서 생긴 문제들도 있었고, 서버 구성을 하지 못해 로컬 스토리지만 사용할 수 있어 생긴 문제들, 번들링 실수 등등 아쉬움이 정말 많았다. 그래도 최대한 문제들을 기록해두었기 때문에 이번에 다시 공부하며 파악해보려한다.

이렇게 외주를 시작한다고?
이번학기에 정말 예상하지 못한 활동이었다. 아직은 실력이 안된다고 생각해서 구할 생각도 하지 못했고, 전공 수업들과 과외로 이미 충분히 바빴기 때문이다. 아버지 친구분께서 내가 소프트웨어학과 학생이라는 이야기를 들으시고, 간단히 일 해볼 생각 있냐며 연락을 주셔서 시작하게 되었다. 처음에 맡기신 건 간단한 페이지 제작이라 어렵지 않았는데, 일을 하면서 잘 모르는 서버쪽을 알아야 하면서 그만둬야 하나 고민했다. 그때 나에게 좋은 경험이 될거라면서 끝까지 할 수 있게 도와준 (지금은 군대에 있는) jerry에게 감사하다.
CSS는 잡고 공부를 하는게 아니라 만들어 보면서 적응해 나가는 것이라는 걸 해보면서 느끼게 되었다. 이제 디자인된 것을 보면 레이아웃을 어떻게 잡아야할지 한눈에 보이고 기본적으로 중요한 개념들에 익숙해졌다! 구글링을 하면서 막히는 이슈들을 처리해 나가면서 쌓이는 데이터들, 이것저것 시도하면서 얻게 되는 나만의 팁들을 기억하고 정리해두는 것이 중요하다. 해본 것중에 가장 기억에 남는 CSS 이슈가 있는데, 안드로이드 폰과 pc 브라우저에서는 문제가 없는 이미지가 아이폰에서만 계속해서 터지는 것이었다. 다른 이슈들과 다르게 구글링 몇번으로 해결되지 않고 (결국 구글링이 도왔지만), 몇시간을 이유 모른채 헤맸었다. 아이폰에서는 align-items 값이 없을 때 가능한대로 stretch 되어 생긴 문제였는데, 해결하면서 이것저것 대응을 해야하는 개발자의 고단함을 조금이나마 체감했었다.

외주를 하면서 웹 배포, HTTPS, 프록시 서버 등등의 개념들을 공부로만 끝내는 게 아니라 실전에서 써볼 수 있었던 점이 가장 새롭고 많이 배우는 시간이었다. 그 전까지는 프론트 단에서의 환경만 알고 있었고, 네트워크 쪽 지식은 올해 초 포스팅 스터디를 하면서 공부한 지식 정도였다. 비록 발만 살짝 담군 정도인 것 같지만, 리눅스 서버(CentOS) 도 써보며 남은 공부의 넓은 시야를 가지게 되었다.

효과적인 마케팅을 하기 위해 Google Analytics 도 써보게 되었다. 방문자의 활동(스크롤, 버튼 클릭 등)을 파악하고, 리타겟팅하는 작업을 하면서 유용함을 느껴서 맡은 일 뿐 아니라, 나중에 개인 프로젝트에도 꼭 써보고 싶다는 생각이 들었다.
GA 작업은 크게 어렵지 않았지만, 삽질을 좀 많이 했다.
최신버전인 GA4를 납두고 GTM(Google Tag Manager)에 유니버설 애널리틱스를 연동시키고 디폴트로 설정되어있는 GA4에서 왜 아무것도 뜨지 않는걸까 하며 3일을 날리기도 했고, 오류가 났는데 구글링해도 아무것도 나오지 않아서 해결할 수가 없었던 적이 있다. 겨우겨우 표시 언어를 영어로 바꾸고 그 오류를 영어로 구글링 해봐서 해결할 수 있었다. (꿀팁추가...! 영어로 오류 검색하는 게 훨 빠르다)
수집한 정보들을 가지고 더 나은 마케팅 솔루션(거창한게 아님)을 찾을 수 있게 되면서, 배우고 빠르게 실제 일에 적용하는 부분이 재밌었다.

코딩을 가르치는 경험
내가 코딩을 어떻게 배웠나 되짚어 보면, 학교 수업과 혼자 고민해 본 시간이 전부였다. 교양으로 배웠던 1학년은 주변 친구들이 코딩에 큰 관심이 없어서 물어보거나 같이 공부하지 못했고, 전과를 결정하고 들은 전공 과목에서는 아는 사람 하나 없이 수업을 들었다. 그나마 다행이었던 건, 담당 조교님께서 하루에 대여섯번씩 질문을 해도 귀찮은 내색 없이 받아주셨다는 것이다. 주말이나 낮밤 가리지 않고 카톡 드렸던 걸 생각하니, 지금 생각해도 정말 감사한 일이다. 타고나게 똑똑하지는 못해서, 과제가 나오면 붙잡고 하루종일 고민했다. 그러다보니 자연스레 난장판 같았던 내 코드들이 점점 규칙을 찾아갔고, 깔끔하고 좋은 코드라는 것을 고민해보기 시작했다. 그렇게 내 과제를 온전히 어렵지 않게 해결하게 되었을 때, 다른 친구들을 도와주게 되었다. 오픈채팅방이나 에브리타임(학교 커뮤니티)에 도움을 구하는 글이 굉장히 많이 올라왔는데, 시간이 될 때마다 답변해주면서 자연스레 타인의 코드를 읽는 방법을 익히게 되었고, 시행착오를 하며 알게 된 (나름의) 조언의 팁을 얻게 되었다.
그렇게 코드에 대한 자신감이 생길때 쯤, 관련 과목들을 A+을 받고, 조교님과 코딩을 꽤 잘하는 친구에게 코드 칭찬을 받으면서 자신감이 업그레이드 되었고...! 나처럼 코딩을 대학와서 처음 접해 어려워하는 친구들을 돕고 싶다는 생각이 들었다. 우리 학교는 코드 한 줄 작성하지 못하는 사람이 졸업하는 일은 없어야 한다는 교수님들의 강력한 주장에 의해, 수업에 인증시험제를 도입했다. 중간고사 기말고사와 개별로 인증시험이 2번 있는데, 이 인증시험을 통과하지 못하면 F가 나가게 되어 무조건 재수강을 해야한다. 이 수업을 선수과목으로 하는 다른 과목들이 많기 때문에 제때 무조건 통과하는 것이 좋은데, 이 수업이 생각보다 통과하기 까다롭기 때문에 과외의 수요가 있을거라고 생각했다.

과외는 Notion과 Zoom을 이용해서 진행했다. 대면으로 하는 것이 좋겠지만, 학생과 나의 집이 멀기도 했고 계속해서 거리두기 지침이 바뀌어서 비대면으로 진행했다. 초반에는 걱정했지만, Zoom으로 화면 공유도 원활히 되었고 원격제어 기능도 있어 의사소통에 큰 불편함이 없었다. 포인터 같이 이해하기 어려운 부분은 실시간으로 아이패드로 그림을 그려가며 설명해주기도 했다.
Notion 코드 블럭 기능이 있어 과제의 코드 검사, 피드백이 편리했다. 중요한 문제들은 반복해서 풀게 해 개념들을 배워감에 따라 달라지는, 나아지는 풀이를 찾아갈 수 있도록 도와줬다. 자주 나오는 문제 소스들은 따로 주제를 묶어 코드들을 정리해놓아 시험 대비를 하기도 했다.
내가 나의 왕초보 시절을 기억하기에 어떤 부분이 헷갈리는지 잘 공감할 수 있어서, 더 적절한 피드백을 주었다고 생각한다.
첫 코딩 과외라 더 열심히 도와드렸고, 학생분들도 잘 따라와주셔서 다 A를 받아오셨다! 너무 다행이고 뿌듯했다 :)
언제까지, 어느 부분까지 내가 과외를 하게 될지는 모르겠지만, 내가 가진 지식이 누군가에게 힘이 된다는 것이 나에게도 아주 긍정적인 영향을 준다는 것을 알게 되었다. 뿐만 아니라 나누는 경험 자체에도 관심을 가지게 되었고, 많이 배워서 많이 나누고 싶다는 생각을 자연스럽게 하게 되었다.

주어진 1년이란 시간
학기를 보내면서 든 가장 큰 생각은 "공부가 필요하다" 였다. 부족한 부분이 끊임없이 보였고, 공부하고 싶은 부분이 계속 생겨났다. 그래서 1년간의 휴학을 가지기로 결정했다. 아무래도 휴학하며 생긴 가장 큰 걱정은 나태함이다. 시간이 많이 있다고 그만큼 많은 양의 공부를 하는 것이 아니란 걸 알기 때문이다. 공부나 발전의 속도가 가장 빠른 때는 쫓길때라는 걸 많은 사람들이 느껴봤을 거다.
그러기에 스스로 공부할 수 밖에 없는 상황에 계속 나를 밀어넣어야 하는 휴학기간 최대의 과제를 가지게 되었다.
최근에 마음에 박힌 말이 있다면, 어떤 일을 할때 "동기"는 생각하는 것만큼 큰 역할을 하지 않는다는 말이었다.
여태까지 계속 내 자신을 동기부여 해야 한다고 생각했고, 스스로 해이해질때마다 동기가 간절하지 않은건가, 라는 생각이 들기도 했었다.
동기 = 의지 라고 잘못 생각해왔던 것 같다. 그 동기는 휘발적인 것이고, 그게 당연한 것이었다는 것을 알게 되니 집착하지 않게 되었다.
그저 공부가 필요하다는 생각이 강하게 들었고, 하고 싶은 공부가 생겼다.
부담을 덜어 가볍게 생각하고 꾸준히 해나가려 다짐한다! 🏃🏻♀️🏃🏻♀️
'회고록' 카테고리의 다른 글
| 취준을 마치며 (6) | 2024.09.27 |
|---|---|
| 늦은 2020 회고록& WELCOME 2021 (0) | 2021.01.20 |