소프트웨어 개발 세계의 일부 문제는 대수롭지 않게 보일 수도 있지만 사람과 사회에 심각한 부작용과 비용을 초래할 수 있습니다. 이 기사는 독자들이 자신의 행동이 자신이 참여하는 환경에 어떻게 영향을 미치는지, 심지어 작은 일이라도 어떻게 큰 손실을 초래하는지 이해하도록 함으로써 변화를 장려하려는 성찰과 시도를 제공합니다.
어렸을 때, 컴퓨터를 처음 사용하기 전에는 항상 자전거를 타고 다녔습니다. 우리 집 건너편에는 내가 정기적으로 자전거를 탈 수 있는 좁은 산책로가 몇 개 있는 작은 숲이 있었습니다.
나는 종종 내 BMX 자전거가 Formula One이고 Nigel Mansell, Alain Prost 또는 Ayrton Senna와 경쟁하고 있다는 환상을 품곤 했습니다. 그러다가 결승선이 가까워지면 압도적인 추월을 하여 아슬아슬한 승리를 거두었습니다.
숲 저편 끝에는 오래된 창고가 있었습니다. 지붕 가까이에는 빛이 들어올 수 있도록 작은 창문이 있었습니다. 그러나 그 창문은 누구도 내부를 들여다볼 수 없을 만큼 충분히 높았습니다.
나는 처음으로 멈춰서 건물을 바라보며 휴식을 취했던 순간을 결코 잊지 않습니다. 나는 이렇게 생각했던 것을 기억합니다. “이상해요! 왜 도로 근처가 아닌가?... 누가 돌을 던지고 창문을 깨뜨렸는데... 왜 고치지 않았지? 신비롭지만 우울해 보입니다. 멀리 있는 게 좋을 것 같아요. 뭔가 기분이 이상해요.” 나는 그때 자전거를 타고 떠났을 것이고, 다시는 그 지역으로 많은 모험을 하지 않았을 것입니다.
몇 년이 흐르고 결국 숲은 도로로 잘려나갔고, 천천히 그 옆에 새로운 건물들이 싹트기 시작했습니다. 그러나 적어도 한동안은 오래된 창고가 버텨냈습니다. 그러나 해가 갈수록 더 많은 창문이 던져진 돌에 굴복하게 되었습니다.
공평하게 말하면, 창문을 깨뜨린 사람이 후회에 사로잡히지는 않았을 것입니다. 일부는 이미 파손되어 고정되지 않았는데, 누가 몇 개 더 신경쓰겠습니까? 결국 교체 비용은 모두 수리가 필요한 것과 같을 것입니다.
따라서 오래된 창고 창문은 자신의 목표를 훈련할 수 있는 기회를 제공하고, 일부 나이든 젊은이들이 한 번 관찰한 것처럼 조기 철거 지원이 성공했을 때(또 다른 창문이 깨졌을 때) 축하할 수 있는 기회를 제공했습니다.
나와 다른 동료들에게 도로는 학교까지의 더 짧은 경로를 허용했습니다. 그럼에도 불구하고 우리는 모두 오래되고 약간 더 긴 경로를 선호할 것입니다. 왜냐하면 그 경로는 알려진 경로이고 우리를 이상하게 불안하게 만드는 황폐한 건물을 피할 수 있게 해주었기 때문입니다. 생각하거나 걱정할 일이 적었습니다.
나는 휴대폰 이전 시대의 이 이야기를 여러분을 자신의 어린 시절로 데려가기 위해 여러분이 어렸을 때 황폐한 건물이나 지역을 관찰했을 때 느꼈을 수 있는 비슷한 감정을 찾아내고 소개하고자 합니다. 깨진 유리창 이론 .
간단히 말해서, 깨진 유리창 이론은 환경 장애가 범죄, 반사회적 또는 시민 장애 행동을 조장한다는 것을 시사합니다. 깨진 창문이 없으면 무질서가 발생할 확률이 낮아지고 평화로움과 합법성이 선호됩니다. 낡은 창고의 깨진 창문처럼, 이미 무질서가 넘쳐나면 더 쌓기 쉽습니다.
나는 몇 달 전에 Pragmatic Programmer를 읽으면서 깨진 유리창 이론을 처음 접했습니다. 소프트웨어 개발 세계가 처음이라면 읽어볼 가치가 있는 책입니다.
깨진 유리창 이론의 지혜가 종종 떠오릅니다. 확실히 범죄학자와 행동 전문가들은 이에 관해 할 말이 더 많겠지만 나에게는 이 사례가 환경이 인간 행동에 어떻게 영향을 미치는지에 대한 새겨진 그림입니다.
그리고 최근 일부 학자들은 그들의 논문이나 주장을 읽지 않고도 그 이론이 더 이상 유효하지 않다고 주장하지만, 나는 이미 다음과 같이 도전하고 싶습니다. “죄송합니다. 나는 당신이 전문가라는 것을 알고 있지만 내 경험으로는 그렇습니다.”
"Bing Bang" TV 쇼를 좋아하신다면 전문가도 틀릴 수 있고 친구도 틀렸다는 것이 입증될 수 있다는 것을 아실 것입니다.
이 낡은 창고 이야기에 등장하는 깨진 창문은 반사회적 행동을 불러일으키고, 마치 자동화된 문제의 예감에 이끌려 지나가는 사람들을 그 문제로부터 멀어지게 하고 마음에서 제거하도록 유도한다는 점을 이해하시기 바랍니다.
제가 너무 늙었다고 생각하지 않도록 TikTok Kia 챌린지를 또 다른 예로 사용하겠습니다(수행할 차량의 창문을 깨는 것도 포함될 수 있음).
잘 모르신다면 해당 플랫폼에서 공유된 동영상에 관한 것입니다. 이는 주로 10대를 대상으로 기아와 현대를 대상으로 한 일련의 자동차 절도 사건으로 인해 재산 피해, 슬픔, 인명 손실 및 기타 사악한 결과를 초래했습니다. 결과는 모두 부정적입니다… TikTok의 이익과 추가 플랫폼 악명은 제외됩니다.
해당 자동차 제조업체가 의도했거나 불행하게도 설계 결정을 내렸음에도 불구하고 이는 일반적인 USB 케이블을 통해 성공적으로 악용된 시스템 취약성이었습니다.
어른이 되었거나 적어도 책임을 져야 할 일은 두 브랜드 모두에 상기 취약점을 공개하고 이를 수정하기 위한 조치를 취하기를 바라는 것이었습니다. 물론, 이는 해당 영상의 작성자가 결코 유명해지지 않을 것이며 영상을 만드는 동안 재미를 느끼지도 않을 것임을 의미했을 것입니다.
요즘 젊은이들이 소방관, 의사, 우주비행사보다는 악의 대사라 할지라도 영향력 있는 사람이 되고 싶어 한다는 점이 나에게는 흥미롭습니다. 잘했어 매스컴! (비꼬는 데 어려움을 겪는 사람들을 위한 나의 비꼬는 시도)
따라서 이 예에서 우리는 의도치 않게 깨진 유리창(및 USB 케이블)이 유리가 깨진 것보다 더 극적인 결과를 초래할 수 있음을 인정할 수 있습니다.
이후 두 회사는 범죄 행위를 최소화하고 해결하기 위해, 즉 깨진 유리창을 고치기 위한 조치를 취했지만, 명예 훼손과 금전적 손실을 겪기 전에는 조치를 취하지 않았습니다.
수년 동안 깨진 창이었던 소프트웨어 세계의 예는 리퍼러라는 단어의 철자가 틀린 HTTP 리퍼러 헤더입니다. 그것은 아마도 당신과 수천 명은 아니더라도 수백 명의 사람들에게 문제를 일으켰습니다.
나처럼 당신도 저자를 향해 야유(보통 큰 소리로 무례하고 조롱하는 말을 함)했을 것입니다. 당신은 또한 그것이 누구의 잘못인지 검색했을 수도 있고, 그렇게 오랜 세월이 지난 후에도 너무 바쁘다는 변명이나 "결국 고칠 게요"라는 변명은... 매우 인간적인 것이라고 결론을 내릴 수도 있습니다. 다른 깨진 창문에 대해서도 비슷한 추론을 전에도 들었을 것입니다.
잘못된 일을 해야 한다고 가르치는 것이 쉬운데, 그것이 옳은 방법이기 때문에 다른 사람들이 시간을 낭비하는 것을 누가 신경쓰겠습니까? 아니면, 여기 재미있는 생각이 있습니다. 사전을 바꾸면 어떨까요? 그러면 그것은 더 이상 실수가 아닐 것입니다.
선택한 텍스트 편집기를 열고 영어 사전이 있는 철자가 틀린 버전으로 문장을 작성하세요. 단어가 오타로 표시되나요?
결과는 당신을 놀라게 할 수 있습니다.
깨진 유리창을 수리하지 않고 방치하면 더 많은 유리창이 깨집니다. 하지만 전문가조차 이를 신경 쓰지 않는다면 우리는 왜 그래야 할까요? 창문을 더 깨면 어떨까요? 언젠가는 모든 것이 고쳐져야 할 것입니다.
여기에 잠재적인 이유가 있습니다! 숫자가 포함되어 있어 틀리기 쉽지만 한번 시도해 보겠습니다.
이 소스 에 따르면 2021년 미국의 평균 프로그래머 급여는 $93,000였습니다. 주당 40시간, 52주 근무를 통해 $44.71의 시간당 가치를 얻는다고 가정해 보겠습니다. (미국인들은 휴가를 별로 안 좋아하는 것 같습니다.)
이를 감안할 때, 이 소스 에 따르면 미국에만 430만 명의 프로그래머가 있습니다. 그 중 5%만 가져간다고 해도(값은 임의로 선택했습니다) 어떤 식으로든 오타를 발견하고 이를 이해하고 해결하기 위한 조치를 취해야 하는 215,000명의 프로그래머가 있을 것입니다.
각 프로그래머가 부작용을 처리하고 애초에 부작용이 발생한 이유를 이해하는 데 평균 1시간만 낭비한다면 첫 만남의 비용은 960만 달러가 될 것입니다. 30%(1,290,000명)라면 그 가치는 5,770만 달러가 됩니다. 다시 말하지만 미국에만 해당됩니다 .
또 다른 임의의 비율을 선택하더라도 낭비는 여전히 엄청납니다.
그리고 개발 주기 초기에 발견된 문제는 프로덕션 단계에서 발견된 문제보다 훨씬 비용이 적게 든다는 점을 고려하지 않았다는 점을 염두에 두십시오. 또한 인플레이션 조정을 추가하지 않았으며 이를 해결하는 데 시간을 투자하는 다른 국가나 학생 및 교수, 웹사이트가 있지만 프로그래머로 간주되지 않는 사람, 은퇴한 사람, 아직 인플레이션이 있는 사람도 고려하지 않았습니다. 그것을 배우기 위해.
이제 해당 값을 추정하여 세계를 포함합니다. 얼마나 많은 돈, 얼마나 많은 가치, 얼마나 많은 생명을 이미 잃었고 앞으로도 잃을 것이라고 생각하시나요?
나는 친절한 영혼이 어딘가에서 "그런데 우리가 그것을 고쳤고 버전 X에서는 이전 방식이 더 이상 사용되지 않을 것입니다"라고 공유하는 날을 갈망합니다. 나에게는 쉬운 실수에 책임이 있는 사람들이 너무 비열해서 이 오타에 대해 기억해야 하는 것이 아니라면, 그것을 고칠 수 있는 가장 좋은 시기는 어제였기 때문입니다. (Apache Foundation에 있거나 Nginx를 사용하는 사람을 알고 계시나요? 제발! 잔소리를 해주세요!)
"끝을 염두에 두고 시작하십시오"에는 다른 사람을 위해 당신이 한 일과 하지 않은 일이 포함됩니다.
그러나 이것은 유니콘이 아닌 소프트웨어 세계의 예일뿐입니다. 우리는 더 많은 것을 가지고 있습니다.
내 경험으로는 이해관계자의 성숙도, 경험 및 소프트웨어 수명이 높을수록 깨진 유리창이 오랫동안 지속되거나 해결되지 않을 가능성이 더 높다는 것입니다.
그리고 아니. 나는 조기에 자주 출시하는 데 만족을 느끼는 사람들의 뒤나 옆에 서 있지 않습니다. 왜냐하면 정기적으로 출시하면 품질과 관리가 떨어지기 때문입니다. 대부분 깨진 창, 생각지도 못한 완전한 기능을 출시한다는 사실을 아는 것은 민첩한 것이 아니라 엉성한 것입니다.
그리고 그렇습니다. 저는 위의 진술과 모순되는 많은 이유가 있을 것이라는 것을 알고 있습니다. 그러나 그 중 어느 것도 이익을 얻기로 결정한 사이버 공격자가 가져온 날씨 변화에 저항하지 않을 것이라고 믿습니다. 더 명확하게 말하면, 스타트업 회사의 코드베이스는 범죄에 취약한 경우가 많습니다. 즉, 범죄자가 쉽게 선택할 수 있는 열매입니다.
그러나 성숙한 조직과 관련하여, 깨진 유리창을 껴안고 있는 성숙함의 현실 뒤에 있는 가장 강력한 힘은 낮은 투자 수익률과 가용 자원에 대한 관심의 필요성을 지시하고 시행하는 기타 긴급한 우선순위입니다.
또한, 확립된 조직은 실현될 경우 광범위한 사회적 영향을 미칠 수 있는 특정 위험을 감수하지 못하도록 제한하는 규정 및 규정 준수의 구속을 받습니다. 이것이 바로 이들 기업이 스타트업을 인큐베이션하여 특정 틈새시장을 확보한 다음 실제로 인수하기 전에 규제와 활동이 보다 안정될 때까지 기다리는 것을 선호하는 이유이기도 합니다.
사회는 실패한 사람을 선호하지 않습니다. 우리는 승자를 축하합니다! 그러므로 실수를 하거나 실패할 때 방어적인 태도를 취하는 것이 인간입니다. 우리는 우리를 제외한 다른 모든 사람들이 페널티킥이나 프리킥을 절대 놓치지 말 것을 요구합니다. 또한 프로그래머들은 확실히 서로에게 친절하지 않지만 이것이 그들에게만 국한된 문제는 아닙니다.
따라서 팀이나 개인이 "실제로는 버그가 아닙니다", "실제로 결함이 아닙니다", 설계상의 결정이었습니다", "저희는 그런 식으로 사용될 수 있다고는 전혀 생각하지 못했습니다"와 같은 추론으로 응답하는 것은 예상치 못한 일이 아닙니다. ”, “아무도 그렇게 하지 않을 것이다”, “아무에게도 해를 끼치지 않는다”, “의도한 대로 작동하고 있다” 등.
그리고 깨진 창문이 적어도 조만간에 고쳐지지 않을 때, 프로그래머들은 유머러스하고 괴상한 방식으로 그것을 " 기능 "이라고 부릅니다.
어리석은 것 같지 않나요? 무슨 일이 일어나고 있는지 봅시다.
우리가 편안하게 앉아서 우리 자신의 편견에 저항하려고 노력한다면 아마도 우리 중 더 많은 사람들이 똑같은 것을 관찰할 수 있을 것입니다. 살아있는 문제 해결을 하는 많은 사람들이 깨진 창문을 확실하고 쉽게 인식할 수 있다는 것입니다. 그리고 어떤 것들은 결코 고쳐지지 않을 것이기 때문에 개인들은 걱정을 멈추고 마음의 밀린 일에서 그것들을 제거할 방법을 찾을 것입니다.
개별적으로나 직접적으로 통제할 수 없는 인생의 다른 많은 것들과 마찬가지로, 그것들에 대해 생각하는데 계속 에너지를 소비한다면 그것들도 당신에게 부담이 되기 때문입니다.
그렇다면 부정성을 가져오고 바람직하지 않은 이 일반적인 행동이 용납될 수 없게 되는 것은 언제입니까? 사람이 추락하고 사망할 때만 그런가?
그렇다면 결코 고쳐지지 않는 것이 있습니다… 계속 잃자, 더 정확하게는 다른 사람들이 계속 잃도록 놔두자.
창고 소유자에게만 영향을 미치는 깨진 유리, 차량 소유자, 차량을 강탈한 사람, 그리고 마지막으로 다른 프로그래머 사이에서 비록 작더라도 세부 사항을 해결하면 차이가 생길 것입니다.
다음에 잘못한 일이 있으면 즉시 고치거나, 잘못한 사람이 고치도록 놔두시기 바랍니다.
그리고 다른 사람들도 쓰레기를 버리는 것을 멈추십시오.
전문가라면 도전해보세요! 그들은 인간이고, 실수를 하고 심지어 눈치채지 못했을 수도 있습니다. 그들이 바보처럼 반응한다면, “천만에요”라고 대답하세요.
만약 내가 지금까지 살면서 저지른 모든 오타와 어리석은 일들에 대해 대가를 치러야 할 벌칙이 있다면…
하지만 저는 항상 한 가지 일을 하려고 노력합니다 . 일단 알고 나면 고치는 것입니다. 당신도 그래야 한다!
작은 것들도 중요합니다. 그리고 정확히 그들이 아니더라도 그들의 존재가 무엇을 의미하는지.
"깨진 창"(잘못된 디자인, 잘못된 결정 또는 잘못된 코드)을 복구하지 않은 채로 두지 마십시오. - 데이브 토마스와 앤디 헌트의 실용주의 프로그래머
(어린아이들도 포함)