나는 몇 년 전에 (아마도) 같은 문제가 있었으며 몇 년 동안 지속되어 극복했습니다. 내 방법이 당신에게도 적용되는지 확실하지 않더라도 내가 어떻게 그것을 달성했는지 아는 것이 당신에게 관심이 될 것입니다.
: 당신은 또한 여기에보고해야한다 소프트웨어 공학 전문의 7 단계 그것은 생산성이 큰 부분에서 기술 수준의 부작용 있음을 보여줍니다. 현재 사용중인 기술에 대해 3 단계에서 4 단계 사이의 어느 시점에있을 수도 있습니다 (기술 숙련도는 기술에 따라 다르지만 다른 기술을 배우면서도 일부 기술의 마스터가 될 수 있음).
이제 나는 전기 증언으로 시작합니다.
약간의 맥락. 저는 47 세입니다. 80 년대 12시에 프로그래밍을 시작했습니다. 고등학교에있는 동안 나는 또한 시간제 전문 게임 프로그래머로 일했습니다. 기본적으로 하드웨어를 구입하기에 충분한 돈을 얻지 못했지만 그것을 즐기고 많은 것을 배웠습니다. 18 세에 나는 컴퓨터 과학에 대한 정식 학습을 시작했습니다.
결과적으로 20 세가되었을 때 프로그래밍 작업을 시작할 때마다 주어진 문제를 해결하기위한 많은 방법을 알고 있었고 많은 매개 변수와 함정, 방법의 단점과 한계를 매우 의식했습니다.
어떤 시점에서 (약 26 세) 어떤 프로그램도 전혀 작성하기가 정말로 어려워졌습니다. 가능성이 너무 많아서 더 이상 선택할 수 없었습니다. 몇 년 동안 (6으로 만들) 나는 심지어 프로그래밍을 중단하고 기술 뉴스 작성자가되었습니다.
그럼에도 불구하고 나는 프로그래밍을 완전히 멈추지 않았다. 그리고 어느 시점에서 돌아 왔습니다. 나를위한 열쇠는 극단적 인 프로그래밍, 더 구체적으로는 단순성 원칙 : "아마도 작동 할 수있는 가장 간단한 것을 작성하십시오"였습니다.
기본적으로 나는 코드 효율성 (내 주요 장애물, 비효율적 인 디자인 피하기)에 신경 쓰지 말고 가장 쉬운 길을 가야했습니다. 또한 오류를 일으키는 테스트를 작성한 후 (실제로 TDD입니다) 오류에 대해 신경 쓰지 않고 나중에 오류 처리를 지연시켜야했습니다.
내가 글을 쓸 때 배운 것입니다. 내가 무엇을 쓸지 모를 때, 또는 내가 쓰고있는 것이 나쁘다 는 것을 알 때 . 그냥 계속 해. 실제로 나쁜 것을 쓰십시오. 나중에 수정하겠습니다. 또는 정말 나쁜 경우 지우고 다시 쓰십시오.하지만 처음으로 완벽한 것을 쓰는 두 번 쓰는 것이 더 빠릅니다.
실제로 처음 작성하는 것이 좋다고 생각하는 코드는 실제로 나쁜 코드만큼 많은 개선이 필요할 것입니다.
단순성 경로를 따르면 추가 보너스도 얻습니다. 초기 설계 / 코딩 제거 / 변경을 쉽게 수락 할 수 있습니다. 당신은 더 유연한 마음을 얻습니다.
또한 코드에 임시 주석을 달아서 지금하지 않는 일을 설명하고 일반적인 사용 사례에서 코드가 작동 할 때 나중에 수행 할 방법을 설명했습니다.
또한 XP Dojo에 참여하여 XP 프로그래머를 내면화하기 위해 다른 프로그래머와 함께 연습 한 코드 카타를 진행했습니다. 도움이되었습니다. 위의 공식적인 방법을 본능적으로 만들었습니다. 페어 프로그래밍도 도움이되었습니다. 젊은 프로그래머와 함께 일하면 약간의 추진력이 있지만 경험이 있으면 그렇지 않은 것을 볼 수 있습니다. 예를 들어 제 경우에는 종종 그들이 지나치게 복잡한 디자인에 관여하는 것으로 보이며 이로 인해 발생할 수있는 디자인 악몽을 알고 있습니다. 그런 식으로 갔다. 그거 했어. 문제가있었습니다.
나를 위해 가장 중요한 점은 흐름을 유지하는 것입니다. 빠른 속도는 흐름을 유지하는 데 실제로 성공합니다.
이제 나는 전문 프로그래머로 돌아 왔고 내가하고있는 일에 대한 더 깊은 이해를 통해 더 좋고 나아 졌다고 생각합니다. TDD 연습 나는 어린 황소 때보 다 약간 느릴 수 있지만 (아무것도 테스트하지 않았지만) 리팩토링을 두려워하지 않으며 디버깅에 훨씬 적은 시간을 소비합니다 (거의 시간이 거의 없어 시간의 10 % 미만으로 만듭니다) ).
요약하자면, 민첩한 방법 (XP)을 사용하여 코드 블록을 극복하고 단순성을 유지 한 다음 리팩토링하고 본능적으로 만드는 연습을했습니다. 그것은 나를 위해 일했다. 다른 사람에게 일반화 될 수 있는지 확실하지 않습니다.
기술 습득 수준의 측면에서 저는 기술을 바꿀 때마다 (새로운 언어, 새로운 프레임 워크 등을 배우는 등) 느려질 때 단계를 거치게된다는 사실을 주로 배웠습니다. 이것은 정상이며 결국 극복 할 것입니다. 또한 좋은 방법론과 범용 프로그래밍 기술로이를 보완 할 수 있으며 그리 큰 문제는 아닙니다.