매시업 안드로이드 세미나 발표 자료
---
## 1. 인트로
안녕하세요, 저는 설레발 주도 개발이라는 주제로 발표할 지성빈입니다. 땡땡 주도 개발. 다들 많이 들어보셨을 법한 개발 방법론인데요,
## 2. 현실 세계의 흔한 주도 개발
우리 주변에서 흔하게 볼 수 있는 주도 개발로는 테스트 주도 개발, 도메인 주도 개발, 행위 주도 개발, 모델 주도 개발, 데이터 주도 개발이 있습니다.
## 3. 아는 사람만 아는 주도 개발
이 밖에 아는 사람만 아는 주도 개발로는 이력서 주도 개발, 알콜 주도 개발, 커피 주도 개발, 주둥아리 주도 개발, 설레발 주도 개발도 있습니다.
이 발표에서는 마지막 항목에 있는
## 4. 설레발 주도 개발
설레발 주도 개발. 하입 드리븐 디벨롭맨트를 소개합니다. 이 개발 방법론을 알고 있으면 개발에 도움이 될 거라 생각되어 이를 주제로 선정하였습니다.
## 5. 설레발 주도 개발 - 2
설레발 주도 개발은 2016년 11월 23일에 등장한 개발 방법론으로, 무려 8년에 가까운 역사를 갖고 있습니다.
설레발 주도 개발은 소프트웨어 구조 설계 과정에서 시작합니다. 우리 주변에서 가끔 볼 수 있는 설계 과정을 예시로 들어 보겠습니다.
## 6. 소프트웨어 구조 설계 과정
먼저 SNS 혹은 주변 개발자들 사이에서 핫한 기술 스택을 조사합니다.
## 7. 소프트웨어 구조 설계 과정 - 2
조사한 스택 중에서 내가 사용해 보고 싶은 스택을 선정합니다.
## 8. 소프트웨어 구조 설계 과정 - 3
선정된 스택을 바로 소프트웨어 구조로 도입합니다.
## 9. 소프트웨어 구조 설계 과정 - 4
단, 제대로된 연구나 프로젝트에 미치게 될 영향의 진지한 고민 없이 오직 재미만 고려되었습니다.
## 10. 설레발 주도 개발자
이런 과정으로 소프트웨어 구조가 설립된다면 그 팀은 모두 설레발 주도 개발자가 됩니다. 간단하죠?
## 11. HDD의 다양한 방법 - 트위터
이 밖에도 설레발 주도 개발, 줄여서 HDD를 시작할 수 있는 방법은 다양합니다.
트위터는 보통 GDE나 인플루언서분이 가장 먼저 소식을 전하는 곳입니다. 트위터에 올라온 핫한 기술에 기반을 주고 기술 스택을 선정한다면 트위터 주도 개발로 HDD를 시작할 수 있습니다.
## 12. HDD의 다양한 방법 - 컨퍼런스
개발 컨퍼런스는 새로운 기술을 공유하기 정말 좋은 기회입니다. 컨퍼런스에서 들은 새로운 기술을 기반으로 HDD를 시작할 수도 있습니다.
## 13. HDD의 다양한 방법 - 목소리 큰 사람
또한 옆에서 어떤 사람이 이번에 등장한 새로운 기술을 써보고 싶다고 계속 떠든다면 우리도 모르게 그 사람에 현혹되어 새로운 기술로 HDD를 시작하고 있을 수도 있습니다.
## 14. HDD의 다양한 방법 - 라이브러리
라이브러리는 다른 사람의 코드를 활용함으로서 적은 노력에 비해 큰 이점을 얻을 수 있습니다. 즉, 과한 라이브러리의 사용도 HDD의 시작점이 되기 정말 좋습니다.
## 15. HDD의 다양한 방법 - 지식인
마지막으로 정말 유명한 방법으로 지식인 주도 개발이 있습니다. 스택 오버플로우나 블로그에 있는 코드 스니펫을 제대로 이해하지 않고 그냥 복붙해 오는 방법입니다.
지금까지의 발표를 들었을 때 무슨 생각이 드시나요?
## 16. 이건 하면 안 되겠는데
혹시 “이건 하면 안 되겠는데..?” 라는 생각이 드셨나요? 그렇다면 정상입니다. 이 발표는 HDD를 하면 안 되는 이유를 소개합니다.
## 17. HDD 나쁜점
설레발의 출처는 대부분 SNS라는 공통점이 있고, SNS는 새로운 아이디어의 테스트가 끝나기도 전에 잽싸게 전파되는 성질이 있습니다. 새로운 아이디어의 장단점이 모두 파악되기 훨씬 전부터 설레발 폭풍이 들이닥치게 됩니다.
## 18. HDD 나쁜점
설레발 폭풍에 갇힌 개발자는 나쁜 결정을 쉽게 내리도록 유도하고, 잘못된 기술 스택 선정은 팀 전체를 평생 괴롭힐 수 있습니다.
대부분의 설레발 폭풍은 비슷한 구조를 갖습니다.
## 19. 설레발 1단계
큰 문제가 있던 회사가 있습니다. 회사의 개발자는 겪고 있는 문제의 해결책이 현재의 기술 스택이나 구조를 넘어서는 일이라 판단했습니다. 따라서 새로운 프레임워크나 라이브러리, 혹은 패러다임을 만들어서 문제를 해결합니다.
## 20. 설레발 2단계
문제를 해결한 팀은 신나서 결과물을 세상에 보여주고 팀만의 해결책을 자랑합니다. 사람들은 새로운 형태의 결과물을 보고 흥분하고 사용해 보고 싶은 욕구가 생기지만, 이 결과물이 무엇을 해결하고자 탄생했는지는 이해하지 못합니다.
## 21. 설레발 3단계
방금 보았던 신기술이 대단하고 흥미롭다는 생각이 지속되고, 이 신기술이 우리 팀에도 도움 될 거란 설레발을 갖고 도입을 결정합니다.
## 22. 설레발 4단계
작업이 계속되면서 앞서 도입한 신기술이 크게 도움이 되지 않고 있다는 걸 느낍니다. 오히려 더 많은 학습이 필요해지고 재작성되는 코드만 점점 늘어나고 있었습니다.
## 23. 설레발 5단계
팀은 뒤를 돌아보고 성급한 신기술 도입의 대가가 무엇이었는지 생각해 봅니다. 곧이어 이게 무엇을 위한 기술이었는지를 깨닫습니다.
## 24. React 설레발
예전에 페이스북으로부터 리액트라는 새로운 기술이 발표되었을 때 비슷한 현상이 있었습니다.
페이스북은 복잡한 상태 관리 이벤트로 정신이 사납고 전체적인 상태가 어떻게 되어가고 있는지 추적하기 어렵던 문제가 있었습니다.
## 25. React 설레발 - 2
페이스북은 해당 문제의 해결책으로 새로 개발한 리액트라는 프레임워크의 핵심 키워드를 가지고 새로운 패러다임을 홍보하기 시작합니다.
## 26. React 설레발 - 3
리액트 설레발 폭풍에 빠진 개발자가 탄생하고, 큰 고민 없이 팀 내에 리액트를 도입합니다.
## 27. React 설레발 - 4
이후로 아주 많은 일들이 진행되지만 별다른 성과는 나오지 않습니다.
## 28. React 설레발 - 5
리액트는 실시간 알림이 아주 많은 단일 페이지 웹 앱을 만드는데에 아주 훌륭하지만,
그보다 간단한 경우에는 딱히 필요 없는 기술이었음을 깨닫습니다.
저를 포함한 이 발표를 듣는 여러분도 생각해 보면 나도 모르게 HDD를 하고 있던 경우가 있을 겁니다.
## 29. HDD 예방법
HDD는 내가 원하는 기술을 도입하기 전에 충분히 연구하고 테스트해 보는 아주 간단한 단계로 예방할 수 있습니다.
앞으로 새로운 기술을 레퍼런스가 아니라 경험으로 배우도록 해봅시다. 신기술 도입을 결정하기 전에 해당 기술을 이용한 프로토타입을 빠르게 만들어봐도 좋습니다.
또한 새로운 기술로 해커톤을 진행해 봐도 좋습니다. 이렇게하면 팀원들의 경험에 기반한 현명한 결정을 내릴 수 있습니다.
## 30. HDD 응용
그렇다면 HDD는 아예 무쓸모일까요? 모든 기술은 특정한 문제를 해결하기 위해 만들어집니다. 특정한 문제에 공감할 수 있고 현재 겪고 있는 문제에 속한다면 HDD를 시작하기 좋은 시기입니다.
## 31. 끝!
제 발표는 여기까지입니다. 이 발표가 여러분의 슬기로운 개발 생활에 도움이 되길 빕니다. 감사합니다.