2009-09-23 10 views
35

저는 아주 작은 회사에서 독방 개발자로 일합니다. 내 작품은 혼란스럽고 좀 더 조직화 할 수있는 방법을 찾고 있습니다.독점 개발자는 어떤 종류의 소프트웨어 개발 프로세스를 사용해야합니까?

하나의 문제는 내 프로젝트에 실질적으로 관리가 없다는 것입니다. 거의 모든 사람이 나에게 무엇이하고 있는지, 어떤 문제가 있는지 묻지 않습니다. 어떤 시점에서 주간 회의에 관해 이야기가 있었지만, 얼마 전이었습니다. 만약 내가 그런 것을 원한다면 나는 그것들을 준비해야 할 것 같아요. 때로는 일이나 명확한 일정이 정의되어 있지 않아서 다음에해야 할 일에 대해 조금 잃어 버렸습니다.

도서 및 기사를 통해 도움이 될만한 많은 것들을 발견했습니다. 좋은 코딩 표준 (저의 견해로 다소 구식 인 스타일 가이드 만 존재합니다), 코드 검사, TDD, 유닛 테스트, 버그 데이터베이스가있는 것처럼 ...하지만 소규모 회사에서는 리소스 나 시간이 없다고합니다. 필수적인 것은 아닙니다. 임베디드 도메인에서 일한다는 사실은 상황을 더욱 복잡하게 만드는 것처럼 보입니다.

나는 예기치 않게 모서리를 자르고 빠른 해킹을하는 습관이 있다고 느낍니다. 이로 인해 미완성 제품 및 전문가가 아닌 제품 및 버그가 나중에 나타날 수 있습니다. 나는 그들이 유지하는 고통이기도하다. 그래서 나는 도전적인 코드 기반을 물려 받고 많은 새로운 것들을 배워야하는 새로운 개발을하고 있으며 동시에 모든 것을위한 프로세스를 구축하려고 노력하고 있습니다. 결국 보람이 있을지 모르지만 너무 경험이 없기 때문에 내가 해낼 수 있는지 확실하지 않습니다.

이와 같은 작은 상점에서는 환경이 프로그래밍에 최적이 아닙니다. 고객 지원, 전화 응답, 소포 서명, 하드웨어 테스트, 조립 및 기타 작업이 나타날 수있는 경우와 같이 때때로 수행해야 할 다른 많은 작업이 있습니다. 따라서 리소스에 대한 아이디어를 얻을 수 있습니다. 모든 것이 나쁘지는 않습니다 (때로는 고객 문제를 해결하기 위해 깨달음이 필요함). 그리고 개선 될 수 있다고 생각합니다. 그러나 그것이 정말로 걱정되는 다른 것들입니다.

이와 같은 장소에서 개발 프로세스를 수행 할 수 있습니까?

일종의 관리가 도움이 되나요? 어떤 종류의?

리소스가 적은 고급 제품을 만들 수 있습니까?

나는 수십 년 동안 성공적으로 일해 온 회사가 변화해야한다는 것을 어떻게 자신과 다른 사람들에게 납득시킬 수 있습니까? 무엇이 필수적입니까?

아마도 비슷한 가게에서 일하는 사람이 있습니까?

+0

관련 질문 : http://stackoverflow.com/questions/130592/is-continuous-integration-important-for-a-solo-developer 및 http://stackoverflow.com/questions/131282/would-it- make-sense-to-use-version-control-im-the-only-developer-closed를 지원합니다. 그러나 나는 중복을 식별했다고 주장하지는 않습니다. – dmckee

+0

감사합니다. 나는 어떻게 든 솔로 - 개발자 태그를 완전히 놓쳤다. –

답변

6

제 조언은 극단적이지 않아야합니다. 내 경험에 비추어 볼 때, 순수한 민첩하고 순수한 전통은 효과가 없을 것입니다. 프로세스를 사용하기 전에 해결해야 할 것이 무엇인지 알아야합니다.

개인적으로 나는 Agile RUP의 변형을 사용합니다. 나는 실제 필요성을 조사하고 가능한 확장을 가진 높은 수준의 디자인을하는 등의 선행 노력을한다. 고객에게 몇 가지 주요 고급 요구 사항을 승인하도록 요청합니다.

소그룹으로 일하는 경우 상세 설계 또는 사양이 유용하지 않을 수 있습니다. 물론 많은 사람들이 공유하는 라이브러리가 있다면 문제가 될만한 가치가 있습니다.

위험 (우도 및 효과)에 따라 선행 투자 결정.

더욱이, 많은 SW 모범 사례는 버전 제어, 자동 테스트와 같은 '최고'라고 생각합니다. 개발의 주도력으로 TDD를 믿지 않기 때문에 회귀를 조기에 감지하는 데만 사용했습니다. 나는 당신이 'Pragmatic Programmer'을 읽는 것이 좋습니다.

당신에게 대답으로 질문 :

(1). 이런 곳에서 개발 프로세스를 가질 수 있습니까?

네,하지만 제가 말했듯이, 트레일러는 조직에 적합합니다.

(2). 그것은 일종의 관리를하는 데 도움이 될까요? 어떤 종류의?

관리는 도움이되지만 제어 괴물은 없습니다. 다음을 수행 할 때 계획을 세우십시오 : 갈라진 틈을 통합하고 해결하십시오. 그리고 대략 일정대로 유지하십시오 (특히 스크럼의 스프린트가 마음에 든다).

(3). 소규모 자원으로 고품질의 제품을 생산할 수 있습니까?

최대한 빨리 작업의 크기, 개발 시간과 팀의 크기가 균형을 이루는대로. 당신이 품질의 정의가 나와 동일합니다. 내게있어서, 품질이란 의미있는 문제를 효율적이고 신뢰할 수있는 방식으로 해결하는 것을 의미합니다.

(4). 수십 년 동안 성공적으로 일해 온 회사가 변화해야한다는 자신과 다른 사람들을 어떻게 확신시킬 수 있습니까? 무엇이 필수적입니까?

문제를 지적하십시오. 아무 것도 없다면 왜 변합니까? 변경하려는 경우 문제점 또는 잠재적 인 문제점을 식별 할 수 있어야합니다. 문제를 지적하십시오.

일부 큰 하나는 다음과 같습니다 어떤 과정을 거치지 않고

  • , 그것은 그들이 어떻게 일을 처리하는 다른 관찰에서 배워야로 혼합 모집을위한 새로운 어렵습니다.

  • 프로세스가 없으면 스트레스에서 작업하기가 더 어렵습니다.

  • 일정이 없으면 진행 상황을 판단하기가 어렵습니다.

  • 자동 테스트를 수행하지 않으면 문제와 회귀를 식별하는 데 더 많은 시간이 걸립니다.

  • 버전 제어가 없으면 실수를 롤백하기가 더 어려워지고 각 팀원에게 작업 분리가 뒤죽박죽입니다.

다만 내 생각.

+0

나는 이것을 가장 완벽한 대답으로 받아 들일 것입니다. 감사. –

17
  1. 를 사용하여 소스 제어는 모든 것을
  2. 의 사양을 개발하고 시작하기 전에 사인 오프를 얻을 - 저항이있을 것입니다,하지만 자신의 이익을 위해입니다 설명합니다.
  3. 단위 테스트! 당신은 단지 그것을 끝내기를 원하기 때문에 상처를 입을지라도, 이것은 결국 당신을 구원 할 것입니다.
  4. 버그 추적 기능 - Bugzilla 또는 FogBugz를 사용해보십시오.
+2

사양에 대해서는 동의하지만 일반적인 계획이 있습니다. 나는 버그에 대한 trac을 제안한다. 설치가 쉽고 사소하고 무료이다. –

+0

사양 대신 무엇을합니까? – lod3n

+1

집에 있습니까? 나는 단지 일반적인 계획을 적어 둔다. 필자는 필자가 필요로하는 모든 것을 정리하고 문서화 한 다음 내 사양을 충족하는지 다시보고하는 길고 지루한 회의를 가질 필요가 없습니다. 나는 단지 일반적인 기능, 일반적인 디자인을 계획하고 그것을 위해 간다. –

2

소유자와 협력하여 짧은 중장기 목표를 설정해야합니다. 전자 메일을 통해서만 진행 상황을 알릴 수 있습니다.

근무일에 몇 가지 주문을해야합니다. 그렇지 않으면 아무 것도 끝내지 않습니다 (장기 목표).등

확실히 설치 버그 추적기를 이메일에 응답 할 때, 함께로 그것을 유지하기 위해 해킹에 작업 할 때 때 코드 수,

청크들로 하루를 분할

. 이렇게하면 이메일을 깨끗하게 유지하는 데 도움이됩니다. 나중에 분류 할 버그를 전달할 이메일 주소를 설정할 수도 있습니다. 버그 기자가 결국 버그 추적기에 지칠 것이며 어쨌든 버그를 전자 메일로 보내려고하기 때문에 좋습니다. ???

그리고 lod3n로

편집 소스 제어, 말했지만, 당신은 이미 잘 사용하고 있습니다!?!

+0

예. 새 프로젝트에 대한 소스 제어 설정이 있지만 과거에는 아무 것도 없었습니다. –

1

결함 및 새로운 기능에 대한 버그 추적 시스템이 있습니다. 기억에 의존하지 마십시오.

지속적인 통합과 자동화 된 빌드는 단일 개발자에게 도움이 될 수 있습니다.

소스 제어에 대한 권장 사항을 충분히 강조하지 못할 수 있습니다.

-1

먼저 개발 프로세스와 모범 사례를 구분할 수 있습니다. 소스 제어, 결함 추적, 단위 테스트 등과 같은 모범 사례가 있습니다.

그런 다음 실제 개발 프로세스가 있습니다. 팀이 작든 크든 상관없이 항상 프로세스를 수행하는 것이 좋습니다. 트릭은 올바른 프로세스를 찾는 것입니다. 이제 프로세스가 생겼습니다 - 그것은 당신을 위해 너무 잘 작동하지 않는 임시 프로세스 일뿐입니다. 드물게 교과서 개발 프로세스를 수행하고 직접 적용 할 수 있습니다. 필요한 것은 기업의 필요와 문화에 맞게 프로세스를 조정하는 것입니다. 가능한 한 많은 개발 패러다임을 살펴보고 적절한 결과를 얻으려고 시도하고 필요에 따라 성형을 시작하십시오. 여러 가지 다른 프로세스로 시도하고 실패해야 할 수도 있습니다. 아마도 개인 소프트웨어 프로세스는 좋은 시작 프로세스, 민첩한 프로세스, RUP 변형 일 것입니다. 당신에게는 많은 선택권이 있습니다.

또한 나머지 조직과 협력해야합니다. 프로세스의 일부 여야합니다. 독창적 인 개발자 일 수도 있지만 개발 프로세스에는 개발자보다 더 많은 것이 포함됩니다. 제품에 말 또는 영향을 미치는 사람을 포함합니다.

이것은 구체적인 대답은 아니지만 제 요점은 어떤 종류의 프로세스가 필요하다는 것입니다. 그래서 연구를 시작하고 그들을 시도하고 당신이 뭔가를 작동하기 전까지 귀하의 요구에 그들을 성형.

2

거기에 있었으니, 그렇게하십시오.

도서 Planning Extreme Programming은 많은 도움이되었습니다. 벽에 붙어있는 3x5 카드를 사용했습니다. 이것은 나의 상사에게 나의 진도에 대한 정보를 제공하고, 견적과 계획을 도왔으며, 나를 계속 추적했다. 사장님의 기대치가 비현실적이라면 기획 게임에서 좋은 탄약을 얻을 수 있습니다.

단원 테스트는 다른 개발자의 말처럼 독자적인 개발자 인 경우에도 도움이됩니다. TDD 스타일을 가치있게 생각합니다.

lod3n은 소스 제어에있어 절대적으로 옳습니다.

이전에 XP 스타일 반복을 사용했습니다. (스프레드 시트 또는 3x5 카드와 같은 단순한 항목조차도) 백 로그를 설정할 수 있습니다.

deathmarches를 피하십시오. 초과 근무 2 주 연속으로 일하지 않는다는 의미에서 40 시간을 고수하십시오. 새로운 기술을 배우는 시간 외에는 기술을 배우는 것이 아니라 원칙과 모범 사례를 익히십시오.

1

나는 스프린트와 백 로그의 개념을 좋아하기 때문에이 소리처럼 들린다. 현실적인 목표를 쉽게 설정할 수 있습니다. 물론 스크럼 마스터와 팀의 아이디어는 모두 당신이지만 당신이 당신의 백로스로 여분의 팀원을 데려 올 수도있는 외부 프로젝트에서 일한다면 그것은 작업을 쉽게 배포 할 수 있습니다. 어쩌면 나는 백 로그를 좋아할 것입니다. 스크럼을 사용하면 누군가를 제품 관리자로 삼아 제품의 기능에 대해 이야기해야합니다. 버전 관리는 아마 소프트웨어 개발 프로세스에 대해 걱정조차해야한다. 저는 2 명의 개발자를 시작으로 1 년에 12 명이 참가한 회사에서 일했습니다. 우리는 버전 제어 및 낮은 코딩 표준으로 시작했습니다. 변경해야 할 변경 사항은 점진적이므로 180 일을 서두르는 것에 대해 걱정할 필요가 없습니다. 한 달에 한 가지를 변경하고 변경 사항을지지하는 사람을 찾으십시오.

0

다른 사람들의 추천뿐만 아니라 리소스가 부족하지만 일을 처리하는 방법에 대해 더 많은 의견이 있으면 선반 및 오픈 소스 제품 및 라이브러리를 잘 활용해야한다고 말하고 싶습니다. 이것은 다른 사람의 노력을 활용하여 시간을 절약하고 코드 기반이 너무 복잡해 지거나 스킬 셋에 추가되지 않도록하여 다른 곳에서는 유용하지 않은 무언가에 전문가가되지 않게합니다.

관련 문제