스프링노트 개편과 여러가지 이야기

그림_12.png꽤 오랜기간 하나의 서비스 개발에 참여하고 있다. 현재 이 글을 쓰고 있는 바로 이 스프링노트다. 아직도 이 서비스에 대해 어떤 평가를 내리기는 이르다라고 생각하지만, 오픈 후부터 꾸준히 개선되어온(또는 개선하기 위해 노력해온) 모습은 좋게 평가할 수도 있지 않을까? 약간 촌스럽지만, '어제보다 나은 오늘, 오늘보다 나은 내일'을 위해 노력하는 서비스니까. 그런 스프링노트가 최근 한발 더 앞으로 나가기 위해 약간의 변신을 꾀했다.

 

이번 개편에 대한 자세한 내용은 아래 링크에 잘 설명되어 있다. 스프링노트 사용자라면 우상단에 새로운 기능이라는 귀여운 링크가 보일 것이다. 

 

9/18 릴리즈 노트 - 반갑다! New 스프링노트~

그림_11.png

 

사실 스프링노트에는 우리보다 우리를 더 잘아는 사용자분들이 있다. 꾸준히 스프링노트에 애정을 보여주시는 엘프화가님도 그런 분 중 한명인데, 어쩜 저리도 정확한 리뷰를 해주시는지 내가 뜨끔하기까지 하다 :) 

 

그런데 정말로 스프링노트 개발팀에서는 무슨 생각으로 이번 개편을 한걸까? 살짝 그들의 속은 아니고 개발자중 한명인 deepblue의 속을 들여다보자. 물론 이건 비공식적인 개인적인 생각들이다.

 

가독성을 높혀라

솔직히 이야기하면 스프링노트는 좋은 글을 잘 쓸 수 있는 환경만 제공하면 된다고 생각했다(그리고 그 문제만 해결하기도 우리의 일과는 짧기만 했다). 그리고 그렇게 작성된 글을 잘 활용하는 부분은 다른 플랫폼(ex. 블로그)이나 Open API를 통한 매시업이 충분히 커버할 수 있다고 믿었다. 그런 의도하에 모든 UI 결정은 글을 작성하는 사람에 맞춰졌다. 그 흔한 테마 기능이 없는 것도, 댓글 기능이 없는 것도 그런 이유였다.

 

그러던 어느 날, 이게 직무유기(?)는 아닐까라는 생각이 들었다. 글을 잘 쓰게 해주는 것도 중요하지만, 공들여서 만들어진 글들이 더 가치있게 보이게 하는 것도 우리가 당연히 해야할 일들이라는 것이다. 다른 플랫폼과의 연동, OpenAPI도 중요하지만 우리도 기본(!)은 하고 있어야하는 거다. 이번 개편의 읽기 모드는 그 기본을 갖추는 일이었다. 읽기 모드에는 가독성을 높히기 위해 글의 스타일(폰트, 스타일, 줄간격, 폭)등에 대한 고민도 다시 했다.

 

 

스프링노트 읽기 모드를 보니 문득 글이 쓰고 싶어졌다는 nainu님의 말이 생각난다(그 전에는 글 쓰고 싶은 생각이 안 들었다는 말인가? ㅠ). 다른 사용자분들도 그렇게 느껴준다면 우리는 어느 정도 성공한걸꺼다.

 

물론, 아직도 다른 플랫폼과의 연동, Open API는 대단히 중요하게 생각하고 있으며 계속 발전시켜갈 부분이다. 아, 그리고 하나 더 미투데이에 미남 개발자 kkung님이 있으면 스노에는 미녀 디자이너 kkong님이 있다 :) 이번에 입은 스프링노트의 예쁜 옷은 kkong님 작품이다.

 

그동한 사용자에게 미안했던 그룹노트

지난 가을에 오픈한 그룹노트는 내내 우리 팀의 마음을 무겁게 했다. 여기저기서 사용하기 어렵다는 평을 많이 받았다. 당연히 있어야 할 탈퇴 기능도 없다니 깜짝 놀랄 일이다. 정말 부족한 서비스였음을 인정한다. 이런 모습이 된 것은 커뮤니케이션의 부재가 가장 큰 원인이었다. 프로젝트를 하면서 프로젝트팀내의 소통 뿐 아니라, 외부와의 소통이 얼마나 중요한 일인지를 다시 한 번 배운다. 그룹 커뮤니케이션을 잘하기 위한 그룹노트를 만들면서, 커뮤니케이션의 부족함을 느끼다니 어찌보면 참 아이러니하다. 하하.

 

또 하나, 다소 부족한 서비스기는 하지만 현재의 모습으로도 그룹노트가 오픈마루에서 업무를 하는데 없어서는 안될 도구로 자리매김했다는 사실이다. 우리가 매일 직접 사용하면서, 그룹노트의 유용함을 느꼈기에 사용자들도 함께 느꼈으면 싶었다.

 

그래서 그룹노트를 조금 더 쉽게 사용할 수 있게 바꿨다. 혁신적인 뭔가를 만든 것은 절대 아니고 딱 사용자의 상식에 맞춘 그런 개편이다.

 

 

아직도 부족한 부분이 많다. 협업은 쉬운 일이 아니지만, 조금이라도 쉽고 편하게 잘 할 수 있도록 계속 변모하도록 노력할 생각이다.

 

노트의 벽을 허물어라

공간은 사고의 틀을 만든다. 내 개인노트에서 쓸 수 있는 글의 종류와 스프링노트팀의 그룹노트에서 쓸 수 있는 글의 종류는 전혀 다른 것이다. 그래서 스프링노트에서는 개인노트와 그룹노트를 명확히 구분하고 있기도 하다. 이건 기능적인 구분이 아니라, 사고의 전환이다.그리고 개인의 정체성은 다양하다. 개발자 deepblue도 있지만, 만화를 좋아하는 deepblue도 있고, 한 가정의 일원인 deepblue도 있다. '그래서 여러 권의 노트를 만들 수 있게 했다'는 설명을 하려는데 참 말이 길다. 하하.

 

어쨌든 그리하여 여러권의 노트를 만들 수 있고, 대시보드라는 공간에서 이 노트들의 글을 한눈에 보면서 관리할 수 있게 되었다. 지금까지 편법(?)으로 여러권의 노트를 가지고 있던 사용자라면, 한곳으로 모으기 바란다. 훨씬 관리하기 편할 것이다.

 

 

아직은 눈에 보이지 않지만, 재미있는 일들이 일어날 수 있다. 먼저 노트를 돌려가며 사용할 수 있다. 노트 소유 변경 기능을 이용해, (스프링노트 사용이 아직 익숙치 않은) 친구를 위해 노트를 어느정도 꾸며서 선물할 수도 있다(물론 적극 권장하는 바다. ^^).

 

그리고 노트가 꼭 물리적인 경계일 필요는 없을 것이다. 스프링노트에 있는 많은 글들 중 얼랭에 대해 이야기하는 페이지를 모아 '얼랭 메타 노트'를 만들 수 있으면 어떨까? 개인노트의 몇권이 특정 태그가 달린 글들이 모여 하나의 느슨한 그룹노트를 만들면 어떨까? 마치 공동의 공간이지만 글 하나하나는 개개인의 아이덴티티를 가진 팀블로그처럼... 뭐 이건 일단 내가 망상중인 모습들이니 언제 현실이 될지는 장담하기 힘들다.

 

원 모어 띵?

사실 원 모어 띵이 있기는 했다. 아니다. 우리는 항상 원 모어 띵 한개쯤은 가지고 있다. 그치만 한번에 다 보여주면 우리 장사 밑천이 떨어질테니.. 이건 잠시 미뤄두기로 결정했다. 그래야 회사에서 계속 월급도 받을 수 있고, 사용자들도 다음 릴리즈를 기대해줄테니 말이다 하하.

 

그럼 이제 스프링노트호는 어디로 가나?

일단 살짝 숨을 좀 돌려야겠다. 그래서 스프링노트호는 안면도로 가기로 했다는 풍문이다. ^^

 

그림_13.png

 

농담이고, 위에서 기본에 대한 이야기를 했었다. 어쨌든 스프링노트의 기본은 글을 잘 쓸 수 있게 하는 것이다. 이런 부분에 좀 더 노력을 하게 되지 않을까 싶다. 그리고 '협업을 잘하는 법'도 계속 가지고 있는 키워드다. 이 부분은 내가 결정할 수 있는 한계가 있기에 그만 적어야겠다.

 

레거시 코드를 대하는 우리의 자세

잠깐 개발 이야기를 해보자.

 

스프링노트를 루비 온 레일스를 활용해 2006년 말부터 개발하고 있다. 처음 시작할 당시 레일스 버전은 1.1.x였다. 2.2 버전(2배?)을 앞두고 있는 지금의 레일스와는 꽤 다른 모습이었다. 다중 뷰, REST 개념도 없었고, 코딩 스타일도 꽤 달랐다. 2년여 시간동안 정말 많이 변했다. 동적인 루비 언어만큼이나 빠르게 변하는 곳이다. 

 

그리고 루비/레일스에 대한 우리팀의 이해도도 빠르게 변했다. 처음에는 여러 부분에서 고민이 많이 되었지만, 지금은 springnote style이라는게 조금은 보일 정도로 잘 이해하가면서 사용하고 있다. REST도 몰랐다. 실전 배포 환경(Rails Deployment)도 무던히 고민해왔다.

 

자바스크립트에 대한 인식과 이해도도 큰 차이가 생겼다. 2006년 말에는 상상도 하기 힘든 여러 코드들이 지금은 당연한 듯 웹브라우저에서 동작하는 시대니까 말이다.

 

물론, 스프링노트 자체도 정말 크게 크게 변해왔다.

 

2년 숙성 스프링노트의 코드는 이런 변화를 계속 흡수해왔고, 많은 레거시 코드를 생산했다. 효율적이지는 않지만, 역사적인 이유(이 이유가 많은 부분을 설명하기도 한다)로 존재하는 코드도 있다. 이 레거시 코드라는 것은 개발자들이 가장 꺼려하는 것이기도 하다. 어떤 개발자든 시간이 지나면 자신이 짠 코드가 예쁘게 보이지 않고, 처음부터 다시 만들고 싶은 충동에 휩싸인다. 오늘 내가 만든 코드에는 정말 만족하고, 막 자랑하고 싶겠지만, 얼마간 시간이 지난 후에는 그 코드를 보면서 홍당무 얼굴이 되는게 개발자다. 물론 나도 그렇다.

 

1212052326.516195_PP08052900071.JPG

<사진 설명> 장맛을 지키는 오숙수의 마음으로~

 

하지만 최근 DHH의 키노트 내용을 보면서 마음을 바꿔먹었다. 내가 과거의 코드를 보면서 부끄러워할 수 있는 것은 내 지식이 그만큼 늘었고, 성숙해졌기 때문이다. 과거에는 보지 못하는 것을 지금은 보고 있다는 의미다. 그러니 부끄러워할게 아니라, 당당하게 기뻐해야 할 일이다. 그리고 어찌보면 당연한 일이기도 하다.

 

대신 한가지 필요한 일은 왜 부끄러운지, 과거와 지금의 생각의 차이는 무엇인지에 대해 조금만 더 고민해보는 시간을 갖는 것이다. 그렇다면 막연히 부끄럽기만 한 느낌이 하나의 교훈으로 남을 것이다.

 

뭔가 나를 부끄럽게 하는 레거시 코드를 보며 우리가 해야할 생각은 이렇다. '와, 나 오늘도 성장했나봐.. 예전에는 ~~~해서 이런 코드를 만들었는데 지금 보니 ~~~해서 뭔가 이상하네... 조금씩 고쳐볼까?' 그리고 작은 스텝으로 하나씩 하나씩 고쳐간다. 당연히 절대로(!) 한번에 많은 것을 고치려하면 안될 일이다. 더군다다 바닥부터 다시 개발? 이건 절대 피해야한다. 이건 개발자가 하는 가장 큰 실수 중 하나라고 생각한다.

 

어쨌든, 스프링노트 소스도 보고 있으면 혼자서 홍당무가 되기도 하지만, 속으로 뿌듯해하기도 한다. 2년동안 스프링노트 프로젝트를 하면서 개발에 대한 이해가 조금은 높아졌구나...라면서 말이다.

 

오랜기간 하나의 서비스를 개발 운영하는 경험은 힘들지만, 좋은 면도 있다. 같은 고민을 여러차례 반복하면서 자신만의 생각을 만들어갈 수 있다는 점이다. 개발자 테스팅에 대한 나의 생각도 그렇다. 매번 나를 가장 당혹스럽게 하는 것이 스프링노트의 테스트 코드들이다. 만들때는 꽤 자랑스럽게 만들었는데, 지금 다시 보니 엉성한 부분 투성이다. 그리고 아직도 고민되는 부분이 너무나 많다. 다행인 점은 어제보다 오늘 더 나은 테스트 코드를 만들 수 있을 것 같다는 막연한 느낌이다. 이건 같은 테스트를 여러 차례 다시 작성해오면서 얻게된 느낌일 거다.

 

'Truly succesful software takes 10 years to write' - DHH

 

개발자들의 장난감이 되는 서비스

그림_15.png일반 사용자가 잘 사용할 수 있는 서비스가 되는게 중요하지만, 또 한 축으로 개발자들의 재미있게 가지고 놀 수 있는 서비스를 만드는 것도 중요하다고 생각하고, 또 그런 서비스를 만들고 싶다. 나 자신이 스프링노트를 좋은 장난감으로 여기는 개발자이기 때문이기도 하다(내 은 스프링노트를 자주 활용한다). 개발자들이 잘 가지고 놀 수 있으면, 결국 일반 사용자도 언젠가는 그 덕을 볼 수 있지 않을까?

 

이번에도 개발자들만(^^) 좋아할 실험을 몇가지 해봤다. 중요한 것은 언제 없어질지 모르는 실험기능이라는 사실 :)

 

  1. 이 링크이 링크의 차이가 뭘까?
  2. 이 링크는 어떤 의미가 있을까?
  3. 이 링크는 어떻게 활용할 수 있을까?

 

실험은 계속된다~ 쭈욱!!!

 

끝으로 - 팀이란 뭘까?

팀웍은 공짜로 생기는 것이 아닌 것 같다. 발령장만 준다고 팀이 되는것도 더더욱 아니다. 상처와 감동을 번갈아 한번씩 주고 받아봐야 진짜 팀이 되는게 아닐까 싶다. 뜬금없이 이런 이야기를 하는 것은, 우여곡절끝에 새로운 스프링노트와 함께 또 다른 새로운 스프링노트팀이 생겼기 때문이다.

 

팀으로 함께 일한다는 것은 정말 어렵고 피곤한 일이지만, 그래도 서로 성장하면서 많이 배울 수 있는 보람찬 일이 아닐까? 그런 의미에서 좋은 팀원들에게 다시한번 감사를~!

 

마지막으로 사진은 좋은 팀이 되기 위해 만들어 본 장난감을 최초 공개~ 물론 스프링노트 매시업!

팀원들끼리 대화를 나누고, 한눈에 다른 멤버들의 상태(현재 업무)를 볼 수 있다.

 

그림_16.png