# 나의 소프트웨어 북극성

> Clean Markdown view of GeekNews topic #30174. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=30174](https://news.hada.io/topic?id=30174)
- GeekNews Markdown: [https://news.hada.io/topic/30174.md](https://news.hada.io/topic/30174.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-06-04T18:01:40+09:00
- Updated: 2026-06-04T18:01:40+09:00
- Original source: [kristoff.it](https://kristoff.it/blog/north-star/)
- Points: 2
- Comments: 1

## Topic Body

### 소프트웨어 개발시 우선순위  
1. 소프트웨어는 **최종 사용자에게 유용**해야 하며, "[사랑할 수 있는 소프트웨어](https://softwareyoucan.love)"가 되기를 지향  
2. 소프트웨어는 **정확(correct)** 해야 함. 오작동하는 소프트웨어는 사용자가 얻을 수 있는 효용을 떨어뜨림  
3. 소프트웨어는 **유지보수 가능하고 효율적**이어야 함. 소프트웨어에서 더 많은 효용을 끌어내려 할 때 인간과 컴퓨팅 자원 낭비를 피하기 위한 기준  
### 우선순위가 뒤집힐 때의 무의미함  
- 블록체인에 버그가 없어도 그것이 **러그풀(rugpull)** 이라면 의미 없음  
- 사용하는 언어가 **[메모리 안전(memory-safe)](https://joshlf.com/posts/memory-safety-life-and-death/)** 하더라도, **[정확성을 위한 설계](https://tigerstyle.dev/)** 가 없고 [모든 버그를 결국 고쳐 나가는 프로세스](https://kristoff.it/blog/fix-your-asserts/)가 없다면 의미 없음  
- 소프트웨어가 **[아름다운 추상화 계층(canopy of abstractions)](https://www.youtube.com/watch?v=wo84LFzx5nI)** 이라도, 동작이 형편없고 아무도 유지보수하거나 새 기능을 추가할 수 없다면 의미 없음  
> 때로는 힘이 빠지기도 하고, 때로는 잘못된 길로 가기도 하며, 때로는 의도적으로 우회하기도 하지만, 그 누구도 제가 진정한 목적지를 낮은 곳으로 착각하게 만들 수는 없습니다.   
> 저는 제 개발자 경험을 중요하게 생각하지만, 그 경험이 제가 다른 사람들과 여러분이 즐길 수 있는 소프트웨어를 더 많이 만들어내는 데 도움이 되는 만큼만 중요하게 생각합니다.  
- 궁극적인 목표는 **최종 사용자의 효용을 극대화하는 것**이며, **그 외 모든 것은 그 목표를 달성하기 위한 수단**  
  - 이것이 소프트웨어를 개발하는 데 있어 가장 중요한 원칙임

## Comments



### Comment 58940

- Author: neo
- Created: 2026-06-04T18:01:42+09:00
- Points: 1

###### [Lobste.rs 의견들](https://lobste.rs/s/g6lkw1/my_software_north_star) 
- 비슷한 접근을 선호함  
  드라이버처럼 “사랑스럽지” 않은 도구라도 아주 오랫동안 **신뢰성**이 높을 수 있음. 십자 드라이버는 항상 십자 머리이고, 공구함에서 꺼낼 때 1% 확률로 일자 드라이버가 되어 다시 넣었다 꺼내야 하는 일이 없음. 손잡이 디자인이 끝없이 바뀌지도 않고, 산 도구를 망가질 때까지 그냥 쓸 수 있음  
  더 많은 **소프트웨어**가 그렇게 되면 좋겠음
  - “드라이버처럼 사랑스럽지 않은 도구”가 무슨 뜻인지 궁금함

- “최종 목표는 최종 사용자의 효용을 극대화하는 것이고, 나머지는 모두 그 목표를 위한 것”이라는 기준을 지키는 개발자는 존경하고 고맙지만, 스스로는 항상 그렇게 살지 못함. 소프트웨어에는 **최종 사용자** 외에도 정당한 책임 대상이 있다고 봄  
  직업적으로는 가족을 먹여 살리려고 소프트웨어를 만들고, 사용자 편을 꽤 많이 들지만, 결국에는 돈을 내는 회사와 가족에 대한 충성심이 더 큼.  
  개인 작업에서는 “이 일이 나에게 보람 있는가”가 기준이고, 예술적·미학적·지적 만족이 중요함. 대체로 사용자 이익과 맞지만, 내가 사용자의 효용을 잘못 판단할 수도 있고, 예컨대 애니메이션 햄버거 메뉴가 효용을 극대화한다는 게 입증돼도 내 창작물에서는 **미학적 선택권**을 행사해 그 효용을 포기시킬 수 있다고 봄
  - 게다가 이런 절충과 별개로, 진짜 **최종 사용자**가 누구인지 항상 정의할 수 있는 것도 아님  
    사용자가 자기 작업의 사용자들에게 피해를 주는 황당한 일을 하지 못하게 하려고 일부러 소프트웨어 일부를 사용자에게 불친절하게 만드는 경우를 어떻게 봐야 하는지도 있음.  
    Goodhart의 법칙에 매우 취약하고 그 부작용 범위도 큰 특정 보고 기능을, 소프트웨어 사용자가 원하더라도 영원히 “아직 안 됨” 상태로 남기기 위해 일부러 그런 장치를 논의한 적이 있음

- 이 글을 보고서야 **Tiger Style**에 이제 웹사이트가 생겼다는 걸 알게 됨

- “아무도 유지보수할 수 없고, 새 기능 추가는 말할 것도 없다”와 “모든 버그 수정”을 동시에 말하지만, 결국 **범위 동결** 없이 모든 버그를 고치는 방식이 어떻게 가능한지 잘 모르겠음

- “블록체인에 버그가 없어도 러그풀이라면 의미 없다”는 말은 세 가지를 한 문장에 다 넣을 수 있음  
  어떤 것의 효율을 높이는 건 새 버그를 만들면 의미가 없고, 그것도 **러그풀**이 아닐 때에만 의미가 있음

- 소프트웨어가 반드시 인간만 작성해야 한다는 요구사항은 없다는 점이 눈에 띔. Kristoff가 Ziglang의 핵심 개발자라고 알고 있어서 더 흥미로움  
  **AI 보조 개발**을 사용해도 이 요구사항에 맞는 소프트웨어를 만들 수 있다고 생각하고 싶음.  
  직접 코드를 손으로 쓰는 것도 즐겁고, 완성하는 것도 즐거운데, 둘이 가끔 충돌함.  
  AI 얘기를 꺼내서 미안하지만, Kristoff와 Zig 커뮤니티의 밀접한 관계, Zig의 강한 입장, 그리고 어쨌든 내가 계속 **Ziglang**을 전도하고 있다는 점 때문에 떼어놓기 어려움
  - 세 번째 항목은 오히려 그런 도구에 반대하는 쪽을 암시한다고 봄. 그런 도구들이 만드는 건 대체로 유지보수 불가능한 **스파게티 코드**처럼 보임
  - 이 글이 ziglang.org가 아니라 Loris의 개인 블로그에 올라온 데는 이유가 있을 것 같음  
    어떤 프로젝트가 대규모 언어 모델 기반 코드에 분명한 입장을 갖고 있다고 해서, 그 프로젝트의 모든 사람이 이 프로젝트나 모든 프로젝트에서 같은 입장을 공유한다는 뜻은 아님.  
    Loris 개인에게만 해당하는 얘기는 아니고, 이런 결정은 **사례별 판단**이 합리적임
