2020 회고 - 개발을 시작한 지 1년이 되었다

이정민 Lee Jeong Min·2021년 2월 23일
117

etc

목록 보기
1/5
post-custom-banner

회고라는 게 단순히 나 혼자만 하는 게 아니라, 내가 어떤 사람이고, 어떤 생각을 갖고 있고, 어떤 마음가짐으로 개발을 하는지 다른 사람들도 확인할 수 있는 기회가 될 수 있을 것 같아 조금 늦었지만 지금에라도 회고록을 작성해보려 한다 🙃

Frontend의 시작

개발이 뭔지도 몰랐을 때, 학교 전공 강의 중 오픈소스SW개발이라는 수업을 듣게 되었다. git, javascript, node.js, aws 등 폭 넓은 개발 지식을 다루는 수업이었고, 정말 그런 것들에 대해 단 1%의 지식도 없던 나는 수업이 상당히 힘겨웠다. 하지만 지루하게만 느껴졌던 CS 강의와는 다르게 실습이 주를 이루었던 수업은 나에게 큰 흥미를 안겨주었고, node.js로 프로젝트를 완성시켜 제출해야 했던 과제를 통해 JavaScriptHTML, CSS를 처음 만나게 되었다.

수업은 힘겨웠지만, 재밌게 열정적으로 프로젝트에 임했던 게 아깝지 않을 정도로 좋은 성적을 받게 되었고, 그 성적이 또 자극제가 되어주었던 것 같다. 그렇게 적당히 공부하고 많이 놀던 1-2학년을 보내고, 이대로 가다간 죽도 밥도 안되겠다는 생각에 2019년 말부터 웹 공부를 시작하게 되었다.

2학년 겨울방학은 그렇게 내내 방에 틀어박혀 공부하고 코딩하고 했던 것 같다. 지금 생각해보면 어떻게 그렇게 했나 싶을 정도로 했던 것 같다. 오늘 하루 공부한다고 뭐가 달라질까, 하는 부정적인 생각과 막막함이 계속해서 덮쳐왔지만, 그래도 오늘보단 발전할 내일을 기대하며 묵묵히 잔디를 채워나갔던 것 같다.

인프런과 노마드코더에서 들을 수 있는 무료강의란 강의는 모두 들었던 것 같다. (리액트 강의가 상대적으로 훨씬 많았다보니 리액트를 먼저 접하게 되었다 🙃 ) 미래에 대한 두려움은 정말 큰 동기가 되어 주었다. 그 때의 압박감이 지금까지도 약간의 강박으로 남게 된 것 같지만, 이 또한 좋은 자극제로 승화시키며 공부하고 있다.

다양한 대외활동

개발은 혼자 하는 게 아닐 뿐더러, 개발자들끼리만 협업하는 것 또한 아니기에 협업 능력을 키우는 것이 중요하다는 생각을 하게 되었고, 그렇게 대외활동을 찾아 나서게 되었다.

1. 멋쟁이사자처럼 8기 운영진

처음 알게 된 대외활동은 멋쟁이사자처럼이었다. 멋사는 대학별로 각각 운영되는 체제였고, 그렇게 멋사 경희대 8기에 지원하게 되었다. 감사하게도(?) 전공자에다 개발공부를 해 온 게 있으니 운영진으로 활동해보는 게 어떻겠냐는 제안을 받았다. 그렇게 운영진으로서 다른 비전공자 학우들을 위한 강의를 진행해보기도 했다. 하지만 경희대학교의 경우 서울캠과 국제캠 간의 거리 차이로 인한 어려움이 존재했는데, 코로나 사태까지 겹쳐 대부분의 커리큘럼이 진행되지 못한 채 끝나게 되었다. 또 멋사는 Django를 중심으로 커리큘럼이 진행되도록 정해져있었기에, 프론트를 주로 공부하고 있던 나와는 맞지 않아 이후로는 참여하지 않게 되었다. 하지만 다양한 과의 학우들을 사귈 수 있었던 좋은 시간이었다. 지금도 종종 연락하는 인연들을 만들 수 있었다.

2. SOPT 26기 안드로이드 파트원

멋사가 끝날 때 쯤 SOPT에 지원하게 되었다. SOPT는 대학생 연합 IT 창업 동아리로, 대학생들로만 구성된 대규모 동아리다. 기획, 디자인, 안드로이드, ios, 서버 등 구체적으로 파트가 나뉘어진 대규모 연합 동아리답게, 활동 내내 체계적으로 운영이 잘 되는 것을 많이 느낄 수 있었다.

내가 지원했던 26기 당시에는 웹 파트가 없었기에, 서버 파트와 안드로이드 파트를 놓고 고민했었다. 그래도 조금 다뤄본 node.js를 하느냐, 언어와 툴은 다르지만 클라이언트 개발을 하느냐의 문제였다. 결국 안드로이드 파트에 지원하게 되었다. 안드로이드 파트는 6:1의 경쟁률이었다고 한다.

그렇게 경험한 안드로이드 개발은, 안타깝게도 나와는 맞지 않았다. 리액트의 경우 컴포넌트 단위로 뛰어난 재사용성을 취할 수 있는 반면, 안드로이드의 경우 반복되는 뷰는 리사이클러뷰로 구현해야 하는데 그 과정이 상당히 복잡하고 까다로웠다. 계속 비교해봐도 웹 개발이 좀 더 직관적이고 재밌게 느껴졌다.
그래도 안드로이드 파트원으로 있는 동안 알게 된 사람들을 통해 계속해서 새로운 기회를 얻어나갈 수 있었다. 어떤 경험이든 두고 보면 다 배우는 게 있음을 깨달을 수 있었던 경험이기도 하다. 또한 코틀린을 써보면서 정적타이핑 언어의 장점을 많이 느낄 수 있었고, 추후 타입스크립트에 대한 관심을 갖는 계기가 되기도 했다.

3. 디프만 8기 React 개발자

SOPT가 끝날 때 쯤에는 디프만 8기에 지원하게 되었다. 디프만은 새내기때부터 알고 있었던 동아리였다. 나름 개발 잘 한다고 알려진 선배들은 다 거쳐갔던 동아리로 알고 있었는 데다, 대학생 뿐만 아니라 직장인도 활동하는 동아리기에, 그 벽은 상당히 높게 느껴졌었다. 실제로 깃허브도 없었던 시절 뭐라도 해보고 싶다는 생각으로 지원해 본 적이 있었는데, 서류에서 광탈을 했던 경험이 있다.

디프만은 면접 때부터 인상이 깊었다. 3:3 면접이었는데, 내 왼쪽은 우아한형제들의, 내 오른쪽은 kt의 프론트 개발자였다. 직장인 지원자의 비율이 어마무시하게 많은 것이었다. 단순히 동아리에 합격하고 싶다는 바람을 넘어서, 이렇게 멋있는 사람들과 같이 협업해보고 싶다는 생각이 무지막지하게 들었던 것 같다.

그렇게 React 개발자로 디프만에 합류하게 되었고, 두 번의 프로젝트와 두 번의 스터디를 통해 많은 지식들을 쌓을 수 있었다.
워밍업 프로젝트에서는 위치기반 SNS 웹앱을, 파이널 프로젝트에서는 커머스 웹서비스를 개발하였다.
그 과정에서 react, redux, redux saga, recoil, chakra ui 등 다양한 라이브러리를 경험해볼 수 있었다.

두 번의 스터디에서는 각각 리액트 클론과 디자인시스템 구축을 겉핥기로 공부했었는데, 디핑 알고리즘에 대한 공부는 추후 면접준비를 할 때 큰 도움이 되었고, 디자인시스템에 대한 공부는 추후 회사에서 직접 디자인시스템 개선 업무를 맡게 되었을 때 큰 도움이 되었다.
역시나 모든 경험은 다 도움이 되는 것 같다 🙂

디프만은 정말정말 잊지 못할 경험으로 남을 것 같다. 네이버, 카카오, 쿠팡, 배민, 토스 등등 너무나도 잘 알려진 회사에서 일하는 현직 개발자들, 디자이너들과 함께 협업을 해본다는 것은 대학생 입장에서 흔한 경험은 아니라고 생각한다. 한낱 학부생이었던 나에게는 그야말로 새로운 세계가 열린 기분이었다.

4. 우아한테크러닝 3기 교육생

우아한형제들에서 주최하는 교육과정으로, 우아한형제들에서 기술이사직을 맡고 계신 김민태님이 리액트와 타입스크립트를 주제로 1달에 걸쳐 강의를 해주셨다. 코로나로 인해 온라인으로 전환됨에 따라, 30명 정도 규모의 강의가 500~600명으로 확장되었다. 덕분에 교육생으로 합격하여 질 좋은 강의를 들을 수 있었다.
정리했던 내용은 다시 블로그에 옮길 예정이다.

5. AUSG 4기

AUSG는 AWS University Student Group으로, KRUG(한국 AWS 사용자 모임) 소속의 동아리다. (대학생 동아리긴 하지만, 대부분의 동아리원들이 직장과 학교를 병행하는 멋진 사람들이다.) ec2나 S3, amplify 정도밖에 건드려보지 못해서, 좀 더 폭넓은 지식을 쌓을 수 있을 것 같아 지원하게 되었다. AWS는 사람들을 뭉치기 위한 키워드일 뿐이어서, 무조건 AWS 관련 공부만 하는 게 아니라 다양한 프로그래밍 이야기를 나눌 수 있어서 좋았다.

자발적인 스터디 위주로 돌아가는 동아리라, 가볍게 참여할 수 있어서 좋았다. 돌아가며 AWS를 주제로 발표하는 빅챗 행사가 곧 열리는데, 간단하게 amplify와 netlify를 한 번 비교해보는 이야기를 해볼까 생각중이다. AUSG도 디프만처럼 계속해서 활동하고 싶은 생각이 드는 동아리다 🙃

6. SOPT 27기 비활OB

27기에서는 웹 파트가 부활했지만, 디프만 활동과 겹치는 바람에 파트원으로서의 참여는 하지 못했고, 비OB로서 앱잼에 참여하였다. 26기 앱잼은 안드로이드 개발자로 참여했기에 스트레스를 상당히 받았었는데, 27기 앱잼은 프론트 개발자로 참여했기에 더욱 즐겁게 임할 수 있었다. 쿠키파킹이라는 서비스를 개발하게 되었는데, 릴리즈 단계를 밟는 과정에서 엄청난 입소문을 타게 되었다. 내가 참여한 서비스에 이렇게나 많은 유저가 생길 줄은 상상도 못했기에, 정말 감격스러웠다. 현재 베타버전 출시 준비중에 있으며, 이후 QA 과정을 거쳐 정식버전을 출시할 예정이다.

7. 디프만 9기 운영진

앞서 말했듯이, 디프만에서의 잊지 못할 경험들을 바탕으로, 곧 시작될 9기는 운영진으로서 참여하게 되었다. 운영진이자 리액트 개발자로서 프로젝트와 스터디에도 꾸준히 참여할 예정이다. 디프만은 그 이름이 꽤나 유명함에도 불구하고, 디프만을 소개하는 사이트가 제대로 구축되어 있지 않아서 현재 급하게 만들고 있다. ( url, github )
2021년의 디프만도 무척 기대가 된다 🙂

다양한 수상경험

1. 26기 SOPT 16번째 앱잼 대상

앱잼은 SOPT에서 약 3주간에 걸쳐 진행되는 해커톤으로, 상당히 고퀄리티의 서비스들이 앱잼에서 나오곤 한다. 16번째 앱잼의 경우 안드로이드 개발자로 참여하여 Booster라는 출력물 예약 앱을 개발하였다.

릴리즈는 밟지 못했지만, 팀원들과 합숙하며 좋은 추억들을 많이 쌓을 수 있었다.

그리고 대망의 앱잼 발표날, 모든 조건을 충족시킨 우리팀은 대상을 수상하게 되었다.

2. 이노베이션 프로젝트 씨드상

Booster 서비스를 개발했던 당시, 무중력지대 강남에서 주최한 IT 공모전에도 같이 지원하였다. 그렇게 생각지도 못하게 씨드상을 수상하게 되었고, 우리는 상금으로 즐거운 회식시간을 가졌다 🙂

3. 27기 SOPT 17번째 앱잼 대상

위에서 언급했던 쿠키파킹 서비스로, 또 한 번의 대상을 수상하게 되었다. 하지만 우리는 수상이 최종 목표가 아니었기에, 더욱 사기를 높여 계속해서 개발을 진행하고 있다 🙂

직장에서의 실무경험

1. 스타트업에서의 5개월

첫 인턴은 스타트업에서 경험하였다. 방학동안 학교와 협약을 맺은 회사로 현장실습을 나가게 되면 6학점과 추가적인 실습 지원비를 받게 된다. 나름 1석2조라고 생각했기에, 여름방학 또한 헛되이 보낼 수 없다고 생각했던 나는 그렇게 한 스타트업에 프론트엔드 개발자로 입사하게 되었다.

총 두 가지 업무를 진행하였다.

  • fms 근무자용 웹뷰 기반 앱 개발
  • fms 어드민용 웹사이트 개발

앱 개발의 경우 리팩토링 및 자잘한 기능 추가를 맡았고, 웹 개발의 경우 프로젝트 구축부터 시작해서, 큰 단위의 화면 개발을 맡았다.

모두 Vue.js로 개발을 진행하였는데, React를 주로 공부하고 있던 나로서는 조금 아쉬움이 들긴 했다. React를 실무에서 제대로 사용해보고 싶다는 바람은 그렇게 미뤄지게 되었다. 하지만 이 때 익힌 Vue, Vuex, Antd 등은 추후 또 많은 도움이 되었다.

SI 스타트업이었기에 업무는 넘쳐났고, 입사한 지 며칠 지나지 않아 내 앞으로 수많은 이슈들이 쏟아지기 시작했다. 업무 강도도 높았고 돈도 쥐꼬리만큼이었기에 그 당시에는 많이 힘들었었다. 하지만 그 만큼 배운 것 또한 많았다. 이슈 관리라든가, 브랜치 관리라든가, 나름의 실무 경험을 많이 쌓을 수 있었다. 역시, 돌이켜보면 다 좋은 경험이 되는 법인 것 같다.

2. 메가존클라우드에서의 4개월

스타트업에서 계속 근무를 하던 중, AUSG 활동을 하게 되었고, 거기에서 알게 된 동료분의 권유로 이직을 하게 되었다. 그렇게 퇴직 절차를 밟은 후, 메가존클라우드 내 유일한 개발팀인 CloudOne팀에 프론트 개발자로 입사하게 되었다.

CloudOne은 메가존클라우드의 CTC(Comercial Technology Center)부서에 소속된 팀으로, SpaceONE이라는 Multi Cloud에 대한 오픈소스 CMP(Cloud Management Platform)를 개발하고 있는 팀이다.

총 세 가지 업무를 진행하였다.

디자인시스템과 콘솔의 경우 Vue로, 프로젝트 사이트의 경우 React를 사용하였고, 모두 typescript로 개발을 진행하였다.

디자인시스템의 경우 atomic system을 기반으로 개발되었는데, 개발 단계에서 사용된 구조가 디자이너도 함께 사용하는 스토리북에서도 사용되는 바람에 가독성이 좋지 않은 문제점이 있었다. 따라서 atom, molecule, organism으로 구분되어 있던 스토리북 구조를, 수많은 자료조사 끝에 data display, feedbacks, foundation, inputs, layouts, navigation으로 변경하자고 제안하게 되었다.
또한 stories.js로 작성하여 Canvas 페이지를 만들었던 방식에서, mdx를 도입하여 Docs 페이지에서 Canvas를 작성하는 방식으로 변경하자고 제안하게 되었다. (결과물)

프로젝트 사이트의 경우 혼자서 개발을 주도하게 되었다. 아무래도 서비스와 팀을 소개하는 사이트이다 보니 디자인이 정말 중요했고, 덕분에 엄청난 마크업 실력을 쌓을 수 있었다. css 실력도 많이 키울 수 있었고, 무엇보다 마크업 속도가 기하급수적으로 늘었다 😂
혼자 작업하는 업무다보니 라이브러리 사용에 있어 제약이 보다 적었고, 그렇게 요즘 핫한 next.js를 기반으로 구축해보게 되었다.
아무래도 커스텀이 자유롭다보니, 그만큼 삽질도 엄청나게 필요했다 😢 덕분에 공식문서 내에서도 꽁꽁 숨겨져있는 세팅들을 많이 적용시킬 수 있었고, 공부한 것을 기반으로 조만간 보일러플레이트를 만들어서 두고두고 사용할 예정이다. 확실히 next는 계속해서 사용할 만한 것 같다. 많은 세팅들을 자체적으로 잡아주면서도, 그 커스텀의 자유도가 높다는 것이 정말 큰 메리트가 아닐까 싶다.
또한 nginx를 붙인 후 docker로 말아서 kubernetes helm으로 배포를 진행하였는데, 인프라와 백엔드 개발자분들이 세팅을 맡아주셨지만 어깨너머로 공부할 수 있었던 좋은 경험이었다. (결과물)

그렇게 두 가지 업무를 병행하다보니 3개월이 훅 지나갔고, 남은 1개월 마저 설 연휴가 껴있었기에 정말 시간이 얼마 남지 않은 상황이었다. 프로젝트 사이트의 경우 새로 입사하신 프론트 개발자분에게 인수인계하기 위해 몇 차례의 회의와 문서화를 진행하였다. 그래도 뭔가 하나라도 더 컨트리뷰트하고 싶은 마음에 콘솔(SpaceONE 프로젝트)을 한 번 건드려볼 수는 없을까 여쭤보게 되었고, 퇴사가 가까웠기에 자잘한 이슈 및 마이너한 페이지의 뷰 개선 정도를 맡을 수 있게 되었다 🙂
콘솔의 경우 백엔드가 마이크로서비스 아키텍처로 구축되어 있었고, API용 노드 서버를 중간에 거치는 형식이었다. 깊진 않지만 다양한 지식들을 어깨너머로 공부할 수 있었다. 너무 감사할 따름이다 🙏

리뷰가 필수적인 PR 방식, squash와 fast forward 위주의 머지전략, 매주 열리는 스프린트 회의, Jira 티켓을 통한 이슈 관리, confluence를 통한 문서정리 등은 어떻게 하면 더 질 좋고 주도적인 개발을 할 수 있을지에 대한 고찰을 끊임없이 하게 해주었다.
자유로운 출퇴근, 자유로운 재택근무, 화목한 팀 분위기는 정말 많이 그리울 것 같다 🙏
여튼, 그렇게 총 세 개의 오픈소스에 기여한 후 회사를 떠나게 되었다 ✨

3. 네이버 인턴 합격

3-2의 경우 메가존클라우드에서 근무하면서 병행하였는데, 겨울방학이 끝날 때 쯤 더 이상 재학생은 인턴을 받지 않기로 결정되었다는 소식을 듣게 되었다. 하지만 나에게 휴학은 존재하지 않는 선택지였다. 코로나로 모든 대학 강의가 온라인으로 진행되는 꿀기간을 놓칠 수 없었기도 했고, 적어도 취업계를 낼 수 있는 4-2 전까지는 혹시 몰라서라도 빨리 끝내놔야 한다는 생각이 컸다. 그렇게 2월 말 퇴사가 확정되면서 다른 회사를 알아봐야겠다는 생각을 하게 되었다.

그러던 중, 우연찮게 모집기간이 하루 남은 네이버 채용연계형 인턴 모집공고를 보게 되었고, 하루 남은 걸 발견한 것도 인연이다 싶어 서류를 제출하게 되었다. 거의 한달 뒤 서류 결과가 나왔고, 온라인 코딩테스트를 치게 되었다. 그렇게 코딩테스트도 무난히 통과하여 1차 면접까지 보게 되었다.
어떻게든 최대한 공부를 해가야겠다는 생각으로 면접 날짜를 가능한 뒤인 3주 뒤로 잡았고, 낮에는 업무 밤에는 공부를 반복하는 나날을 보내게 되었다.

역시 면접은 그 자체로 큰 자산이 되는 것 같다. 면접을 준비하는 과정에서도 엄청난 양의 지식을 쌓게 될 뿐만 아니라, 면접을 보면서도 새로운 지식들을 쌓게 되니 말이다. 면접에서 떨어지더라도 좋은 경험이었으니 좌절하지 말기로 자신과의 약속을 한 뒤 면접을 보았고, 면접결과는 신경쓰지 않고 계속해서 업무와 공부를 진행했다.

그렇게 1주 뒤, 합격을 축하한다는 메일을 받게 되었다. 사실 면접을 잘 봤다는 느낌은 받지 못했기에, 엄청난 기회임을 알고 열심히 해야겠다는 생각으로 계속해서 공부중이다 🙂
아쉬운 점은 인턴기간이 1달이라는 것과 아마 재택이 될 것 같다는 것. 어떻게 하면 좋은 면모들을 많이 보여줄 수 있을지 고민이 된다.
이 자체만으로도 엄청나게 좋은 경험이니, 결과에 연연하지 말고 계속해서 도전하며 앞으로 나아가려 한다. 잘 안 됐다고 좌절하지 말고, 잘 됐다고 자만하지 말기.

맺음말

글을 작성하고 보니 1년동안 참 많은 일들이 있었던 것같다. 바빴지만 즐거웠고, 힘들었지만 소중했던 경험들이다. 이제 막 시작된 2021년에는 또 어떠한 변화들이 찾아올지 기대된다. 그 기대에 부합할 수 있도록 계속해서 노력하려 한다 🙂

profile
https://jeong-min.com/ <- 블로그 이전했습니다 :)
post-custom-banner

22개의 댓글

comment-user-thumbnail
2021년 3월 9일

ㄱ글 너무 잘봤습니다. 네이버 코딩테스트에선 주로 어떤 문제가 나왔는지 알 수 있을까요??

1개의 답글
comment-user-thumbnail
2021년 3월 21일

눈이 부시군요✨

1개의 답글
comment-user-thumbnail
2021년 3월 22일

이렇게 멋있는 사람이 학교에서 몇번 마주쳤던 동기라는게 자랑스럽네요.
엄청 빠른 성장 속도에 질투심마저 느껴지지만, 오히려 좋은 자극을 많이 받았고
열심히 노력하셔서 이뤄낸 것들에 제가 다 행복하네요. 좋은 글 고맙습니다.

1개의 답글
comment-user-thumbnail
2021년 3월 22일

자극이되네요.. 글 잘읽고 갑니다! 21년은 저도 글쓴분 처럼 성장을 하고싶네요
마인드 컨트롤은 어떻게 하셧는지 궁금합니다!

1개의 답글
comment-user-thumbnail
2021년 3월 23일

학부생신분인데 이렇게 많은 인턴과 외부활동이 대단합니다.
우연히 깃헙과 노션을 방문해서 많은 자극을 얻었습니다.
방향성을 잃지않고 계속 찾아나가시는모습이 부럽고 정말 방황하던 제모습과 다르게 멋집니다.
저는 프론트가 아닌 be지만 진짜 정민님의 블로그와 깃헙을 보면 많은 반성을 하게됩니다.
좋은 자극주셔서 감사합니다 :)

1개의 답글
comment-user-thumbnail
2021년 4월 26일

덕분에 항상 좋은 자극 받고 열심히 하게 되는 것 같습니다.
앞으로도 많이 알려주실거죠? 찾아뵐게요~~

1개의 답글
comment-user-thumbnail
2021년 6월 12일

대단하시네요... 1년만에... 직장인 취미 코더인데 열정의 기운 받아갑니다

1개의 답글
comment-user-thumbnail
2021년 8월 26일

우연히 들어왔다가 큰 자극받고 갑니다 감사합니다!

1개의 답글
comment-user-thumbnail
2021년 8월 31일

블로그 글 정말 잘 보았습니다!! 혹시 코딩 테스트는 어떻게 준비하셨는지 여쭤봐도 될까요? 평소에 틈틈이 준비하셨는지, 강의를 따로 들으셨는지 궁금합니다 😊

1개의 답글
comment-user-thumbnail
2021년 10월 22일

누군가 했더니, 윈도우 IE 에서 bing 으로 국민건강보험을 검색하면 제일 상단에 나오던 (지금은 맥이라 잘 모르겠네요 ㅋㅋ) 클론코딩 해놓은 게 튀어나오는 사이트의 주인장이셨군요. ㅎㅎㅎ

답글 달기
comment-user-thumbnail
2023년 7월 19일

You ought to contemplate now why us? Everything considered, paying little heed to whether there are an unreasonable number of female https://www.sanakhan.in/bangalore-call-girls.html available in the business, an enormous segment of them are simply looking wallet than giving you their help. This is what makes our free Escort Services in organization stand separated from the rest.

답글 달기
comment-user-thumbnail
2024년 7월 8일

Well, not here! At Delhi Queen, we believe in professionalism and authenticity. We have a well-organized and all-verified gallery of very hot and gorgeous Call Girl in Bangalore along with their genuine photos and authentic phone numbers.

답글 달기