brunch

You can make anything
by writing

C.S.Lewis

by 작은도토리 Dec 22. 2019

주간회고 #18 / 프로페셔널한 개발자에 관한 생각

2019.12.15 - 12.21


생각의 시작

앱을 개편하면서 새로이 만드는 화면의 초기 디자인은 매우 놀라웠다. 주간 캘린더가 있으면서 각 날짜별로 타임라인 형태의 아이템 리스트가 있고 리스트의 날짜와 캘린더의 날짜가 동기화되게끔해야하는 기능이 있었다. 이걸 순수히 내힘으로짜는건 너무 어려워보여서 막막했는데, 리서치를 하다보니 꼭 마음에 드는 라이브러리가 있었다! (react-native-calendar). 이 라이브러리를 fork 떠서 내부를 조금만 수정하면 우리 앱에서 활용할 수 있겠다는 생각에 무작성 내부로직탐험을 시작하고 수정수정을 거듭해서 내나름 최선으로 만들었으나, expected behavior임에도 유저입장에서 버그처럼 보일 수 있을 것 같다는 피드백을 받고 UI를 다른 방식으로 풀어내기로 결정했다. 단순한 형태의 UI로 개선해서 작업속도는 훨씬더 빨랐고, 이전 뷰에 비해 경험적으로 그다지 나빠보이지도 않았다. 라이브러리를 수정하는데 4-5일정도의 시간을 썼고 그 시간을 쓴 결과물을 제대로 활용하지도 못했는데, UI를 바꾸니 같은 화면을 하루만에 완성할 수 있었다. 


이런 경험을 하면서 프로페셔널한 개발자는 어떻게 행동할까에 대해 생각해보게 되었다. 



다시, 개발자는 무엇을 하는 사람인가.

이전에 <클린 아키텍처>를 읽고 개발자는 뭘하는 사람인지 생각해본 적이 있다. 

모든 소프트웨어는 목적을 지닌다. 세상에 제공하고자 하는 가치가 있기 때문에 만들어진다. 그렇기에, 기본적으로 그 가치를 창출하기 위한 기능(행위)이 동작해야 한다. 그런데 그 기능이 완성되었다고 끝이 아니다. 세상은 빠르게 변화하고 거기에 맞춰서 소프트웨어도 발빠르게 변화해야 한다. 이전에 만들어서 효과있었던 기능이 몇 년 후에, 혹은 몇 달 후에는 working하지 않을 수도 있다. 그래서 회사는 자신들이 제공하고자 하는 가치를 어떻게 하면 효과적으로 전달할 수 있을지 끊임없이 고민하고 실험하며, 소프트웨어는 그런 변화하는 요구사항에 유연하게 대처할 수 있어야 한다.

즉, 개발자는 소프트웨어 시스템이 필요로 하는 이 두 가치( 기능, 유동성 )을 위한 고민을 하고 구현하는 사람이다.


한마디로, 개발자는 창출하고자 하는 가치를 소프트웨어의 형태로 구현해내는 사람이다. 이 기준을 토대로 현재의 나는 어떤 프로페셔널한 역량을 갖춰야하는지 생각해보았다. 



1. 프론트 개발자로서의 프로페셔널

구현만 잘한다고 탁월한 개발자라고 할 수 있을까. 본인이 만들고 있는 화면이 무엇을 위한 화면인지, 이 화면에서 유저는 어떤 경험을 해야하는지에 대한 생각없이 주어진 대로 뚝딱 만들기만 하는 개발자를 정말 탁월한 개발자라고 할 수 있을까? (흠, 근데 적다보니 정말 뭐든 빠르게 뚝딱만들어낼 수 있는 정도의 역량이라면 그것만으로도 엄청날지도 모르겠다ㅎㅎ..) 


내가 만들고 있는 소프트웨어에서 유저들은 어떤 경험을 해야하는지 알고 있고, 각 화면/ 기능을 통해 어떤 가치를 얻을 수 있어야하는지를 잘 파악하고 있어야하지 않을까. 만들고자하는 뷰의 복잡도를 떠나서 명확한 목적을 지니고 있는지 확인하고, 설계된 UI 형태가 정말 의도한 가치, 경험을 줄 수 있는지에 대한 피드백을 디자이너에게 줄 수 있어야하지 않을까. 리소스를 최소화하면서 동일한 가치를 전달할 수 있는 형태의 UI를 설계해서 매우 빠르게 프로덕트를 생산할 수 있게끔 디자이너에게 좋은 피드백을 줄 수 있는 역량이 프론트 개발자가 가질 수 있는 또 하나의 프로페셔널한 역량이 아닐까 생각했다. 


개발을 하다보면 우아하고 화려한 UI/UX에 취해서 그 뷰의 본래 목적을 잊은채 시간을 소비할때가 종종 있다. 그런 시간들을 돌이켜보면 학습의 관점에서는 유의미할 수 있으나, 서비스 측면에서는 굳이 이렇게 시간을 쓰지않아도 다른 방식으로 빠르게 풀어낼 수 있었을텐데라고 생각될때가 많은 것 같다. 개인의 차원(학습)에서 Product를 바라보고 개발을 하면 발생하는 일이라는 생각이 들어서 이번 일에 대해 조금 반성적으로 돌이켜 보게 된 것 같다. 



2. 서비스 메이커로서의 프로페셔널

팀원과 초밥먹으면서 개발자의 프로페셔널리즘에 관한 이야기를 하다가 재밌는 관점을 알게되었다. 본인은 개발자로서 프로페셔널은 서비스 도메인에 대한 정의, 체계를 잡아줄 수 있는 역량이 중요하다고 생각한다더라. 그전에는 생각해보지 못한 관점이었는데 곰곰히 생각해보니 되게 맞는 말인 것 같다. 


확실히 추상적인 영역과 관련된 서비스를 운영할때, 각자 같은 의미의 다른 용어를 쓰면서 생기는 커뮤니케이션 오버헤드가 엄청나게 크다. 합의한 내용을 서로 다르게 이해하기도 하고, 얘기했던 것을 다시 기억할때 헷갈리기도 하면서 소모되는 리소스는 무시하지 못할 것 같다. 이런 부분에 대한 중심을 잡아줄 수 있으면 조직 전체의 생산성이 탁월하게 향상되지 않을까. 


적다보니 개발자의 역량이라기보다는 PM, PO에게 있어야하는 역량인 듯한데, 개발자가 이런 능력을 갖고 있으면 확실히 차별화될 것 같다. 이런 관점에서 팀에게 피드백을 줄 수 있으려면 서비스 전반적인 측면에서 바라볼 수 있어야할텐데 나는 아직 그 부분에 있어서는 부족하게 느껴진다. 좀더 분발해야지. 



Outro

웹기반 기술인 React Native를 학습하면서 Product를 만들어나갈때면 우리 서비스 측면에서 일을 바라보고 일을 해나가기가 가끔 안되는 것 같다. 개인적인 욕심으로 더 공부해보기 위해 시간쓰기도 하고, 도전해보고 싶어서 불필요할지도 모르는 삽질을 할때도 있다. 그럴수록 이런 기준들을 통해서 나를 돌이켜보면 내가 정말 잘해야하는 것이 무엇인지를 다시 깨닫게 하기 좋을 것 같다. 


-


- 개발자로서의 차별화된 역량 강화를 위한 고민을 지속적으로 하면서 계발하기. 

- RN 기술 숙련도 향상시키기

- 뷰의 목적을 고민하면서 개발하기. 어느 정도의 UI/UX background 지식이 있는채로 피드백을 주면 더 좋을 것 같은데 내가 공부할 수 있으려나 모르겠다.  

- 서비스 도메인의 관점에서 바라보는 시각 기르기. 핵심개념에 대한 정의의 부재로 팀내 불필요한 오버헤드가 발생하고 있지는 않은지 생각해보기. 

- 앱 아키텍쳐는 지금 그다지 생각안하고 있는데 이래도 되려나. 지금은 런칭일정이 촉박하니 릴리즈후에 좀더고민해봐야지. 








매거진의 이전글 Weekly Diary #7
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari