“이론가”프로그래머가되지 마십시오 가장 좋아하는

기사는 SO에 대한 여러 게시물에서 발견되었습니다 . 나는 6 번째 원형에 빠진다. “이론가”.

“이론가”를 다음과 같이 정의합니다.

이론가는 프로그래밍에 대해 알아야 할 모든 것을 알고 있습니다. 모호한 프로그래밍 언어의 역사에 대해 강의하거나 4 시간 동안 작성한 코드가 완벽하게 최적이 아니며 실행하는 데 3 나노초가 더 걸릴 수 있다는 증거를 제공하는 데 4 시간을 소비 할 수 있습니다. 문제는 Theoretician이 소프트웨어 개발에 대해 아는 것이 없다는 것입니다. 이론가가 코드를 작성할 때, 그것은 “우아한”것이므로, 필사자 만이 이해할 수 없습니다. 그의 가장 좋아하는 기술은 재귀이며, 모든 코드 블록은 적시성과 가독성을 희생하면서 최대로 조정됩니다.

이론가도 쉽게 산만합니다. 한 시간이 걸리는 간단한 작업은 이론가들이 기존 도구로는 충분하지 않다고 결정하고 높은 표준을 충족하는 완전히 새로운 시스템을 구축하기 위해 새로운 라이브러리를 구축 할 새로운 도구를 구축해야하기 때문에 3 개월이 걸립니다. Theoretician은 프로젝트 자체의 경계 내에서 게임을하고 The Ultimate Sorting Algorithm에서 시간을 보내지 않으면 최고의 선수 중 한 명이 될 수 있습니다.

간단한 프로젝트가 무엇인지에 대해 작업 할 때도 처음부터 모든 것을 오버 엔지니어링하려고 애쓰는 경향이 있습니다. (이것은 아마도 운영 체제를 처음부터 새로 만들기 위해 약 2 년을 낭비한 이유를 설명합니다.) 결국 무의미했습니다).

이것을 피하는 데 무엇이 도움이 될 수 있습니까? 그리고 KISS 원칙에 충실합니까?

감사



답변

본질적으로 이론가이기 때문에 민첩한 상점에서 일하면 그러한 모든 경향을 빠르고 결정적으로 치료할 수 있다고 말할 수 있습니다. 특히, 페어 프로그래밍 (이상적으로 자주 회전), 테스트 중심 개발, 타임 복싱 및 바운드 스프린트가 포함 된 eXtreme Programming 작업은 모든 동료가 볼 수있는 작업을 즉시 처리 할 수있게해주어야합니다. 분 단위로. 이것은 이론가 스타일의 작업이 번성하는 고립 된 사무실 환경에서 별도의 작업과는 큰 변화입니다. 모든 사람이 지속적으로 다른 사람에게 적극적으로 의존하기 때문에 완전한 정직과 완전 무결성이 필요합니다.

나는 여전히 내 배꼽을 소중히 여긴다. 그러나 나는 집에서 또는 메인 라인 개발의 일부가 아닌 현장 프로젝트에서 일할 수있는 드문 경우에 탐닉해야한다.


답변

  1. 개발하려는 목표를 세우십시오.

  2. 가까운 미래에 달성 할 수있는 목표로 그 목표를 좁히십시오.

  3. 그런 다음 다른 모든 고려 사항을 제거하고 해당 목표에 집중하십시오. 배경이 없습니다. 역사가 없습니다. 확장명이 없습니다. 일반적이거나 추상적 인 것은 없습니다.

  4. 그런 다음 전달할 수있는 최소한으로 좁 힙니다. 안좋다. 융통성이 없습니다. 유지할 수 없습니다. 그렇습니다.

  5. 그런 다음 가능한 최소한으로 달성하기 위해 필요한 절대 최소값으로 우선 순위를 정하십시오. 요점은 약 일주일 안에 날짜를 고르고 그 날짜를 향해 나아가는 것입니다. 일주일 안에 무언가를 전달할 수 없다면. 제한된. 초점. 손질. 줄이다.

  6. 그런 다음 보풀을 제거하십시오. 일주일 밖에 없습니다. 계속 자르십시오.

  7. 그런 다음 가능한 한 빨리 수행되는 축소 된 구현에만 집중하십시오. 이상적으로는 일주일도 채 걸리지 않으므로 문서를 작성할 시간이 있습니다.


저는 이론가들과 함께 일했습니다. 나는 실제로 “실패”라고 표시 될 수있는 것을하지 않기위한 변명을 “익스트라”라고 생각합니다.

하고 실패하는 것은 어렵다. 무언가를하는 것보다 이야기하는 것이 무언가하는 것보다 쉽습니다. 많은 연구와 사고는 잘못된 일을 피한 다음 사용자가 거짓말을했다는 것을 알게 된 후 재 작업하는 방법입니다.

그냥 앞에 코드를 넣으십시오. 그들은 코드를 실패라고 부릅니다. 일어난다. 그러나 실패하는 과정에서 실제 요구 사항이 무엇인지 배울 것입니다. 그리고 그들이 거짓말했다는 것을 알게 될 것입니다.


답변

이것이 그렇게 나쁜 일인지 잘 모르겠습니다. 분명히 당신은 생산적이어야하거나 일을하지 않을 것이지만, 현장에 관심이 있고, 예술의 학생이기 때문에 말하기는 나쁘지 않습니다.

나는 당신의 강점을 가지고 당신의 스타일과 선호가 유리한 기회를 찾습니다.

Erlang에서 MVC 프레임 워크를 작성하는 데 빠지거나 (흥미가있는 것) 생산성을 유지하려면 하루에 한 시간 정도 더 복잡한 작업을 수행해야합니다. 하루의 나머지 시간 동안은 단지 거친 작업에 집중하고 작업을 완료하십시오. 당신이 관심을 끄는 메모를하거나 메모를하지만 계속 진행할 수있는 흥미로운 것을 발견하면 할당 된 타임 슬롯으로 다시 돌아 오십시오.

개인적으로 나는 그들이 흥미로워 보이는 많은 URL과 도서관 서적 더미를 가지고 있습니다. 나는 아마도 그 URL의 약 10 %를 결국 얻을 수 있고 결국 책의 50 %를 읽을 수도 있지만 여전히 하루 일을 끝내고 있습니다.


답변

나는이 문제를 직접 경험했다. 두 가지 기술이 도움이되었습니다.

  1. 포모 도로 (Pomodoro) 기술이나 일련의 매우 짧은 목표를 설정하는 다른 시간 관리 기술을 사용하십시오. 향후 25 분 동안 달성 할 수있는 것을 파악해야 유용한 작업에 계속 집중할 수 있습니다.
  2. 테스트 중심 개발. 코드를 작성하기 전에 구체적인 테스트를 작성해야한다면 공상을 최소화 할 수 있습니다. ( “우아한”에 대한 테스트를 작성할 수있는 방법은 없습니다.) 무언가를 얻은 후에는 리팩토링하는 것보다 더 많은 시간을 할애 할 수 있지만 최소한 상상의 이상이 아닌 실제 코드를 다루는 것입니다.

너무 자신을 두들겨하지 마십시오. 신경 쓰지 않는 사람들이 시야를 넓히는 것보다 이론가에게 집중하고 유용한 작업을하는 것이 더 쉽습니다.


답변

stackoverflow.com을 피하십시오 . 내가 틀리지 마라-나는 큰 팬이다. 그러나 SO와 다른 프로그래밍 중심 포럼 은 선의 적을 완벽하게 만든다. . 잠시 후, 수천 명의 똑똑한 사람들이 당신의 어깨 너머로보고 있다고 느끼기 시작하고 당신이 쓰는 것만으로는 충분하지 않습니다. 작동하는 것을 이해하고 이해할 수 있도록하십시오. 개선이 필요한 경우 언제든지 다시 방문 할 수 있습니다.

또한 연결 한 것과 같은 기사를 사용하지 마십시오. 정말로 10 가지 유형의 프로그래머가 있다고 믿습니까? 아니면 당신이 아는 사람은 설명 된 범주 중 하나에 완전히 부합합니까? 이와 같은 기사에는 약간의 진실이 포함되어 있기 때문에 특정 호소력이 있습니다. 일부 고정 관념에서 자신 및 / 또는 일부 동료를 볼 수 있습니다. 그러나 범주는 점성 학적 표시만큼 많은 물을 보유합니다. 다음에 회의 후 믹서에있을 때 다음과 같이 시도하십시오. “안녕하세요, 저는 코드 카우보이입니다! 귀하의 유형은 무엇입니까?”

그것은 당신의 질문이 유효하지 않다는 것을 말하는 것이 아닙니다. 만약 당신이 생각을 지나치게 생각한다면, 그러한 경향을 피하는 방법을 배우는 것이 좋습니다. 그러나이 처벌이 당신을 비둘기 홀링으로 이야기하게하지 마십시오.


답변

완전히 포장을 풀었을 때이 시나리오를 피하는 방법을 전체적으로 설명하는 간단한 지침이 있습니다.

가능한 가장 간단한 일을하십시오.

-켄트 벡


답변

클라우드에서 벗어나기위한 한 가지 방법은 이론적 API 또는 프레임 워크를 작성하는 것 외에도 실제 애플리케이션을 처음부터 끝까지 작성하도록하는 것입니다. 시간 상자를 무언가 주위에 놓고 그 시간 안에 “완료”하려고합니다. 프레임 워크를 작성하려면 디자인 패턴과 아키텍처를 잘 이해해야하지만, 정해진 시간 안에 완전한 응용 프로그램을 작성하려면 수퍼 웰 디자인 프레임 워크를 작성하는 것과 다른 기술이 필요하다는 것을 알았습니다.

신청서를 작성하려면 어느 시점에서 지구로 내려 와서 끝내야합니다. 구속 조건이있어 디자인을 희생하거나 마음에 들지 않는 방식으로 기능을 구현해야 할 수도 있습니다. 나는 당신과 같습니다-백만 번 물건을 쓰고 다시 쓰는 경향이 있지만 일정 시간 내에 해야하는 작업에 직면하면 내 전투를 선택하고 가장 중요한 것들.