“작업에 적합한 도구”와 친숙 함의 균형 [폐쇄]


19

따라서 프로젝트에 사용할 언어를 선택할 때 이상적인 세상에서 언어는 작업에 적합한 도구이기 때문에 선택됩니다. 그러나, 나는 종종 배우고 싶거나 대화에 능통 한 언어 보다는 유창한 언어를 사용하는 것을 선호합니다 . 물론 언어 유창성에는 해당 라이브러리에 대한 지식이 포함되어 있습니다. Java와 같은 상당히 일반적인 언어를 좋아한다고해서 항상 사용해야한다는 의미는 아니지만 텍스트 처리가 완료 될 때마다 Perl과 같은 것을 분리해야한다는 의미는 아닙니다. 여기서 균형을 어떻게 찾습니까?

답변:


12

와우 그것은 이론의 세계에서 생산 세계로 가져갈 때 매우 어려운 질문입니다.

이론에 의하면

단순한. 항상 작업에 가장 적합한 도구를 사용하고 필요한 것을 배우십시오.

실제로

유창성에 대한 질문이있을뿐만 아니라 이에 대한 답변을하기 전에 질문을해야 할 다른 많은 비즈니스 질문이 있습니다.

  • "올바른 툴링"구매 비용
  • 이를 지원하는 비용-사람들은 훈련을 받아야합니다
  • 학습 비용 곡선
  • 다른 제품과의 통합 비용 (현재와 미래)
  • ... 등

이론 이외에는 기술 선택에 심각한 영향을 미칩니다.

이제 올바른 도구를 고르지 말라고 말하는 것은 아닙니다. 비용에 영향을 미쳐도 올바른 도구가 파손될 수 있는지 확인하십시오.

개인 프로젝트 인 경우 항상 "올바른"도구를 사용하십시오. 따라서 비즈니스 상황에서이 결정에 직면하면보다 정확한 정보를 얻을 수 있습니다.


2
이론적으로 '단순'하지 않습니다. 가장 좋은 것은 무엇을 의미 합니까? 기준은 무엇입니까?
whatsisname

+1 : 모든 요소가 결합되면 올바른 도구가 최상의 도구 가되지 않을 수 있습니다. 소수의 사람들이 도구를 얻거나 최상의 도구를 선택하여 결과를 겪게됩니다.
Steven Evers

1
@whatsisname best는 주관적이며 환경, 예산, 기간에 따라 다릅니다 ...-홈 프로젝트의 정신에서 그 문제를 해결하기 위해 설계된 기술을 시도하는 경우가 될 것입니다. 예를 들어 분산을위한 Erlang, 텍스트 조작을위한 Perl-자신의 판단을 내릴 수 있습니다.
Stephen Bailey

내가 점점 더 확신하는 것은 Java가 대부분 작업에 적합한 도구가 아니라는 것입니다. 더 좋은 대안이 많이 있습니다. 내가 틀리지 마 그것은 '00 년에 훌륭한 언어 였고 많은 사람들이 그것에 익숙해졌지만 나에게 그것은 더 이상 내 일을위한 최고의 도구 (그러나 여전히 사용하지 않는 도구)입니다. 웹용이 아닌 빅 데이터 용이 아닌 땜질 용이 아닙니다.
dbow

9

친숙 함이 충분하지 않다고 생각합니다. 친숙 함은 올바른 도구가 무엇인지에 매우 영향을줍니다. 프로젝트를 완료하려면 도구를 사용해야합니다. 또한, 즐기는 일을하는 것은 의심 할 여지없이 피트니스의 단점을 넘어 설 수 있습니다. 일을하는 데 더 흥분하고 더 나은 결과를 얻을 수 있기 때문입니다.

http://headrush.typepad.com/creating_passionate_users/2006/08/when_the_best_t.html


3

비즈니스 질문을 제외하고는 실제로 해결할 수 없습니다. 그러나 많은 비즈니스 관련 질문은 단기 숫자만을 고려하여 이루어지며 이는 이와 같은 실수입니다.

내 일반적인 접근 방식 :

  1. 작거나 단기적인 것이라면 항상 익숙한 도구로 작성하십시오.
  2. 그것이 장기적이고 장기적인 일이라면 새로운 도구를 배우는 데 따른 비용-이익 이점을 살펴보십시오.
  3. 확실하지 않은 경우 장기적인 증거가있을 때까지 단기적인 것으로 취급하십시오. 그런 다음 결정을 다시보십시오.

비용과 이익에 대해 생각할 때 명심해야 할 세 가지 : 하나는 서두르는 사람들이 미래를 짧게 바꾸는 경향이 있습니다. 둘째, 유지 관리 비용은 성공적인 시스템 비용의 가장 큰 부분입니다. 배우는 것을 좋아하고 개발자를 만족시키는 것은 좋은 장기 투자입니다.


1

좋은 질문입니다! whatsisname이 그의 답변에서 말했듯이, "친숙성은 충분한 신용을 얻지 못했습니다." 다른 도구, 다른 프레임 워크, 다른 언어 는 익숙한 것보다 훨씬 나을 수 있으며 , 로프를 배우면서 처음에는 생산성이 훨씬 떨어집니다.

저는 몇 년 동안 디지털 대행사에서 ASP.NET 개발자로 일하면서 큰 프로젝트, 소규모 프로젝트, 타이트한 프로젝트, 잘 짜여진 프로젝트 등이 있습니다. 고통스럽고 힘든 마감일이없는 소규모 프로젝트 인 "소프트 타겟"을 찾고,이를 더 우수한 새로운 기술을 사용할 수있는 기회로 활용하십시오. .NET 2.0, 3.5, 4.0, ASP.NET MVC, Linq to SQL, Entity Framework-이러한 프로젝트에서 처음으로 사용했습니다.

만약 당신이 그런 기회를 가질 수 있다면, 친숙 함을 잃지 않으면 서 올바른 도구를 선택할 수있는 더 많은 옵션이 준비되기를 바랍니다. Julio의 예에서와 같이 : 그들은 루퍼를 레퍼토리에 추가 할 수있는 대상을 찾았으며 이제는 Java와 Ruby 중에서 선택할 수 있습니다.

그러나 마감 기한이 짧고 프로젝트가 중요한 경우 익숙한 도구를 사용하는 것이 좋습니다. 다른 것이 더 적합 할 수도 있지만, 그런 프로젝트에서는 위험 에 관한 것 입니다.


1

이것은 몇 가지 사항에 달려 있습니다.

1. 새로운 언어 나 도구를 얼마나 잘 배우고 있습니까?

빠른 학습을하는 경우 새로운 언어 나 도구를 배우는 데있어 장애가 더 적습니다. 그러면 도구 상자에 다른 도구를 추가 할 수 있습니다.

2. 언어 / 도구와 독립적 인 업무 환경을 만드는 방법.

워크 플로가 도구에 크게 의존하는 경우 다른 언어를 배우는 데 장애가됩니다. 특정 IDE에 얽매여 있다면, 언어를 바꾸는 것만으로 언어를 배우는 것보다 훨씬 더 많은 것이 필요합니다. 텍스트를 편집하면 반드시 실망 할 것입니다.

vim 또는 emacs를 사용하는 사람에게는이 문제가 없습니다. 새로운 언어를 배우기 만하면됩니다.

3. 비즈니스 현실

새로운 도구 / 언어를 배우려면 시간이 걸립니다. 그때는 비용이 듭니다. 그러나이 비용은 초기 비용보다 더 많이 상환하는 투자가 될 가능성이 있습니다. 또한 바람직하지 않은 솔루션은 일반적으로 구현하는 데 시간이 오래 걸리고 유지하기가 더 어려워집니다. 작은 프로젝트보다 큰 것이거나 기존 도구 상자의 도구가 문제에 적합하지 않은 경우 어떤 도구가 문제에 적합한 지 조사합니다. 또한 vim을 내가 선택한 편집자로 사용하는 방법을 배우면서 일반적인 접근 방식에 적합한 환경에 투자했습니다.

다른 점-두 점 사이의 최단 거리는 얼마입니까? 다른 사람이 내가하고 싶은 일을 거의 수행하는 것을 작성한 경우 일반적으로 내 요구에 맞게 수정하는 것이 가장 빠릅니다.


0

궁금한 새로운 언어가 있고 귀하 (및 비즈니스)가 그 언어를 감당할 수 있다면, 몇 주에서 한 달에 한 달씩 탐험 해 보지 않겠습니까?

이것이 루비를 배우는 방법입니다. 내 코더 파트너는 7 년 동안 Java를 사용해 왔습니다. 나는 11 년의 자바 경험이 있었다. 우리 중 누구도 루비에 대해 아무것도 알지 못했습니다.

나는 그와 회사의 다른 회사가 한 달 동안 루비를 시험해 보라고 설득했다 (이 프로젝트는 6-8 개월 프로젝트가 될 것임). 최악의 경우, 우리는 이번에 Java를 사용하여 시작할 것입니다.

운 좋게 일주일 후 우리는 푹 빠져서 괜찮 았습니다. 아마도 비슷한 것을 시도해 볼 수 있습니까? 다른 언어로 처음부터 무언가를 만들 수는 있지만 비즈니스를 수행하는 이유와 실험이 실패 할 경우 계획 B가 무엇인지 명확하게 비즈니스에 알릴 수 있는지 확인하십시오.


0

모든 상황에 적용되는이 질문에 대한 답은 하나도 없습니다. 그러나 여기에 아직 언급되지 않은 부분이 있습니다. 개발자 인 경우 자체 시장성을 고려해야합니다. 프로젝트에 언어 X를 선택하면 이력서에서 어떻게 보입니까? 익숙하지 않은 언어를 선택하여 배우고, 지적 지평을 넓히고, 미래 고용주에게 기술을 더 매력적으로 만들 수있는 언어를 선택하는 것이 좋습니다.


0

언어에 대한 친숙 함도 "일을위한 올바른 도구가되는 것"의 측면이라고 말하고 싶습니다. 나는 언어에 대한 나의 완전한 무지를 감안할 때 프롤로그가 나를 위해 적절한 도구가되는 상황을 상상할 수 없다.


0

내 자신의 버전은 작업에 "사용 가능한 올바른 도구를 사용하는 것"입니다. "사용 가능"한다는 것은 컴파일러 및 / 또는 런타임을 구매 / 구매할 수있는 것이 아니라 사용할 수 있다는 것을 의미합니다.

거의 모든 실제 시나리오에서 문제를 해결하기 위해 시간이 매우 제한되어 있습니다. 아주 짧은 시간 안에 새로운 언어를 배울 수 있다고 생각하지 않습니다 . 언어를 배우는 것은 실제로 책을 읽고, 다른 사람들의 코드를 살펴보고, 언어의 작동 방식과 그 원리를 이해하는 것을 의미합니다. 웹에서 튜토리얼을 읽고 (시작 지점으로 완벽하게 좋습니다) 해킹을 당할 수 있습니다. 그러나 그로 인해 끔찍한 코드가 생길 수 있으며 아마도 훨씬 짧은 시간에 더 잘 알고있는 언어로 더 나은 코드를 작성하는 것이 좋습니다.

"일을위한 올바른 도구"속담의 장점에도 불구하고, 가장 대중적인 언어는 실제로 일반적인 목적입니다. 그들은 특정 영역에서 강점을 가질 수 있고 다른 영역에서 다른 것만 큼 좋지는 않지만 대부분의 작업을 수행 할 수 있습니다. 실제로 언어를 모른다는 것은 도구를 사용할 수 없다는 것을 의미합니다.

나는 단지 하나 또는 두 개 또는 세 개의 언어를 배우고 모든 프로젝트에 사용하고 다른 것을 배우지 않는다는 말은 아닙니다. 다른 언어를 배우고 도구 상자에 추가 할 도구를 더 많이 얻는 것이 중요합니다. 그러나 문제가 발생하면 익숙하지 않은 기술을 사용하여 걱정을 가중시키는 것보다 알고있는 도구를 사용하는 것이 좋습니다. 그러나 다음에 더 쉽게 선택할 수 있도록 다른 언어를 계속 배우십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.