Prologue

상반기에 2020 라인 앱 개발 챌린지에 참가했다. 사전 과제를 진행하고, 이후에 '서류 - 1차 면접 - 2차 면접 - 최종 합격’과 같은 프로세스가 진행되는 것이었다.

결론부터 말하자면, 과제에서 탈락했다. 탈락했던 가장 큰 이유는 기능이 잘 동작하지 않는 현상이 있었기 때문이다. 로컬에서 필자가 테스트했을 당시에는 잘 되었지만, 사진을 찍고 비트맵으로 변환해서 처리하는 부분에서 잘 동작하지 않았던 것이다. 굉장히 아쉬웠지만, 평가자분들의 피드백을 받을 수 있다는 것에 감사하며 아쉬움을 달랬다.

Introduce

누군가는 궁금해 할 수도 있을 것 같아서 간단하게 메모장 애플리케이션에서 사용된 기술들과 필자가 받았던 피드백을 보며 글을 시작해본다.

💡 Features

  • You can create text-format notes and save photos with attachments.
  • Pictures can be taken through three methods: camera shooting / gallery / URL address.

🔨 Tech Stack & Libraries

  • Minimum SDK level 21
  • Kotlin based + RxJava2 for asynchronous.
  • Jetpack
    • LiveData - notify domain layer data to views
    • Lifecycle - dispose observing data when lifecycle state changes.
    • ViewModel - lifecycle aware, UI related data holder.
    • databinding
    • Navigation Component - single activity, several fragments.
    • Room - internal database.
  • Glide - loading images.
  • Koin - dependency injection.
  • TedPermission - easy to check and request android permissions.
  • TedImagePicker - simple image picker
  • RoundedImageView - imageview that supports rounded corners

📬 Feedback

☑️ [TODO]

  • [O] Usecase를 interface를 통해 느슨하게 결합
  • [O] 메모 작성할 때, 줄바꿈 구현
  • [O] URL, 갤러리 이미지가 정상적으로 첨부되지 않는 이슈 해결

Subject

그렇다면 '왜 이제서야 후기를 남기며, 이 글을 쓰는거지?'라고 궁금해 할 수도 있을 것 같다. 제목을 보았다면, 눈치 챘을 것이다. 스토어에 출시를 했다. '출시’라는 말은 거창한 것 같지만, 사실 거창한 게 아니라고 생각한다.

해당 앱을 개발하면서 여러 목표들이 있었다.

[1]. 탈락했다고 생각한 결정적인 이유를 찾아서 고치고 싶었다.
사실, 개발하면서도 스스로 애매한 부분이었다. 제출 시간이 얼마 남지 않은 상태에서 많은 테스트를 해보지 못했던 게 실수였다. 피드백을 받은 뒤, 해당 부분이 동작하지 않았던 원인을 파악하고 이를 고쳤다. 고치면서 '왜 이걸 이렇게 구현했을까?'라는 후회가 들었지만, 이미 지나간 일이기 때문에 '다음에는 이런 실수를 하지 말아야겠다’라고 생각하며 가볍게 넘겼다.

[2]. 과제에서 끝나는게 아니라 더 개발하면서 내가 적용하고 싶은 것들도 적용하고 출시하고 싶었다.
과제를 하면서 피드백을 받고 끝내고 싶지 않았다. 계속 개발하면서 내가 적용해보고 싶은 기술이나 아이디어, 기능 등을 추가하여 출시하고 싶었다. 출시를 하게 되면, 혼자 개발하던 것과는 다른 점들을 경험할 수 있을 것이라 생각했다.

[3]. 재미있었다.
구조를 설계하고, 어떠한 기술들을 적용하여 앱을 개발할지 생각하는 과정과 실제로 앱을 개발하는 게 너무 재미있었다. '시간 가는 줄 몰랐다’라는 표현이 딱 맞을 것 같다. 오류를 만나도 해결하기 위해 고민하고 실제로 해결하는 과정 모두가 재미있었기 때문에 계속 개발하였다.

In Summary

꾸준히 유지보수 하고 디자인도 입히고 개발하면서 이쁘고 편리한 앱을 만드는 게 목표이다. 더 나아가서 '편의를 제공하는 개발자’라는 나의 목표에 다가가기 위해 더욱 더 노력할 것이다.

Google Play Store