독서일기 14

[Rust]개발자 인생 새로 쓰고 싶다면 반드시 읽어야 할 책(Feat.제로부터 시작하는 러스트 백엔드 프로그래밍)

Introduction 시작부터 꽤나 자극적이긴 한데.. 어느 정도는 맞다고 생각한다. 내가 그런 생각으로 이벤트를 신청했기 때문이다. 개발자 관련 도서 출판사로 유명한 제이펍에서 인스타를 통해 서평단을 모집한다는 공고를 발견하고 지원했다. 지원글에 이렇게 작성했다. 폴리글랏을 꿈꾸는 백엔드 개발자입니다. 회사에서는 자바/코틀린, 사이드 프로젝트는 파이썬을 쓰고 있는데요. 러스트는 이전부터 배워야지, 배워야지 생각만 하고 차마 시도는 해보지 못했던 언어입니다. 워낙 접할 경로가 없다보니 낯설어서 그런 게 가장 큰 이유인 것 같습니다. 이때 이런 책이 있다면 마음에 큰 부담을 덜어줄 것 같습니다. 꼭 당첨돼서 러스트를 재밌게 공부할 수 있는 기회가 주어지면 좋겠습니다 :) 개발자에게 있어 프로그래밍 언어는..

독서일기 2024.03.24

그래서 왜 객체를 지향해야 한다고? 한 장으로 끝내는 객체지향 총정리[객체지향의 사실과 오해 정리 및 서평]

Introduction 현재 우리 회사에서 사용하는 프로그래밍 언어는 자바이다. 입사하고 처음 자바를 공부하면서, 그 전까지는 말로만 듣던 객체지향 프로그래밍에 대해서 역시 접하기 시작했다. 5월 즈음부터였나. 라는 책으로 자바 공부를 시작했는데 변수와 타입, 연산자, 반복문 등 기초 문법을 떼고 나니 본격적으로 클래스, 상속, 다형성, 인터페이스 등 온갖 객체지향 관련 용어가 쏟아지더라. 물론 각 용어가 어떤 의미인지 설명과 예시가 잘 되어 있어서 이해하는데 큰 어려움은 없었다. 하지만 지금 떠올려보면 그때의 공부는 그림책 속 사과 이미지를 보고서 "이것은 사과고, 빨갛고, 먹으면 달고 아삭한 식감이 난다"라는 사과의 특징을 문자로 받아들이는 것에 지나지 않았다. 그도 그럴 것이, 자바는 그 본질 자체..

독서일기 2022.12.28

[Effective Unit Testing] 2장 - 좋은 테스트란?

Ch.2 좋은 테스트란? 무엇이 테스트를 좋게 만드는 걸까? 아래와 같은 고려사항이 있다. 테스트 코드의 가독성과 유지보수성 프로젝트 안에서, 그리고 소스 파일 안에서 코드는 적절히 구조화되어 있는가? 테스트가 무엇을 검사하는가? 테스트는 안정적이고 반복 가능한가? 테스트가 테스트 더블을 잘 활용하는가? 2.1 읽기 쉬운 코드가 유지보수도 쉽다 현업에서 머리를 쥐어뜯게 하는 코드는 모두 접해봤을 것이다. 읽기 어려운 코드는 이해하는 데만 해도 너무 많은 에너지가 소비되기 때문에 유지보수하기가 녹록치 않다. 읽기 어려운 코드일수록 결함 수가 많다. 자동화된 테스트는 결함을 효과적으로 막아주지만, 테스트 역시 코드인지라 가독성 문제에서 벗어날 수 없다. 읽기 어려운 코드는 검증하기도 어렵다. 결과적으로 테스..

독서일기 2022.11.21

[클린 코드] 6장 - 객체와 자료 구조

6장 - 객체와 자료 구조 변수를 비공개로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 그런데 어째서 수많은 프로그래머가 조회(get) 함수와 설정(set) 함수를 당연하게 public으로 설정해 비공개 변수를 외부에 노출할까? 자료 추상화 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 것이 좋다. 똑같이 2차원 점을 표현하는 두 클래스를 예시로 살펴보자. // 구체적인 Point 클래스 public class Point { // 필드값이 public으로 오픈 public double x; public double y; } // 추상적인 Point 클래스 public interface Point { // 필드값이 외부로 노출되어 있지 않고 오직 getter / sett..

독서일기 2022.11.17

[클린 코드] 5장 - 형식 맞추기

5장 - 형식 맞추기 형식을 맞추는 목적 원래 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다. 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다. 이때 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준을 유지보수 용이성과 확장성에 계속 영향을 미친다. 1. 적절한 행 길이를 유지하라 큰 파일보다 작은 파일이 이해하기 쉽다 소스 코드(클래스가 아닌 파일 전체에서) 길이는 얼마가 적당할까? JUnit, FitNesse 등 유명한 프로그램을 포함해 대다수 자바 소스 파일을 조사한 결과 한 파일에 200줄 미만이 가장 많았다. 500..

독서일기 2022.11.15

[클린 코드] 3장 - 함수

3장 - 함수 프로그램의 가장 기본적인 단위: 함수. /** * setUp 페이지와 tearDown 페이지를 테스트 페이지에 넣은 후 해당 페이지를 HTML로 렌더링하는 메소드 * @param pageData * @param isSuite * @return * @throws Exception */ public static String renderPageWithSetupsAndTeardowns(PageData pageData, boolean isSuite) throws Exception { boolean isTestPage = pageData.hasAttribute("Test"); if (isTestPage) { WikiPage testPage = pageData.getWikiPage(); StringBu..

독서일기 2022.11.10

[클린 코드] 2장 - 의미 있는 이름

2장 - 의미 있는 이름 들어가면서 이름 잘 지으면? 여러모로 편하다는 걸 명심할 것. 여기서는 이름을 잘 짓는 규칙 몇 가지에 대해서 알아보도록 하자. 의도를 분명히 밝혀라 의도가 분명한 이름이 정말로 중요하다. 더 나은 이름이 떠오르면 개선해야 한다. 모든 클래스의 이름은 아래의 질문에 답변해야 한다. 변수/함수/클래스의 존재 이유는? 이들의 수행 기능은? 사용 방법은? 이때 주석이 필요하다면 -> 변수명을 제대로 짓지 못했다는 것(의미를 잘 반영하지 못했다는 것이니)! 예시를 보자. int d; // 경과 시간(단위: 날짜) d에는 어떤 의미도 없다. 측정하려는 값과 단위를 표현하는 이름이 필요함. int elapsedTimeInDays; // 날짜에서 잰 시간 int daysSinceCreatio..

독서일기 2022.11.06

애자일을 하기 위해 애자일을 도입하는 건 애자일이 아니다(feat. 함께 자라기)

애자일을 하기 위해 애자일을 도입하는 건 애자일이 아니다. 이 무슨 말 같지도 않은 말인가 싶겠지만, 애자일(Agile)이라는 개념을 온전히 받아들이기에 앞서 반드시 명심해야 할 구문이다. 대체 애자일이라는 게 무엇이길래 이토록 아리송한 말을 꺼내는 것일까? 열정 넘치는 PM 친구의 이야기를 하나 들어보자. 열정 넘치는 3년 차 PM인 A는 그간 열심히 공부했던 애자일 프로세스를 새로 들어간 회사에 전파하려 한다. 날마다 팀원들과 모여 업무를 공유하는 데일리 스크럼, 1~2주 단위의 짧은 주기로 제품을 개발 및 개선하는 스프린트와 매 스프린트가 끝난 후 어땠는지를 논하는 회고까지. 공지를 올려 팀원 및 팀장 앞에서 세미나를 연다. 하지만 뭔가 이상하게 흘러간다. 실무에 적용하려는데 상사나 동료의 지원 없..

독서일기 2022.07.11

이나모리 가즈오, <왜 일하는가>

1. “왜 그 일을 하는가? 그 일을 통해 당신은 무엇이 되길 꿈꾸는가? 끌려다녀서는 아무 것도 제대로 할 수 없다. 일도, 그리고 인생도.” 어쩌면 우리는 이 질문을 너무 늦게 만난 것은 아닐까? 일을 하는 사람이라면 누구나 한 번은 이 질문에 답해야 한다. “왜 일하는가? 그 일을 통해 당신은 무엇이 되길 꿈꾸는가?” 2. 지금 이 시간에도 많은 사람이 ‘왜 일하는지’ 생각하지 않으며, 일 자체를 진지하게 대하려 하지도 않는다. 나는 그런 사람들에게 이렇게 묻고 싶다. “세상에 태어나 단 한 번뿐인 귀한 삶을 사는데, 지금 당신은 정말로 가치 있는 삶을 살고 있는가?” 3. 왜 일하는지, 무엇을 위해 일하는지를 이해하고 열심히 일하면 행복한 인생을 손에 넣을 수 있다는 사실을 전해주고 싶다. 일을 한..

독서일기 2022.04.16

넷플릭스에 규칙이 없는 세 가지 이유

넷플릭스 문화를 다룬 책 을 읽었다. 읽기 전부터 페북에 워낙 부정적인 서평이 많아 큰 기대하지 않았다. 예상과 달리 상당히 재밌게 읽었다. 그들이 주장하는 넷플릭스 문화는 크게 세 가지 요소를 말한다. 최고 수준의 인재로 가득한 인재 밀도 부정적인 피드백도 스스럼없이 말할 수 있는 솔직한 문화 어떤 의사결정도 승인받을 필요 없는 통제의 제거 이를 두고 어떤 사람들은 “최고의 인재만 모아놓고 조금이라도 성과가 나오지 않으면 가차 없이 자른다”는 식으로 설명한다. 넷플릭스 문화가 스포츠팀에 가깝다 평하는 것만 봐도 이를 느낄 수 있을 것이다. 하지만 넷플릭스의 문화는 저 세 가지가 핵심이 아니다. 저것들은 그저 표면에 드러난 현상일 뿐이다. 핵심은 그 기저에 자리한 고민에 있다. 이를 알기 위해서는 서문에..

독서일기 2021.05.19