기업(들) 혹은 전담 프로젝트 팀 vs. 개인 혹은 작은 팀. 2. 얼마나 성숙한 프로젝트인가? ◦ Active development vs. Maintenance. 3. 배경 지식을 얼마나 요구하는가? ◦ 병렬 처리? 기계 학습? 블록체인? 4. 가장 중요한 것: 얼마나 끌리는가?
누가 이끌고 있는가? - Yahoo, Apache 재단을 중심으로 한 많은 기업들 (X) b. 얼마나 성숙한 프로젝트인가? - Active Development는 이미 끝. Maintenance Mode. (X) c. 배경 지식을 얼마나 요구하는가? - 병렬 처리에 대한 배경 지식 필요. (O) d. 얼마나 끌리는가? - 매우 많이. (O) • 안티패턴의 전형. a. 개고생… b. 착한 초심자는 따라하지 마세요.
상대적으로 작은 프로젝트" ◦ Spring, Tomcat, Hadoop … 이런 거 말고. • 구체적으로는 ... ◦ Web API binding: Flickr, Tumblr, ... ◦ Unit Testing Library: s3mock, zookeeper-unit, ... ◦ 거의 모든 경우 초심자에게 추천할 만 함. ◦ 크기가 작고, 배경 지식이 많이 필요하지 않으며, 거의 항상 자잘한 뭔가가 필요함.
곤란. ◦ 언어 그 자체: Python 2 vs 3? Java Reflection? Java 8 Lambda? ◦ 필수 라이브러리: Java Guava? Scala Scalaz? ◦ Unit Test: junit? hamcrest? Assertj? • 그냥 간단한 예제 하나 돌려 보는 것만으로도 충분. ◦ 나머지는 그냥 활동 하면서 자연스럽게 배울 수 있음.
것도 안 된다! ◦ OS 이론을 모르는 사람이 Linux를 들여다 볼 수는 없음. ◦ 병렬 처리 이론을 모르는 사람이 Hadoop이나 Spark를 들여다 볼 수는 없음. ◦ Zookeeper가 뭔지 모르는 사람이 Kafka를 들여다 볼 수는 없음. ◦ Dependency Injection이 뭔지 모르는 사람이 Spring을 들여다 볼 수는 없음. • 그래도 하고 싶으면? 공부해야지 뭐… ◦ 공식 Documentation ◦ Engineering Blog - ex) Databricks, Cloudera, Uber, ... ◦ 책(!) ◦ 논문(!!)
함께 하는 것이 낫다. ◦ 질문: 스터디 그룹 같은 게 필요한가요? ▪ 있으면 좋지만 굳이 필요하지는 않음. ▪ 그냥 관심사가 비슷한 사람들끼리 느슨하게 연결되어 있는 것만으로 충분. ▪ ex) Spark 사용자 모임, Kafka 사용자 모임, etc ... • 자료 읽기 먼저, 코드 분석은 나중에. ◦ Documentation은 모든 프로젝트의 기본. ◦ "관심이 가는 분야의 프로젝트를 골라라." (실제로 한 말)
vs. Top Down ◦ 서로 장단점이 있음. ◦ 사람마다 스타일이 다름. • 스터디 그룹 요령 ◦ 두 스타일을 섞어서 하되, 약간 더 레벨이 높은 사람을 한 명 끼워서 팀을 만든다. ▪ 서로를 보완해 주면서 누군가가 리드를 할 수 있음. ◦ 돌려 가면서 발표하는 식의 스터디는 안 하는 게 나을지도…? ▪ 참고 1: 바쁜 직장인을 위한 스터디 비결 ▪ 참고 2: 스터디 모임 방법 몇 가지
일’은 언제나 있다! ◦ Newbie Issue, Dependency 관리, Testing, Documentation, Example, ... • Mailing List, Blog, Community ◦ 일단 익숙해져야 뭐라도 한다! • 영어, 영어, 영어 ◦ 슬프지만 현실.