소프트웨어 산업에서 가장 나쁜 거짓 경제는 무엇입니까 (즉, 궁극적으로 저축하는 것보다 비용이 많이 드는 돈을 절약하는 방법) 그리고 어떻게 싸워야합니까?
소프트웨어 산업에서 가장 나쁜 거짓 경제는 무엇입니까 (즉, 궁극적으로 저축하는 것보다 비용이 많이 드는 돈을 절약하는 방법) 그리고 어떻게 싸워야합니까?
답변:
즉, "그냥 빨리하면 나중에 리팩터링 할 것"입니다. 첫째로, 나는이 행동에 관여하는 누군가가 실제로 나중에 리팩터링하는 것을 보지 못했기 때문에. 둘째, 빠른 방법으로 작업을 수행하기 때문에 좋은 방법 대신 미래의 기능을 추가하거나 향후 버그를 해결하기가 어려워 장기적으로 시간을 낭비하게됩니다.
안타깝게도 많은 사람들이 개발자주기를 단축하여 빠른 작업을 수행 할 수 있다고 생각합니다 . 가능하다고 생각하지만 실제로는 아직 보지 못했습니다.
1 명 대신에 저렴한 개발자 2 명을 고용합니다 . (같은 가격)
내 예는 NimChimpsky의 예 와 완전히 반대입니다 .
기성품을 구입할 수있는 사내 개발을 시도합니다.
일반적으로 이것은 실제로 시장을 점검하지 못하여 문제가 해결 될 무언가가 있는지 확인하기 때문에 발생합니다. 이것은 연구를하기 전에 코딩을 "다이빙"하고 싶어하는 개발자와 그 시간을 고려하지 않은 프로젝트 관리자, 즉 돈으로 인해 복잡해질 수 있습니다.
필자가 현장에서 본 가장 일반적인 예 중 하나 인 웹 개발은 자체 CMS 시스템을 개발하려는 회사입니다. 이것들은 항상 작게 시작되지만, 기능이 강화되면서 곧 부풀어 오르고 통제 불능 상태가됩니다. 항상 무료 제품과 프레임 워크가 많이 있기 때문에 훨씬 더 적합합니다.
프로젝트 관리를위한 전용 리소스가 없음
나는 몇 명의 프로그래머가 계약을 맺었을 때 여러 번 경험했으며 이미 힘든 일을하는 사람이 프로젝트를 관리해야했지만 실제로 다른 작업으로 너무 바빠서 프로젝트가 실제로 추진력을 얻지 못했습니다. 프로그래머들은 "프로토 타입"과 물건을 만들었지 만, 리드 없이는 많은 것들이 바쁘게 보이기 위해 둥글게 달리고있었습니다.
새로운 프로그래머를위한 나쁜 장비
나는 한때이 정책이 "새로운 프로그래머들은 그들이 가치가 있다는 것을 증명할 때까지 작은 화면으로 아주 오래된 PC에서 작업해야한다"는 정책을 한 적이있다. 그러한 정책이 부정적인 선택을 일으켜 항상 더 건전한 환경에서 일할 수있는 선택을하는 좋은 사람들을 몰아냈다는 것은 놀라운 일이 아닙니다.
프로그래머를 테스터 / 기술 작가로 두 배로 늘려서 비용을 절약 할 수 있습니다
테스터 / 기술 작가 작업에 대해 프로그래머 급여를 지불하는 경우, 해당 작업에 경력을 바친 사람보다 돈을 낭비하고 품질이 낮은 작업을 수행 할 수 있습니다. 또한, 프로그래머가 엄격한 마감 기한에 맞서고 문서화가 완료되지 않을 가능성이 높습니다.
BTW : 개발자는 항상 마감 기한이 지났습니다.
제품 개발과 관련이없는 연구 / 읽기 / 쓰기 코드는 자원 낭비입니다.
일부 프로그래머와 관리자조차도 그렇게 믿고 있습니다. 일반적으로 그들은 단지 머리에있는 지식을 기반으로 프로그래밍을 수행하고, 문제에 직면했을 때 연구하고 답을 찾습니다. 그들은 지속적으로 지식을 향상시키지 않습니다. 내 의견으로는, 우리는 항상 자신을 최신 상태로 유지해야하며, 수집 한 지식은 기존 및 미래의 문제를 해결하는 데 유용 할 것입니다. 물론 시간을 현명하게 할당해야합니다.
이것은 Dan의 답변 과 비슷합니다 . 일부 관리자는 개발자가 시장의 기존 제품을 연구하지 않고도 요구 사항에 따라 제품을 빠르게 뛰어 들고 개발하기를 원합니다.
많은 경우에 아웃소싱은 더 많은 비용이 듭니다. 우리 회사에서는 새로운 직원 슬롯을 확보하기가 매우 어려우므로 아웃소싱을 강하게 추진하고 있습니다. 또한 현장 계약자를 얻는 것도 어렵다. 그들이 유지해야하는 해양과 육상의 비율은 3 : 1입니다. 결과적으로, 많은 팀이 단지 12 개의 근해를 고용하고 거의 사용하지 않기 때문에 4 명의 현장 계약자를 얻을 수 있습니다.
긴 피드백 루프!
그것은 모두에게 일어납니다 : 당신은 당신이 굉장하다고 생각하는 것을 만들고, 당신이 틀렸다는 것을 알게됩니다. 그것은 문제가 아닙니다. 문제는 당신이 멈추어야한다는 것을 알기 전에 건물을 얼마나 오래 쓰는지입니다.
높은 수준에서 릴리스주기가 길면이 문제가 발생합니다. 피드백없이 1 년 동안 건축하면 1 년 내내 도박을합니다. 더 자주 출시할수록 도박이 작아지고 도박에 더 좋습니다.
그러나 가장 낮은 수준에서도 발생합니다. 개발자로서 저는 빈번한 코드 검토 (또는 더 나은 페어 프로그래밍)를 좋아합니다. 누군가가 말하기를 "멍청한 방법이 있습니다!" 같은 이유로 단위 테스트가 빠르고 자주 실행되기를 원하므로 버그가 커지기 전에 잡을 수 있습니다.
짧은 피드백 루프의 중요성을 인식하기 시작하면 어디서나 볼 수 있습니다. 예를 들어, OODA 루프 의 군사 개념 .
내 일화는 아니지만 개발자에게 무료 커피 제공을 중단 한 상점에 대해 들어 본 적이 있는데, 대신 커피를 마시고 싶을 때 가장 가까운 커피 숍 (10 분 정도)을 자유롭게 걸어 갈 수 있다고합니다. 각 방법으로 여행하고 일부를 구입하십시오.
거짓 경제의 정의와 거의 같습니다.
두 번째 모니터가 너무 비싸서 단일 화면 워크 스테이션 제공 . 매년 1 시간의 작업 만 절약하더라도 두 번째 화면은 여전히 좋은 투자입니다. 나는 나의 많은 시간을 절약 할 수 있었음을 확실히 알고있다.
다중 모니터 설정은 개발 작업뿐만 아니라 거의 모든 작업을보다 효율적으로 만들 수 있습니다. 세 대의 모니터가 두 대보다 훨씬 좋지만 매 화면마다 효과가 덜 두드러집니다.
다중 모니터 설정 :
컨설턴트 비용이 시간당 150 $ 이상인 경우 컨설턴트 에게 제공되는 가장 저렴한 하드웨어 .
더 나은 하드웨어로 생각하면 최소한 하루에 30 분 더 효과적 일 수 있습니다. 그것은 한 달에 30 분 * 20 일의 일 = 600 분 / 월 = 10 시간 / 월> 1 일 이상의 작업 = 10 시간 * 150 $ / 시간 = 1500 $를 줄 것입니다.
1500 달러의 컴퓨터를 가지고 있다면 컨설턴트가 더 효율적이지 않습니까? 컨설턴트가 덜 짜증나게할까요?
이제 문제는 컨설턴트와 PC 하드웨어에 대한 두 가지 예산이있는 것 같습니다.
작업 시간은 계획 일을 절약
(계획에 충분한 시간을 투자하지 않음)
내가 생각하는 가장 보편적 인 것은 관리자가 단순히 업무를 효율적으로 수행하는 데 필요한 도구를 개발자에게 제공하지 않는 것입니다.
기본적으로 Joel 테스트 에서 9를 가리 킵니다 .
불행히도 "문제에 몸을 던져 (충분히) 몸통"을 사용하는 경우가 있습니다. Brook 's Law 는 The Mythical Man-Month 에서 이것을 반박 하지만 일부는이 교훈을 배우기 위해 경험이 필요합니다. 경영진이 사람들을 추가하고 그에 대한 대가를 치르지 않을 것이라는 허위 진술을 믿을 수 있기 때문에 일반적으로 이것은 내 힘 안에있는 것이 아닙니다.
매일 회의 :
(meeting duration in hours) x (Y team members) x (average salary per hour) = ...
선반 소프트웨어를 내부적으로 개발하는 대신 구매.
HR 및 생물 실험실에 중점을 둔 기업 규모 관리 시스템에 대한 경험이 있습니다.
기성품 솔루션의 가격은 £ 50-100k이며 비즈니스 요구 사항을 충족시키기 위해 추가 개발 및 사용자 지정이 필요했습니다.
내부적으로 개발 된 솔루션은 개발에 (<6) 개월이 걸렸으며, 다른 프로젝트는 동시에 진행되었으며 이미 고용 된 개발자를 활용했습니다.
나는 내부적으로 개발 한 LIMS (lab information management system)가있는 공공 부문에서 기성품 솔루션의 구현이 1 년 이상 걸리고 아직 완료되지 않은 대형 국제 제약 회사로 갔다.
(6 개월의 이미 고용 된 개발자가 다른 프로젝트를 동시에 작업하고 있습니다. 따라서 ~ 10k이며 이는 기성품 솔루션과 관련된 지원 비용을 포함하지 않습니다). 중요한 점은 내부적으로 개발 된 시스템이 실제로 사용되고 있다는 것입니다! 따라서 계산할 수없는 추가 비용 이점이 있습니다.
기본 웹 사이트 등에 동의합니다. 왜 자신 만의 웹 사이트를 개발해야합니까? 그러나 크고 복잡한 시스템의 경우 이미 사내 기술을 보유하고 있다면 직접 구축 할 것 입니다.
오픈 소스 대안이 더 좋고 무료 일 때 값 비싼 상용 제품을 구매합니다.
자식을 사용하는 회사는 몇 개입니까? 몇 개의 회사에서 엉뚱한 엔터프라이즈 버전 관리를 사용합니까?
예, 코드를 유지할 프로그래머를 찾는 것이 더 쉬워 지지만, 채용 할 최신 유행어를 배우지 않는 훌륭한 프로그래머 를 찾기가 더 어려워집니다 . 예, 개별 비트 코드를 이해하기 쉽게 만들지 만 2x4만큼 견고하게 만들고 이해해야 할 코드의 양을 늘립니다. 예, 대기업의 지원을 받고 있지만 대기업은 느리고 관료적으로 혁신하고 있습니다.
프로젝트 관리자 / 팀장이 잘못되었습니다.
한 무능한 사람은 한 무리의 사람들의 일을 망칠 힘이 있기 때문에. 결국, 프로젝트는 고위 경영진 (프로젝트 / 팀장)의 결정없이 훨씬 더 나을 것입니다.
"그냥 빨리 해, 나중에 리팩토링 할 것"이 결정됩니다.
누락 된 사용자 요구 사항
소프트웨어 제품을 설계하는 중요하고 어려운 단계는 고객이 실제로 원하는 것을 결정하는 것입니다.
믿거 나 말거나 때때로이 부분이 없거나 오래되었습니다. 비용은 최종 사용자가 요청하지 않은 기능을 생성한다는 것입니다.
생산성은 창의성보다 가치가 있습니다
창의성은 일반적으로 측정하기가 어렵고 소프트웨어 개발과 관련하여 측정하지 않아도됩니다. 한편, 생산성은 측정 될 수 있고 (종종 열악한) 관찰 될 수있다.
결과적으로 (질문에 대한 답변으로 더 많은 코드 줄을 더 빨리 작성 | 더 빨리 기술 코드를 더 빨리 작성할 수 있음 | 더 눈에 띄게 생산적임) 개발자는 (같은 문제를 해결하기 위해 더 적은 코드 줄을 사용함) 코드를 작성하는 데 시간이 오래 걸리지 만, 질문을 명확하고 이해하기 쉽고 영어로 창의적으로 해결하기에 충분할 정도로 주제를 더 잘 이해할 수 있습니다.
아래를 모두 사용하거나 부적절하게 사용하지 않으면 나쁠 수 있습니다
외부 소프트웨어와 사내 소프트웨어
ISO 9001 준수 (경제-제품 품질 저하시 MSS 손실 위험 완화)
개발 / QA 아웃소싱
개발 / 빌드 / 릴리스 / 지원 절차
청구 불가능한 배송 관리자가 너무 많습니다.
몇 년 전, 우리 회사에서는 몇 가지 큰 예산 프로젝트가 진행되었으며 채용은 절정에 달했습니다. 당시 우리 회사는 너무 많은 배달 관리자 (많은 사람들이 IT가 아니 었습니다!)를 고용했으며 코더 / 테스터는 거의 없었습니다. 관리자 대 프로그래머 비율은 문자 그대로 1 : 2입니다. 나중에 그 프로젝트를 완료 한 후, 우리는이 관리자들 중 일부 (실제로 슬랙 커)가 아무 것도하지 않고 벤치에 앉아있는 상황에 처했습니다. 우리는 모두가 거의 또는 전혀 모금을받지 못한 (한 번도 열심히 일하는 프로그래머라도 한숨을 쉬는) 평가주기를 가졌으므로 회사는 다른 사람을 해고 할 필요가 없습니다! 다행히도 회사는 이러한 상황을 인식하고 올해 1 분기에 RIGHTSIZING을 수행했습니다!