[창업이야기] 10. Blogsy 주요 기능, 역할

앞으로 몇 단락은 Blogsy의 주요 기능에 대해서 이야기하려고 한다. 많은 분이 지루해하실 수도 있을 거라 생각하지만, 팀원 각자가 맡은 역할에 관해  이야기하기 위해서 필요하고 앱 자체에 관심이 있는 분들이 있을 것 같아서 가능하면 간단히 언급만 할 것이다. 읽기가 부담스러운 분은 이 장은 그냥 훑고 지나가고 역할분담부터 읽으셔도 될 것 같다.

Blogsy는 아이패드용 블로깅 앱으로 포스트 작성부터 발행까지 보통 다음과 같은 순서로 사용된다.

1. 포스트 작성  글 포맷 변경 : 굵게/이탤릭/밑줄 등  문단 정렬 방식 변경 : 왼쪽/가운데/오른쪽 정렬

2. 포스트에 사진/비디오 첨부(Drag&Drop 방식 이용)  사진/비디오 크기 변경 : 가로/세로 크기 변경  사진/비디오 정렬 방식 변경 : 왼쪽/가운데/오른쪽 정렬  사진 링크, 캡션 설정

※ 위 모든 것을 HTML 코드 변경 없이 UI를 이용해서 쉽게 변경할 수 있다.

3. 포스트 발행  시간, 태그, 카테고리, 포스트 종류 등 설정 가능

여기서 포스트 작성과 포스트 발행이 가능한 앱은 이미 시장에 나와 있던 상태였고, 우리가 새롭게 추가한 부분이자 Selling Point로 삼은 것이 포스트에 사진과 비디오를 쉽게 첨부하는 방법을 제공해 주는 것이었다. 기존 앱에서 글에 사진과 비디오를 첨부하는 것이 얼마나 복잡했는지는 이전에 [6회] Blogsy 아이디어, 기획에서 이야기한 적이 있다.

Blogsy를 구현하는 데 필요한 기능들과 지원 서비스에 대해 요약하면 아래와 같이 정리할 수 있다.

1. 사진/비디오 서비스에서 콘텐츠 가져오기  사진/비디오 서비스의 공개 API를 이용하여 구현

2. Drag&Drop으로 사진/비디오 콘텐츠를 포스트에 첨부 지원  웹뷰(Web View)와 앱뷰(App View) 간의 통신할 수 있는 프로토콜을 구현

3. 웹뷰 편집 기능  웹뷰 위에 JavaScript를 이용하여 직접 글을 작성할 수 있는 투명한 레이어를 덧씌워 사용자로 하여금 웹뷰에 직접 글을 작성하고 있는 듯한 경험을 제공(iOS5부터 웹뷰에 직접 글을 작성할 수 있게 되었지만, Blogsy의 최초 버전 개발 당시에는 iOS5가 나오기 전이라 상당히 복잡한 방법으로 이것을 직접 구현해야만 했다.)

4. 지원 서비스 및 추가 기능  

  • 블로그 서비스 : 워드프레스, 블로거 (가장 많이 사용되는 두 가지 블로그 지원) 
  • 사진 서비스 : 플리커, 피카사 (대표적인 두 사진 서비스 지원)  
  • 비디오 서비스 : 유튜브 (대표적인 비디오 서비스 지원)  
  • Built-In 브라우저 : 아이패드에서는 한번에 하나의 앱 화면만 볼 수 있기 때문에 외부 웹브라우저의 글이나 링크를 복사해서 사용하려면 앱 간의 화면 전환이 필요했다. 이 화면 전환의 불편함을 해소하기 위해서 기본적인 기능을 하는 웹브라우저를 Blogsy내에 탑재했다.  
  • 이메일 : 포맷팅 된 글, 사진과 비디오가 첨부된 Rich 메일을 쉽게 보낼 수 있는 기능

역할분담

Blogsy구현에 필요한 기능들의 파악이 끝나고, 각자 자신 있는 부분을 맡으므로 자연스럽게 각자의 역할이 정해졌다. 자바스크립트와 웹 개발에 익숙했던 데이브는 Rich View와 App View 간의 통신 처리와 Rich Text Editor의 구현을 맡았다. 나는 DB 프로그래밍에 익숙했기 때문에 블로깅 부분의 전체 적인 틀과 워드프레스 블로그 지원 그리고 앱에서 초안을 저장하고 불러올 수 있는 로컬 드래프트 기능을 맡았다. 션은 처음에는 앱 디자인과 사진과 비디오 서비스 지원을 담당했지만, 이후 블로거 블로그 지원과 Rich View와 App View 간의 통신 그리고 포스트 파싱까지 담당하게 되어 션의 손길이 미치지 않는 곳이 없었다.

처음에는 Rich View와 App View 간의 통신과 포스트 파싱을 내가 담당했었다. 데이브와 같이 의사소통을 하면서 협업해야 하는 일이었는데, 영어 실력의 부족으로 의사소통 원활하지 않아 션이 맡게 되었다. 개인적으로는 그 당시 답답하고 아쉬웠다. 컴퓨터 소프트웨서 전공자로서 잘할 수 있다는 자신감도 있었고, 잘해서 팀원들에게 인정받고 싶은 마음도 있었다. 그런데 그렇게 돼 버렸다.

일반적인 대화에서 영어로 의사 소통할 경우에는 70-80퍼센트 정도만 이해해도 그렇게 큰 문제는 없었다. 하지만 기술적인 구현에서는 달랐다. 서로 정확히 정보를 교환하고 완벽히 소통해야 소프트웨어가 올바로 동작하게 할 수 있었다. API문서를 읽고 구현해야 하는 사진 서비스나 동영상 서비스도  마찬가지였다. 나도 못하는 건 아니었지만, 속도가 느렸다. 그런 면에서 션이 나보다 훨씬 나았기 때문에 효율성적인 측면에서 션이 그 일을 맡는 것이 옳았다. 대신 나는 보다 자료구조적으로 접근해야 하는 부분과 다른 사람과 협업이 필요 없이 독립적으로 할 수 있는 부분을 열심히 함으로써 프로젝트에 기여했다.

션은 프로젝트 진행에 있어서 중심 축 역할을 했다. 프로젝트의 거의 모든 부분에 그가 관련되어 있었고, 션은 프로그램이 어떻게 동작하는지 전체적으로 보고 있었다. 프로젝트를 전체적으로 보고 있던 사람이 한 명 더 있었다. 바로 렌스였다. 아무래도 프로그래밍을 하다 보면 전체를 보는 여유를 갖기 힘든데, 렌스는 직접 개발을 하지 않기 때문에 그런 부담 없이 전체를 항상 보고 있었다. 일을 열심히 하는 것도 중요하지만 올바로 하는 것도 중요했다. 아무리 개발 계획을 자세히 만들었다고 하더라도 실제 개발시에는 계획 당시에 예상치 못한 문제나 기술적 제약 등 여러 상황에 봉착해서 계획대로 되지 않는 경우가 많았다. 그럴 때마다 렌스가 회의를  주도해서 팀원이 서로 토론하고 논쟁할 수 있는 장을 열어 주었다. 우리는 논쟁을 통해 수시로 방향을 재설정해서 올바른 방향으로 나아갈 수 있었다. 렌스는 프로젝트의 전체적인 그림을 보기도 했지만 세부적인 부분에도 깊이 관여해서 프로젝트에 기여했다.

내 개발 이야기

나는 아직도 부족한 점이 많은 사람이지만, Blogsy 개발 당시에는 지금보다 더 부족한 점이 많은 사람이었다. 머리 속의 생각을 다른 사람에게 언어로 전달하는 표현능력이 부족했고, 아이패드 앱을 개발하기 위한 프로그래밍 언어 관련 지식, 기술적 전문 지식, 영어 능력 등 부족한 것이 많다고 느꼈지만, 그래도 뭔가 할 수 있을 것 같은 믿음 만은 충만했다. 팀원들이 함께 있어서이기도 했고 하나님께서  함께하고 계신다는 믿음이 있었기 때문이다. Blogsy 개발 때부터 지금까지 나의 이런 믿음에는 변함이 없다.

Blogsy개발 전까지 얼굴/사물 인식 프로그램, AR(Augmented Reality) 프로그램 등 여러 프로그램을 만들어 보았지만, 모두 프로토 타입 수준의 프로그램이었고, 상용 프로그램을 개발해 본적은 한번도 없었다. 또 블로깅 관련 프로그램은 처음 개발하는 상황이었다. 그래도 걱정은 없었다. 모르면 것을 해야 한다는 부담이나 두려움보다도 새로운 것을 배울 수 있다는 기대감이 비교할 수 없을 만큼 컸다.

앞에서 말했다시피 블로깅앱을 개발해야 하지만 블로그에 대해 잘 몰라 포스트, 페이지, 드래프트, 태그 등 블로그 기능과 관련된 개념에 대해서 자료를 검색하거나 동료에게 물어보면서 개념을 익혔다. 어떻게 블로그 서버와 통신을 해야 하는지, 통신한 결과를 어떻게 처리해야 하는지, API를 어떻게 사용해야 하는지 기술적인 부분도 잘 모르는 상태에서 하나하나 배워가면서 구현을 했다. 그러다 보니 개발 속도가 느렸는데, 운 좋게도 워드프레스에서 개발한 아이폰과 아이패드 앱의 오픈소스를 찾게 되었다. 나는 비록 뛰어난 개발자는 아니지만 한 가지 자신 있는 점은 인내심과 분석/관찰 능력이다. 오픈소스를 실행해서 이것 저것 뜯어보고, 로그를 찍어 값을 하나하나 확인해보면서 프로그램이 전체적으로 어떻게 동작하는지 그리고 개별적인 함수들이 어떠한 기능을 하는지 하나하나 파악해 나갔다. 동시에 특정 기능을 iOS 앱 프로그래밍 언어인 Objective-C로 어떻게 표현해야 하는지 배웠다. 어느 정도 시간이 지나자 물 만난 물고기처럼 개발에 속도가 붙었다. 이 워드프레스 오픈소스를 참조해 Blogsy에 워드프래스 기능을 하나씩 추가했다.

일을 하면서 새로운 것을 배우는 것이 너무 즐거웠고, 실제로 동작하는 기능이 늘어감에 따라 더 일하고 싶다는 열정도 커져갔다. 퇴근 후 집에 와서 잠자리에 들면 ‘어서 잠들고 아침에 깨어서 빨리 일하러 가고  싶다’라는 생각이 들 정도로 일이 정말 재밌었다. 전에 일하던 방식과 다른 점은 내가 주도적으로 개발해야 했다는 점이었다. 누가 다음에는 이 일을 하고 그 다음에는 저 일을 하라고 지시하는 사람이 없었다. 일의 경계도 없었다. 팀원 모두가 각자 원하는 부분을 스스로 정하고 스스로 일정을 계획해서 일했다. 한 명 한 명이 마치 팀장 같이 느껴졌다. 거의 매일, 하루의 일과를 마치면 퇴근하기 전에 나와 션은 렌스에게 일의 진행 상황에 대해 알렸다. 렌스는 비록 직접 코드를 작성하지는 않았지만, 프로그래밍 관련 커뮤니케이션을 할 수 있을 정도의 지식이 있어서 션과 나와 함께 프로그래밍 레벨에서 커뮤니케이션을 하며 Blogsy의 개발에 기여했다. 이런 일을 반복하는 과정에서 나도 모르는 사이에 나는 내가 생각하고 있는 것을 언어로 표현하여 설명하는 커뮤니케이션 기술이 향상되었고, 수동적인 사람에서 능동적인 사람으로 변하게 되었다.

Read more

카카오모빌리티 5년, 그 경험과 생각

2018년부터 2024년까지 5년 동안 카카오모빌리티에서 개발자로 일하며 얻은 경험과 느낀 점을 정리해 보았습니다. 개인적인 관점에서 작성된 내용이며, 제 경험이 회사 전체를 대표하지는 않습니다. 일 * 리더의 변화가 회사 분위기를 바꾼다. * 재직 중 CEO가 한 번 교체되었고, 그 후 CTO를 비롯한 여러 리더들이 함께 교체되었습니다. * 리더가 바뀌니 마치 다른 회사에 다니는 것처럼

By 토미
복잡한 마음이 든다면 적어보세요.

복잡한 마음이 든다면 적어보세요.

살다보면 분노, 불안, 우울 등 부정적인 감정이 찾아옵니다. 이런 감정은 시간이 지나면 금새 사라지기도 하지만, 때로는 계속 불쑥 불쑥 올라와서 마음을 혼란에 빠뜨립니다. 이럴 땐 한번 적어보세요. 내 마음은  왜 화가 났는지, 왜 불안한지, 왜 우울한지, 적다보면 부정정인 감정의 근본 원인이 무엇인지 그 감정을 어떻게 정리해야 할지 실마리를 찾을 수

By 토미
인생이란 책

인생이란 책

사람은 누구나 인생이란 책의 저자입니다.  모든 사람은 단 한 권의 책을 쓰고, 모든 책의 주인공은 저자 자신입니다.  1년의 삶을 한 페이지에 적는다고 했을 때, 책은 보통 80페이지 정도 되고, 많아도 120페이지를 넘기진 않습니다.  책에 한 번 써진 내용은 수정하거나 삭제할 수 없습니다. 마음에 들지 않는 페이지가 있더라도 찢어버릴 수 없습니다.

By 토미
박경리 - 산다는 것

박경리 - 산다는 것

체하면 바늘로 손톱 밑 찔러서 피 내고 감기들면 바쁜듯이 뜰 안을 왔다갔다 상처나면 소독하고 밴드하나 붙이고 정말 병원에는 가기 싫었다 약도 죽어라 안 먹었다 인명재천 나를 달래는 데 그보다 더 생광스런 말이 또 있을까 팔십이 가까워지고 어느 날부터 아침마다 나는 혈압약을 꼬박꼬박 먹게 되었다 어쩐지 민망하고 부끄러웠다 허리를 다쳐서 입원했을

By 토미


[책] 토미의 Git with 소스트리

Git을 제대로 알고 싶으신 분들께 추천드립니다.



[온라인 강의] 토미의 Git & Github

Git을 제대로 알고 싶으신 분들께 추천드립니다.