김로그 개발 잘 하고 싶다

naver d2 campus seminar


naver d2 campus seminar를 다녀와서 느낀점과 주관적인 세미나 정리 포스팅

naver d2 campus seminar를 다녀왔다. 발표자 분들깨서 좋은 내용으로 재밋게 ㅋㅋㅋ 발표해주셔서 좋은 시간을 보낼 수 있었다. 느낀점과 들을 내용을 아주 주관적으로 정리해보고자 한다.

예1

진행된 세션은 다음과 같다.

  • 커뮤니티와 함께한 예비개발자 성장기
  • 개발을 잘 하고 싶어요! 흙흙흙
  • 학교에서 알려주지 않는 오픈 소스 이야기
  • spring Framework 튜토리얼

마지막 세션을 제외한 모든 세션을 들었다. 첫번째 세션은 지각해서 중간부터… 마지막은 약속시간에 늦어서… 최근에 오픈소스나 커뮤니티에 관심이 많아지면서 이것저것 많이 찾아보고 있던 참에 어떻게 하면 오픈소스에 기여를 할 수 있는지, 어떤 사람들이 우리가 사용하는 오픈소스에 커밋을 하는지 궁금했다. 세미나를 통해 궁금증이 많이 해소되었고 발표하시는 분들의 개발자 개그도 재밌어서 즐거운 시간을 보냈다.

이번 세미나에 대한 내용은 naver d2홈페이지에서 볼 수 있다.

커뮤니티와 함께한 예비개발자 성장기

조경수 경희대학교, A2company 인턴

많은 개발자들이 커뮤니티를 통해 문제를 해결하고 지식을 습득합니다. 그리고 누구나 커뮤니티에 들어와 질문을 하고 지식을 얻어갑니다. 커뮤니티를 잘 활용하면 아무나 얻을 수 없는 귀한 경험과 지식을 얻을 수 있습니다. 저는 학생이라는 신분에서 개발자 커뮤니티를 활용하고, 그곳에서 활동했던 경험과 방법에 대한 이야기를 공유하고자 합니다.

커뮤니티와 함께한 예비개발자 성장기- 조성수님 from NAVER D2

보통 개발하기 시작하면 자연스레 자신의 실력을 향상시키고 싶어진다. 코드를 아름답게 작성하고 깊게 되고, 코드를 작성하기 앞서 프로젝트 구조 구상에 대해서 고민하게되고, 내가 마든 서비스를 출시한 이후에는 어떻게 유지를 할까? 등 여러 고민을 하게 된다. 그리고 삽질을 시작하지

아름다운 코드를 작성하기 위해 조성준님(이하 발표자)은 오픈소스에 대한 경험을 이야기 해주셨다. 결론을 미리 말하자면 좋은 코드를 보는것이 개발실력 향상에 도움이 된다. 오픈소스는 많은 개발자들의 토론과 고민을 통해서 만들어지기 때문에 코드에 적힌 주석이나 커밋로그가 자세하게 적혀있고, 복잡한 코드라고 할지라도 코드가 작성됬을 당시의 커밋로그를 읽으면 개발자의 아이디어도 함께 볼 수 있어 공부하는데 많은 도움이 된다고 한다.

“사실 우리가 git같은 버전관리 시스템을 이용해서 커밋을 할 때 bug1 fix 엔터 커밋 하잖아요. 오픈소스는 많은 사람들이 보는 코드이기 때문에 문제가 무엇인지 어떻게 해결하였는지 어디를 수정했는지 다 나와있어서 개발과정에 대한 아이디어도 함께 볼 수 있어요”

잠시 커밋 습관에 대한 반성…

소스 코드를 읽다보면 코드를 구성하고 있는 함수의 내부나 api내부를 보게 된다. 전달된 변수나 객체들이 어떤 과정을 통해서 결과가 나오는지 알 수 있고 그 아름다운 과정을 확인 할 수 있기 때문이다.

오픈소스 코드 분석을 시작하면 방대한 코드의 양과 복잡해 보이는 구조에 겁 먹을 수 있다. 단순히 눈으로 읽기보다는 디버깅 환경을 구축해서 변수들이 어떻게 변화하는지 같이 보면서 분석하면 이해하는데 도움이 된다고 한다. 그리고 시간이 지나면 잊어먹기 쉽기 때문에 다음과 같이 메모를 하면서 분석하면 나중에 자기것으로 만드는데 큰 도움이 된다고 하셨다.

  • Flow Chart 함수동작의 대략적인 내용
  • Component Diagram 모듈간의 연관관계
  • Sequence Diagram 모듈 호출순서

다시 한번 반성의 시간 분석하다가 모르는 부분이 있으면 커뮤니티에 질문을 올렸고 실제로도 커뮤니티의 도움을 많이 받으셨다고 한다. 그리고 이렇게 분석한 내용을 컨퍼런스에서 발표하셨다고 한다.

이후에 발표자가 가장 이갸기하고 싶었고 나도 가장 듣고 싶었던 커뮤니티에 대한 이야기를 본격적으로 해주셨다.

온라인 커뮤니티를 하면 질문에 대한 빠른 답변과 정보를 쉽게 얻을 수 있지만 커뮤니티의 오프라인 모임에 나가게되면 실제 그 분야에서 일하고 있는 사람들의 이야기, 조언, 상담을 받을수 있다고한다. 술과 함께!

발표자는 python을 접한지 한 달쯤에 python korea에서 주최하는 pycon2014에 자원봉사자로 지원하셨고 이것이 오프라인 커뮤니티참여의 처음이라고 하셨다. 커뮤니티에서 주최하는 컨퍼런스에 자원봉사자로 참여하니 커뮤니티를 운영하는 운영진과 친해질 수 있었고, 발표자와도 친해질 수 있어 발표이후에 궁금한것을 직접 물어볼 수 있는 기회도 가질수 있었다고 한다.

이 경험을 시작으로 발표자는 각종 커뮤니티에서 활발하게 활동하고있다고 한다. 활동하고 있는 커뮤니티는 다음과 같다.

그리고 개발 초보자를 위한 커뮤니티도 소개해주셨다.

추천 커뮤니티

느낀점

나처럼 개발을 막 시작했거나 이제 막 재미를 붙여서 개발을 하고 있는 사람들은 계속되는 삽질에 지치게된다. 이때 찾게 되는 것이 관련 커뮤니티인데, 보통 질문을 하거나, 정보를 얻기위해 커뮤니티에 가입하게 된다. 가입하고 어느정도 시간이 지나다보면 커뮤니티 모임이나 오픈소스에 대한 내용에 자연스럽게 노출되는데 초보자의 입장에서는 참여의 벽이 엄청나게 높아보인다. 모임 주제만 봐도 ㄷㄷ하다.

하지만 커뮤니티는 항상 새로운 사람들을 환영하고 또 사람들이 커뮤니티에 조인하길 기대하고 있다고한다. 미리 겁먹을 필요는 없는것 같다.

특히 pyjog커뮤니티는 python을 사용하는 개발자들이 모여서 각자 할일 하면서 누군가 이슈가 생기면 우르르 모여서 도와주고 자연스럽게 토의가 시작된다고 한다. 이런 개발자 문화가 넘나 멋있다.


개발을 잘 하고 싶어요! 흙흙흙

송기선 네이버랩스

개발을 잘 하기 위해서는 ‘대상에 대한 추상화’, ‘자료구조와 알고리즘 설계 능력, ‘컴퓨터 언어에 대한 이해’, ‘컴퓨터 아키텍처에 대한 이해’, ‘문제 파악 능력’ 등이 필요합니다. 왜 이런 것들이 개발 능력에 영향을 미치는지 이야기하고, 각각의 개별 능력을 향상시키기 위해서는 무엇을 하는 것이 좋은지 생각해보는 시간을 가져봅니다.

개발을잘하고싶어요-네이버랩스 송기선님 from NAVER D2

개발을 잘하고 싶어요라는 물음에 가장 많이 듣는 답변은 ‘자료구조알고리즘같은 기본기를 탄탄하게 다져야합니다.’일것이다. 코딩은 할 줄 아는데 문제해결에서 어려움을 겪는 요즘, 기본기의 중요성에대해서 다시 한번 생각해보고 반성하게 된다.

그 누구보다 좀 더 늦게 익히면 어떠한가. 결국에는 알게 되는게 더 중요하다. -슬라이드 8페이지중

발표자(송기선님)께서는 개발을 잘 하기 위해서 좋은 말씀들을 많이 해주셨다. 그중에서 reduction에 대한 이야기가 가장 와닿았다.

보통 우리나라 기업의 성공신화를 이야기할 때 정주영회장의 울산조선소 이야기를 하곤한다.

“그래 한번 해보는거야. 못할 것도 없지. 그까짓 철반으로 만든 큰 덩치의 탱크가 바다에 떠 동력으로 달리는게 배지, 뭐. 배가 별거냐” - 정주영

정주영은 조선업자로 조선소 건설을 생각한 게 아니라 건설업자로서 조선소 건설을 생각했다. (정주영, 한장의 사진으로 조선소를 짓다. 정혁준의 기업가 정신을 찾아서,http://blog.hani.co.kr/june/32504). 정주영 회장은 조선을 조선으로 생각하지 않고 건설로 생각해 물 위에서 건물을 짓는 문제로 생각했던것 같다. 이처럼 새로운 문제를 우리가 알고 있는 문제로 풀면 더 쉽게 풀수 있는데 여기에 필요한것이 도구적 지식이다.

결국 프로그래밍을 이용한 문제 해결이란 우리가 알고있는 문제로 변환 후, 프로그래밍언어에 대한 이해, 자료구조, 알고리즘, 컴퓨터구조지식과 같은 도구적지식을 이용해 해결하는 것이다. 따라서 기본기가 탄탄 할 수록 문제를 더 잘 해결할수 있게 된다. 동시에 문제를 우리가 알고있는 문제로 환원하는 능력도 중요하다.

그럼 개발능력을 향상하려면 어떻게해야 할까? 발표자는 아래 방법으로 개발능력을 향상할 수 있다고 했다. (슬라이드 36)

  • 동료
  • 학과 과정
  • 비학과 과정
  • 연습

같은 관심사를 둔 사람과 함께 지식을 쌓는다면 내가 모자란 부분을 알 수 있고 내가 얼마나 알고 있는지 알수 있다. 그리고 이런 동료들과 함께 한다는것은 큰 재산이라고 생각한다.

학과에서는 이론들을 가르친다. 2학년때 불규칙 신호론을 공부하며 내 인생에 random은 없어!라고 외치고 공부를 소홀히 하였는데 그때 공부한 내용이 지금도 나온다. 2학년의 나에게 명치를 때리고싶다. 그 당시에는 지금 당장 개발하고 있는 라이브러리에 대한 내용이 담긴 문서들을 보았지만 더 오래가는 지식은 학과에서 가르치는 도구적 지식이다.

느낀점

아는것이 중요하다. 그리고 연습하면 잘하게 늘게 된다. 그리고 언어부심에 빠지지 않도록 조심해야한다. 유행은 빠르게 돌고 지금 공부하는게 나중에는 아무도 안 쓸 수 있으니까.


학교에선 알려주지 않는 오픈 소스 이야기

박치완 서울대학교 컴퓨터공학부 데이터마이닝 연구실

몇몇 오픈소스 프로젝트에 기여하는 과정에서 학교에서는 접하기 어려운 것들을 배우고 경험할 수 있었습니다. 오픈소스 프로젝트가 여러 방면에서 주목을 받고 있으나 좀 더 많은 학생들의 참여를 독려하고자 제가 경험한 것을 함께 공유하고자 합니다. 요즘은 Apache Flink라는 프로젝트에서 커미터로 활동하며 틈틈이 기여하고 있습니다.

학교에선 알려주지 않는 오픈소스이야기 - 박치완님 from NAVER D2

학교에서 이론을 중심으로 가르치기 때문에 학생들은 오픈소스 프로젝트에 참여할 기회가 별로 없는데 박치완님은 자신의 오픈소스 프로젝트 참여 경험을 재밌게 풀어주셨다.

대부분의 학교에서는 앞서말한 도구적 지식을 가르친다. 학과의 교육 목표가 이론교육이기 때문 내가 지금사용하고 있고 커뮤니티에서 유행하는 프레임워크를 가르치지 않는다고 투덜댈필요 없다 이론은 매우 중요하니까!

학과 공부를 열심히하면 기초를 잘 다질 수 있지만 구현능력을 항샹시킬 수 있는지는 의문이다.(주관적인 생각)

발표자인 박치완님은 커밋하는 과정에서 다른 개발자들의 도움을 많이 받았고, unit test방법, 주석을 다는 법, 영어 문법까지 향상할 수 있다고 하셨다. github을 통해서 커밋을 하면 다른 commiter들이 test 추가 요청을 했고, 주석을 남길때 영어가 어색하면 친절히 수정을 해줬다고 한다. 이 문장에서는 부정관사 a를 넣어야해

오픈소스 프로젝트는 초보자의 유입을 장려하기 위해 초보자용 이슈를 남겨놓는다고 하니 나도 실력을 쌓아 도전해야겠다는 생각이 들었다.

그래도 나같은 초보개발자들에게는 오픈소스기여는 너무나 다른 세상의 이야기처럼 들린다. 초보자 이슈라고 할지라도 이슈를 파악하는데 어려움을 겪을 수 있고 이슈를 해결하기 위해 해결책을 코드로 구현하는 것도 어려울 수 있다. 이에 발표자는 버그 리포트를 하는 것, 이미 작성된 코드를 잘 정리해주는 것, 오픈소스의 문서를 자기 언어로 번역하는 것, 문서의 오타를 수정하는 것 등이 오픈소스에 기여하는 방법이라고 했다. 많이 쓰이는 오픈소스는 더 많은 사람들에 의해 더 발전 할 수 있기 때문에~~

느낀점

재밌겠당… 그리고 넘나 멋지당…


사실 python korea Facebook 그룹에서 발견한 python 3.5 문서 번역프로젝트에 참여하고있다. 근데 2월 14일부터 번역이 안올라오고있다. ㅠㅠ c-api문서 2개를 번역하면서 python의 interpreter언어 특징을 알 수 있었다.

세미나를 들으면서 높게만 느껴졌던 커뮤니티와 오픈소스는 항상 사람들을 기다리고 있고, 이를 통해 실력을 향상할 수 있음을 발표자들의 경험으로 부터 많이 배웠다. 생각했던 것만큼 커뮤니티 활동과 오픈소스기여가 아주 다른 세상 이야기는 아님을 알 수 있었다.

실제로 X[deca]멋쟁이사자처럼 같은 학생 커뮤니티(익숙한 말로 동아리)를 통해 이전에 비해 실력이 많이 향상 되었다!

또 강연장에 모인 다른 학생들을 보면서 에너지를 얻고 간다.

나도 화이팅,


번외

예1

네이버 그린펙토리에서 약 한블럭 떨어진 곳에 엉터리 생고기라는 고기집이 있다. 인당 만원을 내면 삼겹살과 된장찌게를 무한으로 먹을 수 있는데 고기 맛이 생각보다 좋아서 놀랐다. 정자동 올 때마다 가야징 :) 네이버에 올 일이 많았으면 좋겠다.

위치 경기도 성남시 분당구 서현로180번길 13 서현프라자


reference