답변:
와우 그것은 이론의 세계에서 생산 세계로 가져갈 때 매우 어려운 질문입니다.
이론에 의하면
단순한. 항상 작업에 가장 적합한 도구를 사용하고 필요한 것을 배우십시오.
실제로
유창성에 대한 질문이있을뿐만 아니라 이에 대한 답변을하기 전에 질문을해야 할 다른 많은 비즈니스 질문이 있습니다.
이론 이외에는 기술 선택에 심각한 영향을 미칩니다.
이제 올바른 도구를 고르지 말라고 말하는 것은 아닙니다. 비용에 영향을 미쳐도 올바른 도구가 파손될 수 있는지 확인하십시오.
개인 프로젝트 인 경우 항상 "올바른"도구를 사용하십시오. 따라서 비즈니스 상황에서이 결정에 직면하면보다 정확한 정보를 얻을 수 있습니다.
친숙 함이 충분하지 않다고 생각합니다. 친숙 함은 올바른 도구가 무엇인지에 매우 영향을줍니다. 프로젝트를 완료하려면 도구를 사용해야합니다. 또한, 즐기는 일을하는 것은 의심 할 여지없이 피트니스의 단점을 넘어 설 수 있습니다. 일을하는 데 더 흥분하고 더 나은 결과를 얻을 수 있기 때문입니다.
http://headrush.typepad.com/creating_passionate_users/2006/08/when_the_best_t.html
비즈니스 질문을 제외하고는 실제로 해결할 수 없습니다. 그러나 많은 비즈니스 관련 질문은 단기 숫자만을 고려하여 이루어지며 이는 이와 같은 실수입니다.
내 일반적인 접근 방식 :
비용과 이익에 대해 생각할 때 명심해야 할 세 가지 : 하나는 서두르는 사람들이 미래를 짧게 바꾸는 경향이 있습니다. 둘째, 유지 관리 비용은 성공적인 시스템 비용의 가장 큰 부분입니다. 배우는 것을 좋아하고 개발자를 만족시키는 것은 좋은 장기 투자입니다.
좋은 질문입니다! whatsisname이 그의 답변에서 말했듯이, "친숙성은 충분한 신용을 얻지 못했습니다." 다른 도구, 다른 프레임 워크, 다른 언어 는 익숙한 것보다 훨씬 나을 수 있으며 , 로프를 배우면서 처음에는 생산성이 훨씬 떨어집니다.
저는 몇 년 동안 디지털 대행사에서 ASP.NET 개발자로 일하면서 큰 프로젝트, 소규모 프로젝트, 타이트한 프로젝트, 잘 짜여진 프로젝트 등이 있습니다. 고통스럽고 힘든 마감일이없는 소규모 프로젝트 인 "소프트 타겟"을 찾고,이를 더 우수한 새로운 기술을 사용할 수있는 기회로 활용하십시오. .NET 2.0, 3.5, 4.0, ASP.NET MVC, Linq to SQL, Entity Framework-이러한 프로젝트에서 처음으로 사용했습니다.
만약 당신이 그런 기회를 가질 수 있다면, 친숙 함을 잃지 않으면 서 올바른 도구를 선택할 수있는 더 많은 옵션이 준비되기를 바랍니다. Julio의 예에서와 같이 : 그들은 루퍼를 레퍼토리에 추가 할 수있는 대상을 찾았으며 이제는 Java와 Ruby 중에서 선택할 수 있습니다.
그러나 마감 기한이 짧고 프로젝트가 중요한 경우 익숙한 도구를 사용하는 것이 좋습니다. 다른 것이 더 적합 할 수도 있지만, 그런 프로젝트에서는 위험 에 관한 것 입니다.
이것은 몇 가지 사항에 달려 있습니다.
1. 새로운 언어 나 도구를 얼마나 잘 배우고 있습니까?
빠른 학습을하는 경우 새로운 언어 나 도구를 배우는 데있어 장애가 더 적습니다. 그러면 도구 상자에 다른 도구를 추가 할 수 있습니다.
2. 언어 / 도구와 독립적 인 업무 환경을 만드는 방법.
워크 플로가 도구에 크게 의존하는 경우 다른 언어를 배우는 데 장애가됩니다. 특정 IDE에 얽매여 있다면, 언어를 바꾸는 것만으로 언어를 배우는 것보다 훨씬 더 많은 것이 필요합니다. 텍스트를 편집하면 반드시 실망 할 것입니다.
vim 또는 emacs를 사용하는 사람에게는이 문제가 없습니다. 새로운 언어를 배우기 만하면됩니다.
3. 비즈니스 현실
새로운 도구 / 언어를 배우려면 시간이 걸립니다. 그때는 비용이 듭니다. 그러나이 비용은 초기 비용보다 더 많이 상환하는 투자가 될 가능성이 있습니다. 또한 바람직하지 않은 솔루션은 일반적으로 구현하는 데 시간이 오래 걸리고 유지하기가 더 어려워집니다. 작은 프로젝트보다 큰 것이거나 기존 도구 상자의 도구가 문제에 적합하지 않은 경우 어떤 도구가 문제에 적합한 지 조사합니다. 또한 vim을 내가 선택한 편집자로 사용하는 방법을 배우면서 일반적인 접근 방식에 적합한 환경에 투자했습니다.
다른 점-두 점 사이의 최단 거리는 얼마입니까? 다른 사람이 내가하고 싶은 일을 거의 수행하는 것을 작성한 경우 일반적으로 내 요구에 맞게 수정하는 것이 가장 빠릅니다.
궁금한 새로운 언어가 있고 귀하 (및 비즈니스)가 그 언어를 감당할 수 있다면, 몇 주에서 한 달에 한 달씩 탐험 해 보지 않겠습니까?
이것이 루비를 배우는 방법입니다. 내 코더 파트너는 7 년 동안 Java를 사용해 왔습니다. 나는 11 년의 자바 경험이 있었다. 우리 중 누구도 루비에 대해 아무것도 알지 못했습니다.
나는 그와 회사의 다른 회사가 한 달 동안 루비를 시험해 보라고 설득했다 (이 프로젝트는 6-8 개월 프로젝트가 될 것임). 최악의 경우, 우리는 이번에 Java를 사용하여 시작할 것입니다.
운 좋게 일주일 후 우리는 푹 빠져서 괜찮 았습니다. 아마도 비슷한 것을 시도해 볼 수 있습니까? 다른 언어로 처음부터 무언가를 만들 수는 있지만 비즈니스를 수행하는 이유와 실험이 실패 할 경우 계획 B가 무엇인지 명확하게 비즈니스에 알릴 수 있는지 확인하십시오.
언어에 대한 친숙 함도 "일을위한 올바른 도구가되는 것"의 측면이라고 말하고 싶습니다. 나는 언어에 대한 나의 완전한 무지를 감안할 때 프롤로그가 나를 위해 적절한 도구가되는 상황을 상상할 수 없다.
내 자신의 버전은 작업에 "사용 가능한 올바른 도구를 사용하는 것"입니다. "사용 가능"한다는 것은 컴파일러 및 / 또는 런타임을 구매 / 구매할 수있는 것이 아니라 사용할 수 있다는 것을 의미합니다.
거의 모든 실제 시나리오에서 문제를 해결하기 위해 시간이 매우 제한되어 있습니다. 아주 짧은 시간 안에 새로운 언어를 배울 수 있다고 생각하지 않습니다 . 언어를 배우는 것은 실제로 책을 읽고, 다른 사람들의 코드를 살펴보고, 언어의 작동 방식과 그 원리를 이해하는 것을 의미합니다. 웹에서 튜토리얼을 읽고 (시작 지점으로 완벽하게 좋습니다) 해킹을 당할 수 있습니다. 그러나 그로 인해 끔찍한 코드가 생길 수 있으며 아마도 훨씬 짧은 시간에 더 잘 알고있는 언어로 더 나은 코드를 작성하는 것이 좋습니다.
"일을위한 올바른 도구"속담의 장점에도 불구하고, 가장 대중적인 언어는 실제로 일반적인 목적입니다. 그들은 특정 영역에서 강점을 가질 수 있고 다른 영역에서 다른 것만 큼 좋지는 않지만 대부분의 작업을 수행 할 수 있습니다. 실제로 언어를 모른다는 것은 도구를 사용할 수 없다는 것을 의미합니다.
나는 단지 하나 또는 두 개 또는 세 개의 언어를 배우고 모든 프로젝트에 사용하고 다른 것을 배우지 않는다는 말은 아닙니다. 다른 언어를 배우고 도구 상자에 추가 할 도구를 더 많이 얻는 것이 중요합니다. 그러나 문제가 발생하면 익숙하지 않은 기술을 사용하여 걱정을 가중시키는 것보다 알고있는 도구를 사용하는 것이 좋습니다. 그러나 다음에 더 쉽게 선택할 수 있도록 다른 언어를 계속 배우십시오.