Hạn chế của mã kata


41

Code kata là một khái niệm đề xuất trau dồi kỹ năng của lập trình viên bằng cách thực hiện các vấn đề nhỏ nhiều lần để cố gắng cải thiện mã ở mỗi lần lặp. Tên này xuất phát từ một sự tương tự với võ thuật kata trong đó các hình thức (còn gọi là kata) là các thực hành được thực hiện nhiều lần dẫn đến cải tiến.

Từ phản ứng tôi nhận được cho câu hỏi cuối cùng của tôi về chủ đề này, tôi muốn biết những mặt trái của phương pháp này là gì?


+1 để chống lại -1 không hiệu quả được áp dụng. Có vẻ như một câu hỏi hợp lệ, như tôi nghi ngờ về Code kata, nhưng không thể xác định lý do tại sao.
mattnz

9
cho đến hôm nay tôi không biết cái thứ kata này là về cái gì Bây giờ tôi chỉ kiểm tra nó và imho nó chỉ là một cái tên lạ mắt cho một thứ mà mọi lập trình viên lành mạnh làm và tự động học trong khi phát triển: thực hành. Vì vậy, nhược điểm đối với tôi sẽ là: nó chỉ mất thêm thời gian có thể được sử dụng theo cách khác.
stijn

11
Rõ ràng, một nhược điểm lớn của mã kata dường như là mọi người đang chỉ trích mã kata mà không hiểu mã kata là gì :-)
Jörg W Mittag

19
@ JörgWMittag - Đó là bởi vì thuật ngữ 'kata' là một từ tương tự xấu vì nó ngụ ý thực hành hình thức cứng nhắc với rất ít ý nghĩa thực tế trong các tình huống trong thế giới thực. Áp dụng các từ võ thuật, như "đai đen" hoặc "kata", vào các tình huống lập trình hoặc kinh doanh làm tôi khó chịu.
jfrankcarr

Câu trả lời:


22

Về nguyên tắc, tôi không thấy nhược điểm trong mã kata. Bạn cố gắng hoàn thành cùng một nhiệm vụ nhiều lần, với các cách tiếp cận khác nhau và các ngôn ngữ khác nhau. Nhưng

  1. thật khó để giới thiệu nó ở nơi làm việc. Bạn thường được kỳ vọng là thành thạo hoặc có năng suất hợp lý. Tôi không nói rằng nó sẽ không hữu ích (tốt hơn là dành một chút thời gian để cải thiện các kỹ năng của một người thuê mới hơn là trả tiền cho mã không tốt mà anh ấy sẽ viết trong thời gian tới) nhưng điều đó khá khó khăn.
  2. bạn phải Actuallu cố gắng cải thiện theo một nghĩa nào đó. Viết cùng một mã theo cùng một cách một nghìn lần sẽ không khiến bạn tiến bộ (thay vào đó nó sẽ khiến bạn nản chí). Bạn phải hiểu các lỗi trước đây của bạn, những gì đã sai hoặc không hoạt động như mong đợi. Đây là phần quan trọng nhất. Đó là một hình thức tự học, vì vậy bạn phải học.

1
Tôi đã chấp nhận câu trả lời này vì nó trực tiếp giải quyết câu hỏi (thay vì thuật ngữ "kata") và tập trung vào các vấn đề tiềm ẩn của thực hành mã kata. Điều này không có nghĩa là những câu trả lời khác không phải là câu trả lời hay - thực tế, tôi sẽ rất vui khi chấp nhận nhiều hơn một!
Sardathrion - Phục hồi Monica

43

Tôi nghĩ lập trình kata, giống như võ thuật kata, chủ yếu là về hình thức qua chức năng. Nó có thể dạy bạn viết mã thanh lịch, nhưng nó sẽ không dạy bạn giải quyết các vấn đề bạn đang viết mã. Tôi nghĩ một cách tốt hơn để cải thiện như một lập trình viên là giải các câu đố đòi hỏi phải giải quyết vấn đề thực tế, và làm việc trên các dự án lớn hơn sẽ dạy cho bạn giá trị của mã được cung cấp tốt theo cách mà mã kata không bao giờ có thể dạy cho bạn.

Bên cạnh đó, tôi nghĩ các thuật ngữ như 'mã kata' và 'thủ công phần mềm' thiên về lãng mạn hóa nghề nghiệp của chúng ta hơn là mô tả bất cứ điều gì mới lạ hoặc hữu ích.


4
Làm +2 cho câu đó.
Erik Dietrich

6
Mặc dù tôi đồng ý rằng giải quyết vấn đề là một cách tốt để cải thiện như một lập trình viên, học cách viết mã thanh lịch cũng có thể là một sự theo đuổi đáng giá. Tôi ước rằng một số nhà phát triển mã ban đầu mà tôi hiện đang duy trì đã dành thời gian và công sức để viết mã thanh lịch thay vì sao chép và dán để mọi thứ hoạt động.
Mike Partridge

1
+3 cho nhận xét của Mike. Nói chung, dành nhiều thời gian hơn để duy trì mã so với dành ban đầu để viết nó. Bạn mong muốn sự khéo léo sẽ được áp dụng khi ai đó xây dựng ngôi nhà của bạn, vì bạn sẽ sống trong đó lâu dài. Điều tương tự nên được áp dụng khi ai đó xây dựng phần mềm - nhưng phần lớn thời gian thì không.
Kaleb Brasee

@KaptajnKold: Bạn đang nói từ kinh nghiệm của bạn? Tôi rất thích nghe một số ý kiến ​​từ một người đã thực sự cố gắng cải thiện kỹ năng của mình thông qua CodeKata và đã thất bại.
dzieciou

2
@dzieciou: Tôi có kinh nghiệm về võ thuật kata đã luyện tập Karate được vài năm. Và trong khi tôi tin rằng có một số khía cạnh hữu ích của chiến đấu có thể học được từ kata, tôi cũng tin rằng cuối cùng nó không phải là một cách hiệu quả để huấn luyện. Bạn nên tập luyện khi bạn chiến đấu như họ nói. Đó là nếu mục đích của bạn là trở thành một chiến binh tốt hơn. Một số người thấy thực hành kata là một sự theo đuổi niềm vui trong chính nó. Không có gì sai với điều đó. Cuối cùng một số trong số họ trở nên rất tốt. Tại kata.
KaptajnKold

20

Mã kata chỉ mất thời gian.

Là người phát triển và làm cha toàn thời gian, tôi không muốn biến máy tính thành một sở thích.

Và tôi không tưởng tượng rằng ông chủ của tôi sẽ trả tiền cho tôi để phát triển các ứng dụng không liên quan đến dự án hiện tại của tôi.


10
Có loại học nào không mất thời gian không? Trừ khi bạn đủ may mắn để làm việc trên các dự án greenfield mỗi lần.
Den

38
Nếu bạn không dành ít nhất một chút thời gian rảnh để cải thiện kỹ năng lập trình một cách thường xuyên thì sự nghiệp chuyên nghiệp của bạn sẽ gặp nguy hiểm lớn.
Ladislav Mrnka

7
+1 cho điều này. Mặc dù tôi hoàn toàn yêu thích lập trình và rằng tôi có thể kiếm được tiền từ những thứ tôi yêu thích, tôi không thấy điểm nào trong việc lập trình THÊM ngoài công việc. Tôi có rất nhiều sở thích khác (ví dụ như chơi DJ, sản xuất âm nhạc, nâng tạ, vẽ và nhảy đường phố) đến nỗi tôi không thấy việc phải dành nhiều giờ hơn cho việc gì đó tôi đã làm 40 giờ / tuần.
Andreas Johansson

7
@mouviciel: Và đó chính xác là vấn đề: sếp của bạn sẵn sàng trả tiền cho sự phát triển chuyên nghiệp của bạn, nếu cần trong dự án nhưng bạn nên sẵn sàng cải thiện các kỹ năng không liên quan đến dự án hiện tại của bạn - có thể không liên quan đến hiện tại của bạn nền tảng nào cả. Đó là những gì xây dựng sự nghiệp / an sinh xã hội của bạn.
Ladislav Mrnka

6
@LadislavMrnka - Tôi đồng ý với bạn. Tuy nhiên, Code kata không phải là câu trả lời cho vấn đề đó.
mouviciel

13

Là một võ sĩ quyền anh, tôi phải không đồng ý với nguyên tắc đằng sau kata. Nó quá cứng nhắc để thực sự hữu ích. Trong vòng, bạn phải hiểu làm thế nào để áp dụng các nguyên tắc bạn đã học trong một môi trường chảy tự do.

Điều này không có nghĩa là không nên học và cải thiện kỹ thuật. Thực hành trên các túi cho phép bạn làm việc thông qua một cú đấm và cảm nhận cách bạn ném nó, giống như một kata. Nhưng nó không cứng nhắc. Bạn đang thực hành nhiều thứ cùng một lúc, di chuyển xung quanh túi, ném từ một nền tảng ổn định, nhắm, thở, danh sách tiếp tục.

Quan trọng nhất, mọi thứ được học cùng nhau theo cách nó sẽ thực sự được sử dụng. Nếu bạn có thể viết vòng lặp đẹp nhất từ ​​trước đến giờ, nhưng bạn không thể hiểu làm thế nào để phù hợp với nó vào một chương trình, vậy thì nó có ích gì?

Tôi sẽ nói rằng một điều tốt hơn để làm nếu bạn muốn thực hành sẽ là xây dựng cho mình các công cụ, hoặc làm việc trên các công cụ bạn sử dụng. Nó đòi hỏi phải thực hiện tất cả các kỹ năng của bạn và cuối cùng bạn có thể có một cái gì đó hữu ích.


tại chỗ trên. fwiw, tôi cũng là một võ sĩ / lập trình viên :).
Paul Sanwald

1
Mã katas không phải là về sự lặp lại cứng nhắc; họ làm việc nhiều hơn để giải quyết vấn đề, sau đó làm việc để cải thiện giải pháp của bạn cho đến khi bạn hài lòng. Từ Kata One: "Mục tiêu của kata này là thực hành một kiểu mô hình thử nghiệm lỏng lẻo hơn. Hãy tìm nhiều cách xử lý vấn đề khác nhau nhất có thể. Hãy xem xét các sự đánh đổi khác nhau của mỗi. Các kỹ thuật nào sử dụng tốt nhất để khám phá các mô hình này? ghi lại chúng? Làm thế nào bạn có thể xác nhận một mô hình là hợp lý? "
Mike Partridge

4
Tôi đồng ý rằng thuật ngữ 'kata' là không hoàn hảo, nhưng đừng đánh mất quan điểm của họ vì cái tên này. Ngoài ra, chúng không phải là tất cả các vấn đề từ ngữ; từ Kata Two: "Thực hiện thói quen tìm kiếm nhị phân (sử dụng thông số kỹ thuật bên dưới) bằng ngôn ngữ và kỹ thuật bạn chọn. Ngày mai, thực hiện lại, sử dụng một kỹ thuật hoàn toàn khác. Thực hiện tương tự vào ngày hôm sau, cho đến khi bạn có năm cách hoàn toàn độc đáo triển khai thực hiện một nhị phân (Ví dụ: một giải pháp có thể là phương pháp lặp truyền thống, một phương pháp có thể được đệ quy, người ta có thể sử dụng một kiểu hàm truyền qua các lát mảng xung quanh, v.v.). "
Mike Partridge

3
@MikePartridge Điều đó minh họa quan điểm của tôi. Một kata sẽ liên quan đến một phương pháp tìm kiếm nhị phân mỗi ngày được cải thiện, nói với ít dòng hơn hoặc mất ít thời gian hơn để viết nó từ đầu. Làm thế nào một khái niệm được mô tả là quan trọng để xác định nó. Anh ta có thể gọi nó là lập trình thực hành, đó là những gì các bài báo nói về, mà không mang theo hành lý không chính xác. Trách nhiệm của tác giả là chọn các từ và khái niệm xác định chính xác ý tưởng của mình, không phàn nàn rằng khán giả của anh ta đang kéo các liên kết không chính xác do lựa chọn ẩn dụ của anh ta.
Spencer Rathbun

3
@MikePartridge Trong trường hợp của tôi, tôi tin rằng tất cả các lập trình viên đang học / cải thiện, hoặc nên luôn luôn như vậy. Do đó, mã kata là một kỹ thuật để hỗ trợ đạt được mục tiêu này và câu trả lời của tôi là kỹ thuật này, như tôi đã thấy, không đáng giá. Tôi hoàn toàn đồng ý với mục tiêu, nhưng đó không phải là câu hỏi.
Spencer Rathbun

11

Theo quan điểm của tôi, nhược điểm chính là nó sẽ rất nhàm chán. Ngoài ra các lập trình viên dường như phát triển mạnh về việc phát triển phần mềm làm điều gì đó hữu ích hoặc tuyệt vời. Cách tiếp cận mã kata dường như ngược lại với điều đó.


2
Katas dạy bạn những thứ mới. Làm thế nào điều đó có thể trái ngược với những gì lập trình viên nhắm đến? Nó cũng đang giải một câu đố, không phải là thứ mà phần lớn các lập trình viên giỏi sẽ coi là nhàm chán. Trong thực tế, đây là trung tâm của hack.
Konrad Rudolph

4
@KonradRudolph Tôi nghĩ sự lặp lại là trái tim của katas? Vì vậy, bạn sẽ giải quyết vấn đề một lần (có lẽ mới và thú vị) nhưng sau đó bạn sẽ tiếp tục giải quyết vấn đề tương tự hết lần này đến lần khác. Tôi hầu như không nhìn Katas nên tôi có thể sai.
Kevin D

@Kevin Tôi đồng ý rằng điều này nghe có vẻ ngu ngốc (trừ khi bạn đặc biệt cố gắng tìm các cách khác nhau để giải quyết vấn đề). Tôi chưa bao giờ thực hiện thanh katasas như vậy, chỉ là những câu đố lập trình chung chung.
Konrad Rudolph

Làm thế nào là làm điều tương tự lặp đi lặp lại "dạy cho bạn những thứ mới"?

Rõ ràng trong câu trả lời của bạn rằng bạn đã không đọc liên kết được cung cấp trong câu hỏi.
Mike Partridge

8

Kata có nghĩa là trái ngược hoàn toàn với những gì bạn nên phấn đấu.

một bài tập bao gồm một chuỗi các động tác cụ thể của một môn võ thuật, được sử dụng trong tập luyện và được thiết kế để thể hiện kỹ năng trong kỹ thuật

Thuật ngữ Kata (Xuất xứ: 1950 Từ55; <tiếng Nhật: hình dạng, hoa văn) như được sử dụng trong võ thuật, và câu hỏi của bạn là về ghi nhớ vẹt của bộ nhớ cơ như gõ phím cảm ứng .

Trong Karate Kid ban đầu, tẩy lông ô tô, chà nhám sàn nhà, sơn hàng rào là tất cả những Katas đã được dạy, hoàn toàn thoát khỏi bối cảnh và trong trường hợp này mà không cần giải thích chỉ để cung cấp bộ nhớ cơ bắp. Mãi cho đến khi một giáo viên bước vào và đưa ra những bối cảnh hoạt động rỗng tuếch mà họ có ý nghĩa gì.

Tôi nghĩ điều tương tự cũng được áp dụng ở đây, không có người cố vấn để đặt mọi thứ vào bối cảnh làm lại vấn đề giải quyết sai trong nhiều ngôn ngữ không tốt hơn một ngôn ngữ. Không có người cố vấn để cho bạn biết nơi để cải thiện họ là một sự lãng phí thời gian.

Nó hoàn toàn trái ngược với việc giải quyết vấn đề một cách sáng tạo bằng cách học các biến thể mới của thành ngữ và ngữ nghĩa của một ngôn ngữ hoặc nền tảng.

Nếu bạn muốn có thể gõ System.out.println()một cách dễ dàng nhất có thể, thì thực hành đó sẽ là một Kata.

Nếu bạn muốn cải thiện giải pháp cho một vấn đề trong một triển khai khác , để giảm yêu cầu về thời gian và / hoặc không gian hoặc áp dụng các nguyên tắc thành ngữ hơn, đó không phải là điều mà Kata sẽ giúp bạn.

Đã có một thuật ngữ công nghiệp được chấp nhận để thực hiện lại điều tương tự lặp đi lặp lại sau khi nó đã hoạt động để phấn đấu cho những cải tiến nhỏ và lợi ích đáng ngờ của sự hoàn hảo, nó được gọi là Mạ vàng !

Các thuật ngữ họ nên sử dụng là Tái cấu trúc khi áp dụng cho cùng ngôn ngữ / thời gian chạy / nền tảng. Và Porting khi chuyển một chương trình làm việc sang một ngôn ngữ / thời gian chạy / nền tảng khác. Kata có lẽ đã được lựa chọn một cách sai lầm bởi vì nó nghe có vẻ hipster, mát mẻ và thần bí mà không hoàn toàn hiểu ngữ nghĩa.

Giải quyết các vấn đề khó khăn khác nhau với ít kế hoạch, kinh nghiệm hoặc hướng dẫn là điều mà hầu hết các nhà phát triển, đặc biệt là các nhà phát triển cơ sở phải làm mỗi ngày.

Chỉ có các học giả được thực hiện cùng một bài tập nhiều lần chỉ vì mục đích mài giũa một giải pháp cụ thể. Kỹ năng để có một sự nghiệp thành công như một nhà phát triển là ở sự thích nghi , không phải là sự lặp lại.

Ai nói rằng không có những người thông minh không cần học sau giờ làm việc và có thể học mọi thứ cần biết và đôi khi nhiều hơn trong 8 giờ làm việc?


Điều gì xảy ra nếu điều bạn đang thực hành là thiết kế lại và cải tiến thiết kế - lặp lại quy trình thiết kế, không thể áp dụng thuật ngữ này? Bạn có thể đến với một cái tốt hơn?
Bill K

Thuật ngữ để thiết kế lại và cải thiện một hệ thống hiện có là tái cấu trúc ( Tái cấu trúc mã là "kỹ thuật có kỷ luật để tái cấu trúc một bộ mã hiện có, thay đổi cấu trúc bên trong của nó mà không thay đổi hành vi bên ngoài của nó"). Họ chọn Kata vì nó nghe hay và huyền bí, mà không hiểu ngữ nghĩa.

Thuật ngữ tái cấu trúc là một thuật ngữ rất khác với thực hành để giỏi tái cấu trúc. Bất cứ ai cũng có thể cấu trúc lại mã, điều đó không có nghĩa là họ làm điều đó tốt hoặc được thực hành để nhận ra các cơ hội tái cấu trúc tốt. Mặc dù "Thực hành tái cấu trúc" là một thuật ngữ gốc cho nó, nhưng nó không truyền tải được sự cống hiến mà Kata làm vì vậy tôi nghĩ Kata có thể là một lựa chọn tốt hơn một chút, mặc dù tôi mở ra cho lý thuyết rằng có một cụm từ tốt hơn ngoài kia.
Bill K

1
Trên thực tế, Định dạng vàng đề cập đến "... các tính năng bổ sung hoặc được đánh bóng hơn". Những gì bạn mô tả có vẻ giống với Tối ưu hóa sớm hơn mặc dù sau khi thực tế.
Joshua Drake

5

Tôi đồng ý rằng phép ẩn dụ "kata" có thể không phải là tốt nhất. Một kata trong karate được thực hiện cho mục đích thực hành một chuyển động riêng biệt, riêng biệt cho đến khi nó có thể được thực hiện hoàn hảo, sắc nét và tự động. Điều này không dịch tốt cho một hoạt động đòi hỏi tư duy phê phán và sáng tạo. (Nó sẽ dịch tốt hơn để nói, gõ).

Điều đó nói rằng, sự thất bại của tên không phải là một thất bại của hoạt động. Những hạn chế có thể có là có thể thực hành một cái gì đó mà ai đó muốn tốt hơn? Tôi cho rằng người ta có thể nói rằng thời gian thực hiện nó là một nhược điểm, từ góc độ chi phí cơ hội, nhưng thực sự, đó là một khoản đầu tư. Vì vậy, thời gian dành cho việc thực hành thủ công phát triển phần mềm là dành cho các nhà phát triển phần mềm vì tiền dành cho cổ phiếu hoặc trái phiếu là để tiết kiệm / nhà đầu tư dài hạn. Đó không phải là một 'nhược điểm' - đó là cổ phần của bảng.


3

Bạn trở nên tốt hơn bằng cách thử những thứ khó khăn và nằm ngoài khả năng của bạn; thử thách bản thân. Làm cùng một "mã kata" lặp đi lặp lại, giống như một hình thức võ thuật, không làm điều đó. Tôi nghĩ rằng nó đình trệ khả năng của bạn thay vì giúp đẩy các kỹ năng của bạn về phía trước.

Nó có công dụng như một phương pháp thực hành lần đầu tiên, nhưng nó bị hạn chế. Tôi nói với mọi người để sử dụng dự án Euler thay thế. Nhiều vấn đề hơn và nhiều thách thức hơn.


Viết cùng một chương trình nhiều lần có thể hữu ích và thú vị, ví dụ nếu bạn thực hiện bằng thuật toán khác và / hoặc bằng một ngôn ngữ khác nhau mỗi lần. Nhưng có lẽ nó không phải là một kata.
9000

2
Đọc các liên kết được cung cấp trong câu hỏi; ý tưởng không phải là sự lặp đi lặp lại vô tâm như bạn dường như giả định từ cái tên.
Mike Partridge

@ 9000 Thật ra đó chính xác là cách tôi hiểu Code Katas. Thường được sử dụng khi học một ngôn ngữ mới hoặc thử một cách tiếp cận mới cho một vấn đề đã được giải quyết.
Joshua Drake

3

Đối với tôi, nhược điểm chính của kỹ thuật như tôi thấy đó là việc sử dụng tối ưu thời gian của bạn.

Giá trị học tập của bài tập này cũng rất đáng nghi ngờ: khi bạn làm một việc gì đó để vượt qua nó, phản hồi của chuyên gia là điều cần thiết. Không có phản hồi chất lượng cao, bạn cũng sẽ học được điều gì đó, nhưng có khả năng học một điều sai rất tốt.

Đừng hiểu sai ý tôi, thực hành vẫn là cách duy nhất để trở nên giỏi lập trình và kata chắc chắn là một hình thức thực hành. Nhưng giải quyết các vấn đề cạnh tranh mã hóa, viết "dự án vui vẻ" của riêng bạn, học các ngôn ngữ lập trình mới, v.v. Cuối cùng, bạn cần chọn kỹ thuật mà bạn cảm thấy thoải mái nhất, và đảm bảo rằng bạn có hướng dẫn rõ ràng trên đường đi.


Làm thế nào bạn tìm thấy hướng dẫn? Tôi đang vật lộn với vấn đề tương tự.
CodeYogi

1

Tôi tin rằng nếu không có một số dạng Kata, bạn sẽ không bao giờ là một lập trình viên tuyệt vời. Kata là thực hành, đó là nghĩa đen của nó. Lấy điều này làm ví dụ: Một vận động viên nói rằng "Tôi sẽ chỉ xuất hiện và chạy đường dốc 100 mét, luyện tập vít". Nghe có vẻ như là một chiến lược chiến thắng? Có bao giờ được thực hiện theo cách này?

Tôi đề nghị mọi người đọc " Bộ giải mã sạch " của chú Bob , ông đi sâu vào chủ đề này (và các vấn đề khác) về tính chuyên nghiệp trong lĩnh vực lập trình.

Oh và tranh luận đưa ra rằng bạn không thể làm Kata và nuôi một gia đình chỉ đơn giản là lý do. Phát biểu từ kinh nghiệm: trẻ em đi ngủ vào một lúc nào đó ...


3
mã hóa! = chạy 100 mét, trừ khi 100 mét đó đi qua một mỏ khai thác nhiều cây cối vào một ngày và một mỏ đất đầy lúa vào ngày hôm sau và một đầm lầy chứa đầy những con rắn độc vào ngày hôm sau trong khi bị bắn tỉa nặng nề, hãy xem mô hình ... Kata là thuật ngữ sai về mặt ngữ nghĩa .

2
-1 Đào tạo có thể xảy ra trong công việc, ngay cả trong thời gian được trả tiền (không chắc tại sao mọi người dường như quên điều này). Không phải tất cả mọi thứ là công việc thuần túy hoặc học tập thuần túy.
joshin4colours

@JarrodRoberson kịch bản bạn vừa mô tả là những gì một người lính làm hàng ngày. Vì vậy, bạn đã chọn một tương tự khá xấu. Thành thật mà nói, tôi nên vui mừng cho những người làm công việc 9-5 của họ sau đó về nhà và ngừng học vì nó mang lại cho tôi một lợi thế cạnh tranh.
ThaDon

3
Martin Fowler từng được hỏi về việc chi tiền cho việc đào tạo nhân viên của bạn "Bạn có sợ nếu bạn đào tạo họ, họ sẽ nghỉ việc không?" và câu trả lời của anh là "Không, tôi sợ nếu tôi không đào tạo họ thì họ sẽ ở lại!" . Không phải mọi nhà tuyển dụng đều coi đào tạo là một khoản chi phí, những người giỏi xem đó là một khoản đầu tư!

Giải quyết các vấn đề khó khăn khác nhau với ít kế hoạch, kinh nghiệm hoặc hướng dẫn là điều mà hầu hết các nhà phát triển, đặc biệt là các nhà phát triển cơ sở phải làm mỗi ngày. Tôi nghĩ đó là một sự tương tự khá chính xác. Chỉ có các học giả được thực hiện cùng một bài tập nhiều lần chỉ vì mục đích mài giũa một giải pháp cụ thể. Kỹ năng để có một sự nghiệp thành công như một nhà phát triển là ở sự thích nghi , không phải là sự lặp lại. Ai nói rằng không có người thông minh hơn không cần học sau giờ làm việc và có thể học mọi thứ cần thiết và hơn thế nữa trong 8 giờ.

1

Chỉ làm katas, trong một bối cảnh võ thuật, là vô dụng. Như đã nói, katas là vũ đạo của các phong trào dạy cho bạn hình thức. Bạn biết các phong trào nhưng bạn không biết làm thế nào để áp dụng chúng. Bạn không biết chúng hữu ích trong tình huống nào. Nếu bạn thực sự muốn làm một cái gì đó hữu ích với họ, bạn cần (các) ứng dụng, đó là Bunkai .

Trong ngữ cảnh phần mềm, mã kata sẽ là thuật toán, công cụ, mẫu thiết kế hoặc bất kỳ công nghệ nào khác. Biết nó là tốt, nhưng bạn cần áp dụng nó để hiểu nó. Bạn cần sử dụng nó trong các bối cảnh khác nhau để thực sự làm chủ nó. Bunkai sẽ là một tình huống cụ thể trong đó kata hoặc một phần của kata là hữu ích.

Tôi không thấy có gì sai với phương pháp đó, đây là cách làm chủ mọi thứ: học một cái gì đó, thực hành nó, thêm một chi tiết, thực hành, thêm một chi tiết khác, thực hành, v.v.


-1

Lập trình là một nghệ thuật - như hội họa hoặc âm nhạc. Khi ai đó trở thành nhạc sĩ hoặc nghệ sĩ vì tiền bạn có thể nói, không có cảm hứng, buổi biểu diễn không thực sự xứng đáng với thời gian của bạn. Nếu bạn tham gia vào nghệ thuật, không gì có thể ngăn bạn luyện tập và liên tục tinh chỉnh nó - mỗi ngày tinh chỉnh một kỹ thuật duy nhất, nhận thấy những sắc thái mà hầu hết mọi người sẽ không bao giờ nhìn thấy.

Luôn có chỗ cho những người hạnh phúc là nhạc sĩ bar và họa sĩ gia đình, nhưng họ là một lớp tài năng hoàn toàn khác. Tôi cho rằng hầu hết các họa sĩ gia đình sẽ cười vào ý tưởng thực hành, nhưng tôi cá là một họa sĩ đã nghiên cứu và thực hành các kỹ thuật - về cơ bản nhận ra công việc của họ là một nghệ thuật sẽ làm một công việc tốt hơn đáng chú ý, ngay cả trên một thứ gì đó trần tục như vẽ ngôi nhà của bạn .

Một số người sẽ nhận ra giá trị của thực hành một số wont. Điều đó một mình nên có giá trị nếu bạn ở vị trí để đánh giá và bạn đang tìm kiếm những người có thể tạo ra nghệ thuật (mã gọn, đơn giản, dễ hiểu) và không chỉ là một giải pháp.

ps. Tôi không tự gọi mình là nghệ thuật hay bất cứ điều gì - Tôi không làm Kata về các vấn đề trừu tượng nhưng tôi nhận ra giá trị và tôi cố gắng cấu trúc lại mã sản xuất của mình khá nhiều.


Các nhạc sĩ được đào tạo quá mức đặc biệt có thể bị chiếm đóng một cách tiêu cực bởi sự hoàn hảo về mặt lý thuyết, điều này cực kỳ nguy hiểm đối với sự nghiệp phát triển phần mềm. Âm nhạc có yếu tố thể hiện , phần mềm lập trình không có điều này. Bạn có thể tranh luận các sản phẩm của Apple có biểu thức này, nhưng đó là biểu thức thiết kế , mã không bao giờ được nhìn thấy hoặc cảm nhận trực tiếp. Âm nhạc và Nghệ thuật là những tương tự xấu cho phát triển phần mềm. Và bạn thể hiện một định kiến ​​rõ rệt đối với công nhân cổ xanh ở chỗ bạn cho rằng họ không tự hào về công việc của họ hoặc thấy giá trị về chất lượng.

Đừng kết hợp đào tạo với thực hành. Được đào tạo quá mức rất khác so với thực hành quá mức và nếu bạn không nghĩ mức độ biểu hiện trong mã của bạn được nhìn thấy trong thời gian giao hàng và tính ổn định của mã, tôi thực sự không biết liệu chúng ta có cơ sở chung để thảo luận hay không.
Bill K

Không quan trọng tôi nghĩ gì, tôi biết rằng hầu hết khách hàng sẽ không nhận ra và quan tâm đến mã được làm cẩn thận và nó được tạo ra thanh lịch như thế nào miễn là loại ứng dụng hoạt động hầu hết thời gian. Giống như cách mà phần lớn dân chúng chưa bao giờ quan tâm đến chất lượng âm thanh và video của VHS và băng video hoặc băng cassette được nén rất cao và bây giờ là những bản mp3 được nén rất cao, loại bỏ mọi sắc thái đó, mà không có bất kỳ phàn nàn nào. Được đào tạo quá mức còn tệ hơn so với thực hành quá mức, được đào tạo quá mức khiến người ta bỏ qua "đủ tốt" và khốn khổ trong ngành công nghiệp phần mềm.

Lập trình là một nghề không phải là một nghệ thuật. Có nhiều cấp độ thủ công và thẩm mỹ cho cả hai, nhưng nghệ thuật không phải là nghề trong phát triển phần mềm tự nhiên là hướng nghiệp. Nhiều người kiếm được nhiều tiền hơn bằng cách viết phần mềm so với các nghệ sĩ bằng một cú sút xa. Phần mềm không mang tính chủ quan và không tồn tại chỉ vì mục đích tồn tại của riêng nó, tranh và âm nhạc tồn tại để làm hài lòng người sáng tạo thường xuyên hơn không phải là định nghĩa của bạn về việc bán hàng ở trên ngụ ý như một sự khác biệt. Là một người đã đi đến trường đại học nghệ thuật, tôi có thể nói với bạn, lập trình là một nghề dạy nghề và không liên quan gì đến việc tạo ra một tác phẩm nghệ thuật.

Nếu bạn không nghĩ rằng phần mềm được làm tốt sẽ được phân phối nhanh hơn, ít tốn kém hơn và chỉ đơn giản là tốt hơn phần mềm do thợ thủ công tạo ra, bạn đã không thấy nó được thực hiện đúng. Không có nhiều khả năng, có bao nhiêu người đã xem một nghệ sĩ bậc thầy, nhạc sĩ hoặc chơi với / chống lại một người chơi thể thao chuyên nghiệp - họ không phải là phổ biến, và trong ngành công nghiệp của chúng ta khó nhận ra hơn, nhưng sự khác biệt về tài năng là như nhau như là kết quả. Một nghệ sĩ có thể vượt trội hơn 5 nghệ nhân về tốc độ và chất lượng, nhưng ít người đủ may mắn để thấy điều đó nên họ không tin rằng nó tồn tại.
Bill K
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.