"손코딩뇌컴파일눈디버깅" 모임을 소개합니다.
백문이 불여일런, 트라이얼앤에러(Trial and Error) 식의 몹쓸 교육을 받아 온 개발자들이 코딩하기 전에 신중하고 꼼꼼하게 생각해보기란 쉽지 않습니다.
개발 시간 중 디버깅 시간이 절반 이상을 차지하고 있는 실정에 버그를 줄이기 위해 TDD니 유닛테스트니 많은 방법들이 개발되고 있지만 가장 일차적으로 중요한 것은 개발자들이 꼼꼼히 따져보는 것이 아니겠는지요?
미국의 선진 SW회사들은 이미 화이트보드에 PS문제를 푸는 것을 인터뷰 방식으로 채택하고 있습니다. 이는 이와 같은 풀이 방식이 개발자들의 기본 역량을 측정하기에 알맞은 지표라는 것이고, 개발자들이 기본적으로 갖춰야 할 역량이기도 하다는 것 입니다.
또한 자신의 생각을 명확하게 정리하고 다른 사람이 이해할 수 있도록 전달하는 Communication Skill 도 개발자가 갖춰야 할 역량 중 하나 입니다. 알고리즘을 어떻게 구현할 것인가를 팀원들과 소통하면서 자연스럽게 생각을 정리하고 전달하는 연습도 할 수 있습니다.
컴퓨터에 앉아 코딩하기 전 펜과 종이를 들고 눈과 머리와 손을 굴려 보시는 것은 어떠신지요??
"손코딩뇌컴파일눈디버깅" 모임을 소개합니다.
백문이 불여일런, 트라이얼앤에러(Trial and Error) 식의 몹쓸 교육을 받아 온 개발자들이 코딩하기 전에 신중하고 꼼꼼하게 생각해보기란 쉽지 않습니다.
개발 시간 중 디버깅 시간이 절반 이상을 차지하고 있는 실정에 버그를 줄이기 위해 TDD니 유닛테스트니 많은 방법들이 개발되고 있지만 가장 일차적으로 중요한 것은 개발자들이 꼼꼼히 따져보는 것이 아니겠는지요?
미국의 선진 SW회사들은 이미 화이트보드에 PS문제를 푸는 것을 인터뷰 방식으로 채택하고 있습니다. 이는 이와 같은 풀이 방식이 개발자들의 기본 역량을 측정하기에 알맞은 지표라는 것이고, 개발자들이 기본적으로 갖춰야 할 역량이기도 하다는 것 입니다.
또한 자신의 생각을 명확하게 정리하고 다른 사람이 이해할 수 있도록 전달하는 Communication Skill 도 개발자가 갖춰야 할 역량 중 하나 입니다. 알고리즘을 어떻게 구현할 것인가를 팀원들과 소통하면서 자연스럽게 생각을 정리하고 전달하는 연습도 할 수 있습니다.
컴퓨터에 앉아 코딩하기 전 펜과 종이를 들고 눈과 머리와 손을 굴려 보시는 것은 어떠신지요??
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
서비스 런칭을 위해 라이온하트와 카카오게임즈가 어떻게 최적 성능의 인스턴스를 선택하고, Windows 운영 체제를 최적화하며, 왜 Amazon Aurora를 기본 데이터베이스로 채택하였는지를 설명합니다. 또한, 출시부터 운영까지의 과정에서 MMORPG가 어떻게 AWS 상에서 설계되고, 게임 서버 성능을 극대할 수 있었는지에 대해 전달해드립니다.
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
2018. 11. 03 'FEConf 2018' 발표자료입니다.
---
처음으로 프론트엔드 프로젝트에 (유닛)테스트코드를 작성해보며 느낀 경험을 공유합니다. 어떤 관점으로 접근 했는지부터, 테스트코드 작성을 하며 만난 고민과 해결책은 어떤 방식으로 풀어 냈는지 코드와 함께 다뤄보려 합니다. 저는 테스트 숙련자가 아니지만, 저와 비슷한 위치에서 테스트에 입문하시려는 분들께 어떻게 테스트에 입문하고 코드를 작성했는지에 대해서 구체적인 경험을 공유하는 것도 의미있을 거라 생각했습니다. 제가 드릴 얘기들이 정답이 아닐 수 있지만, 더 좋은 방향을 고민하면서 같이 생각해볼 수 있다면 좋겠습니다.
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
서비스 런칭을 위해 라이온하트와 카카오게임즈가 어떻게 최적 성능의 인스턴스를 선택하고, Windows 운영 체제를 최적화하며, 왜 Amazon Aurora를 기본 데이터베이스로 채택하였는지를 설명합니다. 또한, 출시부터 운영까지의 과정에서 MMORPG가 어떻게 AWS 상에서 설계되고, 게임 서버 성능을 극대할 수 있었는지에 대해 전달해드립니다.
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
2018. 11. 03 'FEConf 2018' 발표자료입니다.
---
처음으로 프론트엔드 프로젝트에 (유닛)테스트코드를 작성해보며 느낀 경험을 공유합니다. 어떤 관점으로 접근 했는지부터, 테스트코드 작성을 하며 만난 고민과 해결책은 어떤 방식으로 풀어 냈는지 코드와 함께 다뤄보려 합니다. 저는 테스트 숙련자가 아니지만, 저와 비슷한 위치에서 테스트에 입문하시려는 분들께 어떻게 테스트에 입문하고 코드를 작성했는지에 대해서 구체적인 경험을 공유하는 것도 의미있을 거라 생각했습니다. 제가 드릴 얘기들이 정답이 아닐 수 있지만, 더 좋은 방향을 고민하면서 같이 생각해볼 수 있다면 좋겠습니다.
2020년 서울시에서 주최한 강소기업탐방 프로그램에서 발표한 자료 입니다.
학교를 졸업하고 software engineer로 취직을 하기까지의 여정을 다뤘습니다
1. 개발자가 나에게 맞을지 고민하기 위한 방법
2. 개발자로 취직하기 (이력서/면접 준비 팁)
3. 개발자로 취직한 후 우리가 하는 일
RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어양 한빛
Golang committer 염산악이 공개하는 코딩 인터뷰 성공 전략
[발표자소개]
실리콘밸리에 거주하는 개발자, Go Lang 커미터로 활동하며 『디스커버리 Go』(2016)』를 출간한 바 있다. 『 관심 분야는 자동화인데, 그중에서도 컴퓨터로 하기 가장 적합한 인간 지능의 자동화다. 무엇이든 비틀어보는 경향이 있고 소시민적 삶을 살면서 작은 고정관념을 깨보는 것이 취미다. 현재 인터넷 검색 관련 프로젝트들을 하고 있다.
많은 수의 PS러들이 개발자로 취업을 원하고, 개발자로 근무하고 있습니다.
따라서 여러 회사의 개발자 채용 프로세스를 둘러보고,
각 채용 프로세스별로 PS가 어떤 식으로 작용하는 지에 대하여 알아볼 예정입니다.
### 백발백준 (BOJ dlstj0923)
코포 민트/솔브드 플레에 불과한 가성비 최악의 15년차 PS러 이면서,
8번째 회사를 신입으로 들어간 괴상한 경력의 소유자
왜 프로그래머가 가독성을 향상시키는 수련을 평생 해야 하는지를 알려준다. 단지 상투적인 이유만 들먹이는 게 아니다. 좋은 가독성은 프로그래머를 프로로 만들어주고, 큰 기쁨을 주며, 성장할 기회를 준다고 역설한다. 가독성을 향상시키려면 눈에 보이는 것들부터 신경을 써야 하며, 코드 자체가 프로그램을 설명해야 하며, 흐름을 단순화하고 주석을 잘 쓰고 퇴고해야 한다는 간단한 원칙부터 지켜나가야 한다.
Similar to 코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월) (20)
4. 채용 프로세스*
* 회사별로 차이가 있을 수 있음
서류 접수
서류 평가
or 전화 인터뷰
코딩 테스트
and/or 과제
직무 역량
인터뷰
문화 적합성
인터뷰
채용
스크리닝screening
채용과 면접은 리소스를 많이 투여하는 일이기 때문에
일정 수준의 허들을 넘는 지원자만 인터뷰로 진행합니다
5. 일정 수준의 허들
전공 지식 + 문제해결력 + 구현력을 정량평가하기 좋아서
코딩 테스트를 1차 허들으로 많이 사용합니다 * 자료구조, 알고리즘 설계 한정
전공 지식* 도메인 지식
협업 능력
커뮤니케이션 능력 문제해결력 구현력
성장가능
기업이 지원자가 개발자로서 기대하는 역량
7. §0 어디부터 시작해야 하나요?
프로그래밍 언어 정복
→ 빈출 알고리즘 공부
→ 문제해결 연습
8. C++을 하라고 하던데
1.
2.
3.
직무와 관련된 언어
자신있는 언어
쉬운 언어
아직 언어를 못 정했다면, 회사가 허용하는 언어 중
C++은 같은 알고리즘을 구현했을 때 실행 시간이 가장 빠르고 메모리 사용량이 가장 적으며,
코딩 테스트가 프로그래밍 대회와 비슷한 점이 많아 공부할 리소스가 많다는 장점이 있지만,
일반적으로 C++ 이외의 언어에서 문제의 해결가능성을 보장하지 않는 알고리즘 대회들과는 다르게
코딩 테스트는 실행 시간과 메모리 사용량 제한 등에 관대하므로 사용하고 싶은 언어를 사용해도 무방합니다.
중 하나를 골라 봅시다
9. 회사가 허용하는 언어
채용공고를 확인합시다!
S전자 소프트웨어 역량테스트
K사 블라인드 공채
G사 Online Challenge
Python, C++, Java는 대부분의 기업에서 허용하고 있습니다
10. 직무와 관련된 언어
채용공고를 확인합시다!
N사 게임 클라이언트 엔지니어
K사 채용연계형 인턴십 2022
D마켓 프론트엔드 엔지니어 T증권 DevOps 엔지니어
11. 개인적인 추천
고른 언어의 문법과 자료구조에 익숙해질 때까지 연습합시다!
Python
Java
C++
입문하기 쉬움 / 현업에서 자주 쓰임
현업에서 자주 쓰임
가장 효율적
+ 이외 자신이 사용하기 편한 언어
12. §1 프로그래밍 언어 정복 + 문제해결 환경 적응하기
코드업 기초 100제 - codeup.kr
100문제 · C, C++, Java, Python 한정
백준 단계별로 풀어보기 - acmicpc.net/step
9단계까지 76문제
13. §1 프로그래밍 언어 정복 + 문제해결 환경 적응하기
solved.ac CLASS 1 - solved.ac/class/1
36문제 · 푼 사람 수 내림차순 정렬 추천
14. 정답을 보고 푸는 걸 두려워하지 마세요!
새로운 걸 배우는 경우 혼자 고민하는 것보다 빠르고 효과적입니다
§1 프로그래밍 언어 정복 + 문제해결 환경 적응하기
문제를 풀다 막힌다면…
코드업 게시판 활용
백준 질문 검색 활용
구글 검색
15. §2 빈출 알고리즘/자료구조
#구현* #문자열 #그래프
* ‘구현’은 알고리즘은 아니지만 문제 분류로서는 빈출
**K사 제외하고 기초 수준만
#정렬 #브루트포스 #그리디 #집합과 맵
#최단 거리 #DP** #힙 #스택 #큐
16. 시간 복잡도와 공간 복잡도 계산
컴퓨터는 간단한 동작을 1초에 1억 번 한다
수 하나는 4B ~ 8B다
n = 5,000이네, 그럼 O(n²) 정도는 돌겠구나!
n = 200,000이네, 그럼 O(n log n)이나 이보다 빠른 알고리즘을 짜야겠구나.
int a[10000000]은 40,000,000B = 40MB
int a[5000][5000]은 100,000,000B = 100MB
알고리즘과 자료구조의 시간 복잡도와 공간 복잡도를 기억하도록 합시다
문제의 제한을 보고 쓸 수 있는 알고리즘과 쓸 수 없는 알고리즘을 구분하는 연습을 합시다
23. 랜덤 디펜스
수준에 맞는 아무 문제나 잡고 풀어봅시다
→ solved.ac 검색: -@$me lang:ko solved:100.. *s5..g4
내
가
푼
문
제
를
제
외
하
고
한
국
어
문
제
들
중
에
1
0
0
명
이
상
이
해
결
한
문
제
들
중
에
실
버
5
에
서
골
드
4
난
이
도
의
문
제
들
만
→ 백준 고급 검색 이용해 보기
→ 프로그래머스에서 레벨 2 or 3만 필터 걸고 안 푼 문제 중 아무 문제나 풀어 보기
26. +40분
문
제
오
픈
+
2
0
분
+
4
0
분
+
6
0
분
+
8
0
분
✓
✓
✓
문제를 잘못 읽음
문제를 침착하게 다시 읽어 봅시다
구현이 너무 복잡함
함수를 많이 써 가면서 코드를 깔끔하게 짜 봅시다
예외 케이스 미고려
n = 1인 경우라던가, 배열 인덱스를 초과하는
경우가 있는지 꼼꼼히 확인합시다
틀렸다: 틀렸거나 출력 초과, 런타임 에러, 간혹 시간 혹은 메모리 초과
→ 어떤 상황에서 틀리는지 생각해 보고 틀리는 예제를 직접 만들어 봅시다
✓ 시간 혹은 메모리 초과
무한 루프가 돈다거나, 큐나 스택 같은 자료구조에
원소가 무한히 많이 들어가지는 않는지 확인합시다
이런 경우 로컬에서 작은 데이터셋을 돌려도
시간 초과가 발생할 수 있다는 점에서
맞았지만 비효율적인 경우와는 다릅니다
27. +40분
문
제
오
픈
+
2
0
분
+
4
0
분
+
6
0
분
+
8
0
분
틀렸을 리 없는데 비효율적이다: 시간 혹은 메모리 초과
→ 알고 있는 다른 접근법을 생각해 봅시다
여전히 전혀 모르겠다
→ 이 문제는 놓아주고, 다른 풀이들을 참고해 봅시다
나중에...
✓
✓
일주일 정도 후에 문제를 혼자 힘으로 다시 풀어보기
비슷한 분류의 문제들을 풀면서 연습하기
‘이건 이렇게 풀면 되는구나’를 얻어가는 데 의미를 둡시다
뜻밖의 좋은 인사이트를 얻을 수도 있어요!
나중에...
✓
✓
혹시 까먹었다면, 첫 번째 접근법에서
사용한 알고리즘과 자료구조의 복잡도 숙지하기
언어 사용이 아직 미숙하다면,
[<x> 언어 최적화 코테] 같은 걸 검색해서
적용해 보기
29. 회고: 문제를 풀고 나서
문
제
오
픈
+
2
0
분
+
4
0
분
+
6
0
분
+
8
0
분
얻어갈 수 있으면 얻어갑시다:
✓
✓
이런 상황에서 이런 알고리즘/자료구조/테크닉을 쓰는구나
이런 상황에서 이렇게 하면 틀리는구나/비효율적이구나
블로그 글 쓰기 등의 방식으로 기록하기:
기록하는 게 즐거운 경우라면 시도해 봅시다
딱히 그렇지 않다면 기록하는 게 귀찮아서 문제를 안 풀게 될지도…
30. 회고: 문제를 풀고 나서
문
제
오
픈
+
2
0
분
+
4
0
분
+
6
0
분
+
8
0
분
다른 사람들의 코드를 마구 참고합시다:
✓
✓
베끼는 것과 참고하는 것은 다릅니다
생각하지도 못한 인사이트를 얻을 수도 있습니다
’백준 23721번’, ‘프로그래머스 레벨2 탑 풀이’과 같은 식으로 검색해 봅시다
백준을 쓰는 경우 ‘맞힌 사람’ 탭에서 공개된 코드들을 볼 수 있습니다: 언어 필터를 걸 수도 있어요
31. §4 이걸 언제까지?
solved.ac 어려운 실버 ~ 쉬운 골드
프로그래머스 레벨 3
무난하게 풀 수 있을 때까지*
* 준비하는 기업에 따라 다를 수 있음
32. 난이도 보는 방법
solved.ac 브론즈 실버 골드 플래티넘
프로그래머스* Lv. 1 Lv. 2 Lv. 3 Lv. 4
* 대략적인 비교임
SWEA(삼성)* D1~D3 D4~D5 D6+
LeetCode* Easy Medium Hard
참고 자료로만 활용해 주세요
Codeforces* *800 *1200 *1400 *1600 *1900 *2100
33. 최근 코딩 테스트 난이도 경향
추측치 / 참고 자료로만 활용해 주세요
solved.ac
B S G P
프로그래머스 (대략)
1 2 3 4
K사 1차(2021), 7문제
제일 쉬운 난이도 제일 어려운 난이도
합격을 가른 문제의 난이도 (추정)
K사 1차(2022), 7문제
N사 기술직군(2021 상반기), 4문제*
* 코딩 테스트 이외 서류에 의한 영향을 많이 받음
L사(2021 하반기), 6문제
S은행 ICT(2021), 4문제 + SQL 1문제
T사(2022), 3문제
C엔터 IT개발(2021), 2문제
37. (프로세스에 있다면) 열심히 해야지 방법이 없습니다
보통 이직/경력직 면접이거나, 지원자에 대한 높은 스탠다드를 두는 회사들에서
협업 능력, 코딩 스타일, 도메인 지식 등 코딩 테스트로 물어볼 수 없는 것들을 물어보기 위해 등장합니다*
전공 지식* 도메인 지식
협업 능력
커뮤니케이션 능력 문제해결력 구현력
성장가능
* 역시 채용공고, 특히 채용 프로세스를 잘 확인합시다
39. 웬만하면 알아두면 좋은 것들
Git - 버전 컨트롤 소프트웨어 (협업 툴)
GitHub - Git 저장소
자신의 개발 분야도메인
에 대한 기본적인 지식
굳이 과제 준비가 아니더라도 써 본 적 있다고 하면
면접관들의 눈이 초롱초롱해질 만한 것들
40. §6 여담
코딩 테스트 과몰입 금지!
→
→
코딩 테스트는 개발자 채용의 첫 허들일 뿐이고,
코딩 테스트에서 얼마나 잘하는가는 그 사람이
개발자로서 얼마나 훌륭한가를 말해주지는 않습니다
(반대로 알고리즘 공부가 어렵다고 너무 스트레스 받을 필요는 없습니다)
solved.ac 티어와 레이팅은 기획 의도부터가
실력을 정확히 나타내기 위한 지표보다는 학습자의 동기 부여를 위함이었습니다
41. §6 여담
문제 푸는 게 재밌어서 과몰입을 해버렸어요, 어떻게 하나요?
→ 프로그래밍 대회에 참가해 봅시다!
Kick Start
G사 채용연계형 대회
codingcompetitions.withgoogle.com/kickstart
ICPC
국제 대학생 프로그래밍 경시대회 (3인 팀)
icpckorea.org
UCPC
전국 대학생 프로그래밍 대회 동아리 연합 (3인 팀)
ucpc.me
SCPC
S리서치 대학생 프로그래밍 대회
research.samsung.com/scpc
Codeforces
ELO 레이팅이 있는 프로그래밍 대회
codeforces.com
43. §6 여담
solved.ac는 코딩 테스트를 준비하는 분들과
알고리즘 문제해결을 사랑하는 모두가
더욱 더 재미있게 문제를 풀 수 있도록 고심하고 있습니다!
사이트를 이용하시면서 불편하신 점이나
추가하면 좋을 만한 기능이 있다면 언제든 부담없이
shift@solved.ac로 제안해 주세요!