일정 압력을 이해할 수 있습니다. 사용자는 회사의 생명력이므로 사용자를 기쁘게하고 싶습니다. 그러나 특정 변경 사항으로 인해 모든 것이 더 쉬워 질 것입니다. 불행히도, 우리 조직의 경영진은 그러한 변화에 대한 본능적 인 저항을 가지고 있으며,이 저항은 너무 강해서 장기적인 개선을 방해하고 있습니다.
예를 들어, Apple은 최근 iOS 프로그램에 대한 자동 참조 계산을 도입했습니다. 이것은 이전에 사용해야했던 수동 유지 / 릴리스 호출에 비해 크게 개선 된 것입니다. 코드를 작성하고 유지 관리하기가 더 쉽습니다. 전환 자체가 충돌을 일으킬 수 있습니다. 그러나 일단 문제가 해결되면 임의의 이상한 충돌이 발생할 수 있습니다.
최근에 상사에게 자동 참조 카운트로 전환하고 싶다고 언급했습니다. 그의 반응은 눈에 띄는 개선에 집중하고 싶었다는 것입니다. 이 반응은 그가 그에게서 나아가고있는 압력에 의해 주도되었을 가능성이 있으며 아마도 CEO의 말일 수도 있습니다.
비슷한 예가 많이 있습니다. 공통점은 무언가를 고쳐야하지만 수정의 단기 비용이 단기 이익보다 중요하다는 점입니다. 여기서 “단기”는 “다음 몇 주 안에”로 정의됩니다.
상황을 어떻게 처리해야합니까?
편집 : 답변 주셔서 감사합니다. 계속 오세요 내 상황과 관련이 있기 때문에 관리자와 CEO가 모두 프로그래머라는 것을 분명히해야합니다. 그러나 CEO는 이제 이것이 무엇인지 잊었을 수 있습니다. 분명히 그들의 프로그래머 측은 다른 압력에 압도되었습니다.
답변
당신은 정말 기술 부채 에 대해 이야기하고 있습니다. 은유가 관리자에게 도움이 될 수 있습니다. 나는 종종 소프트웨어의 기술적 부채가 더러운 부엌에서 요리하는 것과 비교된다. 싱크대와 카운터 및 스토브에 더러운 접시가 쌓여 있고 바닥에 쓰레기가 있으면 식사 시간이 더 오래 걸립니다. 그러나 다음 식사를 준비하는 가장 빠른 방법은 혼란을 해결하는 것입니다. 부엌을 청소하고 깨끗하게 유지하면 다음 식사가 늦어 지지만 이후의 모든 식사 배달이 개선됩니다. 그리고 식당의 배고픈 사람이 지저분한 부엌을 볼 수없고 요리를 시작하기 전에 왜 정리해야하는지 이해하지 못하는 것처럼, 경영진은 코드에서 혼란을 볼 수 없습니다. 당신은 그들에게 엉망을 보여 주거나 엉망으로 인한 품질 문제와 지연을 보여 주어야합니다.
아마도 긴급한 작업과 중요한 작업에 대해 이야기 할 수도 있습니다. 중요한 작업을 수행하지 않으면 긴급 작업에 시간이 오래 걸리고 비용이 더 많이 듭니다.
답변
프로그래머 는 경력의 어느 시점 에서나 어느 곳에서나 프로그래머를 괴롭히는 무언가를 우연히 발견 했습니다.이 코드는 리팩터링해야하고, 아키텍처상의 문제가 있으며,이 모듈은 유지 보수가 불가능합니다. 그러나 현재 조직의 문화 때문에, 직접 눈에 띄는 혜택 만 제공하는 업무에 집중하도록 압박을 받고 있습니다 .
고전적인 빙산의 비밀 이 다시 한번 있습니다. 비밀은 빙산이 수중 90 % 인 것처럼 모든 개발 프로젝트 의 대부분과 마찬가지로 사실 : 작업의 90 %가 최종 사용자에게 완전히 보이지 않을 것입니다. 이 코드는 최종 사용자 에게 영향 을 미치지 만 관리자는 차이를 볼 수없고 모든 것이 제대로 작동 할 때 유지 보수 / 릴리스 및 자동 참조 호출을 리팩토링하는 데 6 시간을 소비 한 이유를 염두에 두지 않습니다.
이 문제와 관련하여 취할 수있는 사실은 다음과 같습니다.
- 프로그래머가 아니라면 경영진 은 빙산의 비밀을 이해하지 못할 것입니다.
- 이것은 악의가 아니라 악의의 문제입니다. CEO는 좋은 제품을 원합니다. 그는 좋은 제품에 들어가는 모든 것을 이해하지 못합니다.
- CEO (및 귀하의 직속 상사)는 어리석지 않습니다. 왜 이것과 다른 빙산 문제에 시간을 투자해야하는지에 대한 사실과 구체적인 데이터를 연구하고 준비 하십시오.
잊지 마십시오-당신은 회사 남자 또는 여자입니다. 코드 맨이 아닙니다 . 성공 또는 실패에 관심이있는 회사를 위해이 제품을 개발 중입니다. 프로젝트 및 프로젝트 제안서에이를 반영해야합니다. 회사와 제품에 대한 귀하의 열정을 보여주고, 귀하의 지식을 보여주고, 상사와 CEO에게 그들이 당신에게 와서 무언가를 필요로한다고 믿어야한다는 것을 증명하십시오. 제품에 가치를 더하거나 (사본을 구매하는 사람들이 많을 때) 시간을 절약하거나 (제품이 고장 났을 때 화난 고객을 줄임), 이것이 어떻게 수익에 기여하는지 보여줍니다.
답변
당신은하지 않습니다.
나는이 질문과 모든 질문을 약간의 막 다른 골목으로 본다. 사람들에게 어떤 것도 “설득”할 수 없습니다. 그들이 이미 이와 같은 것을 알지 못하거나 조사하고 있다면, 뒤집지 않을 가능성이 있습니다. 그리고 많은 양의 데이터가 그렇지 않으면 설득 할 수 없습니다. 변화는 내면에서 와야합니다. 말을 물로 인도 할 수는 있지만 마실 수는 없습니다.
다음 기술 견적에 원하는 변경 사항을 적용합니다. 애플이 소개 한이 새로운 프레임 워크로 업그레이드해야한다. 로드맵에 ARC를 사용하지 마십시오. 옵션이 없습니다. ARC로 마이그레이션하는 것이 유일한 방법입니다.
답변
전에 비슷한 질문에 답변 했으므로 중복으로 간주 될 수 있습니다. 기본적으로 “리팩토링 노력”을하기 위해 사인 오프를하지는 않을 것입니다. 코드를 깔끔하게 만드는 방법은 보이 스카우트 규칙을 따르는 것입니다.
실제 부채를 갚는 것처럼 극복 할 수없는 일처럼 보일 수도 있습니다 (또는 지저분한 집을 청소하는 것). 속임수는 “청결한 섬”을보기 시작할 때까지 하나씩 더 잘 만드는 것입니다. 중요한 추진력이 있으면 팀의 다른 개발자가이를 알아 채고 결국 작업에 기여하기 시작합니다.
“Uncle”Bob Martin 의 Clean Coder 를 읽는 것이 좋습니다 . 좋은 코드를 작성하는 것은 직업의 일부입니다. 당신은 당신의 일을 할 수있는 권한을 요구하지 않고 그냥 할 수 있습니다.
답변
이러한 성격의 다른 질문과 마찬가지로 경영진이 이해할 수있는 숫자를 제공해야합니다. 이러한 개선 사항을 구현하여 얼마나 많은 시간을 절약 할 수 있는지, “무작위 이상한 충돌”이 얼마나 적게 발생하는지 등을 나타내는 숫자. 충돌이 최종 사용자에게 표시되고이를 방지하기 위해 수행 된 모든 것이 비즈니스에 도움이된다는 것을 확신시킵니다.
또한 이러한 개선 사항을 본인의 시간 (예 : 근무 시간 외)에 구현 한 후 나중에 관리에 대한 이점을 보여줄 수 있습니다. 나는 경영진이 당신이 무엇을 전달하려고하는지 이해하지 못하거나 당신이 그것을 시도하기 위해 시간을 할당하고 싶지 않다는 것이 분명 할 때만 이것을 할 것입니다.
행운을 빕니다!
답변
비즈니스 사례 제시
엔지니어 권장 사항이 종종 무시되는 데는 여러 가지 이유가 있습니다. 거의 모든 이유를 처리하는 가장 좋은 방법은 왜해야하는지에 대한 비즈니스 사례입니다. 고전적인 비용 / 이익 분석. 이것은 설득력있는 주장을 할뿐만 아니라 상사들에게 상류층에게 가져갈 무언가를줍니다.
- 초기 비용은 얼마입니까?
- 지속적인 비용은 얼마입니까?
- 예상되는 돈 / 시간 절약은 무엇이며 어디에서 오는가?
- ROI를 확인하는 데 시간이 얼마나 걸립니까?
비즈니스 사례를 수행 할 때는 항상 데이터를 사용하여 인수를 백업해야합니다.
- 개발이 현재 해결하거나 완화 할 문제를 처리하는 데 시간이 얼마나 걸립니까?
- 이 문제가 제거되거나 완화 될 문제와 관련하여 몇 건의 사용자 불만이 발생합니까?
- 다른 이점은 무엇입니까?
숫자를 정렬하고 거칠지 만 간단한 방정식으로 만듭니다. X를해야하고 회사 Y에게 이익이 될 것입니다.
참고 : 학문적으로 좋은 아이디어를 구현하는 것이 엄청나게 비싸더라도 놀라지 마십시오.
답변
이런 종류의 변경은 리팩토링 범주에 속합니다. 민첩한 접근 방식은 AMPLE 리팩토링 시간을 추정 한 각 스토리에 통합해야한다는 것입니다. 이것이 바로 그 이유입니다. 엔지니어를 제외하고는 아무도 왜 이런 일을하고 싶어하는지 이해하지 못할 것입니다. 올바르게 코딩하는 방법을 결정하는 것은 자신의 일이 아닙니다.
따라서 다음에해야 할 일이 많을 때 이러한 변경 사항이 그 일부인지 확인하십시오. 추정치를 제공하는 경우 리팩토링에 대한 추정치에 30 %를 추가해야합니다. 추정치를 제공하지 않는 경우 작업의 일부로 리팩토링을 수행하십시오.
그것은 당신을 더 느리게 만들 수 있습니다-글쎄요, 그것은 그것을 보는 방법이 아닙니다. 그것을 보는 방법은 현재 속도가 환상이며 본질적으로 당신이 사슬을 지나가는 거짓말이라는 것입니다. 이 작업으로 인해 수행 속도가 느려집니다.
콘크리트를 기초로 사용하지 않았을 때 더 빨리 집을 지을 수 있으며 고객에게는 좋아 보이지만 고객이 기초의 필요성을 보지 못하더라도 빌더 할 필요가있다. (이것은 실제로 흥미로운 평행선이다. 건축업자가 항상 자신이 알아야 할 일을하는 것은 아니기 때문에 강제로 법을 통과시켜야한다. 소프트웨어 개발을 관장하는 법은 없다. 결정하고 종종 잘못 결정합니다 …)