본문 바로가기
반응형

전체글587

소프트웨어 원칙 만들기 유튜브와 블로그를 하다보면 여러 사람들에게 고민 상담 메일을 받게 된다. 그 중 자주 받는 질문은 다음과 같다. "일정을 지키고자 버그가 많은 소프트웨어를 출시하는 것이 마음에 들지 않습니다. 어떻게 하면 일정을 연기해서 안정된 소프트웨어를 내는 것이 더 중요하다고 리더들을 설득할 수 있을까요?" 이런 고민에 대해 항상 윈도우 95의 프로그래머이신 "나카지마 사토시" 님의 이야기를 전달한다. 아래 문장은 나카지마 사토시님의 저서인 오늘, 또 일을 미루고 말았다 에 나온다. "프로그래머에게 요구되는 것은 100점이 아닌 80~90점짜리 프로그램을 기한 내에 완성하는 일이다." 이렇게만 답변을 마무리 한다면, "퀄리티 보다 일정이 더 중요한 것인가" 라고 생각이 될 수도 있다. 그래서 항상 덧붙여 이야기하기.. 2022. 12. 2.
데이터 변환 계층 (Data Transform Layer) Express와 JS/TS만을 가지고 프로젝트를 진행하다보면 데이터 변환 계층의 기준이 정해져있지 않은 경우를 많이 본다. 사람마다 다르기도 하고, 혹은 같은 사람이 작성한 코드에도 천차만별이다. 이에 대해서는 팀에서 확실하게 컨벤션을 잡지 않으면 서로 데이터 변환 계층을 다르게 두어 프로젝트 전체가 일관성이 떨어지고 코드 가독성과 리팩토링 내성도 떨어지게 된다. 그렇다면 데이터 변환 계층의 기준을 어떻게 세우면 좋을까? 문제 예를 들어 다음과 같은 상황이 있다고 해보자. 프로젝트에서는 js-joda (혹은 Dayjs 등) 날짜 타입을 쓰고 있는 상황에서 Database SQL에서 사용하기 위해서는 Date 로 치환해야하는 경우 API 로 외부에 데이터를 전송 (혹은 요청) 하기 위해 String 으로 .. 2022. 11. 28.
링 위로 올라가기 최근에 외부 취업준비생 분들을 대상으로 한 멘토링을 몇번 진행한 적이 있다. 사전에 질문을 받아서 그 질문에 대해 답변을 하는 형태로 진행을 하는데, 대부분의 질문이 "어떻게 면접을 준비해야하냐" 였다. 기술 면접을 처음 준비하는데 어떻게 시작해야할까요? 기술 면접에 도움이 되는 책이나 강의들이 있을까요? 기술 면접을 합격하려면 CS 지식은 어디까지 알아야 할까요? CS 지식이 부족한데 6개월정도 CS만 집중 공부하려고 하는데 어떨까요? 이 같은 질문들이 너무 많아서, 멘토링 중간에 신청하신 분들과 "왜 이런 질문을 했는지"에 대해 이런 저런 이야기를 먼저 나눴다. 그리고 면접에 대한 두려움을 알 수 있었다. 면접에서 제대로 답변을 못할것 같은 두려움 어렵게 면접까지 간 자리에서 아무것도 못하고 나올까 .. 2022. 11. 22.
5. 테스트하기 좋은 코드 - SQL 지난 시간까지 애플리케이션 코드를 어떻게 개선하면 좋을지에 대해 이야기를 나눴다. 1. 테스트하기 어려운 코드 2. 제어할 수 없는 코드 개선 3. 외부에 의존하는 코드 개선 4. 검증이 필요한 비공개 함수 개선 이번 편에서는 애플리케이션 코드가 아닌 Query (비단 RDBMS뿐만 아니라 NoSQL도 해당) 에 대해서 이야기를 해본다. 최근엔 ORM (혹은 ODM) 사용이 대중화되었지만, 여전히 많은 프로젝트에서는 SQL Builder를 통해서 Native Query를 작성한다. SQL Builder를 통해서 Native Query를 작성하는 것은 복잡한 조회 조건이 필요한 환경에서는 굉장히 효율적인 방법이다. 예를 들어, 통계/정산/물류 등 복잡한 조회 Query가 필요하거나, Bulk Insert등.. 2022. 10. 18.
기술 부채와 이율 인프랩에 합류하고 난뒤부터 일기를 조금씩 쓰고 있다. 시리즈 A 확정 일주일전 (실제 통장에 돈 들어오기 한달전) 에 합류한 시니어 개발자가 겪는 경험들을 남겨두면 좋겠다는 생각이 들었기 때문이다. 다음에 또 비슷한 일이 있으면 같은 실수를 하지 않도록 하기 위해 합류한 이후부터 여러 회사의 개발자분들과 이야기를 나누다보면 "이정도는 그래도 처음부터 해뒀으면 나중에 부채가 쌓여도 해결하기 편할텐데" 라는 지점들을 보게 된다. 흔히들 스타트업의 기술 부채에 대해 많이들 이야기한다. 전직장도, 현직장도 기술 부채를 많이 보고 갚았다. 전직장에서 PHP 프로젝트를 Java / Spring으로 개편하는 프로젝트에 참여했었다. 당시에 4000 라인 동적 쿼리 문자열을 팀장님이 퇴사전까지 문자열 SQL을 해체하다가.. 2022. 10. 9.
4. 테스트하기 좋은 코드 - 검증이 필요한 비공개 함수 지난 시간까지 테스트하기 어려운 코드를 어떻게 개선하면 좋을지에 대해 이야기를 나눴다. 1. 테스트하기 어려운 코드 2. 제어할 수 없는 코드 개선 3. 외부에 의존하는 코드 개선 지금까지 글들의 결론은 간단하다. 테스트 하기 어려운 코드와 테스트 하기 쉬운 코드를 분리하되, 테스트 하기 어려운 코드는 최대한 바깥으로 몰아넣는다. 전체적인 방향성은 위와 같이 유지하되, 이번에는 조금 더 세밀한 내용을 보자. 비즈니스 로직을 작성하다보면 무수히 많은 private 메소드/함수들을 생성하게 된다. 이전 글에서도 언급했지만, private 메소드/함수의 테스트 코드는 작성하지 않는 것이 좋을때가 많다. 테스트 코드에서 내부 구현 검증 피하기 그럼에도 불구하고 private 메소드/함수를 검증해야할 경우가 있다.. 2022. 10. 2.

728x90
반응형