전체 글 386

코드 리뷰에서 반복되는 어떤 패턴을 추출하면 어떨까?

새롭게 옮긴 회사에서는 코드 리뷰가 활발하다. 활성사용자수가 많아서 실수하면 큰 일이 발생하니까 코드 리뷰를 적극적으로 할 수밖에 없다. 코드 리뷰를 읽다보니 어떤 패턴 같은 게 느껴졌다. 그 패턴을 추출하면 어떨까? 배경 어떤 조직 내에 특출난 사람이 있기도 하지만, 그런 사람들은 오래 있지 않는다. 어떤 조직 팀에 들어갔다면 엇비슷한 실력일 가능성이 크다. 결국 엇비슷한 실력을 가진 사람이 새로 들어왔다면 전에 들어온 사람이 실수했던 것을 반복할 가능성이 아주 크다. 따라서 코드 리뷰를 하는 리뷰어도 중복된 얘기를 할 수밖에 없게 된다. 리뷰를 받는 사람만 바뀔 뿐. 어떻게 1. 풀리퀘스트PullRequest(코드 반영 요청)에 리뷰를 모두 수집한다. 리뷰가 많다면 더욱 효과적이다. 간단히 셀레늄 같..

블로그가 과연 취업에 도움이 될까?

어떻게 블로그를 운영하느냐에 따라 도움이 되기도 하고 안 되기도 한다. 도움이 안 되는 경우 단순히 스택오버플로우 식으로 어떤 에러 상황을 만났고, 검색했더니 해결책이 이게 나와서 이렇게 해결했다란 글만 많다면 사실 취업에 도움이 안 될 수 있다. 도움이 되는 경우 - 면접 질문에 자주 나오는 것들을 잘 정리하면 도움이 된다. 예) JWT란? - 자신의 이력서에 적은 기술 스택을 정리한 경우 도움이 된다. 예) 시계열 데이터베이스Time Series Database, influxDB 소개와 설치 방법 - 단순 검색한 게 아니라, 원출처를 찾아서 정리하면 도움이 된다. 예) Q. HTTP PUT 메소드와 PATCH 메소드의 차이는? - 이슈를 만나서 해결한 과정을 적으면 도움이 된다. 예) Q. 카페24나..

데이터베이스 예제를 보면서 참고하기

관계형 데이터베이스를 설계 하다보면 다른 사람들은 어떻게 설계하는지 궁금해진다. 특히 전문가들은 어떻게 하는지 궁금해진다. 그때는 예제를 많이 보면 도움이 될 수 있다. Postgresql wiki Sample Databases 에 가면 무료 예제 데이터베이스를 살펴볼 수 있다. 무료 예제 데이터베이스 스키마를 참고하기 편하게 여기에 taptorestart/database-schema-examples 로 정리 중이다.

DRF(Django Rest Framework) API 서버에 requests로 PUT할 때 나타나는 이상현상

BooleanField로 설정한 필드의 값이 만약 default=false라면 모두 false로 변경된다. 간단히 테스트를 위해서 DRF로 API 서버를 만들었다. 주요 모델은 아래처럼 생겼다. (예제코드: DRF CRUD) 모델 class Category(models.Model): name = models.CharField(max_length=200) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Beverage(models.Model): name = models.CharField(max_length=200) category = models.ForeignKe..

기업 내 토론의 규칙을 바꿔보기, 일부러 틀리기

기업은 평등하지 않다 당연하다. 평등하지 않다. 평등하다면 직급이 필요 없을 것이다. 직급 체계를 간소화했다고 직급이 없어지지는 않는다. 누군가는 책임을 져야 하고 책임을 지는 사람이 의사 결정을 하는 사람이다. 예를 들어 CEO - C레벨(COO, CTO, CFO, CPO 등) - 팀 리드 - 팀원 이렇게 4단계 정도로 구성되어 있다고 하자. 팀원끼리는 평등해도 팀원과 팀 리드, 팀원과 C레벨은? 당연히 평등하지 않다. 평등하지 않음과 토론 평등하지 않다면? 당연히 토론이 잘 안 된다. CEO가 어떤 의견을 발표하는데 어떻게 팀원이 "전, 당신 의견과 다릅니다."라고 말할 수 있는가. 유럽이나 미국은 다를 수 있겠지만, 한국에서는 말하기 어렵다고 생각한다. 퇴사를 각오하지 않은 이상. 직급이 높을수록 ..

연애와 채용/취업은 비슷하다, 연애처럼 취업을 준비하기!

연애와 채용/취업은 비슷하다 사람과 사람이 만난다는 점 때문인지 사용하는 단어들 느낌도 비슷하다. 연애: 구애, 짝사랑, 연애편지, 조건, 어장관리, 성격차이로 헤어져, 100일 기념, 소개-소개팅-데이트-...-연애 시작, 이별/이혼, 차이다, 혼인신고서 채용/취업: 구인, 구직, 지원서, 스펙, 면접 한참 뒤 연락, 컬처 핏이 맞지 않아, 수습기간, 서류-면접-직무면접-...-최종 합격, 이직, 해고, 계약서 노동시장, 연애시장?결혼시장? 노동의 경우 노동시장이라고 흔히 얘기한다. 자본주의 사회에서는 노동도 하나의 상품처럼 취급하니까. 갑자기 노동 수요가 급증한다면? 당연히 가격이 올라간다. 코로나 이후, 온라인의 중요도가 높아져서 개발자들의 수요가 급증했지만 공급이 원활하지 않아서 임금이 올라간 것..

개발자 유형 프로젝트 1. MBTI 조사

성격유형 검사로 유행하는 MBTI에 대한 이해가 필요하다는 생각이 들었다. MBTI 시스템을 개발자 유형에 비슷하게 적용할 수 있을지 아닌지. MBTI는 Myers-Briggs Type Indicator의 약자이다. Myers와 Briggs는 사람이름이다. Type Indicator만 번역한다면 성격 지표 정도될 거 같다. 찾아보면 역사가 꽤 오래되었다. MTBI는 16personalities에서 해볼 수 있다. 위처럼 문항이 있고 동의 비동의를 선택하도록 되어 있다. 가능하면 답변 시 중립을 선택하지 말라고 한다. 질문이 마음에 들지 않더라도 정직하게 답변하라고 하고. MBTI는 네 가지 척도로 성격을 나눈다. 각 척도는 서로 상반되는 특징을 갖고 있다. 아래 표의 출처는 위키백과 MBTI 지표 설명 ..

개발자 유형 프로젝트 0. 기존 테스트 조사

사실 이미 있을 수도 있다. 이미 있다면 어떻게 다르게 만들 것인지 고민이 필요할 거 같다. 검색을 해봤다. 테스트 1. 프리랜서 개발자 유형 테스트, 나와 닮은 개발자는 누구일까? 총 9개 문항에 답을 하면 나와 닮은 개발자를 찾아준다. 2. 나에게 어울리는 개발팀은? 문항에 답하면 어울리는 개발팀을 찾아준다. 1번이 내가 하려는 것과 비슷하다. 1번의 경우 유명 개발자 중에서 닮은 개발자를 찾아줬다. 관련 콘텐츠 당신은 MBTI 를 믿으시나요? '성질이 어디가나···' 프로그래머의 14가지 성격 유형 내가 구분한 방식으로 개발자 유형을 나눈 경우는 나오지 않았다. 내가 발견하지 못했을 수도 있지만.

MBTI처럼 좋아하는 유머 유형, 유머 코드를 파악할 수 있다면 어떨까?

직장 동료와 이야기하다가 갑자기 이런 거 하면 재미있을 거 같단 생각이 들었다ㅎ 진짜 재미로. 하기는 어렵겠지만. 사람마다 유머 코드가 다르다. 같은 농담을 해도 누구는 웃고 누구는 웃지 않는다. 웃지 않는데서 끝나지 않고 가끔은 한 여름인데도 싸늘해지기도 한다. 웃으라고 한 말이지만 슬퍼하거나, 웃으라고 한 말이지만 화를 내기도 한다. 그 원인은 아마도 유머 코드 때문이리라. 서로의 유머코드를 알 수 있다면? 각자 어떤 유머를 좋아하는지 미리 알 수 있다면 어떨까. 소개팅 자리 같은 처음 만난 두 사람이 좀 더 덜 어색할 거 같기도 하다. 상대방이 싫어하는 농담은 절대 안 할 수 있을 거 같다. 더욱 화기애애한 분위기가 되지 않을까. 어떻게 만들 수 있을까? 1번 안 여러 농담을 보여준다. 웃긴지 안 ..

새 팀원 오리엔테이션 때 보여준 영화 속 한 장면

우리 팀에 새 팀원이 오게 되었고, 내가 팀 소개(오리엔테이션)를 맡게 되었다. 첫 인사를 어떻게 하면 좋을까 고민하게 되었다. 내가 취업했을 때를 먼저 떠올려봤다. 초등학교를 졸업하고 중학교에 입학하거나 고등학교에 입학했을 때 느낌과 비슷했다. 새로운 환경, 새로운 사람들, 그 속에서 잘 적응할 수 있을지에 대한 두려움. 거기다가 수습기간의 압박도 있었다. 잘 해내지 못했을 때 잘릴 수도 있으니까. 마음 속에는 여러 감정이 있었다. 기대. 희망. 두려움. 압박감 등. 이 중에서 기대보다는 두려움이 컸던 거 같다. 잘 해낼 수 있을까, 잘못하면 어쩌지, 괜히 실수해서 찍히면 어떻게 하지... 그때 떠오른 영화가 있었다. 그건 바로 '번지점프를 하다'. "이게 뭐냐" "낙서요" "지구다. 이 지구상 어느 ..

Lombok @Getter @NoArgsConstructor @Builder @AllArgsConstructor 실제 빌드된 클래스로 살펴보기

Lombok을 사용하면 Getter나 Setter처럼 정말 많이 쓰는 작업을 자동화할 수 있어서 편하다. 테스트를 위해서 User 클래스 하나를 만들었다. 아래처럼 생겼다. package com.test; public class User { private Long id; private String name; private String password; public void update(String name, String password) { this.name = name; this.password = password; } } 빌드해보자. 빌드를 하면 build 디렉터리 아래 class 파일이 생성된다. 원래는 알아볼 수 없게 생겼다. IntelliJ IDEA 상에서 빌드된 파일을 클릭하면 디컴파일러를 통..

서버 헬스 체크health check하듯, 팀구성원의 헬스 체크와 알림을 받을 수 있다면?

대부분 IT 회사들은 서비스는 멈추면 안 되니 꼭 서버 헬스 체크를 한다. 서비스가 멈출 경우 바로 알림이 오도록 해놓는다. 그런데 왜 구성원의 헬스 체크는 그런 시스템을 구축하지 않을까. 팀구성원의 헬스 체크 당연한 말이지만 서비스보다 팀구성원이 더 중요하다고 생각한다. 서비스를 만드는 건 결국 사람이니까. 팀구성원들이 건강하지 않다면? 서비스도 건강할 수 없다. 번아웃 등 어려움을 겪고 있는 팀원이 있을 때 방치하면 팀 전체에 안 좋은 영향을 미친다. 쉬게 해주거나 조치를 취해야 한다. 그렇지 않으면 주변 다른 팀원들도 함께 어려움을 겪게 될 수도 있다. 헬스 체크 어떻게 할 수 있을까 주기적인 설문으로 헬스 체크를 할 수 있지 않을까. 개발팀 내에서 매주 미팅을 가졌다. 그때 몇가지 질문에 대해서 ..

대항해시대, 해적왕 선발대회

이제 갓 시작한 스타트업 개발팀 시작한 지 얼마 안 된 스타트업이라면, 개발자가 많지 않다. 당연히 신입 위주고 시니어는 많지 않다. 그러다보면 쉽게 성장 한계에 맞딱뜨린다. 자극이 없기 때문이다. 신입 위주에 비슷한 연차의 개발자들이 모였을 때 서로 아는 수준이 비슷하다. 더 좋은 기술, 더 좋은 아키텍처에 대한 관심은 있지만 뭘 어떻게 해야 하는지 모른다. 훔쳐오기! 스타 개발자, 유명한 CTO가 있다면 굳이 훔쳐올 필요가 없다. 내부 안에도 성장을 이끌어 줄 리더가 있으니. 하지만 그렇지 못하다면 훔쳐오는 것도 하나의 대안이다. 어떻게 해야 개발팀 전체가 모두 잘 훔쳐올 수 있도록 자극을 줄 수 있을까에 대한 고민이 필요하다. 게이미케이션. 훔쳐오는 것을 장려하기 게임과 비슷해야 한다. 적절한 자극..

MBTI처럼 개발자 유형을 파악할 수 있는 설문지를 만들어 보면 어떨까?

과학적 근거를 갖도록 만들기는 쉽지 않겠지만, 재미로는 간단히 만들어 볼 수 있을 거 같다. 개발자한테 필요한 덕목, 자질은? - 기본 구현 능력 - 문제 해결 능력 - 협업 - 의사소통 - 공유 - 글쓰기 능력 등이 될 거 같다. 코딩테스트는 개발자에게 필요한 덕목 중에서 기본 구현 능력과 문제 해결 능력을 파악하기 위한 도구다. 코딩테스트만으로는 나머지는 파악하기 어렵다. 나머지를 파악하기 위해서 면접이 필요하다. 하지만 잘 만들어 놓은 설문지가 있어서 개발자 유형을 쉽게 파악할 수 있다면 면접으로 인한 시간을 절약할 수도 있을 거 같다. 개발자 유형 생각해보기 - 탐정: 버그와 오류 원인을 잘 찾아내는 개발자 - 해적: 다른 기업의 기술 블로그만 보고도 그대로 구현해내는 개발자 - 천재: 알고리즘 ..

당신이 우리에게 뭘 줄 수 있을까요?

"당신이 우리에게 뭘 줄 수 있을까요?" 실제 면접에서 들었던 질문이다. 이력서든 면접이든 결국 저 질문에 대한 답을 기업한테 줘야 한다. 그래야 합격할 수 있다. 면접을 보다보면 비슷한 질문을 듣게 된다. 좀 더 날 것 그대로 질문을 하면 아마 이렇게 될 거 같다. "우리가 당신을 뽑아야 하는 이유는 무엇입니까?", "당신에게 급여를 줬을 때, 최소한 그 급여만큼 우리가 이득을 얻을 수 있을까요?" 등 기업과 나와의 관계는 비즈니스 관계다. 투자한 만큼은 이익을 얻고 싶은 게 당연하다. "저한테 O천만원 주시면, O천만원 이상 돈을 벌게 되실 거예요." 이 소리가 듣고 싶은 거다. 우리가 하는 말이 그렇게 상대방한테 들리지 않는다면 그 거래는 성사되지 않는다. 언제나 받게 되는 정형화된 문장의 메일을 ..

취업에, 면접에 떨어진 당신을 위한 위로

톨스토이가 쓴 소설 안나 카레니나는 다음과 같은 문장으로 시작한다. 톨스토이는 안나 카레니나를 러시아어로 썼다. 러시아어: Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему. 영어 번역: Happy families are all alike; every unhappy family is unhappy in its own way. (출처: 위키백과 안나 카레니나) 한국어로 번역하면 "행복한 가족은 서로 비슷하고, 불행한 가족은 각자의 이유로 불행하다." 정도가 될 거 같다. 이를 취업이나 면접에 적용하면 "합격한 사람은 비슷한 이유로 합격하고, 떨어진 사람은 각자 다양한 이유로 떨어진다." 가 될 ..

Q. API 서버에서 인메모리 데이터베이스를 캐시cache로 쓰면 얼마나 빨라질까?

A. 응답을 받는데 1초가 걸리던 엔드포인트가 있다면, 100배 넘게 빨라질 수 있다! 처음에 1초 걸리던 게, 그 다음에는 0.0003초 걸렸다. 3000배 이상 빨라진 것이다. 컴퓨터 성능에 따라 다르지만 보통 100배 이상 빨라질 수 있다. 위 캡쳐화면을 통해서 왜 인메모리 데이터베이스를 캐시로 써야 하는지 쉽게 이해할 수 있다. 캐시를 쓰는 것만으로도 성능을 엄청나게 빠르게 할 수 있으니, 당연히 써야 한다. 구현 방법 구현 방법은 간단하다. redis 같은 메모리 데이터베이스에 endpoint와 파라미터 전체 url을 키로 넣고, 응답을 값으로 해서 저장하는 식이다. 그럼 완전히 동일한 endpoint와 파라미터로 다시 요청이 왔을 때 메모리 상에 저장해둔 응답을 바로 보내주면 아주 빨리 처리할..