안드로이드 엔지니어


어떤 일을 하나요?

Product

  • 산타토익 Android 앱을 개발하고 운영합니다.
  • 토익 뿐만 아니라 다양한 분야에 진출하기 위해 새로운 앱을 개발합니다.
  • 새로운 앱과 산타토익이 같이 운영될 수 있도록 모듈화 작업을 항상 동반합니다.
  • 사용자에게 빠르게 피드백을 줄 수 있도록 자동화를 위해 노력합니다.

AI UX

  • 다양한 AIEd(교육 인공지능) 기술의 가치를 사용자에게 효과적으로 전달하는 최선의 방법을 고민합니다.
  • 유연한 구조의 UI를 통해서 AI 기술을 빠르게 실험하고 피드백할 수 있는 환경을 제공합니다.
  • 사람과 AI 기술의 상호작용에 대한 연구를 지원하고, 논문을 작성합니다.
  • 유저들이 사용하는 AI 관련 기능을 실험, 측정 및 분석하기 위한 모듈을 구축합니다.

우리는 이렇게 일하고 있습니다.

  • 성장 - 우리는 기술적인 성장을 추구합니다. 💪

    새로운 것들을 끊임없이 배워야하는 건 개발자로서의 숙명이죠. 우리는 이러한 사실을 받아들이고, 이를 성장의 기회로 삼아 기술적으로 발전해나가고자 합니다. 새롭고 알지 못하는 것에 주춤하기보다, 호기심을 가지고 덤벼들 수 있는 사람이 되고자 합니다.

    AAC, 코루틴 등의 기술을 단순히 사용하기만 한다면, 기술적으로 성숙했다고 부르기 어렵습니다. 왜 사용해야하는지, 어떻게, 언제 사용하는게 좋을지 고민하는 사람이 되고자 합니다.

    새로운 기술, 관심 있는 기술을 적용함에 있어서 주저함이 있으면 안된다고 생각합니다. 이런 기술들을 빠르게 적용하고 실험함으로써 자신과 프로덕트의 성장을 이루고자 합니다.

  • 소통 - 우리는 효율적인 소통을 중요하게 생각합니다. 👋

    개인의 성장을 위해 기술적인 주제에 매몰되어서도 안되고, 회사의 성장을 위해서 기술적인 것을 놓쳐서도 안됩니다. 두 가지를 모두 이루기 위해 우리는 기술적인 호기심 만큼이나 전략적인 사고를 중요하게 생각합니다.

    작은 규모의 개발이라면 혼자서도 가능하겠지만, 큰 규모의 서비스를 만들기 위해서는 다른 사람과의 협업이 반드시 필요합니다. 우리는 소통을 중요하게 생각하고, 어떻게 하면 소통을 더욱 효율적으로 할 수 있을지 고민합니다. 소통이 필요할 때 망설임 없이 원하는 바를 이야기할 수 있는 사람이 되고자 합니다.

    소통이 없는 것도 문제이지만, 행동이 따르지 않는 논의는 더욱 지양합니다. 원하는 바가 있을 때 가능하다면 코드로 이야기합시다. 백 번의 말보다 한 줄의 코드가 더 좋습니다.

  • 코드 퀄리티 - 스페이스 조차도 코드로 생각합니다. 🎨

    개발자를 장인에 빗댄다면, 개발자가 만들어내는 코드는 장인이 빚어내는 예술 작품과 같습니다. 우리는 변수 이름, 함수 이름 하나 허투루 지나가지 않고, 기술을 사용하고 코드를 작성하는 데에 있어 마땅한 이유를 찾으려고 하는 개발 장인이 되고자 합니다.

    때문에 작성한 코드에 대해서는 코드 리뷰를 반드시 거치고, 꼼꼼하게 보기 위해 최선을 다합니다. 내 코드가 소중하다면 다른 사람의 코드도 소중하므로 코멘트는 정중하게 남깁니다. 다만 코드 리뷰의 대상이 사람이 되어서는 안됩니다. 리뷰를 할 때는 더 나은 코드와 디자인은 무엇인지에 집중합니다.

  • 프로세스 최적화 - 업무 과정에서 발생하는 비효율을 제거합니다. 🛠

    업무 과정에는 수 많은 비효율이 있습니다. 개발 과정에서 발생하는 사소한 것들부터, 매뉴얼화되지 않은 배포 절차, 루즈한 회의. 우리는 이러한 비효율을 민감하게 인식하고, 모든 면에서 효율적인 방법을 고민하는 사람이 되고자 합니다.

    키보드에 최적화되도록 단축키를 설정하고, 빌드 자동화를 도입해 배포 과정을 최적화하고, 회의가 루즈해지면 항상 변화를 모색합니다. 하지만 아직 개선해야 할 점이 너무도 많습니다. 불편해도 꾹 참고 견디기보다 사소한 부분에서 발생하는 비효율조차 참지 못하는 프로불편러가 필요합니다.

  • 비전 - 내가 만든 제품이 사회에 영향을 주는데 환장합니다. 🎁

    엔지니어라면 자신이 만든 프로덕트를 많은 사람들이 사용하길 원할 것입니다. 뤼이드는 누구나 평등하고 효율적인 교육을 받을 수 있다고 믿고 그것을 실현시키기 위해 AI와 같은 기술을 사용합니다. 그 가치를 유저가 직접적으로 경험할 수 있도록 제품을 만드는데 힘을 쏟고 있습니다.

이런 도구들을 사용하고 있습니다.

  • Github으로 소스코드를 관리합니다.
  • Sentry를 통해 버그를 추적합니다.
  • Bitrise를 통해 제품을 배포합니다.
  • Slack을 통해 의사소통합니다.
  • Notion으로 문서를 관리합니다.
  • REST, gRPC를 사용합니다.

이런 기술들을 사용하고 있습니다.

  • Kotlin을 사용해서 안드로이드 개발을 합니다. (100% Kotlin 사용 중)
  • Kotlin DSL을 사용해서 빌드스크립트를 관리합니다.
  • LiveData, ViewModel 등의 AAC를 적극 활용합니다.
  • RxJava, Coroutine을 사용해서 리액티브하고 비동기적인 처리를 합니다.
  • Dagger를 사용해서 의존성 관리를 합니다.
  • MVVM과 클린 아키텍처를 사용하고 있습니다.