우리 코드가 짜증나게 경영진에게 알릴 올바른 방법은 무엇입니까?


70

코드가 잘못되었습니다. 항상 나쁜 것으로 간주되지는 않았지만 나쁘고 내리막 길만 가고 있습니다. 저는 1 년 전에 대학을 졸업했습니다. 코드의 많은 것들이 저를 믿기 어려워합니다. 처음에 나는 새로운 사람으로서 코드베이스에 대해 조금 더 배울 때까지 입을 다물어야한다고 생각했지만 그것이 나쁘다는 것을 알았습니다.

일부 하이라이트 :

  • 우리는 여전히 프레임을 사용합니다 (쿼리 문자열에서 무언가를 가져 오는 것은 거의 불가능합니다)
  • VBScript
  • 소스 안전
  • 우리는 .NET을 '사용'합니다. 즉 COM DLL을 호출하는 .net 래퍼가 있기 때문에 쉽게 디버깅하기가 거의 불가능합니다.
  • 모든 것이 기본적으로 하나의 거대한 기능입니다
  • 코드는 유지 관리 할 수 ​​없습니다. 각 페이지에는 새 페이지가 작성 될 때마다 작성되는 여러 파일이 있습니다. 기본 페이지는 기본적으로 Response.Write ()를 여러 번 수행하여 HTML을 렌더링합니다 (runat = "server"? 안 함). 그 후 클라이언트 측 (VBScript)에 많은 논리가있을 수 있으며 마지막으로 페이지는 자체적으로 제출되며 (종종 숨겨진 필드에 많은 것을 저장하는 경우) 저장 페이지와 같은 작업을 수행 할 수있는 처리 페이지에 게시됩니다 데이터베이스에 데이터.
  • 우리가 얻는 사양은 웃을 수 있습니다. 종종 그들은 필드 Y 또는 필드 Z를 언제 선택해야하는지에 대한 표시없이 "필드 Y 또는 필드 Z로 필드 X 자동 채우기"와 같은 것을 요구합니다.

나는 이것이 소프트웨어 회사에 고용되지 않은 결과라고 확신하지만, 소프트웨어를 작성하는 사람들은 최소한 코드의 품질에 관심을 가져야한다고 생각합니다. 마감 기한이 얼마 남지 않았기 때문에 곧 완료 될 수있는 일이 생기면 상상조차 할 수 없지만 잘못된 코드를 작성하고 나쁜 관행을 계속 사용하고 있습니다.

내가 무엇을 할 수 있을지? 이 문제를 어떻게 제기합니까? 내 팀의 75 %가 나와 동의하고 과거에 이러한 문제를 제기했지만 아무런 변화가 없습니다.


27
그것에 익숙해. 코드 작성 중 90 %가 코드를 읽고 있습니다.

7
처음에는 잘못된 코드와 같은 이유로 변경되지 않습니다. 그들은 오래 전에 누군가가 헛소리를 내기 위해 책 $$$를 지불하는 것을 중단했습니다.

11
이것은 주제가 아닙니다. 그러나 짧은 대답은 경제학입니다. 코드베이스를 정리하는 데 몇 개월의 개발자 비용이 소요되며, 깔끔한 코드베이스가 절약되는 개발자 개월의 수는 얼마입니까?
Oliver Charlesworth

89
가장 좋은 방법은 출구 인터뷰입니다.
kylben

32
색상에 대해 시각 장애인에게 말하는 방법은 중요하지 않습니다. 그들은 당신을 이해하지 못할 것입니다.
ThomasX

답변:


68

지나치게 반응하지 않는지 확인하십시오. 당신은 신선하고 아마도 다른 곳에서 많은 일을하지 않았기 때문에 "실제 코드"의 세계를 위해 준비되지 않았습니다. 실제 코드는 끔찍한 것입니다. 그것은 좋은 학교 코드와 강렬하게 조정 된 개인 프로젝트 코드가 원자로의 지하실에서 섹스를하고 아기가 독성 폐기물의 하수구에서 자란 것과 같습니다. 끔찍한 돌연변이입니다.

그러나 당신이 옳고 코드가 당신이 말한 것보다 나쁘다고 가정하면 (즉, 일반적으로 나쁜 코드보다 더 나쁘다), 당신은 걱정할 권리가 있습니다. 팀과 대화하고 다른 사람들이 편에 있는지 확인하십시오. 상황을 개선하기 위해서는 노력이 필요합니다. 팀의 다른 구성원이 문제를 인식하지만 신경 쓰지 않으면 시간을 낭비하고 있습니다.

후배이기 때문에, 당신은 아마도지도 할 위치에 있지 않을 것입니다. 후배 인 신입 사원으로서 경영진에게 직접 가면, 당신의 의견은 무시 될 것입니다. 수석 개발자 또는 가장 고위 임원 중 한 명과 함께하십시오. 다시 말하지만, 노인 중 누구도 관심이 없다면 시간을 낭비하고 있습니다.

고위 기술 인력이 관심을 가질 수 있다고 가정하면 문제 영역과 가능한 솔루션을 식별하기 위해 노력할 것입니다. 예를 들어, "모든 것이 기본적으로 하나의 거대한 기능"이라면 다음에 '거대한 기능'에서 작업 할 때 약간 리팩터링해야 할 수도 있습니다. 다시, 당신은 모든 사람을 기립시켜야합니다. 문제의 작은 부분을 없애고 결국 부분적으로 개선하면 문제가 훨씬 줄어 듭니다. 코드를 만질 때마다 코드를 개선 할 수 있는지 고려하십시오.

당신은 경영진과 함께 앉아서 '모든 것이 나쁘고 다시 써야한다'고 말하지 않을 것입니다. 비용이 많이 들고 잠재적으로 매우 위험합니다. 대신 문제가 있음을 인식하고 변경 사항이있을 때 천천히 개선 할 계획이 있음을 알아야합니다. 유지 관리 가능한 코드의 이점에 대해 교육을 받아야합니다. 이것은 당신이 아닌 기술적으로나 전문적으로 신뢰하는 선배로부터 나옵니다.

재 작성을 완료 하시겠습니까? 거의 항상 나쁜 생각입니다.

당신이 새로 왔기 때문에 궁극적으로 할 수있는 일이 많지 않습니다. 아무도 개선을 원하지 않는다면 경험을 모아서 다음 장소로 이동하십시오.


10
마지막 줄만 +1 사람들은 초보자가 자신의 경험과 다른 모든 사람들이 볼 수없는 기업 문화에 너무 다른 관점을 제공하더라도 일반적으로 초보자를 듣고 싶지 않습니다. 또한 사람들은 진실을 듣지 못합니다 (즉, "WTF를 알고있는 사람들은 자신이하고있는 WTF를 모르는 바보 들이기 때문에 모든 것이 나쁘다"). 고정되어 있습니다. 때로는 비즈니스 소유자가 나쁜 것을 고치기 위해 시간을 허비하지 않고 어떻게 모든 것을 잃을 위험에 처하게 될지를 염려하고 있습니다.
Wayne Molina

2
마지막 요점을 계속하기 위해, 허위 시스템이 실제로 문제를 해결하고 해결하는 것보다 문제가 발생했을 때보 다 시스템이 무너질 때 경영진이 사업을 중단 할 위험이있는 곳이 많이 있음을 보았습니다. 새로운 기능에.
Wayne Molina

5
불행히도 리팩토링에 일종의 '게릴라 전쟁'접근 방식을 사용하면 때로는 발을 쏠 수 있습니다. 시스템에 대해 작성된 단위 / 통합 테스트 세트가없는 한 (불량한 경우는 아니지만) 전체 시스템 테스트를 피하기 위해 전체 시스템 테스트를 통과해야하는 버그가 발생할 수 있습니다.
aceinthehole

1
@aceinthehole : 정확히 맞습니다. 테스트 비용이 비싸면 경영진은 '필요하지 않은'변경을 감수하지 않을 것입니다. 비록 변경이 없으면 가까운 시일 내에 시스템을 유지할 수 없게 될 것입니다.
kevin cline

2
@WayneM과 프로젝트 초기에 그들이하고있는 WTF를 모르는 바보는 이제 선임 관리자입니다. 그 부분을 잊지 마십시오!
HLGEM

58

Joel On Software를 읽으십시오 -절대로하지 말아야 할 것들. 그의 추론을 이해 한 다음 프로그래머가 아닌 관리자가 작성한 나쁜 소프트웨어와 그 문제를 해결하는 방법에 대한 다른 기사를 읽으십시오. 이 정보로 무장 한 경우 관리자가 이해하고 관심을 갖는 관점에서 문제를 해결하기위한 사례를 제시 할 수 있습니다. 힌트 : 훌륭한 관리자는 프로그래머의 의견과해야 할 일에 대한 느낌만으로 시간과 돈을 소비하지 않습니다.

"이 코드는 쓸모없고 다시 작성해야합니다."는 기술적으로 정확하더라도 확실히 사용자에게 되돌아 갈 것입니다.

"현재 프로젝트 일정에서 수개월이 걸리므로 비용이 적게 들고 더 안정적으로 만들 수 있습니다." 그들의 관심을 끌 것입니다 (당신이 그의 단계에서 이것을 어떻게 할 것인지에 대한 언급이 부족하다는 것을 알 수 있습니다.

당신이 무엇을 말하든, 당신이 정확하다는 것을 확신하십시오. 나쁜 말을하면 재기록은 피의 좋은 일이어야합니다. 재 작업 된 코드의 결함으로 인해 재 작업을 수행하지 않은 경우 어떤 일이 있었는지에 관계없이 개인적으로, 귀중한 비용이 발생합니다. 누군가가 당신 앞에 있었는데 다시 쓰기를 망쳐 놓거나 과매도를 포기했다면, 관리자는 바보 같은 것을 좋아하지 않으며 두 번 일어날 수 없습니다. 그 토큰으로, 추종자들을 망치지 마십시오.

일정 기간 또는 여러 프로젝트에 걸쳐 비용을 분산시키는 방법을 찾으십시오. 관리자는 위험, 투기 적 투자 및 마이너스 현금 흐름을 싫어합니다. 작고 위험이 적으며 비용이 저렴한 제안으로 시작하십시오. 당신이 올바르게 증명되면, 당신은 더 큰 물고기를 갈 수 있습니다.


2
웃긴 ... 나는 Joel의 사이트를 제안하여 투표했습니다 :-)
Robert French

6
@Robert French : 귀하의 관리자가 귀하의 게시물을 읽고 있습니다.
Dave Markle

8
농담이 없습니다. "모든 것을 다시 작성하려면 6 개월의 개발자 시간이 있습니까? 최종 결과는 오늘날 우리가 가지고있는 것과 정확히 같을 것입니다. 그러나 아마도 몇 가지 새로운 버그가있을 것입니다. 현재 더 잘 알고 있기 때문에 재 작성을 위해 현재의 스팀 쓰레기 더미를 만든 동일한 개발자 "
JohnFx

3
@ joshin4colours : <quote> 예, 알고 있습니다. 창을 표시하는 간단한 기능이지만 머리카락과 물건이 거의 자라지 않아 아무도 이유를 모릅니다. 글쎄, 나는 왜 당신에게 말할 것이다 : 그것들은 버그 수정 이다. ...이 각각의 버그는 발견되기 전에 몇 주 동안 실제 사용했습니다. ... 코드를 버리고 처음부터 시작할 때 모든 지식을 버립니다. </ quote>
Martin York

4
죄송하지만 1 년의 경험으로 이러한 주장을 경영진에게 전달할 수있는 신뢰성을 부여하지는 않습니다.
제레미

14

우선, 스타트 업에서 일하지 않고 원래 구피 레거시 코드를 작성하는 사람이 아니라면 프로그래머로 작업하는 구피 레거시 항목을 찾을 수 있습니다. 프로그래밍 분야에서 경력을 쌓으려면 이러한 펀치로 롤백 할 수 있어야합니다.

둘째, 오래된 시스템을 개선하기 위해 비용을 고려해야하는 경우가 종종 있습니다. 예를 들어, 10 년 된 VB6과 기존 ASP 응용 프로그램이 여전히 작동하는 회사가 둘 이상있는 것을 보았습니다. 경우에 따라 .NET을 이동하는 큰 프로젝트가 잘못 실패했기 때문입니다. 다른 이유는 "파산하지 않으면 고치지 말 것"이었습니다. 그러나 다른 시스템에서는 레거시 시스템으로 인한 문제를 무시하기 때문에 이동 비용이 합당합니다.

과거에 큰 실패가 있었던 상황에서 변화를 일으키는 것은 거의 불가능합니다. 이 경우 이력서를 다듬고 새로운 일자리를 찾으십시오. 그것이 깨지지 않았다면 아마도 코드 자체에 대해 불평 할 이유가 없지만 성취하고 성장하는 경력 경로에 있지 않은 것입니다. 그것이 깨져서 귀하의 경우처럼 들리면, 그때는 기회가 생길 것입니다.

내가 본 가장 좋은 방법은 너무 물지 않고 가장 긍정적 인 영향을 줄 수있는 증분 변경으로 시작하는 것입니다. 설명을 바탕으로 변경 요청을보다 잘 관리하는 것이 시작의 장소입니다. 제어가 완료되면 서비스 프레임 워크 또는 기타 증분 설계 / 코드 개선을 검토 할 수 있습니다.

내가 본 최악의 접근 방식은 레거시 시스템에서 최신 및 최대 시스템으로 직접 도약하려고 시도하는 것입니다.


3
"먼저, 스타트 업에서 일하고 원래 구피 레거시 코드를 생성하는 사람이 아니라면 프로그래머로 일하는 구피 레거시 제품을 찾을 수 있습니다." 나는 처음 시작할 때 프로그래머였다. 8 명의 후자는 종종 '누가이 구피 코드를 작성 했습니까?'라는 말을 자주 듣습니다.
Jim In Texas

반복 속도가 반복 품질을 능가합니다. 다시 말해서, 종종 작은 변화를 많이 겪으면서 원하는 곳에 도착하게됩니다.
jasonk

11

"Hay Boss, Big Project 후 저와 팀은 코드를 정리하는 데 이상적인 X 개월의 시간을 원했습니다. 몇 분 안에 완료 될 수있는 작업은 모두 매우 체계적으로 구성되어 있지 않기 때문에 몇 시간이 걸릴 수 있습니다. 빅 프로젝트 직후에 현실적인 일정을 계획하고 싶습니다. "

(질문에 대한 Azkar의 의견에서 부분적으로 해석 됨)


10
이론적으로 이것은 좋을 것입니다. 실제로, 대답은 "아니요, CEO는 Another Big ProjectX 개월 안에 하고 싶어 합니다"라는 문구를 따라야합니다. 또는 "지금 바로 수행해야하는 새로운 기능이 있습니다. 이미 작동하는 것을 고칠 시간이 없습니다"
Wayne Molina

2
거의 작동하지 않습니다. 특히 당신이 한동안 주변에 있었던 관리자를 가지고 있다면, 그 라인이 폭발하기 전에이 라인을 들었을 것이기 때문입니다.
taylonr

1
이것은 단지 나를 괴롭힌다. 일정을 완전히 다시 쓰지 않을 것입니다. 잠재적으로 할 수있는 일은 다가오는 각 프로젝트에서 더 작은 작업을 수행하여 일부 하위 시스템을 개선하여 결국 (2 년 동안) 사양에 맞도록하는 것입니다.
Martin York

내 경험에 따르면이 접근법은 종종 거부됩니다. 다른 방법은 여러 Big Project 추정값을 1.5 씩 늘리고 코드를 정리하는 데 1/3을 소비하는 것입니다.
JBR 윌킨슨

2
매우 빈번한 답변은 "누구의 급여를 누가 지불합니까?" 직무를 직접 후원하지 않는 경우 회사가 장기 투자를하도록해야합니다. 아니면이 일을하면서 무료로 일 하시겠습니까?

7

소프트웨어에서 Joel 읽기 시작 (Joel Spolsky / Stack Exchange 설립자) ...

내가 할 첫번째 일은 Joel 테스트를 수행하는 것 입니다.

이를 통해 "개발자로서 개선 할 수있는 방법을 찾고 있었지만 개발 환경에 대한 12 가지 질문 테스트를 우연히 볼 수 있었기 때문에 재미있게 작업 할 수있는 곳에 대해 답변했습니다." ... 이것은 차례로 당신의 코드가 아닌 당신이 개인적으로가 아니라는 것을 설명하는 제 3자를 만듭니다.

Pragmatic Practices 에 대해 자세히 읽으면 스스로 개선하고 빨강 / 녹색 / 리 팩터와 같은 것들을 구현하게되며이를 통해 코드 기반을 정리하여 유지 관리가 가능해집니다. (시간이 지남에 따라)

희망이 도움이됩니다! 프로그래밍에 오신 것을 환영합니다 (어제 코드는 일반적으로 짜증납니다) ;-)


4
나는 이것이 그가 경영진에게 어떻게 접근해야하는지 다루지 않는다고 생각한다.
Pubby

3
Azbar는 문제를 알고 문제를 해결하는 방법을 알고있는 것처럼 보이지만 문제를 해결하기 위해 볼을 구르는 방법을 모릅니다.
Pubby

1
예 ... 나는 그것을 제시 할 때 제 3 자의 관점을 사용하도록 제안하고있었습니다. 나는 그가 그의 상사와 대화하는 방법을 구체적으로 요구하고 있다고 생각하지 않았다.
Robert French

4
이 답변은 너무 많은 다운 투표를받을 가치가 없습니다. 첫 번째 문장은 +10입니다. 경영진에게 접근하는 문제는 그들에게 중요한 것이 무엇인지 이해하는 것입니다. Joel과이 답변은 비즈니스 관점에서 코드를 다시 작성해야하는 이유와 이유를 살펴봄으로써 이러한 종류의 문제를 해결합니다.
mattnz

1
@ 로버트 프랑스어 +1 좋은 답변입니다. Azkar는 기술뿐만 아니라 비즈니스도 이해해야합니다. 그가 자격을 갖춘 제 3 자의 관찰에서 자신의 의견을 제안하면 코더뿐만 아니라 개발자로서 Azkar의 개발에 도움이 될 것입니다. 게다가 PB & J 이야기는 재미 있습니다.
bakoyaro

7

빠른 팁 : 코드를 다르게 작성 해야하는 이유 목록과 함께 관리를 제안하는 경우 "프로그래머의 사기 / 근로 조건 개선"이라는 주장을 포함 시키십시오.

기술 팀이 현재의 혼란보다 더 많은 콘텐츠를 작성하고 깨끗한 코드를 유지하는 것이 분명하며, 이는 작업에 대한 태도를 확실히 향상시킬 수 있습니다. 유용한 주장이 될 수 있습니다.


확실히 좋은 생각이자 매우 사실입니다
sdm350

5
  • 경영진이 실제로 설계를 지시합니까? 대부분의 팀이 배후에 있다면 무엇을 막고 있습니까? 능동적으로 행동하고 그룹으로 결정하십시오. 점진적으로 구현할 계획을 세우십시오 . 그럼 해
  • 경영진이 사용하는 개발 도구를 지시합니까? 공구 관리를 교체하는 데 시간이 걸리지 않는 한 일반적으로 중요하지 않습니다. 적극적으로 행동하고 그룹으로 사용하려는 개발 도구를 결정하십시오. 관리 부서에서 구매해야하는 경우 마이그레이션 계획 및 비용 편익 분석 을 보여주십시오 . 그럼 해
  • 경영진이 사용하는 언어를 결정합니까? VBScript 대신 사용할 것을 사전에 결정하고 그룹으로 결정하십시오. 점진적으로 구현할 계획을 세우십시오. 경영진 구매가 필요한 경우 계획을 보여주십시오. 그럼 해
  • 사양에 대한 정보가 없습니다. 그것은 일반적으로 직장에서 사람과 프로세스에 크게 의존합니다. 파손 된 부분을 식별하고 프로세스를 수정하는 데 필요한 최소한의 변경 사항은 현재 작동하는 방식과 작동 방식에 대한 시간, 분석 및 이해가 필요합니다. 계획을 세우고 경영진을 설득하고 설득 할 수 있다는 것을 알고 있다면.

비즈니스 가치가 없는 (또는 부드러운) 비즈니스 시간이없는 많은 전용 시간이 필요없는 변경 방법을 제안하면 더 많은 변화와 존경을받을 수 있습니다 .


아니요 / 예 / 예 언어와 도구의 선택은 기술적 인 이유로 거의 선택되지 않습니다. ( parashift.com/c++-faq-lite/big-picture.html#faq-6.5 참조 ) 시작 이후 회사가 가지고 있던 도구입니다. 생산성 저하로 인해 회사 나 팀을 재 공구 할 가능성은 거의 없습니다.
Martin York

1
점진적으로 계획하고 구현하려면 +1하십시오. 모든 것을 다시 쓰는 것은 단지 실패를 요구하는 것입니다. 시간이 지남에 따라 작은 승리는 자신감을 구축합니다. 사양에 관해서는 ... 프로그래머로서 얻는 대부분의 사양에는 사양을 구체화하는 우리의 직업이 부족할 것입니다. 좋은 스펙을 작성하는 사람이 가끔씩 당신을 망칠 수 있습니다. 일반적으로 프로그래머가 생각하는 한 빨리 더 나은 작업으로 이동 / 촉진 / 찾기됩니다.
SoylentGray

@Loki Astari : 제가 근무했던 대부분의 회사에서 개정 제어 시스템, 프레임 워크, 개발 프로세스에서 언어까지의 범위를 변경했습니다. 변경의 비용과 이점이 무엇인지 간략하게 설명하는 것보다 합리적인 계획 만 있으면됩니다. 거의 수행되지 않았다고해서 수행 할 수 없다는 의미는 아닙니다.
dietbuddha

4

경험에서 말하기 : 쉽지 않습니다. 거의 불가능합니다. 경영진은 코드가 빨라지고 문제가 발생했을 때 완전히 무지하거나 및 / 또는 단서가 없다는 것을 신경 쓰지 않습니다. 코드를 작성하는 이유와 목록을 작성하여 리팩토링 / 재 작성할 때 실제 비즈니스 가치를 입증하는 이유에 대한 추론을 작성하는 것이 최선의 방법 입니다.

예를 들어 "코드를 유지 관리 할 수 ​​없습니다"일 수 있습니다.

X , YZ 때문에 현재 코드를 유지 관리 할 수 ​​없습니다 (유지할 수없는 이유를 나열하십시오). X , Y , Z (변경이 어려운 이유) 때문에 변경 요청과 새로운 기능을 수행하기가 매우 어렵 습니다. 변경이 어렵 기 때문에 개발 팀은 버그 수정 및 개선에 쉽게 대응할 수 없습니다.

당신의 유일한 희망은 상사와 경영진이 코드에 어떤 영향을 미쳤는지 이해하기에는 너무 어리석지 않고 문제를 해결하기 위해 새로운 기능 요청이 나오기를 기꺼이하지 않을 것입니다. 그렇지 않으면 노력이 헛된 것입니다 . 과거의 경험에 비추어 볼 때, 코드에 문제가 있거나 동료가 너무 걱정하지 않아 경영진에게 우려를 표할 가능성이 큽니다.

행운을 빕니다. 당신이 필요합니다.


2
동의 및 "유지 불가능"은 어느 정도까지만 작동합니다. 많은 관리자 (특히 기술적 인 배경이없는)의 경우 작업 코드는 유지 관리 가능한 코드와 같습니다. 다르게 주장하면 눈에 무능한 사람으로 보일 수도 있습니다.
MaR

3

"나는 대학을 신선하게 시작했다"-당신의 질문에 대답해야합니다.

관리자는 아마도 코드가 차선책이라는 것을 알고있을 것입니다. 대부분의 코드는 Ray Gosling, Guido Van Rossum 또는 다른 사람이 그것을 작성하는 데 정말로 좋고 비싸지 않은 한 고용하지 않는 한입니다.

경영진은 또한 회사에 적용되는 "작업"에 대한 정의 (충돌, 판매, 보고서 제공 등)를 사용하여 작동한다는 것을 알고 있습니다.

최소한의 비용으로 코드를 "작동"상태로 유지하기를 원합니다. 그들은 값 비싼 프로젝트가 모든 것을 다시 쓰는 제안을 원하지 않습니다.


첫 번째 줄은 주니어에 대해 완전히 편향되어 있습니다. 우선, 당신은 HIS 경험을 알지 못하므로 그의 질문에 대한 답을 결론 지을 수 없습니다. 그리고 그와 같은 일반화는 후배에 대해 극도로 편향되고 있습니다! 나는 지금 약 20 년 동안이 일을 해왔으며, '노인 무지'보다 더 많은 지식이있는 '초보자'를 보았 음을 보증 할 수 있습니다.
Jeach

주니어에 대한 편견이 아니라, 한동안 일해온 동료들의 경험과 우수한 지식을 인정해야할까요? 모두 무능한 왈리가 될 수는 없습니다.
제임스 앤더슨

2

결과물이 우아한 코드가 아닌 작동하는 소프트웨어 (이미 가지고있는 소프트웨어)이기 때문에 비즈니스 사례를 만드는 것은 거의 불가능합니다.

소프트웨어에서 기능을 먼저 시장에 출시하는 데 큰 기회 비용이 있다는 사실을 추가하십시오. 당신이 정말로 그것에 대해 생각한다면, 시간 투자에 대한 장기 투자 회수가 보장되지 않습니다.

즉, 관리 가능한 물린 방식으로 작은 것들 (예 : 좋은 VSS를 얻는 것)을 리팩토링하고 수정하는 것이 여전히 좋은 계획입니다. 궁극적으로 이것은 관리 문제가 아닌 기술 문제입니다. 약속 한 것을 계속 이행하면서해야 할 일만하면 괜찮을 것입니다. 강력한 사례를 만들어도 경영진은 코드 품질에 대한 중요한 세부 사항에 관심이 없을 것입니다.


2

가능한 한 빨리 떠나십시오 (직업 호퍼처럼 보이고 싶지 않으면 너무 빨리 떠나지 않을 수도 있습니다). 코드가 엉망이고 사람들이 거기에 머물고 있다는 사실은 가난한 개발자와 함께 일하고 있음을 의미합니다. 자신의 작업에 관심이있는 괜찮은 개발자는 그런 쓰레기를 오랫동안 연구하지 않을 것입니다.

재 작성의 가능성은 매우 $$ 현명한 투자 가치가 있음을 명확하게 보여주지 않는 한 상당히 낮습니다.


이것은 결국 유일한 실제 행동 과정입니다. 나는 그것을 다시 말할 것이다, 그것을 전에 말한 : 스마트 개발자는 항상 좋은 코드를 작성하고 좋은 코드를 확인하는 데 필요한 시간을 투자하는 것이 중요 이유를 이해 스마트 회사를 위해 일한다. 불쾌한 개발자는 모두가 자신의 작업을 수행하는 데 너무 집중하여 불쾌한 회사를 위해 일하고 있습니다. 더미에 진흙을 더 추가하고 현재 작업과 직접 관련이없는 리팩토링 코드를 "낭비" 시각". 이 장소는 당신이 똑똑하다고 생각한다면 가치가 없습니다.
Wayne Molina

1

관리는 코드에 신경 쓰지 않습니다. 그들은 판매 할 제품을 갖는 것을 걱정합니다.

레거시 시스템이 실제로 매우 나쁘고 팀의 대다수를 위해 어리석은 양의 오버 헤드를 추가하는 경우 (나는 항상 큰 덩어리를 코딩하거나 그 전체를 코딩하는 사람이 있기 때문에 대다수를 말합니다) 그의 손을) 그들에게 다가 가서 개발 시간에 비즈니스 비용이 든다고 말하면 고객 만족에 영향을 줄 것입니다.

그러나 다시 한 번, 그들은 여전히 ​​코드에 신경 쓰지 않고 제품에 관심을 갖기 때문에 "응답 할 수 있습니다"라는 대답이 나오더라도 관리자의 허락없이 코드를 정리할 수 있습니다. 배에 가지 말고, 팀과 먼저 이야기하고, 아무도 와서 좋아하지 않고 3 개월이 걸리는 기능을 사용해보십시오. 해킹 당했기 때문에 작동하지 않는 것처럼 보입니다.


힌트 : ... 코드를 개선하기 위해 할 수있는 일이 있어야합니다. 하나의 거대한 기능이 있다면 그것에 대해 할 수있는 일이 있습니다. 그가 소스 세이프에 대해 불평하는 사실은 재미있었습니다. Source Safe에는 아무런 문제가 없으며 수년 동안 사용되어 왔으며 오늘날의 세상에는 의미가없는 몇 가지 사항이 있지만 가려움이있을 수 있습니다.
Ramhound

SourceSafe 자체는 문제가 아니라고 생각합니다. 더 나은 무료 도구를 사용할 수있을 때 SourceSafe를 계속 사용하고 있습니다. "우리는 상자 밖의 모든 것을 알지 못합니다." "우수한 것을 배우기보다는 제품". 그것은 대부분의 SourceSafe 사용자들이 가지고있는 태도가 문제입니다.
Wayne Molina

"허가없이 코드를 정리하십시오"-깨지지 않은 것을 고치는 것처럼 들립니다.
제임스 앤더슨

1
내 거실은 건강 상 위험하지 않지만 여전히 정기적으로 청소해야합니다. 깨지지 않은 것을 고치는 것이 아니라 필요한 작업을 수행하는 경우는 아닙니다.
Nicholas Smith

0

코드를 크게 변경할 때의 예산 영향과 변경하지 않은 경우의 예산 영향을 이해하는 방식으로 관리에 접근하십시오. 나는 Emilio의 문구를 좋아했다.

"오래된"코드는 항상 끔찍하지만 명심해야합니다. 이것은 우리 모두 개발자로서 끊임없이 성장한다는 것을 의미합니다. 우리는 좋은 코드를 작성했다가 나중에 더 나은 코드를 작성하는 법을 배우고 이전의 "좋은"코드는 끔찍한 것 같습니다. 너무 많은 개발자들이 지속적으로 더 나은 결과를 얻고 장기적으로 더 많은 돈을 낭비하려고 노력하고 있습니다. 균형을 잡는 행위입니다. 즉, 갈수록 나아질 수 있다면 항상 좋습니다. 그 거대한 기능을 수정하려고 할 때 분할하십시오! 결국 당신은 어딘가에 도착할 것입니다.


0

하지마

어쨌든 큰 프로젝트를 처음부터 다시 작성하는 것은 큰 실수입니다.


큰 상대입니다.
루카

1
내 정의는 : 5 일 안에 직접 다시 쓸 수 없다면 큰 것입니다.
Cesar Canassa

-1

관리자, 특히 프로젝트 관리자에게 잘못된 코드 및 리팩토링에 대해 말하기가 쉽지 않다고 생각한 적이 있습니다. 첫째, 그들은 당신이 수석 사람이더라도 여전히 신뢰할 수있는 시간이 필요하더라도 당신을 신뢰해야합니다. 둘째, 그들은 단순히 문제가 얼마나 나쁜지 이해하지 못합니다. 오늘이 마지막 날인 경우 새 빌드를 릴리스하면 빌드가 실패합니다. 그들은 그것이 얼마나 심각한 지 알지만 나쁜 코드, 부적절한 테스트 등과 같은 많은 문제로 인해 빌드가 실패한 것을 결코 알지 못합니다.

웹 프로젝트에서 구성 및 배포 작업을 마쳤습니다. 새 빌드를 배포 할 때마다 예기치 않은 문제를 해결하는 데 종종 많은 시간이 걸립니다. 대부분의 문제는 보안 및 통합이었습니다 (여러 웹 / Windows 응용 프로그램 간). 우리의 코드는 짜증나고, 다른 사람들의 코드는 짜증나고, 그들은 완전히 스파게티 코드입니다.

우리는 새 버전을 계획하고 있었고 리팩토링을 강력히 요청했습니다. 버그가 자주 발생하는 로그인 / 인증 코드에 세부 로그를 추가하십시오. 관리자들은 동의했지만, 그것은 멋진 목록에 포함되었으며 이미 큰 기능 목록과 시간이 촉박했기 때문에 완료 될지 모르겠습니다.


-3

두 가지 종류의 관리자가 있습니다 : 당신이하는 일을 이해하는 척하는 사람과 그렇지 않은 사람들. 소프트웨어를 이해하는 척하는 사람은 적대적입니다. 그렇지 않은 사람들은 단순히 당신에 의해 짜증납니다.

어쨌든 관리자는 모두 거짓말 쟁이이므로 다른 모든 사람을 강요하는 경향이 있습니다.

내 요점은 소프트웨어가 오래되었다고 말하면 변명으로 간주 할 것입니다. 그들은 상관하지 않습니다.


+1 "관리자는 모든 거짓말 쟁이이므로 다른 모든 사람이 있다고 가정 할 강한 성향을 가지고 있습니다"
ZJR

동일 -1; 사실이 아니며 도움이되지 않음
Jaap

@ Jaap은 힘과 사회 계급을 부정직과 관련시키는 수많은 연구가 있습니다. 그것은 당신이 -1을 철회한다는 의미입니까? 예 : msnbc.msn.com/id/35836844 blogs.discovermagazine.com/notrocketscience/2010/04/27/… news.sciencemag.org/sciencenow/2012/02/shame-on-the-rich.html
Joe

두 번째 연구는 특히 나의 정확한 요점을 입증합니다.
Joe

1
@Joe : 귀하의 링크는 "관리자가 모두 거짓말 쟁이"라는 귀하의 주장을 입증하지 않습니다.
Jaap
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.