생각정리
나의 2017년을 되돌아 보며
soulduse
2017. 12. 30. 02:54
나의 2017년을 되돌아 보며
1년차 안드로이드 개발자 다시시작
전 1년전 안드로이드 개발자로 1년을 채웠습니다. 그런데 다시 1년차로 시작하기로 하였습니다. 이유는 1년동안 미국을 다녀오면서 생긴 공백기 때문인데, 그래도 미국을 다녀오면서 영어를 조금은 할 수 있게 되었고, 내가 좋아하는건 아무리 생각해도 개발이라는 마인드, 그리고 시간내서 꾸준히 코딩해 만든 환율앱 덕분인지 지금의 회사에 운좋게 입사하게 되었습니다.
6개월 동안 나를 성장시킨 것
회사 생활속에서의 성장과 그밖에 활동에서 얻은 1년동안 나를 성장 시킨 3가지를 꼽아보았습니다.
1.이것이 무엇인고 Kotlin? RxJava? Php?
입사 후 맡은 간단한 기능을 추가하려는데 프로젝트를 열어보니 생소한 Kotlin 파일과, RxJava 코드가 여기저기서 사용되고 있었습니다. 당장 프로젝트를 파악하고 주어진 문제를 해결하기 위해서는 해당 내용들을 이해 해야했고, 생각만큼 많은 시간을 할당해주진 않았습니다. 그래서 매주 일요일 Kotlin 스터디를 시작하였고, https://github.com/kotlin-korea 에 참여하여 실력있는 안드로이드 개발자 분들과 Kotlin을 학습할 수 있는 기회를 얻게 되었습니다. 한달 정도 꾸준히 학습한 결과 별 어려움없이 맡은 과제를 잘 해결할 수 있었습니다.
현재는 개인 프로젝트의 경우 94% 정도가 코틀린으로 작성,
회사 프로젝트의 경우 75% 이상을 코틀린으로 작성할 수 있게 되었습니다!
지금은 Java가 어색할정도가 되었습니다.
RxJava의 경우 회사 동료에게 책 한권을 추천 받았는데 한권을 일주일동안 정독해서 RxJava를 기본 문법과, 반복 학습을 통해 사용하는데 큰 문제가 없게 되었습니다.
(막상 해보니 러닝커브가 높지 않아서 금방 익힐만 했습니다)
서버 작업도 해볼 기회가 생겼는데, 안드로이드 프로젝트에 필요한 API 작업은 직접 구현해보는게 좋지 않겠냐는 피드백을 받게되어, 처음으로 Php를 사용해보게 되었습니다. 처음 느낀 점이라면 변태같다 였는데 변수에 값 대입이나, 타입별 선언이 자바와 코틀린에 익숙해져 있던 터라 상대적으로 너무 유연한 느낌이었습니다. 처음 할때 어!? 이게 왜 되지?? 이런 느낌이 강하더군요.. 하지만 매일 서버 개발자 분들이 해주시는 코드 리뷰와 피드백을 통해 내 코드의 잘못된 점들을 알 수 있었고 Php 코드작성 요령에 대해서 조금은 감을 익힐 수 있게 되었습니다. 가장 좋은 점이라면 서버 언어를 알게되니 모든 문제를 클라이언트 단에서만 고민하는게 아니라 다양한 시각으로 바라볼 수 있게 된 점입니다.
2.서비스 하나 개발하기
회사에 입사한 2주 동안은 딱 내가 맡은 프로젝트는 이것이다 할 만한것이 없었습니다. 신규 입사자의 엄청난 의욕과 함께 회사에 얼른 도움이 되고싶어, 무엇인가 내가 스스로 나서서 할 만한 일거리를 찾아다녔습니다. 그래서 내가 뭘 할 수 있을지 물어도보고, 다른 운영팀에 현재 불편한 점이 뭐가 있느냐, 내가 개발로 어떤걸 도와줄수 있겠느냐 여기저기 물어보고 다녔고, 하나의 아이템을 찾게 되었습니다. 자동화 되면 참 좋은 일이 있는데, 자동화가 되지 않아서 일일이 순수 노가다로 하루 약 1500건의 운영이슈를 확인 및 검증을 해야한다는 것이었습니다. 이 일만 하루종일 처리하는데 대략 3명이 붙어서 출근부터 퇴근까지 노가다로 처리해야되는 일이었고, 너무 단순 반복적 일이다보니 퇴사자들이 계속 생겨나고 있다는 것입니다. 다행이 기존에 선배 개발자 분께서 틀을 잡아놓은 토이 프로젝트가 존재하였고, 이 틀을 바탕으로 살을 붙히기 시작했습니다. 혼자서 안드로이드 개발과 앱에 필요한 API 개발을 같이 진행하다보니 너무 정신이 없었습니다. 언어가 다른 코드를 스위칭 하면서 작업하는 일도 너무 적응도 안되고 알던것도 헷갈리더군요. (그렇게 순도 100% 모든게 내 책임)앱 개발은 시작 되었습니다.
1개월 차
아무것도 기획이 없이 시작했던터라, 시작한지 1개월동안은 어떤 기능을 붙히면 좋을까 개발 스펙을 어떻게 잡을까, 어떻게 하면 사용자들을 편하게 쓰게 할 수 있을까, UI 구성은 어떻게 하면 좋을까 등등 기획자분과 디자이너분 그리고 운영을 하시는 실무자 분들과 커뮤니케이션 하고 앞으로 진행할 프로젝트를 구체화 하는데 모든 시간이 소비하였습니다.
2~3 개월 차
조금씩 만들고 피드백 받는걸 엄청 자주 했습니다. (너무 많이 물어봐서 제가 올때마다 스트레스 받으셨을듯) 회사에 출근해서 코딩하다가 고개들면 점심 시간이고, 밥먹고 앉았다가 고개들면 벌써 퇴근 시간이고 이 상황이 계속 반복되었습니다. 하루가 이렇게도 빨리 갈수도 있구나 느끼는 기간이었습니다.
4개월 차
드디어 1차 버전 완성 및 배포를 진행 했습니다. 그런데 왜 아무도 안써줄까요. 난 열심히 피드백 받고 열심히 개발해서 완성했는데..
(내가 X고생해서 만든거 써달란 말이야)
우선 개발을 잠시 내려놓고 실제 운영하시는 분들께 많이 쓰게끔 홍보를 요청하기 시작했습니다. 그렇게 시간이 흘렀는데 큰 반응이 없더군요. 그래서 답답한 마음에 직접 실제 고객에게 홍보 하기로 마음 먹었습니다. 다행이 저희 회사측과 고객과 소통채널이 있어서 고객분들에게 한땀 한땀 글쓰기 + 앱 사용권유 신공을 시전 하였습니다.(네, 독촉하였습니다. 간절한 마음을 담아 여기저기 글을 남발하고 다녔습니다.)
이후 성과, 그리고 현재
현재는 제가만든 앱을 잘 사용해주셔서 전체 업무 비율중 80%정도는 자동화가 되었습니다 😃!
아래 그래프 상에 실제 앱 사용자수는 많지 않지만 전체 사용자의 80%가 사용하고 있습니다. (내부고객을 위한 앱이다보니)
이제 해당 부서에서는 3명이 할 일을 한명이서 처리할수 있게 되었고, 다른일에 집중할 수 있게 되었습니다.
앞으로 회사에서 년마다 절약되는 비용이 얼마가 될지 기대됩니다.
그리고 꾸준히 유입되는 크래시 레포트를 보면서 버그픽스에 힘쓰고 있습니다.
하나의 생태계 같은 앱을 만들어보니 뿌듯함이 😃
느낀점
작지만 서비스의 한 사이클을 직접 경험해보니 느낀점이 많습니다. 그중 세가지를 꼽자면,
첫번째 서비스중 개발이 차지하는 비중은 30% 정도도 안되는것 같다. 사용자들을 편하게 만드는 툴 정도로 생각하자.
두번째 커뮤니케이션은 정말 중요하다. 작은 단위로 개발하고 자주 피드백 받자.
세번째 안드로이드는 다양한 Os버전, 기기별로 버그 발생빈도가 엄청 다르고 대응해야될 문제도 엄청 다양하다.
이렇게 하나의 프로젝트를 책임지고 진행해보는 것은 정말 많은 도움이 되는것 같습니다!
3.개인프로젝트, 스터디, 세미나
늘 새로운 기술을 배우고 싶고, 더 깔끔한 코드를 작성하고 싶고, 어떻게 하면 선배 개발자 분들 처럼 잘 할 수 있을지 고민하게 되는것 같습니다. 조금만 시간이 지나서 내가 만든 코드를 보면 “내가 만들었지만 코드가 너무 아름다워!”면 좋겠지만 항상 “내가 만들었지만 참 종량제 봉투에 넣어야겠네!”라는 생각을 자주 하게 됩니다. 어떻게 하면 더 잘 할 수 있을지 몰라서 개인프로젝트를 하고, 개발 스터디를 하고, 좋다는 세미나가 열린다하면 참여했습니다.
3-1. 개인프로젝트
첫번째로 환율 알리미 앱을 만들었습니다. 시작은 미국에서 지내면서 안드로이드 손을 놓은지 1년이 다 되어가서 리마인딩 할겸 시작하게 되었습니다. 앱 아이디어의 배경은 미국에서 지낼때, 모아놓은 전재산을 들고가서 환율에 엄청 신경을 썼어야 했었는데 매번 시간을 내서 오늘은 얼마나 환율이 오르고 떨어졌는지 확인하기가 너무 번거롭고 나의 정신을 환율 확인하는데 쓰기 싫었습니다. (심할때는 주식처럼 계속 들여다 보고 있었던..) 그래서 내가 지정한 금액이 되면 알림이 울리게 하자라는 것이 나에게 필요한 기능이었고, 그때 아이디어를 바탕으로 조금씩 만들어서 완성하였습니다. 요즘엔 작지만 조금씩 수익(껌사먹을돈)도 생기니 개인프로젝트를 하는데 흥이나는 것 같습니다. 앱 개발을 하면서 Realm, Jsoup, DataBinding, etc 등등 다양한 기술들을 사용해보며 그동안 손 놓았던 다시 안드로이드 개발의 감을 다시 익힐 수 있었던 시간이었습니다.
언젠간 $100 되서 출금하는 날이 오겠죠..?!
현재는 두번째 앱으로 낚시관련 정보제공 및 커뮤니티 앱을 만들고 있습니다. 기능 스펙을 너무 크게 잡는 바람에 일이 커져서 앞으로 고생을 해야될듯 합니다. 로그인, 게시판 기능을 앱에서 구현하려면 안드로이드 보다 서버쪽을 파봐야될듯 하네요. 그래도 내가 좋아하는 것을 서비스화 하는 일이다보니 너무 즐겁습니다.
[ 현재 사용된 기술스택 ] : Kotlin, Retrofit, Gson, okhttp3, RxJava, Coroutine
[ 앞으로 필요한 기술스택 ] : AWS DB, S3, 크롤링 노드 사용예정
3-2. 스터디
오래동안 하나의 개발 스터디를 꾸준히 참여 하고 있습니다. 2년전 쯤인가 학창시절 안드로이드 개발 스터디를 만들어서 같이 학습하고 공모전도 나가보고 그랬었는데 그때 스터디에 참여셨던 서버개발자 분을 알게되어서 (지금은 형 동생 사이가 되었지만) 현재 그분이 운영하시는 스터디를 약 2년째 꾸준히 참여하고 있습니다. 정말 성실함과 열정이 대단하셔서 저 스스로 반성도 많이하게 되고, 직/간접적으로 어떻게 하면 좋은 개발자가 될 수 있을지 많이 배우고 있습니다. 저는 분야가 안드로이드 쪽에 가까워서 아쉽지만 그래도 실력있는 잡부를 꿈꾸는 저에겐 엄청난 공부와 자극이 되는 스터디 입니다.
스터디를 하면 좋은점 및 느낀점
- 내가 아는 지식을 공유하면 확실히 내 것이 된다.
- 개발자 끼리의 개발스러운 수다는 개발력에 힘을 불어 넣는다.
- 모르는 것을 물어보고 즉각적으로 좋은 피드백과 해결책을 찾을수 있다.
3-3. 세미나
천성이 게을러서인지 세미나 후기는 10개는 참여한것 같은데 3개밖에 작성하지 못했네요
그래도 세미나 참여를 통해서 여러 사람들과 만나고, 자극도 많이받고, 내가 무엇이 부족한지 알 수 있는 시간이었습니다.
반성하기
첫째 집착과 욕심 버리기
글을 쓰면서 생각해보다 내린 결론인데, "나는 개발을 잘 하고 싶다. 그래서 나는 이런이런 것도 만들수 있어야 하고, 남들한테 내가 이걸 만들었다고 자랑할수 있어야해!”라는 강한 집착을 늘 가지고 있었던것 같습니다. 빨리 뭔가를 완성해서 보여주고 싶어 안달나 있었습니다. 그래서 아직은 나에게 벅찬 내용들을 욕심부렸고 어떻게든 구글링을하여 완성은 하다보니 "나는 이정도면 어느정도는 하는것 같아" 라는 착각에 빠져 있었습니다. 어떻게보면 욕심에 체한것같네요. 잘하고 싶은 마음에, 개발 완성이 잘하는 것인줄 알고 모든 것이 거기에만 집중되어 있었습니다. 나중에 돌이켜 보면 늘 코드는 엉망이었고, 이상하게 나는 열심히하는데 왜이렇게 남들보다 코딩을 못할까라는 생각이 들기 시작하였습니다. 그렇게 다시 기초로 되돌아가는 현상을 매번겪고 있더군요. 어떻게 보면 "개발을 잘 하고싶다" 보다 "내가 원하는 기능을 만들고 싶다" 또는 “내가 만든걸 자랑하고싶다"에 가까웠던것 같습니다. 그래서 늘 빠르게 무엇인가를 완성하는데 집착 하였고, 기초는 뒷전 이었던것 같습니다. 이런 집착과 욕심에 대한 문제점을 알았으니. 앞으로는 이런 집착과 욕심은 조금만 부리고 천천히 가더라도 제대로 갈 생각입니다.
제대로 이해하고 넘어가기
글을 쓰는 오늘, 회사에서 동료에게 내가 만든 Kotlin의 Coroutine 코드를 보여주며 최신 기술을 써서 문제를 해결 했다며 자랑을 했습니다. 동료가 묻더군요, "사용하신 Coroutine에 launch 는 무슨 기능을 하는 얘인가요? launch 동작순서는 어떻게 되나요?" 저는 질문에 대답을 하지 못했습니다. 대충 구글링 + 이것저것 테스트 해보고 잘 동작하니 잘 되는 가보다 하고 거기서 끝이었거든요. 퇴근길에 스스로에게 너무 충격이었고, 너무 잘못된 방식으로 개발 하고 있다는 생각이 들었습니다. 그래서 Coroutine에 launch에 문서를 뒤져보았고 제대로 이해한 뒤 다시 설명해주었습니다. 앞으로는 사소한거라도 동작되니 끝이 아닌 제대로 이해하고 넘어갈 필요가 있겠습니다.
건강한 신체
입사 이후 코딩, 코딩, 코딩 내 인생은 코딩인것 처럼 코딩만 한것 같습니다. 물론 즐거워서 한 일이기는 하지만 얼마전 체중계에 몸무게를 재보니 무려 8키로가 쪘습니다. 살이쪄서 그런지 무릎도 괜히 아픈것 같고, 허리가 어딘가도 뻐근한게 아려오는것 같습니다. 헬스장 등록 해야겠습니다.
class MyLife {
fun main(args: Array<String>) {
var myWeight: Int = xx
var isExercised = false
while (true) {
wakeUp()
coding()
eat()
coding()
sleep()
myWeight++
if(isExercised){
myWeight--
}
if(myWeight >= 75){
getSick()
}
}
}
}
즐거운 수다
코드 한줄 작성하는것, 개발 관련 이야기를 나누는것, 스스로 발전을 위해 하는 활동/행위를 제외하고는 누군가를 만나서 시간을 쏟는게 너무 시간이 아까운것 처럼 느껴졌습니다. 그래서 소중한 가족, 친구들과 너무 연락을 안하고 산것 같습니다. 언제 가족, 친구와 하하호호 하며 웃고 수다 떨었는지 기억이 잘 안나는것 같습니다. 송년회는 늦었지만 신년회부터 시작해야겠습니다. 그리고 연락도 자주 해야겠습니다.
반응형