쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기Sangmin Shim영어를 몰라 해외 사이트는 눈팅만 하셨다고요? 내가 만든 라이브러리가 해외에서도 통할 것 같다고요? 오픈소스 프로젝트에 도움만 받아보셨다고요? 해외에서 발표도 해보고 싶으시다고요?
우리나라에는 국내에서만 활동하기에는 너무 아까운 프로젝트와 인재가 많습니다. 하지만 일이 바빠서, 영어를 못해서 시도하지 못하는 수 많은 개발자들을 위해서 좌충우돌 그 흔한 토익 점수도 없는 평범한 개발자의 글로벌 오픈소스 라이브러리 콜리(Collie)를 통한 도전기를 전해 드립니다.
이 시간에는 개발을 잘하는 법도, 영어를 잘하는 법도 없습니다. 대신, 그 모든걸 할 수 있는 용기를 드리겠습니다.
DEVIEW 2013 DAY1 Track3 - 6세션에 발표한 내용 입니다.
http://deview.kr/2013/detail.nhn?topicSeq=16
Deview 2013 - 나는 왜 개발자인데자신이 없을까?Minsuk Lee* 나는 왜 개발자인데자신이 없을까?
초보 개발자들은 다양한 공부를 했으면서도, 정작 개발에는 자신이 없어합니다. 그 이유를 알아보고, 그것을 극복하는 방법을 이야기합니다. 개발자로서 어떤 생각을 하면서, 어떤 자세로 살아야 하는지, 새로운 기술은 어떻게 배워나가야하는지, 자신있어 보이는 선수 개발자는 뭐가 다른지를 설명합니다. 모든 초보 개발자들이 가지고 있는 내면의 자신감을 끌어 올릴 수 있도록 도와주고, 이제 소프트웨어 개발자로 서의 커리어를 시작하는 사람들이 지속가능한 발전과 성공을 할 수 있도록 도와줍니다.
동영상 link: http://serviceapi.nmv.naver.com/flash/convertIframeTag.nhn?vid=8102105A2B82DE6DC96D57AA820458275CD7&outKey=V1210a0ea4d005fd624546a616cd783b464042b6f6db81e78fe926a616cd783b46404&width=720&height=438
[OSS 개발자 포럼] 오픈소스를 활용한 개발자 자기 개발Daniel Juyung Seo2016.10.08 [OSS개발자포럼&국민대학교]Git/Github 입문
- 제목: 오픈소스를 활용한 개발자 자기 개발
- 내용: 오픈소스를 통하여 개발자로서의 실력 향상, 커뮤니케이션 능력 개발, 영어 공부 등을 무료로 할 수 있었던 경험 공유
[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기Daniel Juyung SeoGDG DevFest Seoul 2016 행사에서 발표한 '오픈 소스를 통해 개발 근육 강화하기' 발표 자료
https://festi.kr/festi/gdg-korea-2016-devfest-seoul/
SOSCON 2014: 문서 기반의 오픈소스 기여하기Chang W. DohSamsung OpenSource Conference - Day 2. http://www.soscon.net/
코드가 아닌 문서로 오픈소스에 기여하는 방법을 개인적인 경험으로 정리해보았습니다. 참여하실 분은 언제나 환영합니다. :)
[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기Daniel Juyung SeoGDG DevFest Seoul 2016 행사에서 발표한 '오픈 소스를 통해 개발 근육 강화하기' 발표 자료
https://festi.kr/festi/gdg-korea-2016-devfest-seoul/
SOSCON 2014: 문서 기반의 오픈소스 기여하기Chang W. DohSamsung OpenSource Conference - Day 2. http://www.soscon.net/
코드가 아닌 문서로 오픈소스에 기여하는 방법을 개인적인 경험으로 정리해보았습니다. 참여하실 분은 언제나 환영합니다. :)
Open Source 그리고 git과 github, code reviewMinsuk Lee2015년 여름 정보과학회 학술대회 (KCC) 튜토리얼 자료.
오픈소스에 관한 이야기와
ALM 제목만 보기
GIT, GITHUB 최소한의 사용법 (따라하기)
GITHUB으로 코드 리뷰하기
Software engineer가 되기 위한 여정Aree Oh2020년 서울시에서 주최한 강소기업탐방 프로그램에서 발표한 자료 입니다.
학교를 졸업하고 software engineer로 취직을 하기까지의 여정을 다뤘습니다
1. 개발자가 나에게 맞을지 고민하기 위한 방법
2. 개발자로 취직하기 (이력서/면접 준비 팁)
3. 개발자로 취직한 후 우리가 하는 일
Momenti Seminar - 5 Years of RosettaStoneChris OhkMomenti Seminar에서 진행했던 "하스스톤 시뮬레이터 RosettaStone 개발 5년 간의 기록"의 발표 자료를 공유드립니다. 5년 동안 오픈 소스 프로젝트를 진행하면서 경험했던 일들을 정리하며 어떤 교훈을 얻었는지 생각해보는 시간이었습니다. 많은 분들에게 도움이 되었으면 합니다.
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지Chris OhkGDG Campus Korea에서 개최한 'Daily 만년 Junior들의 이야기 : 델리만주' 밋업에서 발표했던 내용으로 대학원 석사 입학 후부터 오늘날까지 어떤 활동들을 했는지 정리했습니다. 대학원생 분들과 게임 프로그래머 취업을 준비하시는 분들께 많은 도움이 되었으면 합니다.
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...Myeongseok Baek2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한 강연 발표 자료.
아래와 같은 내용이 있음.
• 백발의 개발자
• 행복
• 성장
• 학습
• 동기부여
• 일 잘하는 개발자 / 개발 리더
6. Open source software란?
• 소스코드가 공개 되어 있고, 그것을 이용하고, 수정하고, 재배포
할 수 있는 소프트웨어
• 우리 주변에도 굉장히 많다.
• Android, iOS의 일부, Linux, gcc, vim, node …
• 앞으로 OSS를 이용하지 않고 개발하기는 쉽지 않을 것
• Google, Facebook은 많은 형태의 프로젝트들을 오픈소스로 공개
• Build 2016에서의 Microsoft의 변화
7. (바람직한) OSS의 특징
• 적극적 공개
• 코드 뿐만 아니라 문서와 이슈의 공유
• 커뮤니티
• Mailing list, IRC, user group 등 기여자들이 소통하는 채널이 존재
• 생태계
• 하나의 오픈소스 프로젝트로 가치를 발휘하는 경우도 많지만
• OpenCV
• 다른 오픈소스 프로젝트들과 함께 생태계를 이루는 경우도 많음
• Hadoop eco system, npm, pip…
8. 이 talk에서의 OSS 개발자의 정의
• OSS를 이용할 수 있는 개발자
• OSS에 기여했거나, 기여할 마음이 있는 개발자
• OSS 프로젝트를 운영하는 개발자
• 셋 중에 하나를 만족한다면 OSS 개발자!
9. 우리는 왜 OSS 개발자가 되어야 하는가?
• 봉사정신
• 돈(?)과 명예
• 커리어
• 간지
• 학점
• 배울 것이 많다.
• Printf가 어떻게 구현되어 있는지 알 수 있다.
10. 어떻게 우리는 OSS 개발자가 될 수 있는가?
• OSS user 되기
• OSS contributor 되기
• OSS maintainer 되기
11. OSS user 되기
• OSS를 다운 받고, 설치하고, 실행해본다.
• Build가 은근히 어렵다.
• 자신의 프로젝트에 OSS를 가져다 써본다.
• 코드를 봐야 하는 상황이 발생한다면(자주 발생한다), 열심히
분석해본다.
12. OSS contributor(1)
• 기회(?)를 포착하면 가리지 않고 contribution을 하고, community에
들어간다.
• 좋은 user가 되면 contribution을 할 기회가 생긴다.
• 궁금한 점이 생기면 물어보자
• Mailing list, github issues, gitter
• 개선점을 찾으면 patch를 보내자.
• Mail, github pull request
• 잘 안받아 준다 ㅠㅠ
• 커뮤니티마다 있는 How to contribute or Contribution guide 등을
읽어보자.
13. OSS contributor(2)
• 사용하고 있는 software에 대한 documentation을 하자
• 번역
• 튜토리얼 코드 작성 / 번역
• 오타나 오역의 제보
• 내가 얻은 조언: 남들이 제일 하기 싫어하는 일을 하라.
• 테스트 코드를 작성해라.
• 여러 플랫폼으로 porting 해라.
• 내가 얻은 조언2: 신뢰를 얻어서 community에 들어가라.
• 검증이 되어야 mainline에 영향을 끼치는 개발자가 될 수 있다.
14. OSS maintainer(1)
• 쓸모있고 재밌는 OSS 프로젝트를 만들어서 배포한다.
• 최근에 본 멋진 프로젝트
• Algorithm visualizer(https://github.com/parkjs814/AlgorithmVisualizer)
• slack-invite-automation(https://github.com/outsideris/slack-invite-
automation)
• 생태계에 편입될 수 있는 프로젝트
• Apache zeppelin
• netty
19. Computer graphics
Collision detection
Stroke based rendering
File system
Distributed system
System software
Medical analytics platform
Server monitoring system
Java, python, node.js, Angular.js, MSSQL
Embedded system
HCI
Sensor network
20. Irrlicht: 나의 첫 Open source 사용기
• C++로 구현된 3D Game Rendering Engine.
• 게임 만드는 방법, Computer graphics와 OOP의 기초를 이 엔진에서
배움
• 추후 이 엔진을 따라해서 PDE라는 엔진을 만들었고, 그 엔진을
이용해 게임을 만들어 공모전에서 수상
• 얻은 것
• C++, OOP Design, Computer graphics
• 대학 합격장(Maybe?)
21. Cocos2d-x : 나의 첫 contribution
• 창업 후, cocos2d-x를 개조하고 지원 툴을 만들게 됨.
• Irrlicht와 비슷한 구조와 패턴이 있어 비교적 빠른 시간내에 코드
분석이 가능했음.
• 그 과정에서 별거 아닌 것을 발견하게 되는데…
• 다 Swap function 아시죠?
28. 교훈
• 아주 작은 contribution이라도 하려면 프로젝트 전체를 봐야 한다.
• 또한 그 프로젝트의 배경, 그 프로젝트에 쓰인 기술들을 빠삭하게
알아야 한다.
• 운도 있어야 한다
29. 교훈
• Cocos2d-x는 당시 빠르게 크는 중이었기 때문에 가능했던 것 같음.
• 사실 최근의 프로젝트들은 수학함수에 대한 unit testing 정도는
있기 때문에 이런 일은 잘 발생하지 않는다.
• C/C++, 그리고 시스템에 가까운 소프트웨어일 수록 이런 부분을
찾기가 힘들고, 찾았을 때의 효과는 굉장히 크다.
• Googler가 리눅스의 TCP에서 버그를 찾아 contribution 한 경우
• Google fixes nearly decade-old Linux kernel TCP bug
• https://news.ycombinator.com/item?id=10285151
30. 이것저것
• 먹고 살다보니 유저 입장에서 OSS를 쓸 일이 많았음.
• FUSE, linux kernel, Hadoop eco system, mdpnp, node.js, angular.js …
• 이젠 OSS를 찾아 쓰는게 어느정도 쉬워졌다.
• 어떤 부분을 contribution할지는 아직도 잘 모르겠다.
• 지금은 눈팅하면서 기회를 노리고 있다.
31. Jandy: 나의 본격적인 OSS maintaining
• https://github.com/jandy-team/jandy
• 고등학교 선배의 부름
• 같이 OSS 할래? ㅋ 많이 알려줄게
• 매주 일요일마다 project meetup
• Google hangouts 로 토론
32. 좋은 점
• 새로운 기술을 적용해 볼 수 있다.
• Scala, finatra, Radis…
• 도전적인 시도를 해볼 수 있다.
• Profiler, Graph database
• 보통 노가다를 하는 일이 많은데, 어려운 문제에 대해 생각해보게 됨.
• 성장한다.
• 주말에 마냥 놀지만은 않게 됨
• 다른 사람들에게 자극을 받고, 내 경험을 share하기도…
34. 어떤 준비가 필요할까?
• 좋은 개발자가 되어야 한다.
• 좋은 유저가 되어야 한다.
• 커뮤니티에 참여해야 한다.
35. 좋은 개발자
• 다들 생각은 다를지 몰라도 동의할 수 있는 세가지
• 기본
• 경험
• 스킬
36. 기본
• 좋은 CS background를 갖추자.
• 교수님이 시키는대로 공부 열심히 합시다.
• Algorithms, DB, Network, OS, Architecture, Compiler, Languages, Automata,
AI, Software engineering…
• 생각을 많이 하자.
• 개인적으론 친구들과 자주 하는 technical discussion이 도움이 많이 된다.
• 알고리즘 문제 풀기
• 논문 읽기
37. 경험
• 코딩을 많이 하자.
• 질은 학교에서 양은 혼자서
• 이것저것 공부해보자.
• Today I learned.
• 프로젝트를 시작해서 끝을 내보자.
• 회사 인턴십이 큰 도움이 된다.
38. 스킬
• 공부하기 위한 스킬
• 원서를 읽고 영어로 공부
• 1차 원문을 보는 습관: spec, paper, reference manual…
• 커뮤니티와 공부: stackoverflow(http://stackoverflow.com/users/22656/jon-
skeet)
• 도구를 다루는 기술
• VCS, Editor 등
• Protocol
• Mail 쓰는 법, discussion 할 때 서로 기분 안나쁘게 하는 법, 문서 쓰는 법…
39. 스킬
• 개발 방법론
• Agile (http://agile.egloos.com/)
• Insight 출판사의 좋은 책들.
• Clean code, 마법사 책 등
• 테스팅
• 생산성 향상용 소프트웨어
• Issue tracking system, VCS, CI에 대한 이해
• Slack, Trello, git, github, Travis CI…
• Cloud infrastructure
• AWS
• Microsoft azure
40. 좋은 유저
• 생활에서, 과제를 할 때, 숙제를 할 때 OSS를 써보자.
• 불편함을 느끼고, 그 불편함의 포인트를 나눠보자.
• OSS를 잘 쓰기 위해서 코드를 보자.
• OSS 코드를 처음 보면 이 언어가 내가 쓰던 언어가 맞나, 싶다.
• 사용자 그룹에 놀러가보자!
• 실제 오픈소스 커미터/컨트리뷰터를 만나보자.
• 관심 분야의 코드를 열심히 보자.
41. 커뮤니티(온/오프라인)
• 자신의 관심 분야를 검색해보면 나온다.
• 비단 OSS가 아니어도 커뮤니티는 큰 도움이 된다.
• 교육 프로그램
• 소프트웨어 마에스트로
• 삼성 소프트웨어 멤버십
• D2 Campus seminar
• 개발자 그룹
• 9x년생 개발자 모임
• 나는 프로그래머다 slack
• Onoffmix를 열심히 보자…
42. 커뮤니티(온/오프라인)
• 오픈소스 경진대회
• Google summer of code
• Naver D2 FEST
• 팟캐스트
• 나는 프로그래머다
• Software engineering dailiy
• Blog, github
43. 추천도서
• OSS 관련 문서는 온라인으로 많이 관리가 되고 있으니 읽어보길
바란다.
• Npm의 github 사용은 교과서로 불리기도 한다.
• https://github.com/npm/npm
• 개발 방법론
• 산드로 만쿠소 저, 권오인 역, “소프트웨어 장인”, 길벗
• 테스팅
• Kent Beck, “Test Driven Development By Example”, Addison-Wesley
45. Give and take
• OSS로부터 우린 뭘 얻고, 뭘 줄것인지 생각해보자.
• 현재는 얻는 것이 더 많은 단계. 열심히 얻어보자.
• 줘야 한다는 마인드를 갖고 살자.
• Article: Don’t develop closed code!
• 줘야 하는 순간에 귀찮아 하지 말고 최대한 주자.
47. Q & A
• 어디서부터 contribution을 시작하면 좋을까요?
• 관심분야를 정하는 것이 제일 중요하다고 생각합니다. 자주 사용하는
소프트웨어도 좋구요.
• Tutorial을 쓰거나 번역하거나, 예제를 만들고 기존의 예제에 있는 문제를
제보하는 것도 좋습니다. 테스트 케이스를 써도 좋습니다.
• 모든 코드를 다 보겠다고 생각하지 않으셔도 됩니다. 리눅스 커널은
1400만줄입니다. 어짜피 다 못봅니다.