Advent of Code 커뮤니티에서 즐거운 시간 보내기 - 신입 기술 개발자의 삶 #2

Advent of Code 커뮤니티에서 즐거운 시간 보내기 - 신입 기술 개발자의 삶 #2

원문: Mary Lo, "Life as a Graduate Tech Developer #2: Having fun in the Advent of Code community"

이번 달 초 IMG 아레나의 대졸 신입사원 프로그램(graduate programme)을 수료하고 주니어 소프트웨어 엔지니어가 되었습니다!

프로그램은 끝났지만 기억에 남는 순간들을 글로 옮기고 싶었어요. 신입 개발자 시리즈의 두 번째 이야기 "커뮤니티의 도움을 받은 첫 Advent of Code 모험기"를 소개합니다.

학창 시절에는 모든 것을 혼자서 해낼 수 있다고 생각했어요. 하지만 나이가 들면서 제 생각이 바뀌었죠. 가끔 혼자 알아서 일을 처리할 수 있지만, 생각하는 만큼 제가 강하지는 않더라고요. 주변 사람들에게 의지하고 도움을 받으며 앞으로 나아갈 동기를 얻고 있습니다.

"혼자 한다면 할 수 있는 일이 너무 적지만, 함께 한다면 아주 많은 일을 할 수 있습니다." - 헬렌 켈러

제 동료들은 비슷한 관심사를 가진 사람들을 연결하고 커뮤니티를 형성하기 위해 Slack 채널을 만들곤 해요. 커뮤니티 내에서 특정 주제의 정보를 공유하고 토론을 장려해요. 열정적인 사람들로 둘러싸여 있으면 에너지가 넘치고 생각지도 못했던 수준까지 나아갈 수 있어요.

지난 12월 Advent of Code 커뮤니티를 통해 퍼즐 풀기 한계에 도전하게 된 계기를 이야기하려고 합니다.

"Advent of Code"를 처음 들어보셨나요? Advent of Code는 Eric Wastl이 만든 온라인 연례 행사며, 12월 1일부터 12월 25일까지 매일 2문제씩 공개됩니다. 시간이 지날수록 퍼즐이 복잡해지고 참가자들이 퍼즐을 푸는 데 흥미를 느끼게 되죠.

제 모험기를 본격적으로 소개하기 전에, Advent of Code 커뮤니티의 주최자 Lewis King에게 진심으로 감사의 인사를 전하고 싶습니다. 커뮤니티를 만들어 주시고 환상적인 토론의 장을 제공해 주셔서 감사합니다. 또한 경품을 마련해 주셔서 참가자들의 열정과 참여도가 한층 더 높아졌습니다. 이번 이벤트에 참여하며 다른 사람들로부터 배우는 것이 즐거웠습니다.

구미가 당기는 초대 메세지와 놀라운 상품들, Lewis King이 찍음

구미가 당기는 초대 메세지와 놀라운 상품들 | 사진: Lewis King

참가 첫 날, 거짓말하지 않고 1시간 동안 두 번째 문제를 못 풀고 있을 때 정말 포기하고 싶었어요. 문자열에서 가장 앞자리와 가장 뒷자리 숫자를 찾는 문제인데, 각 숫자가 숫자나 단어의 형태가 될 수 있었어요. 예를 들어 문자열이 "two1nine"이면 29, "4nineeightseven2"면 42가 정답이죠.

제가 간과한 부분이 있었다는 걸 알았지만 잘못된 결과로 이어지는 부분을 찾지 못했어요. 다행히도 이 여정에서 저는 혼자가 아니었어요. 저와 유사한 경험을 했던 커뮤니티 사람들이 힌트를 공유해 주었어요. 얼마간 힌트를 보고 난 후 저의 접근에서 잘못된 로직을 찾아냈고 첫째 날 문제를 해결했습니다.

문제를 푸는 첫 날, 첫 번째 문제에서 자신이 천재라고 생각하며 좋아하다가 두 번째 문제에서 좌절하는 애니메이션 밈 사진

David가 채널에 올린 이 이미지가 딱 제가 느낀 감정이에요.

저는 효율적인 접근 방식으로 문제를 아름답게 해결하려고 노력했어요. 어떤 문제에서는 무차별 대입이 생각해낼 수 있는 유일한 아이디어였죠. 간단한 로직으로 여러 번 반복하는 코드를 작성했고 컴퓨터가 실행하도록 했죠. 때로는 먹혀 들었고, 때로는 실패했습니다.

문제를 푸는데 컴퓨터가 계산하는 시간이 4분 50초임을 보여주는 사진

5일 차 파트 2

문제를 푸는데 컴퓨터가 계산하는 시간이 15분 56초임을 보여주는 사진

14일 차 파트 2

Advent of Code의 퍼즐은 일반적인 업무 과제와는 달라요. 저에게는 대학에서 코딩을 배울 때 했던 과제와 비슷했어요. 퍼즐을 풀다 보니, 문제를 작게 쪼개어서 해결 방법을 브레인스토밍하던 옛날 시절로 돌아간 것 같았어요.

12월의 첫 2주 동안 여러 퍼즐을 풀었어요. 가장 기억에 남는 것은 10일 차 문제였습니다. 저에게는 큰 도전이었어요. 보통 하루가 걸리던 다른 문제와 달리 데이터 구조를 다듬고 답을 찾기 위한 전략을 도출하는 데 이틀이 걸렸습니다.

10일 차 퍼즐은 라인을 읽어 연속된 루프를 만들고 루프로 둘러싸인 면적을 찾는 문제였어요. 문제가 복잡해서 여러 질문으로 나누었어요. 예를 들어 타일의 유형과 좌표를 찾는 클래스를 어떻게 설계해야 할지, 루프 내에 있는지 바깥에 있는지 어떻게 판별하는지 말이죠.

간단히 메모하는 것은 머릿속 아이디어를 정리하는 데 도움이 됩니다. 디버깅에도 효과적이고요!

4달 전에 제가 푼 문제임에도 정확히 어떤 문제인지 해답을 어떻게 생각해 냈는지 잊어버렸습니다. 하지만 12월에 제가 얼마나 신이 났었는지는 기억해요. 제가 할 수 있는 일의 한계에 부딪히는 것이 즐거웠어요. 게다가 동적 프로그래밍, 플러드 필, 픽의 정리 같은 여러 새로운 개념도 배울 수 있었어요.

12월의 아침마다 새로운 두 문제를 푸는 것은 재밌었어요. 정답을 맞히면 별을 획득하는 Advent of Code의 규칙이 좋아요. 언어 사용에 제한이 없고 데이터 구조 요구사항이 없어요. 엑셀 함수를 사용해 정답을 계산하는 것처럼 창의적으로 퍼즐을 풀 수도 있죠. 게다가 커뮤니티 내에서 경쟁이 존재하지 않아요. 우리는 함께 퍼즐을 완성하기 위해 서로를 응원하는 친구들이죠.

Advent of Code 커뮤니티는 마법 같아요. 커뮤니티에서 Lewis, Fran, Alex I., David, Chris, Alex S., William, Mateusz 등 여러 사람을 만나게 되어 영광입니다. 여러분들은 퍼즐을 푸는 다양하고 창의적인 전략을 보여주었어요. 대화를 통해 새로운 세계를 탐험할 수 있었고, 도전이 힘들어졌을 때조차 계속해서 참여를 이어 나갈 수 있었습니다.

커뮤니티에 참여하면서 제가 얻은 몇 가지 교훈을 소개할게요.

  • 여러분은 생각보다 훨씬 더 높은 잠재력을 가지고 있어요. 자신을 믿으세요. 여러분은 할 수 있어요! ❤️

  • 서로 지지해 주는 커뮤니티에 속해 있으면 능력을 인정받고 성장할 수 있어요.

  • 대화에 참여하면 시야가 넓어져요. 사람들이 이야기하는 모든 것을 알 수는 없지만 알아 갈 수 있습니다.

제 첫 Advent of Code는 어떻게 끝났을까요? 50개 중 38개를 풀어 자랑스럽습니다. 종료일이 가까워질수록 난이도가 높아져 아직 해결하지 못한 퍼즐이 남아있습니다.

Screenshot of my Advent of Code home page, achieving 38 stars.

⭐️

저는 Java로 퍼즐을 풀었어요. 읽기 쉬운 코드를 작성하기 위해 노력했고 유닛 테스트 작성과 스트림 API 활용도 연습했어요. 제 깃허브 저장소에서 동작하는 코드를 확인할 수 있어요. (https://github.com/marylo-imgarena/advent-of-code-2023/)

Advent of Code에 관심이 가고 한 번 도전해 보고 싶다면, 이 링크를 방문해 보세요. (https://adventofcode.com/)

"신입 기술 개발자의 삶" 시리즈 소개

2023년 11월 시리즈의 첫 글을 발행하기 시작했어요. IMG 아레나의 대졸 신입 개발자로 일하면서 배움을 기록하고 개인적인 생각을 공유하기 위해 시작했어요.

1년 간의 대졸 신입사원 프로그램은 이제 끝났지만, 아직 생생하게 남은 감정을 담아 제 경험을 써 내려가고 싶어요.

이전 이야기도 확인해 보세요!

#1: 자신을 이해하기 — 깨닫고 적응하기

자기 소개

저는 Mary Lo입니다. 홍콩에서 교육을 받고 자랐습니다. 2019년에 커리어를 시작했고, 3년의 경력 이후 팬데믹으로 인해 사고방식이 바뀌었습니다. 익숙한 환경 너머를 탐험해 보고 싶었고, 2022년 여름 새로운 모험을 하기 위해 런던에 왔습니다. 2023년 4월부터 IMG 아레나에서 일하고 있습니다.

예술과 기술 그리고 스토리텔링을 좋아합니다.

An acrylic piece depicting an Australian Labradoodle with detailed brushstrokes.

호주 래브라두들을 그린 나의 최근 아크릴 작품