GN⁺: Go는 나의 망치, 모든 것은 못
(maragu.dev)Go는 나의 망치, 모든 것이 못
소개
- Markus는 혼자 일하는 개발자이자 디지털 제품 제작자임
- 팀 없이 혼자 일하며 유연한 업무 방식을 추구함
- 복잡한 기술 스택을 피하고 고객에게 가치를 제공하는 데 집중함
Go를 선택한 이유
이유 1: Go는 거의 모든 것을 할 수 있음
- Go는 단순하고 읽기 쉬우며 일관성이 있음
- CLI, 클라우드 인프라, HTTP 서버, 네트워크 작업 등 다양한 용도로 사용 가능함
- Nintendo Switch 게임, GUI 앱, 터미널 문자열 신디사이저 등도 Go로 개발 가능함
이유 2: 컨텍스트 전환 감소
- 여러 프로그래밍 언어를 사용하면 문법 전환에 어려움이 있음
- 하나의 언어만 사용하면 이러한 문제를 피할 수 있음
- 언어, 컴파일러, IDE, 툴체인, 커뮤니티 등 여러 요소를 관리하기 쉬움
이유 3: 깊이 있는 지식
- 하나의 언어에 집중하면 더 깊이 있는 지식을 쌓을 수 있음
- 여러 언어를 다루는 것보다 한 언어에 집중하는 것이 더 생산적임
- 소프트웨어 개발의 복잡성을 줄이는 데 도움을 줌
결론
- Markus는 Go를 사용하여 다양한 프로젝트를 성공적으로 수행하고 있음
- Go에 대한 깊이 있는 지식을 통해 생산성을 높이고 있음
- Go를 통해 다양한 도전 과제를 해결할 수 있음
GN⁺의 정리
- Markus는 혼자 일하는 개발자로서 Go를 선택하여 복잡성을 줄이고 생산성을 높임
- Go는 다양한 용도로 사용 가능하며, 단순하고 일관성이 있어 관리하기 쉬움
- 하나의 언어에 집중하면 깊이 있는 지식을 쌓을 수 있으며, 여러 언어를 다루는 것보다 더 효율적임
- Go를 통해 다양한 프로젝트를 성공적으로 수행할 수 있으며, 이는 다른 개발자들에게도 유용할 수 있음
Hacker News 의견
-
Go를 사용하여 금융 데이터를 처리하는 회사에서 일한 경험이 있음
- 동료들이 CSV 파일을 집계하거나 데이터베이스를 업데이트하는 등의 일회성 작업에 Go를 사용하는 것을 불편하게 여김
- Pandas를 사용하지 않고 기본 알고리즘을 직접 구현하는 동료들을 보며 신뢰하기 어려웠음
- 회사의 시간 낭비라고 생각했으며, Go가 충분하다는 것을 보여주려는 자존심 문제로 보였음
-
언어를 제대로 배우는 비용을 과소평가하는 사람들이 많음
- 언어를 "알고 있다"고 말할 수 있는 수준에 도달하는 데 2-4년이 걸림
- 언어, 컴파일러, 런타임, 표준 라이브러리, 관용적인 방법을 이해하는 데 8-10년이 걸림
- 이 기간 동안 언어의 사용 방식을 발전시키고 초보자를 빠르게 훈련시킬 수 있음
-
Go는 거의 모든 작업에 적합하다고 생각함
- Go를 사용할 때 생산성이 매우 높음
- 프로젝트가 100줄을 넘으면 Python보다 더 나음
- Go의 장점:
- 언어가 매우 간단함
- 핵심 라이브러리가 잘 설계됨
- 도구 체인과 핵심 라이브러리만으로 대부분의 작업을 처리할 수 있음
-
Go는 개인 프로젝트에 적합하지 않다고 생각함
- 코드가 장황하고 간단한 작업도 많은 코드를 작성해야 함
- 적절한 열거형, 합집합 타입, null 안전성 등이 부족함
- 이러한 이유로 개인 프로젝트에서는 재미를 느끼지 못함
-
Typescript와 Rust를 선호함
- Deno와 Typescript는 Go보다 더 다재다능한 도구임
- Typescript는 더 안전하고 인체공학적이지만 약간 느림
- Rust는 더 안전하고 빠르지만 배우기 어려움
- Typescript의 장점:
- null 안전성
- 널리 지원되는 제네릭
- 차별화된 유니언 타입
- 안전한 동시성
- 컬렉션/이터레이터 메서드
- Go의 장점:
- 크기와 메모리 사용 측면에서 더 효율적임
- Go의 GC가 V8보다 나음
- CPU 바운드 작업에서 더 빠름
- 더 큰 표준 라이브러리
-
Go와 Typescript를 사용해봤지만 Kotlin/JVM을 선호함
- Gradle/Maven의 이분법과 빌드 시스템의 불안감이 있지만, 언어 기능과 런타임 측면에서 매우 만족함
-
Go는 만능 도구라고 생각함
- 모든 것이 간단하고 사용하기 쉬움
- 외부 도구를 많이 사용하지 않고도 간단한 명령으로 컴파일하고 배포할 수 있음
- 다른 언어들도 장점이 있지만, Go만큼 간단하고 번거롭지 않음
-
Go를 좋아하지만 사랑하지는 않음
- 도구 체계가 엉망이라고 생각함
- Go 모듈이 완성되지 않은 느낌임
- 제네릭이 아직 원시적임
- 생태계가 미완성이라고 느껴짐
-
Go의 대부분의 측면을 좋아하지만, 수치 코드를 많이 작성하는 사람으로서 연산자 오버로딩이 없는 것이 단점임
- Python과 C++을 계속 사용 중임
- Rust는 C++ 대체로 매력적이지만, Python을 대체하기에는 규칙이 너무 많음
-
인생은 한 가지에 능숙해지기에도 짧기 때문에 신중하게 선택해야 함
- Go를 선택한 이유:
- 놀라운 표준 라이브러리
- 읽고 쓰기 간단함
- 단일 정적 바이너리 빌드
- 컨테이너가 필요 없음
- 어디서나 사용 가능 (웹 개발, 데스크탑 앱, 게임 개발, 임베디드 등)
- Go를 선택한 이유: