나를 뒤처지게 두라

2 days ago 4
  • Android 개발은 2014년 Java 수업에서 알게 된 무료 강의와 첫 할 일 앱에서 시작됐고, 손안의 소프트웨어가 현실에 닿는 경험이 동력이 됨
  • 10년의 커리어는 데이트 앱, 약물 접근성, 여행 지원처럼 사용자에게 실제 이익이 있는 앱을 유지보수하며 기술의 목적을 확인한 시간이었음
  • 강의, 해커톤, 첫 직장, Droidcon NYC를 거치며 결과물보다 사람들과의 연결과 공개 지식의 전달이 더 오래 남는다는 사실을 체감함
  • LLM은 컴파일되는 코드와 리뷰까지 제공할 만큼 개선됐지만, Stack Overflow식 탐색과 반박, 투표, 시행착오에서 생기는 이해를 약화시킴
  • 소프트웨어 개발은 반복 작업 자동화만으로 대체되지 않는 예술이자 공예이며, 인간이 인간을 위해 함께 만들고 나누는 활동이어야 함

Android 개발을 시작하게 된 계기

  • Android 개발은 2014년 대학 Java 수업 중 동급생이 공유한 무료 온라인 강의에서 시작됐고, 첫 목표는 로컬 저장소가 있는 할 일 목록 앱을 만드는 것이었음
  • 완성한 앱을 휴대폰에서 실행해 부모에게 보여준 순간은 “전구가 켜진 순간”으로 남았고, 손에 들고 다니며 직접 상호작용할 수 있는 실제 소프트웨어라는 점이 강한 의미를 만들었음
  • 앱은 주머니 속에 항상 존재하며 정리와 생산성을 돕는 도구였고, 이 경험을 통해 사람들에게 긍정적 영향을 주는 도구를 제공하는 일이 기술의 목적임을 체감함
  • 2018년에는 훗날 아내를 만나게 된 데이트 앱을 직접 다루는 일을 하며, 소프트웨어가 현실에 미치는 영향을 더 직접적으로 경험함
  • 이후 10년 동안 Android 개발자로 역량을 다듬으며, 특별한 사람을 찾는 일, 약물 접근성을 높이는 일, 여행을 지원하는 일처럼 실제 사용자에게 이익이 있는 앱들을 유지보수함

개발 여정을 만든 사람들

  • 앱 자체보다 더 오래 남은 것은 앱을 가능하게 만든 사람들과의 연결이었음
  • 강의와 공개 지식

    • 초기 목표는 가능한 한 많은 정보를 흡수하는 것이었고, 매주 강의를 들으며 교수가 가르치는 Android 내용을 익힘
    • Googler들이 날씨 앱을 만드는 방법을 가르치는 또 다른 강의도 들었고, 수업 사이와 점심시간까지 활용해 앱을 만들 만큼 몰입함
    • 카메라 뒤에 있는 사람들이 가진 깊은 지식과 이를 공개적으로 공유하려는 태도가 강한 인상을 남김
  • 해커톤과 팀 빌딩

    • 이후 몇 년은 직접 만들며 연습하는 시간으로 이어졌고, 10개가 넘는 해커톤에 참석하며 수백 명의 예비 소프트웨어 엔지니어와 연결됨
    • 친구들과 차를 타고 2~8시간 이동해 3일 동안 거의 잠을 자지 않고 소셜 앱, 반려동물 추적기, NFC 태그 CTF 게임 등을 만듦
    • 카페인으로 버티고 기술 스택을 두고 다투면서도, 웃음과 우정, 팀으로 무언가를 만들었다는 자부심이 주된 보상이었음
    • 무엇을 만들었는지나 상을 받았는지는 중요하지 않았고, 경험 자체가 보상으로 남음
  • 첫 직장과 RxJava

    • 졸업 후 디지털 마케팅 회사에서 전문 Android 개발자로 첫날을 시작했고, 옆자리 동료에게 “RxJava에 대해 무엇을 알고 있느냐”는 질문을 받음
    • RxJava를 전혀 몰라 당황했지만, 동료는 판단하지 않고 반응형 프로그래밍, 함께 작업할 앱의 맥락, 빠르게 따라잡는 방법을 알려줌
    • 두 사람은 사무실에서 웃음을 만드는 동료가 되었고, 동시에 일과 성장에 깊은 열정을 유지함
  • Droidcon NYC와 지식 환원

    • 같은 동료가 첫 Android 콘퍼런스인 Droidcon NYC에 데려갔고, 같은 좁은 관심사를 가진 수백 명의 엔지니어와 수십 명의 발표자가 모인 환경이 큰 영향을 줌
    • 발표자들이 자발적으로 지식을 공유하는 모습은 다음 세대 Android 엔지니어에게 자신의 전문성을 나누고 싶게 만든 계기가 됨
    • 다른 엔지니어를 도울 기회를 찾고, 이전에 받은 도움을 앞으로 전달하는 일이 커리어의 중요한 원칙이 됨

LLM이 약속한 개발 방식과 실제 경험

  • LLM이 대중화되며 “이제 코딩을 배울 필요 없이 원하는 것을 프롬프트로 입력하면 코드가 생성된다”는 단순한 약속이 기존 소프트웨어 개발 방식을 위협함
  • 처음에는 새로운 기술 가능성에 기대했지만, 실제 사용에서는 존재하지 않는 메서드를 제안하거나 명백한 버그를 만들거나 최악의 경우 컴파일되지 않는 코드를 생성함
  • 더 좋아질 것이라는 약속 이후 다시 사용했을 때는 실제로 개선되어, 컴파일되는 코드를 작성하고 스택 트레이스를 분석해 수정안을 제안하며 코드 리뷰까지 수행함
  • 하지만 개선된 기능은 동시에 인간적 경험을 고갈시킴
  • 모르는 것이 생기면 AI에 묻고 목표 달성에 작동하는 첫 답변에 의존하게 되었고, 이전처럼 Stack Overflow에서 같은 문제를 겪은 사람이 공개적으로 공유한 해결 과정을 따라 배우는 일이 줄어듦
  • Stack Overflow에는 단순한 도움뿐 아니라 가정을 반박하고 도전하는 피드백이 있었고, 검색과 검토, 커뮤니티 투표를 통해 해결책의 승인과 반대를 살피며 문제와 해법을 근본적으로 이해할 수 있었음

자동화가 약화시키는 학습과 협업

  • 엔지니어는 자동화를 좋아하지만, 자동화가 가장 잘 작동하는 영역은 사소하고 반복적인 작업
  • 무언가를 만들어야 할 때 10년간 다듬은 기술을 쓰기보다 기계에 위임하면, 회복력 있고 오래가는 소프트웨어를 만드는 데 필요한 비판적 사고 역량이 약해질 수 있음
  • LLM이 빠르게 코드를 만들어주기 때문에 시스템에 대해 더 비판적으로 생각할 수 있다는 관점도 있지만, 소프트웨어 개발 학습의 핵심인 시행착오를 놓치기 쉬움
  • 시행착오는 앱이 작동하는지 충돌하는지에 그치지 않고, 목표 달성에 가장 적합한 아키텍처, 라이브러리, 패턴, 스타일을 찾기 위해 여러 방식을 시도하는 과정임
  • 해결책에 대한 피드백도 동료와 마주 앉아 구현 선택과 트레이드오프를 논의하기보다 블랙박스에 묻게 되면, 실제 프로젝트에서 무엇이 되고 안 됐는지에 기반한 대화가 사라짐
  • 트레이드오프 논의는 이론이 아니라 다른 사람이 직접 겪은 경험에 기반하는 경우가 많았고, 그런 대화가 구현 판단을 더 깊게 만듦

인간을 위한 소프트웨어

  • LLM은 예측 기계이며, 열린 곳에서 배우고 만들기를 선택한 엔지니어들의 오랜 헌신 위에서 학습된 텍스트 생성기이자 통계적 시스템으로 규정됨
  • 공개적으로 만드는 일은 기술을 가두지 않고, 젊은 엔지니어들이 탐색하고 이해하고 배울 수 있는 실제 예시를 만드는 행위였음
  • LLM은 코드가 컴파일되지 않을 때 함께 웃지 않고, 누군가 “이게 어떻게 동작하느냐”고 물었을 때 열정적으로 설명할 수 있을 만큼 소프트웨어 이해를 길러주지 않음
  • 무엇보다 고개를 돌려 웃으며 “우리가 이걸 만들었다”고 함께 말하는 기쁨에 참여하지 못함
  • 사람과 연결되고, 취약함을 드러내며 어려움을 공유하고, 도움을 받은 뒤 블로그 글이나 발표로 다시 나누는 습관이 AI 사용으로 약해졌지만 다시 회복할 필요가 있음
  • 소프트웨어 개발은 헌신, 인내, 강한 공동체가 필요한 예술이자 공예이며, 인간이 인간을 위해 만든 것이어야 함
  • AI와 함께 만드는 경험이 정말 미래라면, 그 미래에서는 뒤처져도 된다는 결론에 도달함
Read Entire Article