프로젝트가 특히 복잡한 지 또는 느리게 진행되는지 판단하려면 어떻게해야합니까?


16

주요 프로젝트에서 거의 진전이 없습니다. 소스는 방대하고 많은 수의 객체, 마카로니 코드, 다중 상속의 이중 다이아몬드 그래프, 원 작가가 떠났을 때 얼어 붙은 반 구운 피처이며, 그 중 많은 부분이 왜 원래대로 디자인되었는지 아무도 모릅니다.

유능한 프로그래머라면 버그를 고치고 반 구운 물건을 완성하고 새로운 기능을 추가하기에 충분히 잘 알아내는 데 어려움이 있다고 생각합니다. 그러나 나는 전형적인 프로그래머보다 느리게 가고 있다고 생각합니다.

소스가 비정상적으로 나쁘고 다른 사람이 할 수있는만큼 잘하고 있는지 판단하는 방법은 무엇입니까? 소스는 이와 같은 프로젝트에서 일반적이며 속도가 느리거나 기술이 부족합니다.


11
다른 사람의 코드를 이해하는 것은 공감의 행위입니다. 얼마나 빨리 가고 있는지 잊고 코드를 작성한 사람들이 얼마나 바보 같은지 잊어 버리십시오. 그것을 이해하는 것은 유연성의 연습입니다. 소스가 비정상적으로 나쁘고 숙련되어 있다고 가정하고이 바보 같은 포럼에서 일을 다시 시작하지 마십시오. 어느 것도 나에게 적용됩니다 ... 나는 얽히는 코드가 있습니다.
Dan Rosenstark

2
특히 상사, 상사 형제, 상사 또는 상사 조카 등이 말한 경우 "무엇이 ..."인지 잊어 버리십시오!
DarenW

2
아, 빠진 "왜"입니다. 당신이 그들을 알아낼 때 그들을 넣어 기억하십시오.

@DarenW-그것은 마카로니 코드가 아닌 스파게티 코드입니다 : D (죄송합니다.).
Jas

1
@Jas google for macaroni code ... 스파게티보다 더 많은 파스타가 있습니다 ;-)
Jürgen A. Erhard

답변:


6

이 질문을 결정하는 유일한 방법은 더 많은 프로그래머를 확보하여 동일한 문제를 해결하고 더 나은지 확인하는 것입니다.

물론 이것은 거의 실용적이지 않으며, 과제는 자신에게 좋은 것으로 떨어졌으며, 최선을 다하고 있으며, 지식이 어디에서 실패하는지 연구합니다. 복잡성이 당신을 여우는 곳을 깨고 돌보는 사람이 당신의 진보에 대해 잘 알고 유지하십시오. 그런 다음 걱정하지 않고 계속 유지합니다.


16

첫째로, 나는 당신이 "느리거나 저조한"것에 대해 걱정하는 데 너무 많은 시간을 소비하지 않을 것입니다. 일부 프로젝트는 파악하기 어려우며 대규모 프로젝트는 속도를 높이는 데 종종 시간이 걸립니다. 당신이 "멍청한"사람인지 아닌지 생각하는 것은 어떤 식 으로든 도움이되지 않습니다.

코드에 대한 도움이 필요한 것처럼 들리므로 리소스를 고려하십시오. 원래 코더에 액세스 할 수 있습니까? 사용 가능한 경우 정보를 얻을 수있는 좋은 자료가 될 수 있습니다. 어떤 문서가 있습니까? 문서가 부족한 경우 노트북을 꺼내 개인 문서 작성을 시작하십시오.

여기서 큰 아이디어는이 프로세스에 시간이 걸리고, 정신적으로 자신을 때리는 데 걸리는 시간이 적을수록 코드를 분석하고 파악하는 데 더 많은 에너지가 필요하다는 것입니다. 행운을 빕니다!


5
+1 시스템에 능숙 할 정도로 복잡한 시스템을 알기 시작하려면 6 개월 이상 걸릴 수 있습니다. 코드베이스가 "좋은"경우에도, 개발자와 팀마다 스타일이 다르며 때로는 베어링을 가져 오는 데 시간이 걸립니다.
Ryan Hayes

3
@Ryan, 그리고 6 개월 후, 당신은 스스로 문제의 일부가됩니다 :)
Benjol

@Benjol Yep, 나는 거기에 갔다.
Ryan Hayes

FWIW, 내가이 보트에 있었을 때 (여러 번!), 나는 코드 위에 앉아서 쇠약하게하는 것보다 자주 휴식을 취하는 것이 더 도움이된다는 것을 알았습니다. 휴식을 취할 때 컴퓨터에서 일어나 물리적으로 멀리 떨어지십시오. 스트레칭, 창문 밖을보고 방금 봤던 것을 생각한 다음 돌아가서 좀 더보세요. YMMV, 그러나 나는 그 일을 할 때 훨씬 나아진 발전을 보았습니다. 행운을 빕니다!
TMN

개인 문서를 만들려면 +1하십시오. 이 작업을 수행 할 때 많은 코드를 작성하거나 (코드 또는 종이에) 많은 다이어그램을 작성하는 것이 도움이됩니다. 당신의 마음 속에있는 개념의 강화는 모든 것의 부가적인 장점입니다.
Andy Hunt

6

학습 곡선을 본 적이 있습니다. 학습 Curce

이론에 따르면 처음에는 단계를 밟는 데 시간이 걸린다고합니다. 요령은 스텝 업 포인트를 빠르게 통과시키는 것입니다. 규칙적으로 고착되면 관리자에게 도움을 요청하거나 최소한 직면 한 문제에 대해 알려주십시오. 일정에 문제가 없으면 괜찮습니다.


2

한 번에 한 조각 씩 해부

귀하의 상황은 매우 일반적이다 "그립을 얻는 것은" 다른 사람이 이미 언급 한 바와 같이 시간이 걸립니다.

내가 찾은 것은 프로젝트가 얼마나 복잡한 지에 관계없이 "한 번에 한 조각 씩" 다루면 프로젝트를 파악할 수 있다는 것입니다. 당신은 그것에 대해 논리적이어야합니다.

버튼으로 시작하고, 소스 코드를 파고 , 중단 점을 넣고, 진행 상황을 단계별로 확인하십시오 . 이행해야 할 두 가지가 있습니다.

  • 높은 수준의 개요.
  • 위의 원하는 기능을 구현하는 핵심적인 세부 사항입니다.
  • 일단 당신이 그것의 일부를 이해하면, 그것을 리팩터링하십시오.

"한 번에 한 조각"은 다른 프로젝트에서 작동 할 수 있지만 이것은 다른 클래스, 친구 클래스, 서로 내부에 대한 포인터에서 파생 된 클래스가 너무 많으며 독립적으로 이해할 수있는 부분이 거의 없습니다.
DarenW

복잡한 미로 (시간이 지남에 따라 "성장한"것)를 확신합니다. 그러나 하나의 기능으로 시작하면 끝까지 추적 할 수 없다고 말하고 있습니까?
Darknight

예를 들어 사용자가 버튼을 클릭 할 때 데이터 흐름 또는 이벤트 순서를 추적하는 것은 불가능한 것으로 판명되었습니다.
DarenW

1

다른 견해를 갖는 것은 어떻습니까 :이 코드에 대해 무엇을 알아야하고 그것을 측정 할 방법이 있습니까? 예를 들어 버그를 수정하려는 경우 코드를 한 언어에서 다른 언어로 마이그레이션하려는 경우 (예 : VBScript에서 C #로 이동)와는 다른 종류의 다이빙이 필요할 수 있습니다. 현재 코드에서 모든 요구 사항을 얻으려고하면 대부분의 사람들이 그런 종류의 문제가있을 것으로 생각되지만 시간이 걸릴 수 있습니다.


나는이 의견을 좋아한다. 구체적인 목표가 있어야하며 그 목표를 달성하기 위해 노력해야합니다. 그렇지 않으면, 당신은 그것에서 길을 잃을 것입니다-지도와 매우 흡사합니다.
NoChance

1

새로운 것을 배우면서 많은 학생들이 생각할 것입니다.“아빠. 내가 멍청한 지 궁금하다”고 말했다
. …

현명한 말로 Aaron Hillegass 씨.

당신은 바보가 아니고, 느리지 않으며, 기술이 부족하지 않습니다. 나는 같은 보트에 있고 새로운 역할을 맡았으며 기존 코드베이스는 엄청나게 커지고 반복적으로 과도하게 개발되고 있다는 징후를 보여주었습니다. 최고 속도에 가깝습니다. 프로젝트가 완전히 새로운 언어를 배우는 것과 같다고 상상해보십시오. 밤새 일어나지 않지만 인내심이 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.