면접을 하면서 받는 질문들 중에 '무엇을 하고 싶은가?' 류의 질문을 쉽게 접하고는 하는데, 이에 대해 손쉽게 답변할 수 있는지는 물론
평소에 이 '무엇을 하고 싶은가? 무엇을 이루고 싶은가? 당신이 하고자 하는 바가 무엇인가? 무엇을 만들고 싶은가?' 등에 대해 얼마나 고민해보고 생각해보았는지에 따라 달라질 수 있다.
이전에 이력서를 쓰면서 몸에 체화된 질문인 탓에 생각난거 같기는 하지만, 어찌되었든
내가 궁극적으로 성취하고 싶은 것은 무엇인가? 그리고 그것을 어떻게 성취하려 하는가?
정도의 질문을 짧게 생각할 수 있었고, 차례대로 생각해보며 정리해보고자 한다.
1 . 내가 궁극적으로 성취하고 싶은 것은 무엇인가?
먼저 거창하게 말하자면, 사람과 사회에 실질적인 도움을 줄 수 있는, 사회 구성원들의 삶을 증진시킬 수 있는 앱 혹은 플랫폼을 개발해나가고 싶다. 개발자라는 직무 안에서 할 수 있는 일들은 잘 보이지 않을 때도 있고, 잘 드러날때도 물론 있다. 하지만 그것은 분명하다. 다수의 사용자가 이용하는 앱 혹은 플랫폼을 개발할수록, 개발자 개인이 다수의 사용자에게 미치는 영향과 파급력이 0에서부터 무한대에까지 달할 수 있다는 것이다. 그것은 다시 말하면 개발자로써 개개인에게 주어지는 책임감에 대해서 말하는 요소들일지도 모른다.
그런 어떻게 보면 어깨를 무겁게 하는 요소들이 있다고도 할 수 있겠지만, 어떠한 직업과 어떠한 직무를 수행하던 간에 그것이 다수의 사람에게 영향을 주는 일이라면 그런 책임감은 당연하게 주어지고 당연하게 지켜나가야 할 가치임에는 분명하다.
다수의 사람들에게 영향을 주는 개인의 개발자가 느끼는 '책임감' 이외에 것은 먼저 이야기했던 사람과 사회에 실질적인 도움을 줄 수 있는 일들을, 환경과 조건 그리고 영향을 미칠 수 있는 사용자들이 존재한다면, 개발자 개인이 사무실에 앉아 혹은 카페에 앉아 작성하는 몇십, 몇백줄의 코드로써 할 수 있는 일들의 '무궁무진함'과 오픈된 '선행의 가능성' 이다. 사람이 살아가면서 서로에게 미칠 영향들은 많고 적겠지만, 그것들이 실제로 다수의 사람들에게 큰 도움을 주고 그들의 삶을 조금이나마 바꾸어나간다고 생각했을 때, 그만큼의 뿌듯함을 느낄 수 있는 직업과 직무가 얼마만큼이나 존재할 것인가?
물론 뿌듯함과 성취감을 느낄 수 있는 직업과 환경들도 마찬가지로 셀 수없이 많고, 그것이 어느 직무와 직업에만 국한되는 것은 절대 아니다. 분명히 말하고자 하는건 내가 개발자로 일하면서 개발이라는 일을 하는 것으로 '할 수 있는 일', 그리고 그 '할 수 있는 일'로써 내가 '얻게 되는 일' 이 무엇이냐에 대해 정의해보는 것을 말한다.
아직은 개발자로써 짧은 커리어를 가지고 있지만, 그것을 반대로 생각해 내게는 언제나 가능성의 길이 다양하게도 열려있다고 생각하며, 내가 행할 수 있는 일들이 많고 적든 간에 어떠한 가치관을 가지고 일하는지, 그런 것들이 나라는 사람과 나라는 '개발자'를 말하는 내용들이라 생각한다.
1-1. 그리고 그것을 어떻게 성취하려 하는가?
세상에는 개발자의 수와 앱의 갯수만큼이나 다양한 개발 툴과 협업 툴이 존재한다. 그것들을 얼마나 잘 알고 써보았느냐에 따라 협업의 과정에 있어 팀이 이뤄낼 수 있는 효율은 물론 개인이 이뤄낼 수 있는 효율도 달라질 것이라 분명히 생각한다.
즉 '단단한 개발'을 하기위해 필요한 첫번째 조건은 '개발의 트렌드'에 발맞춰 따라가고 있느냐이다. 안드로이드는 해를 거듭하면 새로운 버전이 만들어지고, 많은 스마트폰 기업들과 앱 개발자들은 조건에 맞추어 반 강제적으로 앱과 시스템의 뿌리인 '안드로이드 OS' 에 대해 배워나가야 할 수밖에 없다. 새로 제공되는 feature들과 사장되어 제공이 더 이상 안되는 feature들에 대해서도 반드시 생각해야만 한다. 그것들이 앱의 다수영역에 영향을 미치고 있다면, 그것만큼 위험한 일은 없을 것이며 새로운 업데이트로 사용자들의 OS가 알게 모르게 업데이트되기 전까지 새로운 버전 업데이트를 마쳐놔야만 할 것이다.
그렇게 말하고 나서 '개발의 트렌드'를 안드로이드에 한해 다시금 정리하자면
- 안드로이드 OS 별 특징과 장단점, 제공하는 feature들을 잘 이해하고 있는가
- 기기별 안드로이드 파편화의 범주를 잘 이해하고 있는가(태블릿별로, 스마트폰별로, 웨어러블별로 등등)
- 협업 툴과 버전관리, 사후관리에 얼마나 능숙하게 대응하는가
정도라고 생각한다.
앱의 사용자이자 동시에 제공자인 개발자의 입장으로써, 앱을 사용하다 열이 받거나 짜증이 났던 순간들은 수도 없이 많다. 다수의 팀에 의해서 개발되었을 앱들이 말도 안되게 에러를 발생시키며 종료되거나, 한 앱을 위해 개별의 앱을 설치해야 하는 매우 번거로운 일을 만들게 하는 앱들도 존재하며, 사용할 수록 느려지는 memory leak이 너무나도 당당하고 버젓이 존재하는 앱들도 존재한다. 경우에 따라 배터리를 많이 소모하는 앱들도 물론이다. 그런 '기본기' 가 갖추어지지 않은 앱들의 경우에는 그것들이 하는 일들을 차치하고 그냥 그 앱을 사용하고 싶은 마음 자체를 앗아가는, 말하자면 설치하자마자 삭제의 순으로 가게끔 하는 효과를 가지고 있기 때문에, 개발자의 입장으로써 이를 중요하게 여기는 것은 절대 낭비할 것이 없는, 필수적이고 항상 이뤄저야 할 일이다.
다시 정리하여 앱 개발자가 가져야만 할 체크리스트에 대해서 말하자면
- 앱이 출시 이후에 얼마나 고객의 니즈에 대응하는가?(오류부터 건의사항 등등)
- 앱이 출시 이후에 얼마나 고객의 폰에서 유연하게 돌아가는가? (배터리 및 메모리, 보안이슈 등)
- 앱이 출시 이후에 삭제를 고민하지 않을 정도로, 주기적으로 개선되는 면이 있는가?(UI 업데이트 등등, 소위 사용자를 즐겁게 할 수 있는 중요한 요소라 생각)
정도로 본다.
추가 :
내가 만일 끼칠 수 있는 영향력이 메이저한 단계에 있지 않다면, 내가 하고 싶은 일이 또 있는데, 말하자면 '일을 보다 효율적으로 하는 일'에 동참하고 싶다는 것이다. 어떤 단체에서 사용하고 있는 개발 프로세스나 협업 툴들이 있다면 그것을 기본적으로 사용하는 단계에서 더 나아가 프로세스를 보다 효율적으로, 그리고 협업 툴의 사용도를 최대치로 끌어올리고 싶은 마음이 있다. 나아가 개발 팀이 사용하기에 즐겁고 프로세스의 진척도를 잘 알 수 있는 그러니까 '성취도'를 좀 더 구체적으로 볼 수 있는 툴들이 있다면 그런 툴들을 찾아보는 일도 즐거운 일이 될 것이라 생각한다. 개발회의를 오거나이징 하며 새로운 버전에 필요한 요소들에 대한 의견들을 종합하고 정리하여 그것들을 개인의 인사이트를 거쳐 다시 구성원들에게 제의하는 오거나이저의 역할도 맡아보고 싶은 생각이다.
마지막으로 간결히 정리해보자면, 개발자가 어떤 '가치관'을 가지고 어떠한 '자세와 센스'로 앱과 플랫폼을 개발하는지에 따라 사용자가 접하게 되는 앱과 플랫폼은 천차만별로 변할 것이며, 스스로 개발자이자 사용자로써 얼마나 사용자의 요구사항을 이해하며 '좋아하는 앱' 을 만들 수 있는가?
이것들이 개발자로써 가져야 할 질문이자 가져야 하는 소양, 내가 가지고자 하는 소양이고자 갈고 닦고 싶은 것이다.
올바른 마음과 이해심을 바탕으로 진보해나가는 것.
내가 즐거워하는 것이 곧 그들이 즐거워 하는 것이자
내가 싫어하는 것이 물론 그들이 싫어하는 것이라는 것.
사용자이자 동시에 개발자로써 개발에 참여할 때,
진정한 user friendly한 앱, 서비스가 탄생한다는 것.
'LANGUAGES, METHODLOGY > STUDY' 카테고리의 다른 글
[STUDY] 깨끗한 코드란 무엇일까? 로버트 C.마틴의 클린 코드 (0) | 2022.11.13 |
---|---|
[객체지향] 최소 지식의 원칙 (0) | 2021.11.14 |
[안드로이드] MVC, MVP, MVVM에 대해 알아보자 (0) | 2019.02.16 |
[RxJava] RxJava란 무엇인가? (0) | 2019.01.30 |
[Unity] 유니티란 무엇인가? (나무위키 요약) (0) | 2019.01.27 |