Cân bằng giữa công cụ phù hợp của Cameron cho công việc và quen thuộc [đóng]


19

Vì vậy, khi chọn ngôn ngữ nào để sử dụng cho một dự án, trong một thế giới lý tưởng, ngôn ngữ được chọn vì đó là công cụ phù hợp cho công việc. Tuy nhiên, tôi thường thích sử dụng một ngôn ngữ mà tôi thông thạo hơn là ngôn ngữ mà tôi sẽ phải học hoặc tôi chỉ biết nói chuyện. Tất nhiên sự lưu loát ngôn ngữ cũng đòi hỏi kiến ​​thức về các thư viện áp dụng trong ngôn ngữ. Chỉ vì tôi thực sự thích một ngôn ngữ có mục đích khá chung chung như Java không có nghĩa là tôi nên luôn luôn sử dụng nó, nhưng đồng thời, điều đó không có nghĩa là tôi nên thoát ra một cái gì đó như Perl mỗi khi phải xử lý văn bản. Làm thế nào để một người tìm thấy sự cân bằng ở đây?

Câu trả lời:


12

Wow đó là một câu hỏi RẤT khó khăn khi được đưa ra khỏi thế giới của lý thuyết và vào thế giới sản xuất.

Trong lý thuyết

Đơn giản. Luôn luôn sử dụng công cụ tốt nhất cho công việc, và chỉ cần học những gì bạn cần.

Trong thực tế

Không chỉ có câu hỏi về sự trôi chảy của bạn, còn có một loạt các câu hỏi kinh doanh khác cần được hỏi trước khi bạn có thể trả lời câu hỏi này:

  • Chi phí mua "dụng cụ chính xác"
  • Chi phí hỗ trợ này - mọi người cần được đào tạo
  • Chi phí học tập
  • Chi phí tích hợp với các sản phẩm khác (hiện tại và trong tương lai)
  • ... vv

Ngoài lý thuyết, có sự phân nhánh nghiêm trọng cho sự lựa chọn công nghệ của bạn.

Bây giờ tôi không nói rằng đừng chọn công cụ chính xác - chỉ cần đảm bảo rằng công cụ chính xác sẽ có thể hòa vốn với hàm ý chi phí của nó.

Nếu đây là một dự án cá nhân - luôn sử dụng công cụ "chính xác" - vì vậy khi bạn phải đối mặt với quyết định này trong bối cảnh kinh doanh, bạn có thể thực hiện cuộc gọi được thông báo tốt hơn.


2
Đó không phải là "đơn giản" trong lý thuyết. Điều gì thực sự tốt nhất có nghĩa là gì? Các tiêu chí là gì?
whatsisname

+1: Khi tất cả các yếu tố đã được kết hợp, công cụ chính xác có thể không phải là công cụ tốt nhất - ít người có được điều đó, chọn công cụ tốt nhất và chịu hậu quả.
Steven Evers

1
@whatsisname tốt nhất là chủ quan và phụ thuộc vào môi trường, ngân sách, khung thời gian của bạn ... - nhưng theo tinh thần của một dự án gia đình, đó sẽ là trường hợp thử một công nghệ được thiết kế để giải quyết vấn đề đó. Ví dụ: Erlang cho phân phối, Perl cho thao tác văn bản - sau đó bạn có thể đưa ra đánh giá của riêng mình.
Stephen Bailey

Một điều tôi càng ngày càng chắc chắn là Java hầu như không phải là công cụ phù hợp cho công việc. Có rất nhiều lựa chọn thay thế tốt hơn. Đừng hiểu lầm tôi. Đó là một ngôn ngữ tuyệt vời trong '00 và rất nhiều người đã quen với nó nhưng đối với tôi nó không phải là công cụ TỐT NHẤT (nhưng vẫn là một công cụ trong một số trường hợp tôi sử dụng, không phải là tốt nhất) cho công việc của tôi nữa. Không phải để mày mò, không cho dữ liệu lớn không dành cho web.
dbow

9

Tôi nghĩ rằng sự quen thuộc không được cung cấp đủ tín dụng. Sự quen thuộc của bạn ảnh hưởng rất tốt đến công cụ phù hợp là gì. Bạn phải sử dụng công cụ để hoàn thành dự án của bạn. Hơn nữa, sử dụng một cái gì đó bạn thích có thể không nghi ngờ gì vượt quá bất kỳ thiếu sót nào trong thể lực của nó bởi vì bạn sẽ hào hứng hơn để hoàn thành công việc và bạn sẽ có kết quả tốt hơn.

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


3

Điều này không thực sự giải quyết được ngoại trừ như một câu hỏi kinh doanh. Tuy nhiên, rất nhiều câu hỏi kinh doanh được đưa ra chỉ nhìn vào những con số ngắn hạn, đó là một sai lầm với những thứ như thế này.

Cách tiếp cận chung của tôi:

  1. Nếu đó là một việc nhỏ hoặc ngắn hạn, hãy luôn viết nó trong các công cụ quen thuộc.
  2. Nếu đó là một điều lớn, lâu dài, hãy nhìn vào sự đánh đổi lợi ích chi phí của việc học một công cụ mới.
  3. Nếu bạn không chắc chắn, hãy coi nó như một điều ngắn hạn cho đến khi bạn có bằng chứng rằng đó là một điều lâu dài. Sau đó đi và xem xét lại quyết định.

Ba điều cần ghi nhớ khi bạn nghĩ về chi phí và lợi ích: Một, mọi người vội vàng có xu hướng thay đổi ngắn trong tương lai. Thứ hai, chi phí bảo trì là phần lớn chi phí cho bất kỳ hệ thống thành công nào. Ba, các nhà phát triển giỏi thích học hỏi mọi thứ và giữ cho các nhà phát triển của bạn hạnh phúc là một khoản đầu tư dài hạn tốt.


1

Câu hỏi tuyệt vời! Như whatsisname đã nói trong câu trả lời của mình, "sự quen thuộc không được cung cấp đủ tín dụng". Một công cụ khác, khung khác nhau, ngôn ngữ khác có thể tốt hơn rất nhiều so với những gì bạn đã quen sử dụng và bạn vẫn sẽ làm việc kém hiệu quả hơn với lần đầu tiên khi bạn học các sợi dây.

Tôi đã làm việc vài năm với tư cách là nhà phát triển ASP.NET trong các cơ quan kỹ thuật số nơi chúng tôi có sự kết hợp của các dự án lớn, dự án nhỏ, dự án chặt chẽ, dự án được đệm tốt, v.v. Những gì chúng tôi cố gắng làm, để mở rộng kỹ năng của mình, tìm kiếm "các mục tiêu mềm", các dự án nhỏ hơn không có thời hạn chặt chẽ và chặt chẽ, và sử dụng chúng như một cơ hội để sử dụng công nghệ mới có thể vượt trội. .NET 2.0, 3.5, 4.0, ASP.NET MVC, Linq to SQL, Entity Framework - tất cả chúng, tôi đã sử dụng lần đầu tiên trong một dự án như vậy.

Nếu bạn có thể nắm lấy cơ hội của mình như vậy, thì hy vọng, bạn sẽ sẵn sàng với một bộ tùy chọn lớn hơn để chọn công cụ phù hợp mà không phải chịu sự thiếu quen thuộc. Giống như trong ví dụ của Julio: họ đã tìm thấy một mục tiêu nơi họ có thể thêm Ruby vào tiết mục của mình và bây giờ họ sẽ có thể chọn giữa Java và Ruby.

Nhưng nếu thời hạn là ngắn và vững chắc và dự án là quan trọng, tôi khuyên bạn nên gắn bó với các công cụ quen thuộc. Một cái gì đó khác biệt có thể phù hợp hơn, nhưng trong các dự án như thế, đó là tất cả về rủi ro .


1

Điều này phụ thuộc vào một vài điều:

1. Bạn giỏi ngôn ngữ hay công cụ mới đến mức nào.

Nếu bạn là người học nhanh, rào cản học ngôn ngữ hoặc công cụ mới thấp hơn. Điều này cho bạn cơ hội để thêm một công cụ khác vào hộp công cụ.

2. Làm thế nào ngôn ngữ / công cụ độc lập bạn làm cho môi trường làm việc của bạn.

Nếu quy trình làm việc của bạn phụ thuộc nhiều vào công cụ, thì rào cản học các ngôn ngữ khác nhau sẽ cao hơn. Nếu bạn được kết hợp với một IDE cụ thể, thì việc chuyển đổi ngôn ngữ liên quan đến nhiều hơn là chỉ học một ngôn ngữ, vì việc chỉnh sửa văn bản chắc chắn sẽ làm bạn thất vọng.

Ai đó sử dụng vim hoặc emacs không có vấn đề này. Tất cả những gì họ phải làm là học ngôn ngữ mới.

3. Thực tế kinh doanh

Học các công cụ / ngôn ngữ mới cần có thời gian. Thời gian đó có một chi phí. Nhưng chi phí đó có tiềm năng trở thành một khoản đầu tư trả lại nhiều hơn chi phí ban đầu. Ngoài ra, một giải pháp vô duyên thường sẽ mất nhiều thời gian hơn để thực hiện và khó bảo trì hơn. Nếu đó là bất cứ điều gì lớn hơn một dự án nhỏ và các công cụ trong hộp công cụ hiện tại của tôi dường như không phù hợp với vấn đề, tôi sẽ nghiên cứu công cụ nào phù hợp với vấn đề. Tôi cũng đã đầu tư vào một môi trường để phù hợp với cách tiếp cận chung chung, học cách sử dụng vim làm biên tập viên đã chọn.

Một điều nữa - khoảng cách ngắn nhất giữa hai điểm là gì? Nếu ai đó đã viết một cái gì đó gần như làm những gì tôi muốn làm, thường là nhanh nhất chỉ cần sửa đổi nó cho phù hợp với nhu cầu của tôi.


0

Nếu có một ngôn ngữ mới mà bạn tò mò và bạn (và doanh nghiệp) có thể mua được nó, tại sao bạn không dành cho mình một vài tuần đến một tháng để khám phá nó?

Đây là cách tôi học ruby. Đối tác lập trình viên của tôi đã có 7 năm kinh nghiệm với Java. Tôi đã có 11 năm kinh nghiệm Java. Không ai trong chúng tôi biết bất cứ điều gì về ruby, chỉ có điều chúng tôi muốn thử nó.

Tôi đã thuyết phục anh ấy và phần còn lại của công ty dùng thử ruby ​​trong một tháng (đây sẽ là một dự án 6-8 tháng). Trường hợp xấu nhất, chúng ta sẽ bắt đầu sử dụng Java trong thời gian này.

May mắn sau một tuần chúng tôi bị cuốn hút, vì vậy hóa ra không sao. Có lẽ bạn có thể thử một cái gì đó tương tự? Xem liệu bạn có thể xây dựng một cái gì đó từ đầu bằng một số ngôn ngữ khác không, nhưng làm cho doanh nghiệp hiểu rõ lý do tại sao bạn thực hiện nó, và ít nhất là quan trọng, kế hoạch B là gì trong trường hợp thử nghiệm thất bại.


0

Rõ ràng không có câu trả lời duy nhất cho câu hỏi này sẽ áp dụng cho tất cả các tình huống. Nhưng đây là một khía cạnh mà tôi không nghĩ đã được đề cập. Nếu bạn là một nhà phát triển, bạn cũng nên tính đến khả năng tiếp thị của riêng mình. Nếu ngôn ngữ X được chọn cho dự án của bạn, thì ngôn ngữ đó sẽ như thế nào trong hồ sơ của bạn? Có thể là một ý tưởng tốt để chọn một ngôn ngữ mà bạn không quen thuộc để bạn có lý do để học nó, mở rộng tầm nhìn trí tuệ và làm cho kỹ năng của bạn trở nên hấp dẫn hơn đối với các nhà tuyển dụng trong tương lai.


0

Tôi muốn nói rằng sự quen thuộc với một ngôn ngữ cũng là một khía cạnh của "trở thành một công cụ phù hợp cho công việc". Tôi không thể tưởng tượng được một tình huống trong đó Prolog sẽ là một công cụ phù hợp với công việc đối với tôi vì sự thiếu hiểu biết hoàn toàn về ngôn ngữ.


0

Phiên bản của riêng tôi là "sử dụng đúng công cụ có sẵn cho tôi" cho công việc. "Có sẵn" có nghĩa là tôi có thể sử dụng nó, không chỉ là tôi có thể mua / lấy trình biên dịch và // hoặc thời gian chạy.

Trong hầu hết mọi tình huống thực tế, đưa ra một vấn đề bạn có rất ít thời gian để giải quyết nó. Tôi không tin rằng bạn thực sự có thể học một ngôn ngữ mới trong một thời gian rất ngắn . Học một ngôn ngữ có nghĩa là thực sự đọc sách, đọc mã của người khác, hiểu cách thức hoạt động của nó và triết lý đằng sau nó. Người ta chỉ có thể đọc một hướng dẫn trên web (hoàn toàn tốt như một điểm khởi đầu) và bị hack. Nhưng điều đó sẽ dẫn đến mã khủng khiếp và có lẽ bạn nên viết mã tốt hơn bằng ngôn ngữ mà bạn biết trong thời gian ngắn hơn nhiều.

Bất chấp giá trị của câu tục ngữ "công cụ phù hợp cho công việc", hầu hết các ngôn ngữ phổ biến thực sự là mục đích chung. Họ có thể có thế mạnh ở một số lĩnh vực nhất định, và không giỏi bằng những người khác trong các lĩnh vực khác, nhưng họ có thể hoàn thành hầu hết các công việc. Không biết một ngôn ngữ thực tế có nghĩa là công cụ đó không có sẵn cho bạn.

Tôi không nói chỉ học một (hoặc thậm chí hai hoặc ba) ngôn ngữ và sử dụng chúng cho tất cả các dự án và không học bất cứ điều gì khác. Điều quan trọng là học các ngôn ngữ khác, để có được nhiều công cụ hơn để thêm vào hộp công cụ của bạn. Nhưng phải đối mặt với một vấn đề, tốt hơn là gắn bó với các công cụ bạn biết hơn là thêm vào những lo lắng của bạn bằng cách sử dụng các công nghệ xa lạ. Nhưng hãy tiếp tục học các ngôn ngữ khác để lần sau lựa chọn dễ dàng hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.