2013-03-09 3 views
0

최근 팀 리더와 첫 번째 개발자 위치로 옮겼습니다. 거기서부터 저는 확실하지 않은 결정을 내릴 필요가 있습니다. 부분적으로는 본질적으로 스스로 의심하는 사람이기 때문에, 부분적으로는 경험이 부족하여 자신감이 부족하기 때문에 (1 ~ 2 년, 그 회사에서 1 년 반, 우스운 웃음). 또한 동료와 상사를 신뢰하는 동안 모든 것이 작동하고 아무 것도 작동하지 않기 때문에 소프트웨어 엔지니어링에 대한 의심스럽고 경계심을 갖게된다는 것을 똑같이 배웠습니다.팀 프로젝트의 세분성 선택하기

처음에 나에게 상황을 설명하자

이 회사는 게임을 개발하고 있습니다. 이 게임은 클라이언트/서버 응용 프로그램입니다. 거기에서 우리는 지불 샵, 지원 응용 프로그램 등과 같은 다른 응용 프로그램과의 여러 게임 및 인터페이스 전반에 기능을 제공하는 게임 코어를 가지고 있습니다. 핵심 게임 팀은 다양한 게임을 구현합니다.

내 새 팀은 서버를 둘러싼 게임 독립적 인프라를 담당합니다. 우리는 munin을 사용자 정의하기 위해 관리자와 인터페이스를하고, 우리는 인간의 테스트를 향상시키기 위해 품질 보증 부서와 인터페이스를합니다. 우리는 자동화 된 시스템 테스트를 구현합니다. 즉, 우리는 이종 프로젝트을 많이 가지고 있습니다. 하나의 프로젝트는 대부분 multi-remote-tail이고 다른 프로젝트는 multi-scp이며 또 다른 프로젝트는 자바 코드에서 커스텀 jmx-munin-bridge에 이르는 rpm 패키지로의 워크 플로우입니다.

두 번째로, 우리는 현재 ad-hoc 건물 및 개미 빌드 스크립트에서 집중적으로 일하고 있으며, maven, jenkins를 기반으로하는 자동화 된 빌드 및 배포로 수렴하고 있습니다. 이는 주로 자동화 된 배포와 종속성 관리를 단순화하기 위해 수행됩니다. 더욱이, maven을 가지고 이상적으로 로컬 Maven 저장소를 사용하면주기를 피할 경우 종속성 관리를 오히려 저렴하게 만들 수 있습니다.

자바 부서의 게임 부분에는 큰 도구 프로젝트가 있습니다. 도구 프로젝트는 50k 라인이며, "도구"라고 불리는 프로젝트를 기대하는 것처럼 보입니다. 대용량 저장소에 상당히 독립적 인 많은 코드가 패키지에 깔끔하게 집어 넣습니다.

지금, 나는이 순간에 대해 숙고하고있는 일에 통과하기 : 회사에서 자바의

머리와 나는 멀리 내 자신의 팀의 유틸리티 코드를 분할하는 것이 합리적이 아니라고 동의 우리 팀은 서로 다른 의존 관계를 가지고 있기 때문에 게임 유틸리티가 필요합니다. 예를 들어, 게임 서버에는 JSCH가 필요하지 않습니다.

이제는 내 도구 프로젝트의 세분성을 결정하고 있습니다. 직관적으로, 저는 응집력과 닮은 점이없는 다른 유틸리티를 원하지 않습니다. 심지어 더 큰 유틸리티 하나를 구현하면 스트레스 테스트 서버가 JSCH에 갑자기 의존하고 모든 것이 이상해져 더 이상 의미가 없습니다.

따라서 거대한 유틸리티 거물을 만들지 않고 대신 개미 군대를 만들 겠다는 결정에 의지하게됩니다. 그렇게함으로써, 나는 오히려 많은 작은 프로젝트와 프로젝트를 만들고 거기에서 일한다는 것을 의미합니다. 하나의 프로젝트 "InfrastructureTools"가 아니라 "InfrastructureTools.Plugins"프로젝트 하나, "InfraStructuretools.ConfigFileParsing, 하나의 프로젝트"InfraStructureTools.JSCHExtensions "등을 포함하고 모든 것을 관리하기 위해 maven을 활용합니다.

결국 나는 내 인생을 지옥으로 바꾸는 중요한 일을 그리워합니까? 아니면 합리적인 방법입니까? 이것이 합리적인 방법이 아니라면 무엇입니까?

+0

[Programmers] (http://programmers.stackexchange.com/) SE에 더 적합한 질문 인 것 같습니다. –

답변

1

게시물을 올바르게 읽으면 본질적으로 코드베이스/모듈을 모듈화하거나 거대한 코드가 몇 개 있는지 확인하는 것이 좋습니다.

  • 모듈 (클래스와 같은 작은 단위) :

    제 생각에는

    (과 OO "전문가"로버트 마틴 같은 많은 다른 사람의), 같은 여러 가지 이유로 소프트웨어를 모듈화하는 것이 중요하다 단일 책임 또는 변경해야 할 한 가지가 있어야합니다. http://en.wikipedia.org/wiki/Single_responsibility_principle

  • 작은 집중 모듈은 큰 비대칭 모듈보다 이해하기 쉽습니다. 소프트웨어의 복잡성은 큰 문제입니다. 코드에 대해 판단 할 수 없다면, 은 코드를 유지 관리 할 수 ​​없습니다.
  • 작은 모듈은 서로 독립적으로 개발하고 배포 할 수 있습니다. 1 개의 큰 "슈퍼 모듈"을 가지고 있다면 모든 것을 한 번에 개발, 테스트 및 배포해야합니다. 코드베이스의 한 영역이 나머지 부분보다 훨씬 자주 변경되는 경우, 자체 모듈로 나누십시오.

이 전체 주제는 개인적으로는 흥미롭지 만 일반적으로 의견을 제시 할 수는 없지만 의견으로는 대답 할 수없는 질문을하기 위해 노력하는 StackOverflow에서 일반적으로 묻는 내용이 아닙니다. Quora는 토론의 좋은 장소입니다.

관련 문제