한기용
@keeyonghan
Lead 레벨·
SW 엔지니어
수강생
1,069
수강평
71
강의 평점
4.9
멘토링 신청
59
멘토링 리뷰
22
멘토링 평점
5.0
컴퓨터 공학 석사 후 삼성전자에서 시작된 커리어가 친구덕에 실리콘밸리로 이어져 지난 29년간 13개의 다양한 스테이지의 회사를 다녔습니다 (창업, 대기업들, 다수의 스타트업들).
야후: 엔지니어링 디렉터로 검색엔진 개발.
유데미. 데이터팀을 처음 만들어 30명까지 성장. 2021년 10월에 나스닥 상장
삼성전자
...
중간에 11개월 쉬어보기도 했고 본의 아니게 엔젤투자자(Chartmetric, Goodtime.io, Select Star, EO, 비지니스 캔버스, ...), 어드바이저(몰로코, 블라인드, 월급쟁이부자들, ...), 컨설팅(SK텔레콤, 현대카드, 이마트 등등) 등의 역할을 하면서 나만의 브랜드를 만들었습니다. 실패를 실패가 아닌 교훈으로 보는 긍정의 힘과 꾸준함이라는 복리의 힘을 믿습니다.
● 멘토 소개
컴퓨터 공학 석사 후 삼성전자에서 시작된 커리어가 친구덕에 실리콘밸리로 이어져 지난 29년간 13개의 다양한 스테이지의 회사를 다녔습니다 (창업, 대기업들, 다수의 스타트업들). 중간에 11개월 쉬어보기도 했고 본의 아니게 엔젤투자, 어드바이저, 컨설팅 등의 역할을 하면서 나만의 브랜드를 만들었습니다. 실패를 실패가 아닌 교훈으로 보는 긍정의 힘과 꾸준함이라는 복리의 힘을 믿습니다.
- San Jose State Unversity Applied Data Science 과정 겸임 교수 (2024-)
- 엔젤투자자/컨설턴트/어드바이저 (2016 - ): EO, 몰로코, 블라인드, 월급쟁이부자들, 인프랩, SK텔레콤, 현대카드, SK 아카데미
- 그렙 (프로그래머스) CTO (2022 - 2023)
- 유데미 시니어 디렉터 (2014 - 2018). 유데미는 2021년 10월 나스닥 상장
- 폴리보어 시니어 매니저 (2012 - 2014). 폴리보어는 2015년 야후에 인수됨
- 야후 엔지니어링 디렉터 (2004 - 2011)
- 삼성전자 엔지니어 (1995 - 2000)
- 서울대학교 컴퓨터공학과 학사/석사
이 멘토링을 통해 원하는 방향으로 발전하신 분들이 많이 계십니다. 커리어는 결국 자신감이고 전략을 바탕으로 행동으로 옮겼을 때 더 좋은 방향으로 변화하게 되며 생각을 바꾸는 것이 시작입니다.
● 멘토링 대상
- 시니어 개발자나 매니저 등으로 커리어를 발전하고 싶으신 분
- 매니저로 일하는데 어려움을 느끼고 계신 분 (조직 관리, 팀원과의 대화/피드백)
- 미국 등 한국 밖에서 일하는데 관심이 있는 분
● 진행방식
- Google Meet를 이용해서 1:1로 진행합니다. 따라서 Google Meet를 통해 대화를 하는데 문제가 없어야 합니다.
● 준비물
- 간단한 자기 소개 포함 질문 리스트
- 마이크+스피커 혹은 헤드셋 (상호 원활한 커뮤니케이션을 위해 필수)
커리어 관점에서 제일 중요한 포인트는 주기적으로 회고해보고 행동으로 옮기는 것입니다. 여기서 두 가지 생각해볼 포인트는 다음과 같습니다.
- 내 과거를 너무 아쉬워 하지 말고 있는 그대로 받아들이기
- 남이 아닌 나에게 집중하기
감사합니다.
강의
수강평
- 실리콘밸리 리더가 알려주는 빅데이터 처리 (Spark)
- 실리콘밸리 데이터 리더가 알려주는 기초 SQL
- 실리콘밸리 데이터 리더가 알려주는 기초 SQL
게시글
질문&답변
자료 다운로드 하면 링크가 모두 클릭이 안됨
안녕하세요? Jinja template 챕터에서 그런 문제가 있다는 거죠? 강의자료는 PDF 밖에 없고 말씀하신 것처럼 다운로드가 잘 되는데 어떤 문제를 이야기하시는 건지 정확히 모르겠습니다. 어느 부분인지 그림과 함께 클릭 불가한 영역을 보여주시면 도움이 되겠습니다.
- 0
- 2
- 43
질문&답변
48강 강의 여전히 49강과 같은 강의가 나옵니다
이제 제대로된 영상으로 업데이트했습니다. 감사합니다.
- 0
- 3
- 48
질문&답변
강의가 잘못 올라온것이 있네요. => 48강
이제 제대로된 영상으로 업데이트했습니다. 감사합니다.
- 1
- 4
- 104
질문&답변
강의가 잘못 올라온것이 있네요. => 48강
수업노트 내용의 중복 문제라고 착각했는데 다른 분의 질문을 보고 그게 아니라는 걸 이제서야 깨달았습니다. 죄송합니다. postgres-demo.mp4와 postgres.mp4로 올라가 있어서 다른 파일이라 생각했는데 같은 내용인데 이름이 다르게 되어 있네요. 오늘 집에 가는데로 postgres.mp4를 찾아서 업데이트해보도록 하겠습니다. 감사합니다.
- 1
- 4
- 104
질문&답변
48강 강의 여전히 49강과 같은 강의가 나옵니다
그러네요. postgres-demo.mp4와 postgres.mp4로 올라가 있어서 다른 파일이라 생각했는데 같은 내용인데 이름이 다르게 되어 있네요. 오늘 집에 가는데로 postgres.mp4를 찾아서 업데이트해보도록 하겠습니다. 알려주셔서 감사드립니다!
- 0
- 3
- 48
질문&답변
강의 교안 제공 문의
섹션별로 처음 장에 자료를 수업 자료로 올려두었습니다.(사진)도움이 되기를 바랍니다. 혹시 데이터 엔지니어링에 관심이 있다면 제가 만든 Airflow나 Spark 강의도 추천드립니다 🙂
- 1
- 2
- 39
질문&답변
forloop으로 task 정의시 task_id 정해지는 로직
제가 답하기 전에 해결하셨군요. 다행입니다. 또 질문 생기면 편하게 주세요!
- 0
- 3
- 49
질문&답변
Free Edition을 사용하는 방법
맞습니다. 이걸 빨리 올려야 하는데 마침 또 한국에 출장을 왔네요. 주말에 시간내서 하나씩이라도 올려보겠습니다.
- 1
- 1
- 48
질문&답변
DuckDB API 사용시 Connection Error가 발생합니다.
제가 전에 이걸 답글을 안 올렸네요 ㅜㅜ 먼저 죄송하다는 말씀 드리겠습니다. 해당 google colab을 수정했고 도입부에 어떤 변화들이 있었는지 정리했는데 여기 다시 적어보겠습니다:강의 출시 후 변경 사항 (1)DuckDB가 한 세션 내에서 하나보다 많은 세션을 막기 시작했습니다. 그 결과 강의 내에서 SQL extension으로 연결하고 Python API로 연결하는 걸 동시에 사용할 수 없는 불편함이 생겼습니다.한번에 하나씩만 연결하게 내용을 변경했고 SQL extension 사용 전후로 아래 코드를 실행합니다.%sql duckdb:///duckdb.db ... %sql --close duckdb:///duckdb.dbPython API 커넥션의 경우 앞뒤로 다음 코드를 실행합니다.duckdb_con = duckdb.connect("duckdb.db") # ... duckdb_con.close()강의 출시 후 변경 사항 (2)앞서 DuckDB 업그레이드 이외에도 SQLAlchemy 2.x로 업그레이드되면서, 모든 실행이 트랜잭션 안에서 이뤄지면서 실행이 무슨 이유이건 실패하면 명시적으로 ROLLBACK을 해주어야 합니다. 예를 들어 두 개의 SQL(SQL1, SQL2)을 별도 셀로 실행한다면 전에는 SQL1이 실패해도 뒤 SQL2를 실행하는데 문제가 없었습니다만 이제는 SQL1이 실패하면 SQL2를 실행하기 전에 "ROLLBACK;"을 실행해주어야 합니다.SQL1; -- 이게 실패하면 뒤 SQL2를 실행하기 전에 앞서 ROLLBACK을 별도로 실행해주어야함ROLLBACK; SQL2; 문제가 계속되면 알려주세요!
- 1
- 4
- 315
질문&답변
SWAP 문법 활용 이유
Snowflake에서는 다른 SQL 엔진들과 다르게 DDL(Data Definition Language)는 Transaction 대상이 아니라 바로바로 커밋합니다. 그래서 일반적인 Trasnaction을 사용해서 하나의 테이블을 삭제하고 다른 테이블의 이름을 삭제된 테이블로 바꿔주는 것이 불가능합니다. 그래서 어쩔 수 없이 SWAP을 쓴 거구요 (사실 성능도 좋습니다). 다른 SQL 엔진에서는 이야기하신 것처럼 Transaction으로 처리해주시면 됩니다.
- 1
- 2
- 51
블로그
전체 2
2024. 01. 25.
7
비전공 개발자가 흔히 하는 고민
지난 주에 30대 초반에 부트 캠프를 통해 엔지니어로 전직한 분과 이야기해보는 시간이 있었다. 30대 중반이 되어 주니어 개발자로 일하고 있는데 대학을 졸업한지 2-3년차 동료들과 비교하며 힘들어 하고 있었다. 부트캠프부터 치면 3년이 되어가는데 아직도 잘 모르겠다고 하면서 어떻게 살아야할지 길을 잃은 것 같다고 고민을 털어놓았다. 30-40대 경력 전환 주니어 개발자들과 이야기하다보면 항상 나오는 패턴이다.20대로 돌아가면 어떻게 살것 같냐고 했더니 조금 생각하더니 술술 잘 이야기하길래 지금부터 그렇게 살면 된다고 조언해주었다. 앞에 시간이 많기에 (이분은 앞으로 적어도 40년은 일해야한다 ^^) 늦은 것 같지만 늦은 게 아니다. 나이가 주는 강박관념과 과거에 보낸 시간이 물경력이 아닐까 하는 후회, 그러다보니 나보다 어리지만 사실은 그 분야에서 더 오랜 시간을 보낸 사람들과 비교하기 쉽다.개발에 들어온지 3년만에 잘 할 수 있다면 그건 천재다. 오랜 시간이 걸리며 디버깅은 다들 아주 사소한 걸로 몇 시간부터 며칠 보내는 일이 허다하다. 마음이 조급하다보면 회사 일을 열심히 해서 실력을 늘리기 보다는 회사 일은 회사 일이고 업무 시간 밖에서 아직은 너무 어려운 다른 공부를 하며 스트레스 받기 쉽다 (방정식을 배우는 단계에서 미분을 배우려고 하는 듯 한 느낌). 처음은 기본기다.길게 바라보며 나만의 길을 찾고 내가 있는 곳에서 잘 하려고 최선을 다 해보는 것이 커리어를 발전시키는 가장 쉬운 길이다. "나"와 "현재"에 집중해보자.커리어 멘토링에 관심있다면 https://www.inflearn.com/mentors?mentor_id=1823 :)
개발 · 프로그래밍 기타
・
커리어고민
・
비전공개발자
・
물경력

2024. 01. 23.
9
성장하는 조직의 기술 부채는 언제 갚을까?
작은 회사에서 속도에 초점을 맞추고 주니어 중심으로 개발을 하면 당연히 기술 부채가 쌓인다. 워낙 숨 가쁜 일정으로 돌아가다 보니 유닛 테스트를 만드는 건 꿈도 꿀 수 없고 최종 QA(Quality Assurance)도 대충 하고 프로덕션에서 실제 고객들이 테스트 아닌 테스트를 하는 일도 다반사다. 자잘한 버그가 자주 보고되는 것은 물론 가끔 사고도 터지며, 이런 기술 부채로 인해 생긴 누더기 같은 코드로 인해 새로운 기능 개발도 지연되기 시작한다. 그렇다고 내일도 살아있을지 아무도 모르는 작은 회사에서 항상 깔끔하고 완벽하게 테스트된 코드만 지향하거나 무모하게 새로운 프레임워크를 사용해 볼 수도 없는 노릇이다. 시작하는 단계의 스타트업이 빠른 속도와 무결점 중 꼭 하나만 선택해야 한다면 속도를 선택하는 편이 유리하다는 게 내 생각이다. 그 대신 아래의 내용을 참고하면 돈이 더 생기고 더 경험 있는 사람을 뽑기 전까지 리스크를 최소화할 수 있을 것이다. 어느 시점부터는 슬슬 사고의 빈도가 늘며 정도도 심해지기 시작할 때 그 때부터는 아래를 고민해보는 것이 좋은 듯 하다.서비스 모니터링 프로세스를 만든다. 서비스에 문제가 생기면 빨리 인지하고 해결하는데 초점을 맞추는 것이다. 이 것도 상당한 노력과 시간을 필요로 할 수 있는데 기술 부채를 많이 안고 가는 상황에서 모니터링에 대한 노력을 먼저 기울이는 것이 맞다고 본다. 어떤 지표를 바탕으로 서비스의 안정성을 측정할 것인지 그리고 서비스에 문제가 생겼을 경우 어떻게 escalate하고 문제해결을 할지 점진적으로 개선해가며 프로세스를 만드는 것이다. 또한 사고의 심각성에 따라 재발을 막을 방법을 찾아봐야 하는데 이건 뒤 문단에서 이어서 더 이야기해보겠다. 2. 매주 엔지니어링 미팅 등에서 지난 한 주간의 버그와 사고를 리뷰하고 이유를 파악한다. 유닛 테스트 코드를 붙이지는 못하고 QA를 충분히 하지 못하더라도, 이미 발견된 버그와 사고가 재발하는 것을 방지하기 위한 테스트는 붙이는 것이 필요하다고 본다. 서비스 모니터링 프로세스가 어느 정도 자리잡혀있다면 사고 리뷰는 상대적으로는 쉬워진다. 만일 버그와 사고의 빈도가 점점 높아진다면 새로운 기능 개발뿐 아니라 기존 코드의 리팩토링에도 시간을 써야 한다. 유데미 시절 데이터 엔지니어링 팀은 이슈가 늘어나면서 그러다가 대형 사고를 한번 겪고 난 뒤 최대 40%의 시간을 리팩토링에 할애했다. 3. 훌륭한 개발자는 자신이 만든 결과물이 실제 사용자들에 의해 어떻게 사용되는지 관심이 많고 실제 사용자의 피드백에 귀를 기울이는 사람이다. ‘개발 다 했으니 내 업무는 끝!’이 아니라 어떻게 쓰이는지 보고 개선하려는 의지가 있다는 말이다. 인정받는 개발자 혹은 좋은 개발 팀의 매니저가 되고 싶다면, CS/CX 팀과의 협업 채널을 만들고 주기적인 미팅을 통해 고객의 소리를 들어보고 사람이 되자. SDD(Support Driven Development)라는 말을 들어봤는가? Y Combinator 스타트업 스쿨에서 강조하는 원칙 중의 하나이다. 몇 가지 상대적으로 쉽게 붙여볼 수 있는 중요한 성능 모니터링이 있는데 첫 번째는 백엔드 데이터베이스의 오래 걸리는 쿼리를 모니터링하고 문제 되는 부분을 찾아 미리 최적화하는 것이고 두 번째는 서비스 홈페이지나 중요 API의 실행시간 (latency) 모니터링을 해보는 것이다. 이를 기술 부채를 해결하기 위해 단기적 관점에서 해볼 수 있는 일이다. 물론 위와 같은 방법을 동원해도 사고는 터진다. 그중 몇 건은 대형 사고일지도 모른다. 그럴 때 중요한 것은 사고를 바라보는 경영진의 관점인데, 특정인이나 팀을 향해 손가락질하기보다는 사고 경위서를 작성해서 사고의 원인을 이해하고 재발 방지 대책을 세운 뒤 사내에 공유하는 과정에 집중해야 한다. 여기서 포인트는 경위서 작성 자체가 아니라, 밝혀진 문제의 재발을 막기 위한 조치들이 경위서의 내용에 포함되고 이런 조치들이 실제로 구현되어야 한다는 점이다. 온라인 서비스에서 사고는 언제 일어나느냐의 문제지 피해갈 수는 없다. 회사가 망할 정도의 사고만 아니라면 조직 구성원 모두가 기술 부채 등의 다양한 이슈를 체감하고 이를 줄이기 위해 노력할 수 있는 기회가 된다는 사실을 잊지 말자. 모든 위기는 기회가 될 수 있다. 모든 사람들이 기술 부채 문제를 체감하는 회사가 망할지 않을 정도의 대형 사고를 내가 사랑하는 이유다 🙂 What doesn’t kill you makes you stronger!
개발 · 프로그래밍 기타
・
기술부채
・
사고경위서
・
SDD







