그들은이를 이유로 Real World ™라고 부릅니다.
실제 기업 세계에서 당신이 겪게 될 것의 99 %는 쓰레기로 간주 될 것입니다. 쓰레기로 간주되지 않는 1 %는 결국 쓰레기가됩니다.
# 1 쓰기 코드, # 2 ????, # 3 Profit!
첫째, 사업체가 이익을 돌리기 위해 존재하지만, 완벽하게 황금 저장소에 보관 된 완벽하게 이론적으로 깨끗하고 깔끔한 학문적 코드를 생성하는 산은 존재 하지 않습니다 . 심지어 소스 코드를 판매하는 비즈니스조차도 가깝지 않습니다.
비즈니스 세계에서 코드는 끝 의 수단 입니다. 일부 코드가 비즈니스 문제를 해결하고 작성 및 유지 관리하는 데 드는 비용보다 많은 돈을 버는 경우 비즈니스에 바람직합니다. 코드 작성을 고용하는 것은 비즈니스가 코드를 얻는 한 가지 방법 일뿐입니다.
이론 0-실습 ∞
이상적으로는 유지 관리가 더 중요하지만 단기적으로는 재정적으로 이기지 않기 때문에 일반적으로 그렇지 않습니다. 장기적으로 소프트웨어는 일반적으로 상대적으로 짧은 수명주기, 특히 웹 기반 응용 프로그램을 사용하므로 더 빨리 사용되지 않으며 더 자주 다시 작성됩니다.
사내 업무용 응용 프로그램은 많은 운동량 기반 이유로 끝없는 좀비 프로젝트로 인식되는 응용 프로그램입니다. 이 프로젝트는 실제로 사업의 이익을 계속하기 때문에 계속해서 성공 합니다.
이론적으로는 이론과 실제에 차이가 없습니다. 실제로는 있습니다. -요기 베라
이론적으로 100 % 코드 적용 범위를 갖춘 완벽하게 깨끗한 원시 코드 기반은 회사의 비용을 절감해야하지만 실제로는 유효한 투자 수익률에 근접한 어떤 것도 제공하지 못합니다.
소프트웨어 라이프 사이클의 물리
또한 소프트웨어 세계에서 작동하는 초강력 엔트로피 힘이 있습니다. 모든 소프트웨어가 Big Ball of Mud 로 퇴화되는 것을 비난하는 불가피한 블랙홀입니다 .
BBM 에서 더 멀리 시작 할수록 더 나아지지만 모든 소프트웨어 시스템은 결국 충분한 시간을 갖습니다. 100 % 엔트로피에 얼마나 빨리 접근 하는가는 시작하는 위치와 기술 부채에 얼마나 빨리 쌓이는 지, 그리고 그것에 대한 관심이 얼마나 높은가에 따라 결정됩니다.
소프트웨어 시스템 은 유지 보수로 인해 성능 이 저하되거나 썩지 않습니다. 정의에 따라 코드를 변경하지 않고 몇 년 동안 설치된 시스템은 모든 요구 사항과 목표를 충족하며 성공합니다.
최대 엔트로피에 가까워지기 시작했기 때문에 지속적인 변화가 필요한 시스템은 끊임없이 찌르고 찌르는 시스템이며 부정적인 변화를 가속화하는 유지 관리 입니다.
충분합니다. 충분합니다.
상실 시간이 너무 짧아 비용을 보상 할 수 없기 때문에 지속적으로 변경되는 웹 사이트와 같은 짧은 수명주기 시스템은 단위 테스트에서 100 % 코드 적용 범위의 값 비싼 사전 설계의 이점을 얻지 못합니다.
위에서 언급 한 내부 업무용 앱과 같은 긴 수명주기 시스템은 100 % 코드 적용 단위 테스트에 대한 대규모 투자의 혜택을 실제로 얻지 못합니다. 프로젝트 수명 동안 변화율이 0에 가까운 상수에 근접하기 때문입니다. 비선형 패션.
그렇기 때문에 수명이 다한 계획이 더 중요하고 몇 년이 지나서 지원할 수없는 것이 아니라 새로운 제품이 제자리에 들어와야 할 때가 아니라 무언가가 출시되는 것처럼 교체 시스템을 계획해야합니다.
그들은 내가 아는 한 BBM에 대해 가르치지 않습니다. 나는 그것이 최근에 CS 졸업생을 만난 적이 없었습니다.
그렇기 때문에 Good Enough가 Good Enough 인 이유 는 무엇이든간에 그렇지 않습니다.
소프트웨어 슬럼로드
부동산 슬럼 영주가있는 이유는 그들이 소유 한 낡은 샨티 건물에서 이익을 얻는 것입니다. 런 다운 자산의 증분 유지 보수에 소비하는 것보다 더 많은 수익을 창출합니다. 그렇지 않은 경우 건물을 분해하고 교체합니다. 그러나 증분 비용이 전체 건물을 정비 또는 교체하는 것보다 훨씬 적기 때문에 그렇지 않습니다. 타락 재산에 대해 기꺼이 지불하려는 고객 (세입자)도 있습니다.
건물 소유주, 빈민가 영주 또는 유무는 관련 비용보다 실질적인 이익으로 해석되지 않는 학문적 완벽 함이라는 학문적 개념 때문에 부동산에 돈을 쓰지 않을 것입니다.
어느 고객도 자신의 소프트웨어 시스템에 대한 업그레이드 비용을 지불 할 의사가 없습니다. 실질적인 이익없이 코드를 작성하고 다시 작성하는 데 돈을 쓰지 않는 기업은 없습니다.
Microsoft는 가장 지배적이고 성공적인 소프트웨어 전문가입니다. Windows는 최근까지 주요 기초 재 작성을 시작하지 않았습니다. 그리고 그들은 여전히 모든 기존 코드를 커널에서 삭제하지 않았습니다. 그들에게는 사업 상 이해가되지 않습니다. 사람들은 지난 10 년 동안 설정 한 기대치의 낮은 수준을 기꺼이 받아들입니다.
예지
이것은 제가 소프트웨어 개발에있어 온 20 년 이상의 패턴이었습니다. 곧 변하지 않을 것입니다. 이것은 사람들이 어떤 신념 체계에서 벗어나기를 원하는 방식이 아니며, 비즈니스에 대한 외부 세력의 현실입니다. 비즈니스는 의사 결정을 내리고, 급여를 지불하는 것이 악한 것이 아니며, 단기 또는 장기 비전은 무의미합니다. 이것은 정의에 의한 지속적인 변화의 단기 산업입니다. 이익을 창출 할만큼 선을 반대하는 사람은 사업을 이해하지 못합니다.
나는 15 년 동안 컨설팅을했고, 좋은 것이 그 자체만으로도 돈이 많이 들었다는 것을 매우 빨리 배웠다 . 예, 완벽하기를 원했지만 솔루션을 판매하는 시간의 99.99999 % 인 코드 기반을 판매하지 않는 한, 깨끗하고 체계적인 우아한 코드를 잃어 버리면 결코 상환받지 못할 시간을 낭비하게됩니다. .
진보와 희망
애자일 방법론은 적어도 철학적으로 올바른 방향으로의 좋은 단계입니다. 그들은 일류 시민으로서 혼란과 끊임없는 변화를 해결하고 받아들입니다. 그들은 방법론과 관행뿐만 아니라 요구 사항과 기술이 변경되어야한다는 것을 인정하면서 독단적 관행을 거부합니다.
그들은 시간 부족이나 변화하는 요구 사항, 직원 변경 및 기술 부채 개념을 가진 소프트웨어 시스템 의 생동감 으로 인해 야기 되는 엔트로피를 받아들 입니다.
그러나 애자일은 만병 통치약이 아니며 물리의 기본 법칙을 변경하지 않으며 코드베이스는 썩지 않습니다. 부패를 완전히 처리하고 관리 할 수 없게되기 전에 부패를 다룰 계획을 세워야합니다.
민첩하게 처리하면 엔트로피 관리, 속도 저하, 추적, 측정 및 계획된 방식으로 처리 할 수 있습니다. 그것은 멈추지 않을 것입니다!
경력 결정
이것이 당신에게 진정한 철학적 문제라면, 일이 작동하는 방식에 유효한 비즈니스 장점이 있기 때문에 다른 직업 선택을 고려해야 할 것입니다. 오픈 소스 프로젝트에는 더 나은 실적이 없으며, 대부분의 경우 코드는 내가 본 대부분의 회사 코드보다 훨씬 나쁩니다.