15. 동아리 vs 커뮤니티
개발자 커뮤니티가 가지고 있는 다양한 경험이 예비개발자에게 끼치는 영향
능력치
시간
동아리를 통해
성장한 구간
정체기
커뮤니티에
가본 순간
16. 왜 동아리로만 성장하기 어려운가?
• 문제 해결의 방식
• 회피
• 일단 돌아가게만 만들자
• 시연때는 잘 돌아가는 케이스만.
• 견고함 보단 기능 구현을 우선
• 우리의 혁신적인 아이디어를 빨리 만들어야해
• 주먹구구식 개발
• 반복된 맨땅의 해딩으로 심각한 두통
17. 어떤 경험이 예비개발자의 성장을 촉진시키는가?
• 선배 개발자의 풍부한 개발 경험
우리의 고민의 답을 명쾌하게 내려주신다.
구글링보다 더 자세한 답변
• 진로에 대한 이야기
미래를 위해 어떻게 공부해야하는가?
• 현업에 대한 이야기
학생이니까 알려준다. 이게 현업이야.
19. 대학생들의 개발 경험
과제 해커톤 공모전
• 대부분의 대학생들은 위 3가지로 개발 경험을 쌓게됩니다.
• 과제를 통해 이론을 구현하는 능력을 키울 수 있습니다.
• 해커톤, 공모전을 통해 내손으로 직접 서비스를 만들어 볼 수 있습니다.
• 하지만 대부분 1회성 코드들입니다.
20. 대학생들의 개발 경험 그리고 고민
• 그래도 이왕 코드를 만들어내는거 제대로 만들어보고 싶다.
• 코드 구조를 어떻게 잡아야할까?
OOP를 배웠으니 적용해보고 싶은데..
디자인 패턴도 배웠는데..
• 서비스를 한 이후 버그를 어떻게 잡아낼까?
서비스가 되면 이미 내손을 떠난 자식.
사고치면 어떻게 고치지?
21. 고민 1. 예쁜 코드 만들기
• 분명 내가 짠 코드인데 왜이리 더러울까?
• OOP 도 배웠고, 디자인 패턴도 배웠다.
• 적용해볼까?
• ( 털썩 )
22. 고민 1. 예쁜 코드 만들기
코드를 예쁘게 만들고
싶어요!
오픈소스를 한번
분석해보세요
23. 고민 1. 예쁜 코드 만들기
• 오픈소스는 훌륭한 개발자들이 만든 금덩이 코드
• 그 안에 온갖 프로그래밍 기법이 들어가 있다.
• 이론으로만 배웠던 내용이 실제 눈으로 구성되어 있는
모습을 볼 수 있다.
34. 디버깅 환경 구축 - Eclipse
• maven 을 이용하여 프로젝트를 구축한 경우
• 이클립스에서 자동으로 source code를 attach 시켜준다.
• 만약 자동으로 attach 가 안되면, 아래 사진처럼 pom 설정
35. 디버깅 환경 구축 - eclipse
• 독립적인 시스템일 경우, IDE에서의 디버깅 가이드
문서가 존재한다
참조 : https://wiki.apache.org/cassandra/RunningCassandraInEclipse
36. 디버깅 환경 구축 – 기타 환경
• Python
• pip install 시, 소스코드가 설치되므로 크게 신경쓰지 않아도
된다.
• 리눅스 환경의 C/C++
• gcc –g 로 디버그 심볼을 붙인다.
• gdb로 분석하거나, eclipse 로 원격 디버깅을 설정한다.
• printf 로 로그를 찍는다.
• 윈도우 환경의 C/C++
• 프로젝트 설정에서 참조설정에 dll 의 소스코드 위치 명시
• https://msdn.microsoft.com/library/4c8f14c9.aspx
• 기타 각 언어에 맞는 디버깅 환경을 찾아서 구축
37. 오픈소스 분석 방법에 대한 노하우
API 코드 흐름을 따라가면서 분석
API 코드를 따라가다보면 어떤 파일들이 있고
어떤 용도로 쓰이는지 쉽게 파악할 수 있다
38. API 코드 흐름 따라가기
• 분석할 라이브러리를 사용하는 예제코드를 만든다.
• 처음에는 “정의 따라가기” 기능을 통해 API 내부
코드를 눈으로 분석한다.
• 눈으로 어느정도 분석이 끝나면, 실제로 실행하면서
변수값을 확인하면서 정확한 동작을 분석한다.
39. API 코드 흐름 따라가기
• 분석 시 유의할 점은, 모든 내용을 완벽히 이해하려
하지 말자 (나중에 다 알게된다)
‘이런 애들을 초기화하는구나 ‘로넘어가면 마음이 편하다.
40. 오픈소스 분석 방법에 대한 노하우
Diagram 을 그리면서 분석 과정을 메모
Component Diagram
41. Diagram을 그리면서 분석 과정 메모
• 우리들의 뇌는 기억력이 좋지 않다.
• 먼저 API 함수 자체의 Flow Chart 를 그린다.
• 이 함수가 대략적으로 어떤 동작을 하는지 알 수 있다.
• if/else 를 너무 상세히 그리지 말자
• API 함수에서 다른 모듈을 사용한다면, 각 모듈간
연관관계를 그리자 (Component Diagram)
• 마지막으로 Sequence Diagram 으로 모듈 간 호출
순서를 정리하자
42. 오픈소스 분석 방법에 대한 노하우
개발과정을 역추적
• 내가 지금 보는 코드는 수 많은 고민과 토론을 통해
탄생
• 코드만 봐서는 이해가 안되는 부분이 존재한다.
• 커밋로그, 코드리뷰 기록을 통해 개발 과정을
역추적하여 역사를 되짚어본다.
43. 개발 과정을 역추적
잘 운영되는 오픈소스에는 Commit 메세지가 아주 자세하게 적혀있다.
57. 현업에 대한 이야기
• 학생들은 경험할 수 없는 현업의 생생한 이야기
• 원하는 직업의 현실적인 삶의 이야기를 들을 수 있다.
• 현업으로 가기 전, 배우면 좋은 지식들
• Git의 다양한 기능
• Git Branch 전략
• 테스트 코드 작성 (TDD)
• 다양한 개발 방법론
• 등..
58. 커리어에 대한 조언
• 무엇을 좀 더 심화적으로 공부해야하는지?
• 최신의 트랜드는 무엇인지?
• 미래에는 어떻게 될 것인지?
• 이를 위해 나는 무엇을 준비해야하는가?
63. Naver D2 커뮤니티 지원
https://developers.naver.com/d2/community
64. 개발자 커뮤니티
• Python Korea
• 한국 러스트 사용자 그룹
• 라 스칼라 코딩단
• C++ Korea
• Golang Korea
언어
• 인공지능 스터디
• 손고리즘
• 바벨피쉬
• IAMROOT
이론
65. 개발자 커뮤니티
• 한국 스프링 사용자 모임
• Flask Korea
• Django
• OSXDEV
• OpenStack Korea Group
• Korea Docker User Group
• 우분투한국커뮤니티
• 안드로이드 팁!팁!팁
• 한국 MySQL 사용자그룹
프레임
워크
플랫폼