이번 주에 지급됐던 웹 강의를 5주차까치 전부 다 들었다. 매니저님은 보통 생활코딩을 추가로 보거나 2번이나 3번 돌려보면서 개발에 대한 이해도 쌓기를 추천하셔서 나도 웹쪽을 안한지 워낙 오래인지라 생소할 것이니 그렇게 하지 않을까 생각했는데 예상과는 달리 그간 해온 경험이 도움이 돼서 이해가 빨라서 추가로 그럴 필요는 없을 것 같아 웹 강의는 생활코딩만 둘러보고 마무리하는 걸로 결정했다.
(물론 본 캠프때 다시 웹 개발로 부딪힐 일이 생기면 큰 코 다치겠지만 사전캠프에선 이 정도로 마무리 해야겠다.)
이후 강의는 Computer science 인데
목차만 보면 이렇게 배울 것 같다. 그런데 세션당 1시간 내외라 이걸 내가 감히 이해할 수 있을지나 모르겠다.
학교에서 배운 건 시험 끝나고 다 까먹었다 봐도 무방하고 실무에서도 그냥 '음~ 그런 느낌' 하며 넘어가던 부분들이라 구체적으로 조사해본 적은 없으니 심화 과정을 밟는 것 같아 심히 걱정된다.
그리고 Kotlin 트랙을 함께 해주실 튜터님과의 시간이 오늘 사전캠프 끝나고 추가로 있었다.
현직으로 계신 분의 이야기를 들어보니 공감되는 부분이 많아 참 재밌었다. 동기분들이 적어내신 질문 리스트는 내가 취업할 당시와 궁금했던 점들도 많았고 최근 Kotlin 을 선택하면서 조사했거나 생각한 부분이랑 많이 겹쳐서 유독 재밌게 들었던 것 같다.
옛 생각에 잠겨서 질문 리스트 받아서 내 시점의 과거는 어땠는지 블로그에 남겨볼까 생각도 했는데 굳이굳이 싶으니 경험으로 끝내야겠다.
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
fun solution(a: IntArray, b: IntArray) = a.zip(b) { first, second -> first * second }.sum()
제출은 정말 쉬웠다. zip
을 다루려다가 관둔게 고작 며칠 전이라 준비만전이었다. zip
으로 묶어준 후 Transform 으로 두 값을 곱해주고 더해주면 아주 간단하게 뚝딱이었다. 아주 마음에 들었다.
다만 이번 문제는 제출보다는 내적 키워드 자체를 내가 처음 본다는게 문제였다.
검색해보니 선형대수학? 벡터 공간? 내 무식함은 1초도 안돼서 발각될 것이다.
이 문제에선 예제가 친절해서 어떤 느낌인지 이해는 했지만 예제가 없었다면 a, b를 가지고 어떻게 풀어나가야 할지 상당히 막막했을 것이다.
수학을 중학교때까지만 즐기고 고등학교때는 취업하겠다고 놔버렸으니 알 리가 없었다. 수학이 개발자에게 중요한 건 수도 없이 들었으니 알고 있긴 하지만, 막상 취업하고 앱이 버그를 뿜어내는 원인조차 찾기 급급하니 내가 하는 이런 일들이 수학과 연관이 있긴 한가 생각도 들었었다.
하지만 모든 것을 0과 1로 해석하는 컴퓨터를 다루는데에 수학이 안 쓰일리는 없다. 그러니 수학을 배우고 컴퓨터 공학과 과학까지 모두 섭렵하면 대부분의 컴퓨터 관련은 러닝커브를 완만하게 하는 데에 도움이 될 거고 소프트웨어의 품질 향상이나 데이터 분석에도 좋을 것이다. 기왕 잘하게 되면 딥 러닝이나 인공지능도 건드려보면 재밌을 것 같긴 하다.
당장에 수학 공식을 봐도 모르고 문서에 나오는 소프트웨어 모델조차 눈에 들어오지 않겠지만 개발중 마주할 문제들을 일차원적으로 풀려고만 하지 말고 수학적 이해도 잘 써먹어가며 발전해보자.