-
모든 소프트웨어는 지저분하고 뼈대가 있습니다칼럼 2023. 11. 21. 15:58
원문 : 모든 소프트웨어는 지저분하고 뼈대가 있습니다 (vadimkravcenko.com)
모든 소프트웨어의 제작과정은 동일합니다. 그것을 극복하는 단 한가지, 바로, 휴먼파워 입니다.
모든 상점은 지저분하고 모든 앱에는 뼈대가 있다는 한 가지 진실을 받아들여야 합니다. 마침표.
거대 기술 기업의 매력과 개발 참호의 냉혹한 현실이 만나는 소프트웨어 세계의 백스테이지에 오신 것을 환영합니다. 이곳에서는 마감 기한과 꿈이 충돌하며, 완벽함은 버그 없는 출시일만큼이나 이해하기 어려운 신화입니다.
대부분의 릴리스의 현실.
Google, Apple, Meta 또는 다른 회사들이 개발 옷장에 뼈대가 있다고 생각하지 않습니까? 그렇습니다. 모든 프로젝트는 무지개와 햇빛으로 시작하여 막대기와 접착제로 끝납니다. 가혹한 현실이 시작되었다. 요구 사항은 시장과 기술 환경이 변화함에 따라 때로는 극적으로 진화합니다. 처음에는 넉넉했던 마감일이 숨 막힐 정도로 빡빡해지고, 종종 경쟁 압력이나 전략적 전환으로 인해 움직입니다. 핵심 인력은 귀중한 지식을 가지고 떠날 수 있습니다. 이러한 이직은 전문성과 연속성의 격차로 이어져 프로젝트의 원래 비전을 유지하는 데 어려움을 초래할 수 있습니다.
그리고 IT 부서의 모든 사람들이 이 작은 비밀을 알고 있습니다.
일부 대기업이 릴리스를 할 때마다 모든 것을 파악하고 합리적인 일정에 버그 없이 적절하게 테스트된 제품을 출시한다고 생각할 수 있습니다. 그들은 소프트웨어 개발의 정점이며, 우리는 그들처럼 되기를 열망해야 합니다. 어-어. 실제로 이러한 릴리스는 완벽을 달성하는 것이 아니라 통제된 혼돈을 관리하는 것에 더 가깝습니다. 개발자와 엔지니어는 막바지 버그를 해결하기 위해 보이지 않는 곳에서 정신없이 일하고, 시스템 관리자는 트래픽 유입에 대비하여 서버를 모니터링하며, 지원 팀은 불가피하게 쏟아지는 사용자 쿼리 및 문제에 대비합니다.
모든 팀은 지저분하고, 모든 릴리스는 불완전하며, 모든 제품은 알 수 없는 버그로 가득 차 있습니다. IT 세계가 바로 그것입니다. 당신이 불완전하고 당신이 합류하기에 충분하지 않다고 생각하는 그 회사는 아마도 앱을 간신히 실행하고 있을 것입니다. 모든 제품에는 아무리 성공적이라 할지라도 숨겨진 약점이 있는데, 바로 그 제품을 만든 사람만 알고 있는 디지털 옷장 속의 뼈대입니다.
워터폴을 하고 모든 것을 계획하는 회사조차도 결국 화재와 싸우게 됩니다.
당신은 사람들에게 당신의 자동화가 수동으로 실행되는 몇 가지 bash 스크립트이거나 몇 가지 이상한 조건이 충족되면 제품이 중단된다고 말하지 않습니다. 항상 뭔가가 있습니다. 우아한 솔루션은 "나중에 수정하겠습니다"라는 의미로 수년 동안 코드베이스에 남아 있는 빠른 수정을 위해 종종 옆으로 비켜갑니다.
그러나 지저분한 것은 일종의 효율적입니다. 경직된 프로세스는 종종 보다 유동적이고 적응 가능한 접근 방식에 자리를 내줍니다. 지저분한 상점에서 탄생한 프로세스는 완벽하지는 않지만 원활하게 작동하여 제품이 성장함에 따라 관료주의를 우회하고 적응합니다. 중요한 일에 집중하기 위해 모서리를 자르는 것은 괜찮습니다. 모든 것을 정리하지 않아도 괜찮습니다. 그러나 다시 실행/리팩토링/소프트웨어의 더 나은 부분 만들기로 돌아가는 것도 괜찮습니다 — 지저분한 작업장에서 작업하고 있다는 것을 알고 있는 한 말입니다.
변화하는 사용자 요구나 시장 역학에 대응하기 위해 신속하게 방향을 전환하는 능력은 엄격한 계획을 고수하거나 "일을 완벽하게 수행"하는 것보다 훨씬 더 가치가 있습니다. (사용자 대면 중요하지 않은 소프트웨어에 대해 이야기하고 있다는 작은 경고와 함께) 이는 종종 실용적인 결정을 내리는 것을 의미하며, 제품에 진정으로 가치를 더하는 것에 리소스를 할당하기 위해 덜 중요한 기능을 잘라내는 것을 의미합니다.
형식보다 영향력을 우선시하는 것입니다.
대중이 일주일에 몇 개의 화재를 진압하는지 알지 못하는 한 기름칠이 잘 된 개발 기계로 간주 될 수 있습니다. 자동 배포가 실패하고 수동으로 수행해야 하는 경우 누가 신경 쓰겠습니까? 수동으로 수행하고 더 중요한 부분을 수정하는 데 집중하십시오.
성공적인 제품의 핵심은 문제가 없는 것이 아니라 문제를 효율적으로 처리하는 능력입니다.
사용자는 요구 사항이 충족되기를 원합니다. 쿠버네티스 클러스터에서 하든 함께 묶인 두 개의 토스터에서 하든 상관하지 않습니다. 폴 그레이엄(Paul Graham)이 말했듯이 처음에는 확장하지 않고 나중에 개선해야 합니다.
'칼럼' 카테고리의 다른 글
개발자의 행복을 파괴하는 10가지 방법 (0) 2024.01.09 GM-NAA I/O 및 SHARE의 역사 (0) 2023.12.03 데이터베이스 기술은 '있으면 좋은' 것이 아닙니다. (0) 2023.11.14 개발에 관하여 하고 싶은 이야기 : 파트 2 - 데이터베이스 다중화 (1) 2023.11.14 개발에 관한 하고 싶은 이야기 : 파트1 - 웹 개발과 분산 (1) 2023.11.14