1. 소프트웨어 엔지니어링이란?구글에서는 이따금 “소프트웨어 엔지니어링은 흐르는 시간 위에서 순간순간의 프로그래밍을 모두 합산한 것이다”라고 말하곤 합니다. 소프트웨어 엔지니어링에서 프로그래밍이 큰 비중을 차지하는 건 틀림없지만 프로그래밍은 결국 새로운 소프트웨어를 제작하는 수단입니다. 여러분이 이 차이를 받아들인다면 자연스럽게 프로그래밍 작업(개발, development)과 소프트웨어 엔지니어링 작업(개발, development + 수정, modification + 유지보수, maintenance)의 차이도 궁금할 것입니다. 시간이라는 요소가 더해지면서 프로그래밍에는 중요한 차원이 하나 늘어서 더 입체적으로 바뀝니다. 정육면체는 정사각형이 아니고 거리는 속도가 아니듯, 소프트웨어 엔지니어링은 프로그래밍..
1. 유용한 MacOS 앱 정리[ Raycast ]Raycast는 macOS용 생산성 앱으로, 빠르게 앱을 실행하거나 다양한 작업을 수행할 수 있도록 도와준다. 사용자는 키보드 단축키로 Raycast를 호출해, 앱 실행, 파일 검색, 시스템 설정 변경, 계산기 사용, 웹 검색 등 다양한 작업을 할 수 있다. Raycast는 Option + Space 키로 실행을 트리거할 수 있다.예를 들어 캘린더 라는 단어를 입력했을 때, 나의 캘린더 페이지로 이동시키고 싶다면 다음과 같이 quick link를 생성할 수 있다. 그러면 다음과 같이 Option + Space로 트리거한 후에 캘린더를 입력하면 원하는 곳으로 빠르게 접속할 수 있다. 만약 url에 쿼리 파라미터를 추가하고 싶다면 {query}로 넣어줄 수..
1. 단위 테스트의 목표단위 테스트를 배우는 것은 테스트 프레임워크나 목 라이브러리 등과 같은 기술적인 부분을 익히는 것에 그치지 않는다. 단위 테스트는 단순히 테스트를 작성하는 것보다 더 큰 범주다. 단위 테스트에 시간을 투자할 때는 항상 최대한 이득을 얻도록 노력해야 하며, 테스트에 드는 노력을 가능한 한 줄이고 그에 따르는 이득을 최대화해야 한다. 두 가지를 모두 달성하기란 쉬운 일이 아니다. [ 1.2 단위 테스트의 목표 ]그럼 단위 테스트의 목표는 무엇인가? 소프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는 것이다.테스트는 안전망 역할을 하며, 대부분의 회귀에 대한 보험을 제공하는 도구라 할 수 있다.지속성과 확장성이 핵심이며, 이를 통해 장기적으로 개발 속도를 유지할 수 있다. 1.2..
1. 헥사고날 아키텍처에 대하여[ 헥사고날 아키텍처의 도메인 엔티티(Domain Entity) ]우리는 소프트웨어를 개발할 때 어떠한 의미를 갖는 이론적 토대를 바탕으로 개발을 하게 된다. 예를 들어 우리가 헥사고날 아키텍처라는 아키텍처 패턴으로 시스템을 개발한다고 하자.헥사고날 아키텍처(Hexagonal Architecture)는 소프트웨어 설계 패턴 중 하나로, 포트와 어댑터 아키텍처(Ports and Adapters Architecture)라고도 불린다. 이 아키텍처의 주요 목표는 애플리케이션의 비즈니스 로직(핵심 도메인 로직)을 외부 의존성으로부터 분리하여 애플리케이션의 유지보수성, 테스트 용이성, 유연성을 높이는 것이다. 해당 포스팅은 헥사고날 아키텍처를 다루는 것이 아니기에, 단순히 “도메인을..
1. 당신의 시장을 선택하라[ 1.1 길거리에서 중요한 것 ]한 가지 분명한 건 본인이 일을 얼마나 빨리 하느냐가 가장 중요하다는 점이다. 아무도 우아한 설계, 알고리즘 지식, 고품질의 코드를 신경 쓰지 않는다. 여러분을 고용한 사람들은 주어진 시간에 얼마나 많은 것을 해줄 수 있느냐에만 관심이 있다. 하지만 여러분의 직관과는 반대로 좋은 설계, 좋은 알고리즘, 좋은 품질의 코드는 처리량에 상당한 영향을 주며, 많은 프로그래머가 이를 놓치고 있다.만약 여러분이 나쁜 코드를 쓰고 있다면 여러분은 동료들의 속도를 늦추고 있는 것이다. [ 1.3 훌륭한 스트리트 코더 ]스트리트 코더는 업계의 인정, 명예, 충성심 외에도 이상적으로 다음과 같은 자질을 가지고 있다.질문하기결과 중심적높은 처리량복잡성과 모호성 ..