- 프로그래밍 자체의 즐거움과 달리, 소프트웨어 일터는 설계의 목적과 성공 기준을 묻기보다 더 많은 코드 생산을 요구하는 환경으로 느껴짐
- 2023년 채용 공고를 몇 주간 본 경험은 “더 나은 곳”에 대한 기대를 꺾었고, 특히 스타트업 문화가 “질문은 줄이고 생산은 늘리라”는 태도를 노골적으로 드러냄
- 대형 기술기업에서도 개발자는 백엔드 스택 규모, 면접 점수, 성과평가 점수 같은 숫자로 취급되며, 코드 작성 방식에 대한 개인의 판단은 더 무의미해짐
- “더 많이 만들고 덜 묻는” 태도는 코드 양을 늘릴 수 있어도 더 나쁜 소프트웨어로 이어지고, 유행 기술과 관성은 언어·라이브러리·프레임워크·코드 패턴까지 스며듦
- 글쓴이가 원하는 일은 사회에 이미 존재하는 필요에서 출발한 공학 문제를 푸는 것이며, 시스템의 “왜”가 언어·패러다임·아키텍처·문법까지 결정해야 함
소프트웨어 직장에서 느낀 불일치
- 글쓴이는 자신이 거친 소프트웨어 엔지니어링 직무 어디에도 잘 맞지 않았다고 말함
- 코드베이스의 내부 논리를 어느 정도 이해하고 나면 기술적 측면이 지루해졌고, 이후에는 더 많이 하는 것보다 다르게 하는 것을 원하게 됨
- 설계 결정과 목적을 두고 다음 질문을 계속 떠올림
- 왜 이 일을 하는가
- 왜 이 방식으로 하는가
- 더 나은 방식은 없는가
- 성공을 판단하는 지표는 무엇이며 왜 그것을 쓰는가
- 이런 질문을 항상 말로 꺼내지는 않았지만, 더 많은 코드를 찍어낼 수 있는 시간에 “너무 많이 생각한다”, “너무 많이 신경 쓴다”는 말을 들음
- 단순히 재능과 직무가 맞지 않는 문제가 아니라, 조직이 운영되는 방식 자체에 동의하기 어려웠고 그것을 유지하기보다 바꾸는 일을 원함
스타트업 채용 공고와 “더 많이 만들고 덜 묻기”
- 2023년에 몇 주 동안 채용 공고를 살펴본 경험은 “더 나은 곳이 있을 것”이라는 기대를 무너뜨림
- 채용 설명의 90% 는 합격자가 쓰게 될 코드가 인류뿐 아니라 개인의 중요한 문제와도 동떨어져 보였다고 평가함
- 스타트업 문화는 업계의 “더 많은 코드를 생산하고 질문은 덜 하라”는 태도를 가장 노골적으로 보여주는 사례로 제시됨
- 많은 스타트업은 투자자의 돈을 이동시키며, 제한적으로만 유용한 제품을 사용자에게 필요하다고 설득해 유료 사용자를 얻으려 한다는 비판을 받음
- 스타트업은 대개 실패하고, 그 결과 몇 달이 아니라 몇 주 안에 작성하도록 압박받은 유지보수 어려운 스파게티 코드가 남음
- 그런 코드는 나쁜 코딩 관행의 예시 정도를 제외하면 다시 보지 않게 되고, 엔지니어의 시간은 낭비되며, 벤처 자본은 이미 상당한 자본을 가진 사람들에게 흘러가 다시 다른 스타트업에 투입될 수 있음
- 채용 광고는 이런 일을 사람들의 삶을 풍요롭게 하고 엔지니어링 성장을 자극하는 흥미로운 일처럼 포장한다고 비판함
대형 기술기업에서도 사라지는 자율성
- 기존 기술기업은 스타트업과 조직·재무 구조가 다르지만, 문화적으로 크게 대비되지 않음
- FAANG에서 작성한 코드는 실제 사용자에게 도달할 수 있지만, 코드 작성의 어떤 측면에 대한 개인의 생각은 더 무관해짐
- 개발자는 다음 방식으로 기계의 톱니바퀴가 된다고 비판함
- 제품이 자본주의의 최악의 측면을 점점 더 음험한 방식으로 자동화할 가능성이 있음
- 실무적으로는 백엔드 스택 규모, 기술 면접 점수, 성과평가 점수 같은 숫자가 됨
- 문제는 이런 현실 자체뿐 아니라, 엔지니어가 공허하고 굴욕적인 반복 노동을 다른 노동자들보다 더 열망해야 하는 것처럼 기대받고, 그 어떤 측면도 묻지 못하도록 더 강하게 억제된다는 점임
비판적 사고가 배제된 엔지니어링
- 프로그래머는 어떻게에만 집중하고, 무엇을 만들지에는 드물게만 관여하며, 왜 만드는지는 거의 묻지 못하는 위치에 놓임
- 자신이 생산하는 시스템을 비판할 수 있고 비판하려는 개발자에게도, 그런 태도는 직장 밖에 두라는 메시지가 주어짐
- 개발자는 직무에 내재한 자율성과 창의성 부족을 식별하는 것조차 금지된다고 느끼며, 더 많이 만들 수는 있어도 다르게 만들거나 더 나은 것을 만들기는 어렵다고 봄
코드 양은 늘지만 소프트웨어는 나빠지는 구조
- 기술 업계의 do-more-ask-less 태도는 더 많은 코드를 만들 수 있지만, 동시에 더 나쁜 소프트웨어로 이어짐
- 자본과 외부 조건이 지속 가능하거나 긍정적이거나 최소한 실용적으로 유용한 소프트웨어를 만들 여지를 줄 때도, 관성 때문에 그렇게 하지 않는 경우가 많음
- 유행을 따르고 기존 상태를 재생산하는 편이 더 쉽고 보통 더 실현 가능함
- 같은 관성은 사회적으로 쓸모없는 제품이 올라가는 전체 기술 스택에도 스며듦
- 언어
- 라이브러리
- 프레임워크
- 코드 패턴
- 실제 혁신보다 새로움과 기믹을 앞세우는 성향이 산업 전체를 괴롭히고, 비전형적 문제를 풀지 않는다면 비전형적 엔지니어링도 필요하지 않게 됨
원하는 엔지니어링의 기준
- 가장 흥미로운 공학 문제는 기술 발전 자체를 목적으로 삼거나 없는 시장 수요를 인위적으로 만들려는 문제가 아니라, 사회 안에서 자연스럽게 생기는 문제임
- 사회적 필요는 혁신을 이끄는 가장 좋은 동력이며, 초기 컴퓨팅의 획기적 성과도 더 큰 공익을 위해 일어남
- 원하는 작업 방식은 시스템을 구축하는 왜가 모든 어떻게를 이끄는 것임
- 프로그래밍 언어
- 패러다임
- 아키텍처
- 코드 한 줄
- 문법 요소
- 그 “왜”는 그 자체를 위해 존재하는 사업 지표가 아니라, 실제로 존재하는 진짜 필요를 반영해야 함
같은 가치를 가진 사람을 찾는 요청
- 글쓴이는 지금까지 이런 가치를 의미 있게 공유하고 이런 종류의 엔지니어링 일을 하고 싶어 하는 사람을 만나지 못함
- 업계와의 상호작용에서 고립감을 자주 느끼지만, 자신의 작업 가치와 말해야 할 것의 중요성에는 확신이 있음
- 이런 사람이 있다면 연락해 달라고 요청하며, 이미 그런 장소가 있는지 알고 싶고 없다면 함께 만드는 것이 유익하다고 봄
- 자신의 관심 분야에 있고 가치와 합리적으로 맞는 컨설팅 일에는 열려 있음