다시 시작 Restart 46

가상 로봇 이동을 통해 개발 생산성 향상 및 QA 시간 단축

# Situation 상황- 로봇 관제 플랫폼 내에 자율주행 로봇의 전역 경로 생성의 바탕이 되는 지도를 스마트폰을 활용해서 실제 로봇을 움직여 가면서 만들 수 있는 기능 개발을 담당했다.- 구현 뒤에 테스트를 위해서는 실제 로봇을 끌고 테스트 장소에 갔다 왔다 하는데만 2시간이 걸렸다. 매번 실제 로봇으로 테스트를 할 수가 없다보니 버그가 뒤늦게 QA 때 발견되었다.- 버그를 수정하면 QA 담당자가 다시 로봇을 끌고 나가서 테스트하는 것이 반복되었다. QA를 모두 통과하는데 보통 3~4일이 걸렸다. # Task 과제- 실제 로봇을 끌고 밖에 나가지 않고도 손쉽게 테스트할 수 있어야 했다.  # Action 행동- 주말에 시간을 내서 가상 로봇 이동을 구현하기로 마음먹었다.- 로봇이 가상으로 이동하면 되..

내란 사태, 정리 해고, 그리고 평화의 중요성

12월 3일 계엄, 12월 14일 탄핵안 가결12월 3일 갑자기 비상계엄이 선포되었다. 목숨을 걸고 국회로 달려간 시민들과 국회의원들 덕분에 계엄은 바로 해제되었다. 정말 그분들께 감사드리고 싶다. 언제든 다시 계엄이 선포될 수 있는 상황이 지속되다가 12월 14일에야 윤석열 대통령 탄핵안이 가결되었다. 투자 취소 및 정리 해고내가 다니는 스타트업은 거의 확정되었던 투자가 계엄과 탄핵안 가결 사이에 급작스럽게 취소되었다. 한 투자사가 투자를 취소하면서 줄줄이 투자가 취소되었고, 정리해고가 발표되었다. 12월 8일에 투자가 취소되기 시작했으니 12월 7일에 탄핵안이 가결되었다면 달라지지 않았을까. 그 어떤 투자사도 계엄 때문에 투자를 취소했다고는 말하지 않을 거 같다. 경제는 정치와 엮이는 것을 싫어하니까..

SSAFY 수료생 대상으로 백엔드 개발자 채용 면접하다

최근에 SSAFY 수료생을 대상으로 사내 백엔드 개발자 채용을 위해 면접관 중 한명으로 면접에 참여했다. SSAFY란SSAFY는 Samsung Software Academy For Youth의 약자로 삼성에서 운영하는 청년 SW 아카데미다.아래 13기 공고처럼 1년 동안 소프트웨어 개발을 공부한다. 13기 커리큘럼은 아래와 같다. 면접 전 서류 심사우선 서류를 훑어보았다. 업무 중에 지원서와 포트폴리오를 보다보니 기술스택이 맞는지, 지원 분야에 맞게 포트폴리오를 구성했는지 훑어보고 1차로 추렸다. 백엔드 분야를 모집했는데 포트폴리오 내용에 프론트엔드가 많다면 약간 의구심이 들었다. 백엔드에 관심이 없는데 지원한 것은 아닐까. 팀 내에서 함께 의견을 취합해서 5명을 추렸다. 면접1명 당 50분씩 진행했다...

PostgreSQL과 PGRouting을 활용 전역 경로 계획 속도 개선

# Situation 상황- 자율주행 이동 로봇은 전역 경로 계획Global Path Planning(우리가 지도앱으로 출발지와 도착지를 입력했을 때 나오는 경로를 생각하면 된다)을 바탕으로 자율 주행을 한다.- 기존 전역 경로 계획은 타팀에서 만든 패키지를 활용해 OSM(Open Street Map) 파일을 바탕으로 경로 계획을 했다.- 대규모 지역에서 서비스를 하게 되면서 OSM 파일이 기존 다른 서비스 지역과 비교해 10배 이상으로 커졌다. 전역 경로 계획 시 OSM 파일을 읽어서 그래프 형태로 메모리에 올리는 전처리 과정이 오래 걸리게 되어서 첫 경로 계획은 3초 이상 소요되었다. - 더 큰 지도 파일을 사용할 경우 당연히 전처리 과정이 더 오래 걸려서 첫 경로 계획은 더 오랜 시간이 필요했다.-..

"로봇 배달은 배달이 아닙니다. 집 앞 픽업입니다." - 송도 요기요 로봇 배달 체험기

송도에서 로봇 배달 시작인천 송도에서 로봇 배달이 시작되었습니다(관련 기사: 박진주, 요기요, 인천 송도에 '로봇배달' 실전 투입, MBC 뉴스, 박진주, 2024. 9. 9.) 요기요와 협업하는 배달 로봇 회사에서 일하고 있기도 하고, 송도에 갈 일이 있어서 요기요 로봇배달 서비스를 직접 이용해 보기로 했습니다. 일반 사용자 입장에서 요기요에서 로봇 배달 시키는 과정을 적어보겠습니다. 요기요에서 로봇 배달 시키는 방법요기요 앱 들어가기요기요 앱에 들어갑니다. 첫 화면에서는 로봇 배달이란 단어를 찾기가 어려웠습니다.  현재 위치로 변경하기먼저 위치를 현재 위치로 변경하기 위해서 맨 왼쪽 상단에 회사라고 적혀 있는 부분을 누릅니다. 주소 설정 화면에 진입해서 현재 위치로 주소 찾기를 클릭합니다.  현재 위..

깃허브 액션을 활용한 테스트 자동화로 코드 품질 개선

# Situation 상황- 입사 뒤 보니 테스트 코드를 작성하지만 테스트 자동화가 되어 있지 않았다.- PR(Pull Request) 리뷰 때 테스트가 모두 통과되는지 살펴보려면 매번 브랜치를 변경해서 테스트를 돌려야 했다.- 테스트를 실행하는 과정이 번거로워서 지나치게 되었고, 기존 테스트가 실패하는 코드가 통합 개발 브랜치(develop)에 병합되는 일이 발생했다. # Task 과제- PR 오픈 시에 리뷰 전에 미리 기존 테스트와 새로 추가된 테스트가 모두 통과하는지 자동화가 필요했다. # Action 행동- 깃허브 액션을 활용해서 PR 오픈 시 테스트를 자동화했다. # Result 결과- 매번 일일이 브랜치 변경해서 테스트를 돌릴 필요가 없게 되었다.- PR 리뷰 전에 테스트가 실패할 경우 PR ..

개발자 시연으로 QA 시간 감소 및 속도 개선

# Situation 상황- QA 시작일 전날 오후에 staging 서버에 해당 스프린트 작업분 코드를 반영해서 배포했다.- QA 시작 첫날 많은 버그가 나왔다.- 개발자와 PO, PD, QA 등 담당자들이 서로 다르게 기획을 이해해서 뒤늦게 이슈가 되는 경우가 있었다.  # Task 과제- 버그를 줄일 필요가 있었다.- 서로 같게 개발 스토리를 이해하고 있는지 확인하는 단계가 필요했다.  # Action 행동- 전 회사에서 개발자 프리뷰란 이름으로 QA 시작일에 개발자가 직접 기능을 소개하는 시간을 가졌던 것이 떠올랐다.- 동료 팀원과 함께 팀 내에 개발자 시연을 제안했다.- 스프린트 프로세스에 개발자 시연이 추가되어, 가능하면 QA 전에 늦어도 QA 시작일에는 시연을 진행하게 되었다.- 시연 방법은 ..

장고 어드민 도입으로 이슈 처리 속도 개선

# Situation 상황- 기존 어드민이 있었지만 기능이 제한적이었다.- 프런트 엔드 개발자가 부족해서 내부 구성원들을 위한 백오피스 기능 개발은 불가능한 상황이었다.- 타 팀에서 들어온 이슈를 백엔드 개발자가 운영 데이터베이스에 접속해서 변경 처리하는 경우가 많았다.- 백엔드 개발자들은 이슈를 처리하느라 기능 개발 시간이 부족해 추가 근무를 하게 되는 상황이 자주 발생했다.- 백엔드 개발자가 회의에 참여하거나 휴가를 쓰는 경우 이슈 처리가 지연되었다. # Task 과제- 백엔드 개발자가 아닌 누구나 이슈를 처리할 수 있는 백오피스 기능이 필요했다. # Action 행동- 백엔드 프레임워크로 장고 프레임워크를 사용하고 있었고 장고는 장고 어드민이란 기본적인 백오피스 기능을 제공했다. - 팀 내 장고 어..

슬랙 워크플로우를 통한 요청 통합 관리를 통한 요청 처리 프로세스 개선

# Situation 상황타 팀으로부터 요청이 여러 슬랙 채널에서 "살펴봐주세요", "이것 좀 해결해주세요." 등 짧은 메시지와 함께 @ 멘션 기능을 통해서 들어왔다. 그러다보니 다음과 같은 문제가 발생했다.- 공식 요청 채널이 없으니, 슬랙 DM을 통해서 요청이 오는 경우가 많았다.- 한명한테 요청이 몰리는 경우가 많았다.- 누가 어떤 요청을 받아서, 얼마나 처리하고 있는지 팀원 전체가 파악할 수 없었다.- 요청 내용을 파악하기 어려웠다. 요청을 파악하려면 슬랙 스레드 메시지 전체를 읽어야지만 알 수 있었다.- 요청에 중요도 긴급도 등 정보가 없었다. 따라서 모든 문제를 요청 받은 즉시 해결하게 되어 업무 흐름이 끊겼다. # Task 과제- 요청을 한 곳에 모은다.- 요청자는 요청 내용, 중요도, 긴급..

github, medium 등에서 나타나는 한국 개발자와 외국 개발자의 차이

github, medium에서 외국 개발자와 한국 개발자를 찾아보자 github Google의 People  github NAVER의 People velog.io 첫 페이지 미디엄에서 google로 검색(https://medium.com/search/users?q=google)해서 People 탭을 눌렀을 때 일부화면 캡쳐 차이는?나한테 느껴지는 가장 큰 차이는 바로 사진과 이름이다.외국 개발자들은 자기 얼굴이 담긴 사진을 많이 사용하고, 이름도 자기 이름 그대로 쓰는 경우가 대부분이다. 계정명도 대부분 자기 이름과 비슷하게 사용한다. 자신을 드러내는데 별 부담감을 느끼지 않는 것으로 보인다. 반면 한국 개발자들은 자기 얼굴 사진을 잘 사용하지 않는다. Github의 유명회사 소속인 경우는 자신의 이름을..

파이썬 비공개 패키지를 통해 타팀과 협업 및 업무 효율성 개선

# Situation 상황예전에 로봇 플랫폼 서버와 로봇이 주행하게 될 전역 경로 생성 서버가 따로 있었다. 전역 경로 생성 서버가 따로 있는 것이 비효율적이라 로봇 플랫폼 서버와 전역 경로 생성 서버를 하나로 합치면서 코드도 한 저장소로 합치게 되었다. 전역 경로 생성 개발자는 다른 팀이었는데, 백엔드팀 코드 저장소에서 같이 개발하게 되었다. 하지만 전역 경로 생성 개발자는 장고에 대한 이해, 테스트 작성 등 백엔드 개발 관련 지식이 부족했다. 전역 경로 담당자는 예전보다 개발하는데 더 오래 걸리게 되었고, 나와 만날 때 다시 과거로 돌아가 서버 분리를 하면 좋겠다는 이야기를 자주했다. # Task 과제과거로 다시 돌아가 전역 경로 생성 서버를 따로 두는 것은 비효율적이었다. 로봇 플랫폼 서버가 전역 ..

내가 이룬 작은 개선과 성취를 STAR 기법으로 꾸준히 기록하기

피하고 싶지만 피할 수 없는 면접취업준비생이라면 절대 피할 수 없는 게 면접이다. 재직자라도 언제든 맞딱뜨리게 될 일이 바로 면접이다. 기업의 수명은 짧기 때문이다. 운 좋게 대기업에 다니고 있다면 좀 더 길겠지만 스타트업에 다니고 있다면 수명이 정말 짧다. 경제 위기 등 외부 요인으로 기업은 언제든 휘청일 수 있다. 내 의지나 노력과 관계 없이 권고사직을 당해서 다시 취업을 준비해야 하는 상황에 처할 수도 있다. 면접, 자기 홍보가 필요한 상황취업을 준비해야 하는 상황이 되었을 때 면접 시 우리를 평가하는 면접자는 우리를 모른다. 우리가 어떤 장점을 갖고 있는지 말이다. 경력자라 하더라도 지난 회사들에서 어떻게 일해왔는지, 문제를 일으키지는 않았는지, 어떤 성취를 얻었는지 모른다. 자기 스스로 자신의 ..

삼육대 학생들에게 테스트 주도 개발을 강의하다

전 회사 친구로부터 받은 부탁전 회사 친구가 삼육대 학생들을 대상으로 백엔드 강의를 하고 있어서 테스트 주도 개발 특강 부탁을 받았다. 처음에는 호기롭게 하겠다고 했는데, 시간이 다가오자 무슨 말을 어떻게 해야 할지 고민이 많아졌다. 그 친구들한테 뭔가 남았으면 좋겠는데, 시간만 뺐는 것은 아닌지, 별로 도움이 안 되는 것은 아닌지 등등 말이다. 고민테스트 주도 개발을 어떻게 하면 하게 만들 수 있을까. 테스트 주도 개발이 사실 쉽지는 않다. 특강이 끝난 뒤에 바로 시도하지는 못해도, 반드시 하고 싶게 만들려면 어떻게 하는 게 좋을지 고민이 되었다. 평범한 개발자인 내가 하는 말이 설득력이 생기려면 어떻게 해야할까 고민이 컸다. 결국 객관적인 자료나 사례를 바탕으로 설득을 해야겠다고 생각했다. 이야기 시..

첫 해외 출장에서 깨달은 것들

미국 마이애미로 해외 출장을 다녀왔다. 첫 해외 출장, 첫 미국 출장. 나에게는 새로운 경험이었다. 체력의 중요성3월 23일 토요일 오후 4시에 인천공항에서 비행기 탑승해서 마이애미 현지 시간 3월 24일 일요일 새벽 5시 경 마이애미 공항에 도착해서 비행기에서 하차하기까지 25시간이 소요되었다. 24일 오전에 도착했으므로 24일 밤이 되기까지 잠을 잘 수 없었다. 다음 날이 월요일이라 바로 쉬지 못한 상태로 출장 일정이 시작되었고, 출장 기간 내내 피곤했다. 다음에 출장을 가게 된다면 시차 적응을 빨리할 수 있는 방법을 찾아보고 적용해봐야 할 거 같다. 계획대로 진행되지 않는 일정모든 일이 그렇겠지만 계획대로 진행되지 않았다. 출장 기간 내내 네트워크 이슈로 계획대로 진행할 수 없는 상황이었다. 모바일..

'어제보다 오늘이 나아지는 세계'를 만들기

'어제보다 오늘이 나아지는 세계'김연수 소설가의 책 '우리가 보낸 순간'의 책 끝 부분에 '날마다 글을 쓴다는 것'이란 글에 나온 표현이다. 남들이 봤을 때 김연수 소설가는 스물 셋에 시인으로 등단하고, 스물 넷에 장편 소설로 문학상을 받은 천재 작가다. '날마다 글을 쓴다는 것' 글을 보면 천재 작가인 김연수 소설가도 소설 쓰기를 그만둘까 고민한 적이 있다고 한다. '재능이 없다는 의미'몇 번 대학에서 글쓰기를 가르치고 난 뒤에 나는 자신에게 생긴 부정적인 일들을 '재능이 없다는 의미'로 받아들이는 사람이 십대 시절의 나뿐이 아니라는 사실을 발견하게 됐다. 소설창작 시간에 관례대로 합평이라는 걸 한 적이 있었다. 칭찬을 오천 번 정도는 받아도 원래의 밝고 창의적인 아이 때의 모습으로 돌아갈 수 있을까 ..

GitOps와 AWS ECS 사용 시 베이스 도커 이미지를 활용한 배포 속도 개선

# Situation 상황사내에서 DRF로 개발하고 있으며, Github Action과 AWS ECR, ECS를 활용해서 배포를 하고 있다. Github Action에서 배포 실행 버튼을 누르면 아래와 같은 순서로 배포가 진행되었다.1. 선택한 브랜치의 코드를 바탕으로 도커 이미지 생성해서 ECR로 이미지 업로드2. 1번에서 업로드한 ECR 이미지로 API 서버, 워커 서버 등 배포 진행 # Task 과제1번이 프로젝트가 커지고 외부 라이브러리나 팩키지 설치가 많아질수록 속도가 오래 걸렸다. 특히 PostGIS를 쓰게 됨에 따라 관련 해서 우분투에 libgdal-dev 팩키지 설치가 필요해졌는데 이 팩키지 설치만 몇 십초 씩 걸려 긴 시간이 소요되었다. 어떻게든 속도 개선 작업이 필요했다. # Actio..

ChatGPT로 고급 개발자의 피해가 클까? 초중급 개발자의 피해가 클까?

사람마다 의견이 갈릴 거 같다. 내 의견은 고급 개발자다. 기업의 입장에서 생각하기기업은 돈을 벌기 위한 조직이다. 투자는 적게 하고, 수익은 많이 나는게 최고다. 기업 입장에서 개발자들은 자원 중 하나다. 그래서 인적 자원(Human Resource, HR)이라고 한다. 기업의 입장에서는 4000만원짜리 개발자 A와 8000만원짜리 개발자 B가 있다면 당연히 두 배 비용을 지불하고 있는 B가 A의 최소 두배만큼 일을 해주길 원할 것이다. </p..

채용 플랫폼이 아니라 홈페이지나 인사팀 메일로 직접 지원하면 결과에 영향이 있을까?

인사 담당자 입장에서 한번 생각해보자. 채용 플랫폼으로 지원하는 것을 더 좋아하지 않을까? 채용 플랫폼을 원티드나 리멤버 등 하나만 이용한다면 관리 차원에서 좋아할 수도 있다. 하지만 보통 채용 플랫폼을 하나만 이용하지는 않는다. 원티드, 사람인, 리멤버, 링크드인 등 여러 플랫폼을 이용하고, 헤드헌터, 사내 추천 등 여러 채널을 이용해서 채용을 진행한다. 직접 지원하면 인사 담당자 입장에서 채용 수수료를 아낄 수 있지 않을까? 채용 수수료를 찾아보자. 원티드 경우 연봉의 7%이다. 프로그래머스의 경우도 연봉의 7%이다. 보통 7% 정도로 생각하면 될 거 같다. 7%가 별 것 아닌 거 같지만 연봉이 5000만원이라면 기업 입장에서는 350만원이나 되는 큰 돈을 수수료로 지불해야 한다. 직접 지원한 경우 ..