전체 글 386

구라 가불假拂의 생성과정

구라와 가불구라는 거짓말을 속되게 이르는 우리말이다. 가불은 봉급을 정한 날짜 전에 지불하는 것을 뜻한다. 다음달 급여를 미리 받는 것을 보통 가불이라고 한다. 기업 내 구라가 만들어지는 과정회사를 다니다보면 대표든 팀장이든 일정을 묻는다. 팀장: "OO 기능 개발 언제 시작했죠?"팀원: "두 달 전쯤 시작했습니다."팀장: "언제쯤 완료될까요?" 팀원은 생각한다. 이미 두 달이나 보냈지만 진척이 많지는 않은 상태라 다시 두 달 걸리겠다고 말하기에는 부담스럽다. 두 달이 더 필요해보이지만 팀장에게 능력 없는 모습을 보이고 싶지 않고, 신뢰를 얻기 위해서 미래의 자신의 시간을 땡겨서 쓰자란 생각에 아래처럼 말해버린다. 팀원: "한 달 정도 더 하면 완료할 수 있을 거 같습니다." 팀장은 OO 기능 한 달 뒤..

축구팀과 스타트업은 닮았다

목표축구팀의 목표는 상위 리그로의 승격이다. 리그가 올라갈수록 팀의 위상이 높아져 더 많은 수익과 스폰서십을 확보할 수 있기 때문이다.스타트업의 목표는 단계별 성장을 거쳐 IPO를 통해 상장하거나 유니콘 기업이 되는 것이다. 시드, Pre-A, Series A 등 투자 단계를 거치며 점차 규모를 키운다. 멤버축구선수의 목표는 상위 리그로 올라가서 EPL 같은 세계적인 리그에서 뛰는 것이다.스타트업 멤버는 스타트업과 함께 성장하거나 다음 단계 스타트업으로 이직해 구글, 마이크로소프트 같은 글로벌 기업에서 일하는 것을 목표로 삼는다. 또는 경험을 쌓아 유니콘 기업을 꿈꾸며 자신의 스타트업을 창업하기도 한다. 평가축구선수는 팀의 성과와 개인 지표로 평가받는다. 리그 우승, 골, 어시스트, 패스 성공률 등이 주..

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

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

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

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

토끼와 거북이의 경주, 길게 보면 끝에 가서는 거북이가 이길 수 있다

누구나 아는 이솝 우화 토끼와 거북이 이야기토끼와 거북이는 달리기 경주를 벌인다. 토끼는 달리기 경주를 당연히 이길 거라고 생각하고 목표지 중간지쯤 가서 낮잠을 잔다. 토끼가 낮잠을 자는 사이에 거북이는 쉬지 않고 달리고, 결국 거북이가 토끼를 이긴다. 토끼와 거북이의 속도 비교토끼의 최대 빠르기는 75km/h이고, 거북이는 1.5km/h이다. 토끼가 거북이보다 50배나 빠르다. 상식적으로 거북이가 이길 것이라고 기대하기는 쉽지 않다.  토끼는 1시간 동안 75km를 갈 수 있으니, 1시간의 1/10인 6분 동안 전속력으로 달리면 7.5km를 갈 수 있다. 이 거리를 거북이가 가려면 쉬지 않고 5시간 동안 가야 한다. 토끼와 거북이 이야기를 하루짜리 현실적인 이야기로 재구성해보자. 출발지에서 도착지까지 ..

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.) 요기요와 협업하는 배달 로봇 회사에서 일하고 있기도 하고, 송도에 갈 일이 있어서 요기요 로봇배달 서비스를 직접 이용해 보기로 했습니다. 일반 사용자 입장에서 요기요에서 로봇 배달 시키는 과정을 적어보겠습니다. 요기요에서 로봇 배달 시키는 방법요기요 앱 들어가기요기요 앱에 들어갑니다. 첫 화면에서는 로봇 배달이란 단어를 찾기가 어려웠습니다.  현재 위치로 변경하기먼저 위치를 현재 위치로 변경하기 위해서 맨 왼쪽 상단에 회사라고 적혀 있는 부분을 누릅니다. 주소 설정 화면에 진입해서 현재 위치로 주소 찾기를 클릭합니다.  현재 위..

AWS ECS(Elastic Container Service)를 활용한 HTTP 서버 구축 실습 예시

ECS란?"Amazon Elastic Container Service(Amazon ECS)는 컨테이너 애플리케이션을 쉽게 배포, 관리 및 확대할 수 있도록 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스"(출처: Amazon Elastic Container Service란 무엇입니까?) 쿠버네티스Kubernetes 같은 컨테이너 오케스트레이션을 제공해주되 AWS가 완전 관리해줘서 좀 더 쉽고 편하게 쓸 수 있습니다.   ECS 서비스 화면 들어가기검색창에 ecs를 입력하면 Elastic Container Service가 맨 위에 나옵니다. 해당 서비스를 클릭합니다. 아래 같은 화면이 보입니다. 클러스터 생성실습을 위한 것이니 고민하지 않고 클러스터 이름에 ecs-cluster 라고 입력합니다. 인프라..

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

# 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 행동- 백엔드 프레임워크로 장고 프레임워크를 사용하고 있었고 장고는 장고 어드민이란 기본적인 백오피스 기능을 제공했다. - 팀 내 장고 어..

Q. 파이썬 비공개 패키지를 만들고 다른 프로젝트에서 쓰는 방법은?

언제 비공개 패키지가 필요한가?팀 내에서 여러 저장소에서 사용하는 공통 모듈들이 있다. 공통 모듈을 한 저장소에 모아두고 오픈 소스로 공개하면 쉽게 쓸 수 있다. 하지만 보안상 이유로 공개할 수 없다면 비공개 패키지를 사용하게 된다. 1. Github에서 비공개 저장소 만들기비공개 저장소를 하나 만들자. private-package로 하나 만들었다. 이름은 원하는대로 만들면 된다. 실습을 위해서 아주 간단한 더하기 메소드만 갖고 있는 Calculator 클래스를 하나 추가하자. class Calculator:    def sum(self, a, b):        return a + b pyproject.toml은 아래처럼 간단히 입력하자. name은 패키지명인 calculator와 동일하게 적어야 한다..

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

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

영어 이력서 어떻게 작성해야 할까 - 구글 직원 이력서 살펴보기

Sahil Gaba의 이력서링크드인에서 구글 직원인데 이력서를 공개한 것을 보았다.Sahil Gaba란 구글 직원의 이력서이다. 출처: Sahil Gaba의 링크드인 포스트 This is the resume that got me into Google. Sahil Gaba 이력서 살펴보기딱 한 장딱 한 장이다. 이력서 작성을 도와주는 사이트를 가도 비슷하고, 구글 드라이브 Google 문서 템플릿 이력서도 비슷하다. 물론 한국 이력서 양식도 한장이긴 하다. Canva에서 이력서 양식을 살펴봐도 보통 한장이다. 한 장 안에 핵심 정보를 다 넣는 것이 필요한 거 같다. 기술 정보부터Sahil Gaba 이력서의 특징은 기술 정보부터 넣었다는 점이다. 채용 담당자 입장에서 학력이 좋아도, 필요한 직무 기술을 갖고..

기타 Etcs 2024.06.22

Q. 파이썬 비공개 패키지 저장소 만들 때 주의사항은?

A. 공개 패키지와 마찬가지로 최상위 패키지는 하나만 있어야 하고, pyproject.toml을 작성해야 한다. tag를 추가하는 것을 추천한다. 비공개 패키지는 언제 사용할까?기업 규모가 커지게 되면, 서비스가 늘어난다. 예를 들어서 장고 프레임워크를 사용한다면, 장고 프레임워크를 사용하는 서비스가 여러 개가 되며, 당연히 저장소도 여러 개가 된다. 이때 유틸리티 성격의 공통 모듈이 늘어나게 된다. slack 메시지 처리, AWS S3 저장 관련 등 오픈 소스 패키지에서 약간만 수정해서 공통으로 쓰는 것들이 그런 예다. 이런 공통 모듈을 비공개 패키지로 분리하면 공통 모듈을 한 곳에서 관리할 수 있어서 생산성이 올라간다. 공개 패키지로 하면 더 편하지만 외부 공개할 수 없는 모듈도 존재할 때 비공개 패..

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

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