전체 글
-
[삽질로그] 트러블 슈팅 시간 단축하기Trouble Shooting 2025. 2. 2. 01:49
작년 12월 6일 글또 백엔드 반상회에서 영인님이 발표하신 내용 중 '삽질로그'를 개발 과정에 적용해봤다.개발을 하다가 트러블 슈팅 시간이 너무 오래걸려서 1월 23일에 갑자기 삽질로그 이야기가 떠올랐는데, 써보니 확실히 트러블슈팅 시간이 단축됐다. 무엇을 모르는지 나의 언어로 정의해보지 않았던 것이 가장 큰 문제였다. 그냥 에러메세지 보고 '아 이게 뭐야..' 하면서 굉장히 수동적이고 기계적으로 chatGPT에게 질문했다. 몇 번 티키타카 해도 문제가 해결될 기미가 안 보이면 속이 답답해지고 아무것도 모르겠는 상태에 빠진다. 그러면 멘탈에 아주 좋지 않고 문제 회피성 도파민 샤워를 위해 유튜브를 몇 시간 보고 나서야 정신을 부여잡을 수 있었다. 그러다 보면 또 자괴감에 빠지고 악순환의 연속이었다. ..
-
아마추어에서 프로로: 글, 개발, 나아가 일을 대하는 태도의 변화Extracurricular Activites/글또 2024. 12. 26. 01:46
올 한 해, 부족함과 무기력을 많이 느끼며 힘든 시간을 보냈다. 글쓰기와 개발에서 마주한 문제는 물론, 잘하는 사람들과의 비교가 나를 짓눌렀다. 하지만 날 힘들게 하는 어려움을 극복하면 나의 무기가 된다는 확신 하나로 계속 부딪혔다. 신기하게도 문제를 직면하기로 결심하면서 해결을 위한 단서들이 보이기 시작했다. '잘 쓴 글'과 '좋은 개발자'의 핵심은 결국 '타인에게도 결과물의 가치를 전달할 수 있는가'에 달려 있음을 깨달았다. 이를 위해 피드백을 받아들이고, 단순하지만 확장 가능한 구조를 지향하는 자세를 키워나가고 있다. 그동안 내가 글쓰기와 개발을 대했던 자세와 피드백을 통해 느끼게 된 프로의 자세에 대해서 아래 표로 정리해봤다. 그리고 시련 → 문제 → 노력 → 통찰 → 방향 설정 순으로 2024..
-
테스트 자동화(1) - 자동 테스트의 필요성(feat.TDD)카테고리 없음 2024. 11. 10. 14:12
들어가며 테스트는 소프트웨어 품질과 장기적인 관점에서의 개발 생산성에 필수적인 과정이다. 하지만 단기적으로는 코드 작성 시간이 두배 가까이 들기도 하고 꽤 귀찮은 작업이다. 그럼에도 테스트는 중요하다. 작년 내내 나의 화두는 "테스트 자동화"였고, 테스트코드와 TDD에 대한 고민과 적용을 거듭해왔다. 이런 경험을 바탕으로 아래와 같이 3번에 걸쳐서 테스트 자동화에 대한 포스팅을 연재할 예정이다! 1. 테스트 자동화(1) - 자동 테스트의 필요성(feat.TDD) 2. 테스트 자동화(2) - 테스터블한 코드란? 3. 테스트 자동화(3) - TestContainers를 이용한 테스트 자동화 도입기 자동 테스트는 코드 기반의 테스트로, 테스트코드를 논하자면 TDD가 빠질 수 없다. TDD는 테스..
-
[글또 10기] 마지막 기수를 시작하며Extracurricular Activites/글또 2024. 10. 13. 16:41
글또가 10기로 막을 내린다고 한다. 8기부터 했었는데 저번 기수인 9기 때는 패스도 많이 쓰고 해서 너무 아쉬웠다. 다시는 오지 않을 글또에서의 경험을 어떻게 하면 더 잘 마무리할 수 있을지,, 그 다짐을 적어본다. 작년 이맘때쯤 이직을 결심했는데, 현재 나의 스택인 파이썬 백엔드는 너무 마이너해서 선택의 폭이 너무 좁았다. 나만이 특화할 수 있는 분야가 명확히 있지 않는 이상, 자바공화국에서는 자바는 필수라는 것을 깨닫고 자바/코틀린 + 스프링 스택을 추가해야겠다고 생각했다. 그런데 아무리 할 게 많다고해도 현업과 병행해야하는 상황이었고, 더군다나 서비스 하면 웹인데 웹도 메인으로 다뤄보지 않아서 도대체 어디부터 어떻게 시작해야하는지 엄두가 나지 않았다. 그러던 중 항해라는 웹 백엔드 주니어 대상..
-
[프로그래머스] 멀리뛰기 # DPAlgorithm 2024. 9. 20. 21:51
문제 링크1. 문제 전체 칸 수 n이 주어질 때 1칸 또는 2칸을 이동해 n칸을 이동하는 경우의 수에 1234567을 나눈 나머지를 반환하는 함수를 완성하라. 2. 제한 사항1 3. 입출력 예 4. 첫 번째 풀이 - Python 결국 초기값만 다른 피보나치 수열이다. n이 2000 이하이므로 메모이제이션을 사용하지 않았다. 메모이제이션을 사용했을 때는 0.18ms, 사용하지 않았을 때는 최대 0.15ms가 소요되었다. def solution(n): MOD = 1234567 if n == 1: return 1 if n == 2: return 2 a, b = 1, 2 for i in range(3, n + 1): a, b ..
-
[프로그래머스] - 괄호 회전하기 # StackAlgorithm 2024. 9. 9. 23:30
문제 링크1. 문제 설명 대괄호, 중괄호, 소괄호로 이루어진 문자열 s가 매개변수로 주어질 때, s를 왼쪽으로 x칸만큼 회전시켰을 때, s가 올바른 문자열이 되도록 하는 x의 개수를 반환하라. 올바른 괄호 문자열이란 (), {}, [], {()}, {}[()], ... 와 같이 여는 괄호 뒤에 반드시 닫는 괄호가 오는 형태를 말한다. 2. 제한 사항0 1 3. 입출력 예 4. 첫 번째 풀이 - Python 스택의 LIFO 특성을 활용한다. 여는 괄호가 나오면 스택에 넣고, 그에 맞는 닫는 괄호가 나오면 스택에서 빼 줄 것이다.먼저, stack에 빈 리스트를 할당하고, opens 리스트에 {, (, [를 담아준다. closes에는 여는 괄호를 키로 갖고, 여는 괄호에 매칭되는 닫는 괄호를 값으로 갖..
-
[LeetCode] 436. Find Right Interval # Binary SearchAlgorithm 2024. 9. 8. 23:53
문제 링크1. 문제 설명 이중 배열 intervals가 주어진다. intervals의 요소 interval은 [start, end]로 구성되어있다. 반환해야할 answer의 i번째 요소는 현재의 end 값이 또 다른 interval의 start 값보다 작거나 같을 때, 최소값의 start를 가진 interval의 인덱스이다. 조건을 만족하는 start 값이 없다면 -1이 answer의 i번째 요소로 들어간다. 2. 제한 사항1 intervals[i].length == 2-10^6 각 interval의 start 값은 고유하다 3. 입출력 예 4. 첫 번째 풀이(시간 초과) - Python 문제의 조건을 그대로 구현했다. 결과는 시.간.초.과. 🤧 효율적으로 푸는 아이디어가 안 떠오른다..class..
-
[프로그래머스] 전화번호 목록 # HashAlgorithm 2024. 9. 8. 01:19
문제 링크1. 문제 설명전화번호를 담은 배열 phone_book이 파라미터로 주어질 때, 전화번호부에 적힌 전화번호 중 한 번호가 다른 번호의 접두어인 경우가 있으면 False를, 그렇지 않으면 True를 반환한다. 2. 제한 사항1 1 같은 전화번호가 중복해서 들어있지 않음 3. 입출력 예 4. 첫 번째 풀이(시간 초과) - Python 냅다 for문 두 번 돌려버렸다. 이중 중첩 반복문을 순회하면서 현재 전화번호가 비교 대상 전화번호와 다르고, 자신의 전화번호가 비교 대상 전화번호로 시작하는지 판단한다. 리스트를 동시에 두 번 조회하므로 시간복잡도 O(n^2)이다. 그리고 현재 전화번호가 비교 대상 전화번호와 다른지 판단해야한다는 의미는 자기 자신과의 비교를 불필요하게 수행하고 있다는 의미이다..