Showing

정글사관학교 6기 회고, 5~6주차 흩날리는 벚꽃과 C언어 본문

정글사관학교 6기

정글사관학교 6기 회고, 5~6주차 흩날리는 벚꽃과 C언어

RabbitCode 2023. 4. 11. 06:45

1.  들어가며

 
    안녕하세요! FlyDuck Dev🦢 입니다. 카이스트 문지캠퍼스의 벚꽃 주간에 정글에서는 C언어의 시간이 펼쳐졌습니다. 4주차까지의 알고리즘 주간이 끝나고, 정글사관학교 5주차부터 6주차 동안 C언어로 구현하는 링크드리스트, 더블링크드리스트를 이해하였고, 5주차 레드블랙트리 구현과 6주차 malloc 랩 과제를 하고 있습니다. 정글 벚꽃 주간에 C언어를 익히고 쓰는 과정들 속에서 느꼈던 이모저모와 생활 패턴 및 생각의 변화들을 포스팅해볼까 합니다.
 

 

2.  week05, 벚꽃과 C언어

 
    5주차에는 C언어로 레드블랙트리를 구현해야 했습니다. 저는 C언어를 얕게 공부해본 경험이 있었지만, 정글에 온 김에 C언어 책을 한권을 제대로 씹어먹어 보자는 생각을 하였습니다. 이번 기회가 아니면 제대로 C언어 책을 읽어볼 각성 계기가 없을 것 같았고, 흔들리지 않을 C에 대한 이해를 갖추고 싶었기 때문입니다. 그래서 3~4일 동안 <혼자 공부하는 C언어> 한 권을 전부 독파했습니다. 하루는 카이스트 문지캠퍼스 정전 날이 있었는데, 그때도 외부 스터디 카페에 짐을 싸들고 가서 열심히 C언어 책을 봤던 기억이 납니다.
 
  굉장히 신기했던건, 알고리즘 주차에 제대로 다지지 못했던 알고리즘 개념들을 본 C언어 책에서 Binary Search나 Recursion 등을 포함해서 C언어를 연습할 수 있도록 예제를 수록하고 있었기에 알고리즘 주차의 개념을 다시 한번 더 확실히 다질 수 있었습니다. 정글에서 계속 전주차들에 나왔던 개념들을 다시 만나게 되는 경험을 많이 하게 됩니다. 정글에서 계속 강조되는 전산학의 근본적인 토대만 제대로 잡아놓으면 결국엔 같은 내용들을 계속 반복해서 만나게 된다는 말씀이 이해되었습니다.
 
  결론적으로는 한 주가 지난 지금에서야 포스팅을 작성하지만 제대로 독파한 C언어가 계속 저를 도와주는 느낌을 받고 있습니다. 특히 초심자가 읽을 수 있는 C언어 책으로 마케팅되고 있는 책이지만 컴퓨터 시스템, 플로우 차트도 충실하게 다루고 있어서 '읽길 잘했다!'란 생각입니다. C언어는 개발자가 메모리단을 직접 건드리면서 컴퓨터를 컨트롤할 수 있다는 극강의 장점이 있습니다. 따라서 C언어는 컴퓨터와 제대로 만나고 싶은 개발자라면 반드시 잡아야할 언어이지 않을까 싶습니다.
 

3.  '좋은 개발자'에 대한 고민

  C언어 공부를 하다가, 갑갑해질 때 벚꽃이 예쁘게 피어있는 교내 산책로로 종종 혼자만의 산책을 나갔습니다. 좋은 개발자가 되고 싶다..!고 중얼거리면서 걷고 있었는데 마침 꽃비가 내렸고, 마침(?) 손에 벚꽃잎이 잡혔습니다. 흩날리는 벚꽃잎을 잡으면 소원이 이루어진다던 소리들을 떠올리면서 흐뭇하게 웃다가
 
...그런데 좋은 개발자란 뭐지?
 
란 생각이 들면서 정주원 코치님께서 늘 강조하시는 '컴퓨터에게 일을 잘 시키는 개발자가 되어야 한다'는 말씀을 계속 생각해보았습니다.
 

 
  어쩌면 인간은 늘 개발자에게 원하는 것이 있습니다. 그것은 뛰어난 연산이나 번거로운 작업들을 대신 수행해주는 효율적인 도구일수도 있고, 편리한 서비스, 독창적인 창작물, 재미난 플랫폼일 수도 있습니다. 개발자는 인간들의 니즈를 수용, 파악하고 컴퓨터에게 일을 시킵니다. 최단거리를 찾게 시키거나, 메모리를 효율적으로 사용하면서 탐색을 빠르게 한다거나.. 그렇게 만들어진 잘 돌아가는 소프트웨어를 사람들에게 공유하여 인간들의 요구 조건을 충족합니다.
  
  위와 같은 정리로 이끌어낸 좋은 개발자란,
1. 인간의 요구조건(명세)들을 명확히 파악할 수 있다. 개발 전 오해가 발생할만한 여지를 적절한 질문을 통해 없앨 수 있다.
2. 컴퓨터에게 일을 시키기 위해 필요한 사전지식을 알고 있다. 알지 못하더라도 수집할 수 있다.(컴퓨터 시스템, 알고리즘 등)
3. 사전지식과 프로그래밍, 설계를 총동원하여 잘 돌아가는 소프트웨어를 제작할 수 있다. 완성본이 잘 돌아간다.
 
위의 세가지로 정리할 수 있었습니다. 그 외 각 기업이나 개개인의 가치관이 반영된 좋은 개발자론이 나올 수 있지만 본질은 인간의 요구조건을 정확히 파악하여 컴퓨터 및 프로그래밍 지식을 동원하여 잘 돌아가는 소프트웨어를 제작해내는 것이라는 결론을 얻을 수 있었습니다.
 

 좋은 개발자가 되기 위해 가져야 하는 마음은 결국 소프트웨어에 대한 책임감이고, 정글에 지원을 했을 때도 정글을 다니는 지금도 더 좋은 개발을 해낼 실력을 갖추자는 일념을 가지고 있습니다. 그 마음 하나만으로도 고된 시간들을 즐겁게 보내고 있습니다.
 

4.  얼리버드 코테 스터디에 참여하다

  EarlyBirds_in_Jungle라는 레포를 각각 포크한 다음에 스터디원들과 주중 매일 아침에 2문제씩 풀고나서 푸시, 그 후 개인브런치를 스터디장에게 풀리퀘를 날리면 머지 승인을 받을 수 있고, 모든 팀원들의 풀리퀘가 끝나면, 레포를 싱크하여 모든 스터디원들의 코드를 볼 수 있게 됩니다. 이번 코테 스터디를 통해 단순 클론과는 또 다른 포크라는 개념을 알게 되어 더욱 효율적인 깃 협업을 할 수 있게 되어 좋습니다. 첫 3일은 깃스터디 분위기도 났었는데 그 후로는 다들 익숙해져서 코테 풀이에 집중할 수 있게 되었습니다.

https://github.com/flyduck-dev/EarlyBirds_in_Jungle

   아침형 인간의 대표격인 룸메가 오픈한 얼리버드 코테스터디에 참여하게 되면서, 매일 아침에 2문제씩 풀어버릇드니 안 푸는 요일에는 괜히 섭섭해지기 시작했고, 아침 시간을 효과적으로 활용할 수 있다는 것에 큰 보람을 느끼고 있습니다.  
  특히 가장 기쁜건, 코딩테스트 문제를 제대로 파악하고, 해결 로직을 생각하고, 생각한 것들을 코드로 써내려가는 일련의 과정에 점점 능숙해지고 있다는 느낌을 많이 받습니다. 그리고 2문제를 풀어본 다음에 문제에 대해서 스터디원들과 문제 해결과정을 토론하는데, 많이 배우는 것은 물론이거니와 저 또한 해결 과정을 구술하는 훈련을 하면서 점점 타인에게 자신의 코드 로직을 설명하는 것이 익숙해지고 있습니다. 코테 스터디를 하면서 코드 로직을 구술하는 능력 또한 기를 수 있어 좋습니다. 
 
  결국 코테를 잘 푼다는 것은 알고리즘을 잘 이해하고 문제에 잘 적용해서 코드로 작성해낼 수 있다는 점에서, 취업을 논하지 않더라도 꾸준히 연마할만한 가치가 있다고 생각합니다. 비록 아직 갈 길이 멀지만, 정글 입소 초반이나 알고리즘 주간 즈음에 백준을 풀어볼 생각이나 코테를 준비할 자신조차 없었기에 모든 것이 익숙하지 않다고 회고했던 과거와 비교했을 때 지금의 저는 많이 성장했다고 느끼고 있습니다.
 

5.  week06, 벌써부터 험난하네? malloc lab 과제

  정글 커리큘럼의 꽃인 핀토스에 들어가기 전에 만난 malloc lab부터 슬슬 밤샘, 새벽반 사람들이 늘어나기 시작했습니다. 재미있는건, 레드블랙 트리를 만들면서 배웠던 싱글링크드리스트, 더블링크드리스트를 제대로 알지 못하면 implicit free list까지는 어찌저찌 작성할 수 있어도, explicit free list를 작성해낼 수 없습니다. 정글의 커리큘럼은 확실히 나선형 학습 구조로 이루어져 있어서 한주 한주 제대로 씹어먹어야지 다음 주차를 순조롭게 헤쳐갈 수 있게끔 커리큘럼이 짜여져 있어서 한 주를 흘려보내서는 안되고 제대로 이해하여 완전히 내 것으로 습득해야 한다는 것을 꺠달아서 스스로 긴장감이 다소 올라갔습니다.
 

 

6.  글을 마무리 하며...

  malloc lab부터 정글 R반에 스물스물 역병이 돌고 있는지 한명씩 돌아가면서 병원을 가고 있고, 매주 난이도 또한 점점 높아져서 앞으로 꾸준히 회고록을 작성할 수 있을지 자신이 없어지고 있습니다. 그래도 최대한 블로그에 회고록을 남길 수 있을 정도의 여유가 남아있길 바라면 이만 글을 줄이겠습니다.
 
 

   좋은 개발자가 되기 위해! 오늘도 정글로 뛰어듭니다!

 
저의 긴 정글 에세이 포스팅 읽어주셔서 감사합니다!