문제

내 질문을 제기하는 것은 Jeff Atwood 의이 게시물, 그리고 이 게시물 Dare Obasanjo에서. 제 3 자 기능이 사용자 정의 코드보다 더 나은 아이디어 인 영역이 몇 개있을 수 있습니다.

예를 들어, 로깅은 항상 타사 여야합니까? 암호화는 어떻습니까? 또는 검색?

나는 이것에 대한 모든 사람의 피드백을 고대하고 있습니다.

편집 :이 질문은 로깅, 암호화 및/또는 검색이 귀하의 핵심 비즈니스가 아니라고 가정합니다.

도움이 되었습니까?

해결책

때에 따라 다르지. 귀하의 요구에 맞는 제 3 자 도서관이 있습니까? 그런 다음 가십시오.

자신의 버전을 수행 해야하는 이유가 있다면 "여기에 발명되지 않은"것이 아닙니다. 또한, 필요한 모든 것에 대해 시장의 상위 5 개 주요 제품을 깊이 보지 못했다면, 당신은 당신의 일을 충분히 충분히 수행하지 못했습니다. 당신이 찾고있는 것을 찾을 수있는 좋은 기회가 있으며, 그것을 사용할 수 없더라도 도서관 설명에서도 여전히 배운 것입니다. 최소한 필요한 기능과 그렇지 않은 기능을 배울 수 있습니다. 라이브러리 중 하나에 소스 코드를 가져 오면 소스 코드가 없지만 더 많은 기능을 갖춘 경쟁 라이브러리보다 선호하는 선택 여야합니다.

다른 팁

암호화 시스템을 판매하지 않는 한 암호화는 대부분 타사가되어야합니다.

내가 이해했듯이 그의 요점은 Atwood 씨의 요점입니다. 당신의 핵심 비즈는 제 3자가되어서는 안되므로 아마도 아무것도 없을 것입니다. 언제나 제 3 자 ...

내 경험의 규칙은 비즈니스의 핵심 목적을 벗어난 모든 것을 위해 제 3 자를 사용하거나 적어도 고려하는 것입니다.

암호화는 항상 이것의 프로토 타입 예입니다. 그러나 그것은 다른 영역으로 확장됩니다.

개발 중 문제 해결을위한 로깅 코드 작성은 생산 시스템 모니터링에 사용되는 로깅 코드를 작성하는 것과 완전히 다릅니다.

개발 영역이 실제로 프로젝트에 가치를 더하는 것을 선택하는 것입니다. 타사 항목을 사용하면 해당 구성 요소가 불완전한/버기 등의 위험을 제거합니다. 그러나 필요한 것만 큼 융통성이 없을 위험이 있습니다.

또 다른 예는 훨씬 저렴한 솔루션을 구입할 수있을 때 웹 사이트 전체 웹 포럼을 개발하는 것입니다.

"어떤 기능이 항상 제 3자가되어야합니까?"

없음. 본질적으로 엔지니어링 결정을 논의 할 때 "항상"의 심각한 사용을 지배하는 예외 나 특별한 사례가 항상 있습니다.

또한, 제 3 자로 가기로 한 결정은 주어진 "기능성"에 근거하여 거의 내려져서는 안됩니다. 해당 유형의 기능을 위해 다른 곳으로 갈 필요가없는 완벽한 라이브러리와 같은 것은 없습니다.

제 3 자가는 것은

  • 타사 비용 대 하우스에서 비용을 지불하는 비용
  • 마감일에 대한 개발 시간 (예 : 저렴한 사내 일 수 있지만 개발 타임 라인이 허용되지 않을 수 있습니다).
  • 통합, 디버깅, 유지 보수, 업그레이드 경로 - "일을 할 수 있지만 간신히"사내 대 앞으로 몇 년 동안 당신을 돌볼 무언가를 위해 더 많은 돈을 개발할 수있는 것을 개발할 수 있습니다.
  • 시험 및 입증의 편의/비용 - 보안 패키지는 테스트하기가 어렵습니다.

하지만. 집에 들어가는 것이 더 좋다고 믿기 힘든 것이 있습니다. 예를 들어, 당신 ~할 수 있다 OpenGL 및 DirectX에 경쟁 업체를 작성하고 특정 응용 프로그램 (과학 컴퓨팅 등)에는 그러한 경로를 고려해야 할 충분한 이유가 있습니다. 그러나 일반적으로 당신은 그것을 꿈꾸지 않을 것입니다. 비록 "무료"이지만 여전히 타사 의존성이지만 이러한 그래픽 언어를 사용하는 방법에만 영향을 미치는 버그 때문에 스키드에 올 수 있습니다.

다시 말해서, 거의 항상 제 3 자에게 가야하는 엄청나게 복잡하거나 증명/테스트하는 것이 존재합니다. 보안은 또 다른 보안입니다. 당신이 1) 인증 할 수 없을 정도로 미쳤고 2) 그에 대한 3 가지 이상의 훌륭한 사업 이유가 없다면 자신의 해싱 알고리즘을 작성하지 마십시오.

그러나 "어떤 기능은 항상 제 3자가되어야합니까?" 없음. 항상 예외가 있습니다.

-아담

나는 가능할 때마다 암호화가 전문가들에 의해서만 수행되어야한다는 데 전적으로 동의합니다. 또한 오픈 소스 여야하며 많은 동료 검토를 거쳤습니다.

제 3 자 컨트롤을 지속적으로 사용한 영역은 차트가되었습니다. 일부 데이터 배치를 차트 해야하는 것은 상당히 일반적인 문제이며, 제 3 자 제어는 성숙하고 신뢰할 수 있습니다.

답은 사용에 달려 있다고 생각합니다. 이익을 위해 개발하는 경우 구성 요소 사용 비용과 IT 개발 비용이 더 많은 이익을 얻는 경우 구성 요소를 구매할 수 있습니다. 이는 특히 부품을 생산할 사내 전문 지식이 없을 때 큰 구성 요소의 경우입니다.

제가 사용한 몇 가지 좋은 예는 Infragistics Controls 및 Dundas 차트입니다. 우리는 이러한 사내를 만들 수 있었지만 시간과 기회 손실 측면에서 비용은 몇 가지 라이센스를 구매하는 것과 비교할 때 큰 일이 될 것입니다.

물론, 때때로, 우리는 그것을 구성 요소 구매로 고려하지 않고도 이러한 유형의 일을합니다. 상상력을 조금 줄이면 .NET 프레임 워크, SQL Server, Windows API 등이 포함될 수 있습니다.

구축 할 수있는 것보다 저렴한 구매를 할 수 있고 구매 기능이 비즈니스 요구 사항을 충족하고 구매하십시오.

소프트웨어 개발의 다른 것과 마찬가지로 상황에 달려 있기 때문에이 질문에 대한 확실한 답은 없습니다. 다음 3 개 항목이 사실이라면 직접 생각하지 말아야 할 것보다 사실이라면 ...

  1. 비즈니스 나 전문 지식의 핵심이 아닌 경우.
  2. 다른 사람이 당신을 위해 그것을 썼고 그것은 광범위한 커뮤니티에서 사용되고 있다면.
  3. 요구 사항과 요구 사항을 충족하거나 요구 사항을 상당히 쉽게 충족하도록 확장 할 수있는 경우.

이 질문은 질문의 역전입니다. 어떤 소프트웨어를 작성해야합니까?

분명히 어리석은 일입니다.

두 사람 모두 대답이 없기 때문에 비즈니스의 요구에 따라 다릅니다. 전체 인터넷을 위해 더 나은 검색 엔진을 구축해야합니까? 거의 확실하지 않습니다. 그러나 90 년대 후반에 Google이라면 그렇습니다. 3 차 대 1 파티는 당신이 일하는 사무실의 문제 일 뿐이며, 모든 타사는 1 파티입니다.

  • 필요한 모든 것이 충분하다면 : 선반에서 무언가를 사용하십시오.

더 낮은 품질을 만들거나 그다지 중요하지 않은 것에 돈과 노력을 낭비 할 것입니다.

  • 그것이 당신의 비즈니스의 기초라면 : 직접 구축하십시오.

더 나은 것을 구축 할 수 있고 더 나은 일에서 비즈니스를 구축 할 수 있다면 그렇게하십시오!

시간이 당신의 손으로 모든 것을 쓰는 데 큰 문제라는 것을 잊지 마십시오. 그것은 당신이 그렇게 할 수 없다는 것이 아니라 고객이나 회사에서 문제가 발생합니다. 그들은 항상 시스템을 구축하는 가장 빠른 방법을 찾고 싶어합니다. 그러나 비영리 프로젝트가 있다면 직접 물건을 구축해보십시오. 예를 들어 웹 애플리케이션을 작성하고 Ajax 기능을 설정하려면 jQuery 또는 Dojo를 Ajax 툴킷으로 사용할 수 있습니다.

그러나 타사 라이브러리를 사용할 때는 조심해야합니다. 악의적 인 코드를 포함 할 수 있거나 서면으로 작성되어 두통을 일으킬 수 있기 때문에 신뢰해야합니다.

자신의 암호화 기능? 그것에 대해 생각조차하지 않지만 나는 당신이 아마도 기존 기능에 대한 일종의 래퍼를 의미한다고 생각합니다.

제 3 자 구성 요소 장점 : 많은 기능
완전히 테스트되었습니다 (희망적으로!)
개발하는 데 시간이 걸리지 않으므로 저렴할 수 있습니다 (그러나 ..)

단점
다음에 악한 고객 요구 사항에 대해 충분히 유연합니까?
분포는 비쌀 수 있습니다
버그를 수정하기 위해 새로운 릴리스를 만들 때 고통이 될 수있는 제 3 자 회사에 묶여 있습니다.
당신은 직접 작업을하는 법을 배우지 않습니다

타사 구성 요소를 사용하는지 여부는 응용 프로그램과 요구 사항에 따라 다릅니다. 그래프와 같은 것은 제대로되기까지 오랜 시간이 걸리므로 사용하기에 좋은 타사 구성 요소가 될 것입니다.

핵심 비즈니스 외부에있는 것은 타사 솔루션의 좋은 후보입니다. ISH (고유 한 핵심 기능)를 만들고 비용 효율적인 매너에서 구매 및 사용할 수없는 핵심 기능을 만들고자합니다.

예를 들어 Web GridView Control을 살펴 보겠습니다. GridView를 직접 개발하고 확장 할 수 있습니까? 물론 그리드보기를 개발, 코드 및 테스트 할 수는 있지만 x 시간과 자원이 소요되며 달러로 번역 할 수 있습니다. 이제 지원, 유지 보수 및 버그 수정 비용을 재발하는 요인이 있습니다.

이제 혜택을 포함하여 시간당 40 달러를 벌는 평균 미국 개발자에 대해 일부 매기에서 읽은 자의 금액을 사용해 보겠습니다. 개발자 라이센스 당 대략 $ 800 정도의 전체 웹 컨트롤 스위트가 있습니다. 개발자 가이 하나의 컨트롤에 총 25 시간 이상을 지출하면 전체 스위트를 구매하고 5 시간 동안 통합 및 테스트를 보냈을 수 있습니다.

이제 나는 거기에서 너무 혼란스러워하지 않았지만 일반적인 요점은 당신이 자아에서 그것을 살 수 있다면 아마 시간과 돈을 절약 할 수있을 것입니다. 제작자.

보일러 플레이트 코드 또는 거의 매번 복사하여 페이스트하는 중복 코드를 작성해야한다고 말하고 싶습니다. 저에게있어, 검증 코드는 거의 항상 어리석은 실수를 저질렀습니다. 왜냐하면 지루하기 때문입니다. Spring.net은 이것에 대해 훌륭합니다. 상사가 시도해 보라고 격려 해 주셔서 정말 기쁩니다.

필요한 모든 답변이있는 것 같습니다. 그러나 나는 다른 사람들과 함께 여기에 내 의견을 던지고 싶습니다. 고객은 자신을 위해 특별히 작동하는 응용 프로그램을 만들기 위해 귀하에게 지불하며, 이것이 보통 귀하에게가는 이유입니다. 시장의 다른 제품에서는 필요한 것이 없습니다. 따라서 귀하의 초점은 필요한 특정 부품을 개발하는 데 중점을 두어야합니다.

의심 할 여지없이 귀하의 응용 프로그램도 다른 작업을 수행해야합니다. 데이터베이스에 연결하거나 특정 줄을 암호화해야 할 수도 있습니다. 이것은 타사 라이브러리가 시작되는 곳입니다. 데이터베이스에 새 드라이버를 쓰는 데 시간을 낭비하거나 테스트 할 시간이없는 구멍이있는 새로운 암호화 체계를 쓰고 싶지 않습니다. 이미 존재하고 광범위하게 테스트하고 최적화 된 것들을 사용하려고합니다.

더 빨리 끝낼수록 지불이 적을 것입니다. 이것은 그들을 행복하게하고 당신에게 돌아오고 싶어합니다. 이것은 또한 더 적은 비용을 지불하더라도 더 많은 프로젝트를 수행 할 수 있기 때문에 더 많은 돈을 의미하기 때문에 더 많은 돈을 의미합니다.

결론적으로, 당신은 기타 모듈의 타사 라이브러리에 의존해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top