Làm thế nào để cố vấn một nhà phát triển cơ sở


99

Tiêu đề này hơi rộng nhưng tôi có thể cần đưa ra một chút nền tảng trước khi tôi có thể đặt câu hỏi của mình đúng cách.

Tôi biết rằng những câu hỏi tương tự đã được hỏi ở đây rồi. Nhưng trong trường hợp của tôi, tôi không hỏi liệu tôi nên tư vấn cho ai đó hay liệu người đó có phù hợp để trở thành nhà phát triển phần mềm hay không. Đó không phải là nơi để tôi phán xét. Tôi đã không được hỏi thẳng, nhưng rõ ràng bản thân tôi và các nhà phát triển cao cấp khác sẽ cố vấn cho các nhà phát triển mới bắt đầu từ đây. Tôi không có vấn đề gì với điều này và, trong nhiều trường hợp, nó cho tôi một góc nhìn mới mẻ về mọi thứ và cuối cùng tôi học được trong quá trình này. Ngoài ra, tôi còn nhớ nó có ích như thế nào khi bắt đầu sự nghiệp khi ai đó sẽ dành thời gian để dạy tôi điều gì đó.

Khi tôi nói "nhà phát triển mới", họ có thể ở bất cứ đâu từ khi mới ra trường đến khi có một hoặc hai năm kinh nghiệm.

Gần đây, chúng tôi đã có những người bắt đầu ở đây, những người dường như có thái độ đối với sự phát triển / lập trình khác với chính tôi và khó để tôi hòa giải; họ trích xuất thông tin vừa đủ để hoàn thành nhiệm vụ nhưng không thực sự học hỏi từ nó. Tôi thấy mình đi qua nhiều vấn đề tương tự với họ. Tôi hiểu rằng một phần của điều này có thể là một điều cá tính, nhưng tôi cảm thấy đó là công việc của tôi là cố gắng hết sức và đẩy chúng ra khỏi tổ trong khi chúng ở dưới cánh của tôi, có thể nói như vậy.

Làm thế nào tôi có thể truyền đạt vừa đủ thông tin để họ sẽ học nhưng không cung cấp quá nhiều để giải quyết vấn đề cho họ?

Hoặc có lẽ:

Câu trả lời thích hợp cho các câu hỏi được thiết kế để đi theo con đường ít kháng cự nhất và về bản chất, buộc chúng phải học thay vì đi theo cách dễ dàng?

Những câu hỏi này có lẽ là những câu hỏi giảng dạy chung chung hơn và không có nhiều điều để làm cụ thể với phát triển phần mềm.

Lưu ý: Tôi không có tiếng nói trong những nhiệm vụ họ đang làm. Quản lý loại bỏ nhiệm vụ ra và nó có thể là bất cứ điều gì từ một sửa lỗi rất đơn giản để tự khởi động toàn bộ ứng dụng. Mặc dù điều này không lý tưởng bằng bất kỳ phương tiện nào và rõ ràng là đưa ra những thách thức của riêng nó, tôi cảm thấy đó là một chủ đề tốt nhất để lại cho một câu hỏi khác. Vì vậy, điều tốt nhất tôi có thể làm là giúp họ giải quyết vấn đề trong tay và cố gắng giúp họ giải quyết vấn đề đơn giản hơn và kiểm tra nhật ký cam kết của họ và chỉ ra những sai lầm mà họ đã gây ra.

Mục tiêu chính của tôi là:

  • Giúp họ ra ngoài và cung cấp cho họ các công cụ họ cần để bắt đầu tự chủ hơn.
  • Chỉ đạo họ đi đúng hướng và sớm phá vỡ thói quen phát triển xấu.
  • Giảm bớt thời gian tôi dành cho họ (loại tính cách được mô tả ở trên có xu hướng cần nhiều hơn một lần và không làm tốt hơn IM hoặc email. Mặc dù điều đó nói chung là tốt, tôi luôn không thể dừng những gì tôi Tôi đang làm việc, phá vỡ bước tiến của tôi và giúp họ gỡ lỗi trong một thông báo khoảnh khắc; Tôi có các dự án của riêng mình cần phải hoàn thành).

1
bạn chỉ có thể giúp ai đó trở thành những gì họ muốn trở thành. Hướng dẫn những người muốn được hướng dẫn.
Tối

14
Bạn đúng rằng có rất nhiều điều về điều này không dành riêng cho phát triển phần mềm, nhưng đó về việc trở thành một giáo viên giỏi (ngay cả khi đó không phải là công việc chính của bạn). Trong bối cảnh giảng dạy, tôi đã viết một đoạn nhỏ trong Biên niên ký Ed nói rằng thành công có thể xảy ra khi bạn đóng ba vai trò: trở thành một hình mẫu tốt, đóng vai trò hỗ trợ công nghệ (cho đến khi họ tìm ra cách đặt câu hỏi hay & ở đâu ), và là một người cổ vũ (kiên nhẫn và hỗ trợ).
jcmeloni

1
Có một loạt các phản hồi tuyệt vời về chủ đề này ở đây: lập trình
viên.stackexchange.com / questions / 377708 / Fiêu

Tại sao bạn mua vào các bài hùng biện "cố vấn"? Sử dụng từ "đào tạo": bạn đang mô tả "đào tạo cho công việc" , đây không phải là công cụ triết học, cách bạn nhìn cuộc sống vũ trụ và mọi thứ, đây là cách mọi thứ được thực hiện tại công ty của bạn. (và công ty của bạn nên suy nghĩ thêm về việc cung cấp cho họ một bản chính thức)
ZJR

3
Và .. hãy chắc chắn rằng khối lập phương của họ ở giữa đường từ khối lập phương của bạn đến phòng vệ sinh ...
vrdhn

Câu trả lời:


121

Có một lần một câu hỏi ở đây có chứa loại thông tin này, và phần bị mắc kẹt với tôi nhất là không chạm vào bàn phím của họ

Nói tóm lại, hãy nói với đàn em của bạn cách hoàn thành những gì họ đang cố gắng làm, nhưng đừng làm điều đó cho họ.

Nhưng ngoài ra, đây là một số lời khuyên khác:

  • Khuyến khích Google (hoặc bất kỳ công cụ tìm kiếm nào khác). Nếu bạn biết câu trả lời có thể được tìm thấy trực tuyến một cách dễ dàng, hãy bảo họ tìm nó thay vì nói cho họ câu trả lời. Cuối cùng, bạn muốn dạy họ cách dạy bản thân và không để họ trở nên phụ thuộc vào bạn.
  • Hãy sẵn sàng trả lời các câu hỏi. Nếu bạn không bao giờ có sẵn hoặc không muốn bị gián đoạn, hãy nói rõ với họ rằng họ nên giữ câu hỏi của họ cho đến một thời gian nhất định.
  • Thực hiện đánh giá mã thường xuyên để cho họ biết những gì họ đang làm đúng / sai. Sử dụng điều này như một cơ hội để chỉ ra các thực tiễn tốt nhất
  • Bắt đầu sớm với thực hành tốt nhất. Tốt hơn là dành thêm thời gian để dạy họ đúng cách, hơn là thử và thay đổi phương pháp của họ sau này.
  • Hãy để họ bắt đầu sớm với việc lập kế hoạch / ghi lại những gì họ sẽ làm thay vì để họ bắt đầu bằng cách viết mã.
  • Hãy cởi mở để học hỏi từ họ. Họ có thể dành nhiều thời gian hơn bạn học, và có thể họ học được điều gì đó mà bạn không biết.
  • Giúp họ học hỏi từ những sai lầm của họ. Sẽ có những sai lầm, vì vậy hãy chắc chắn rằng bạn cho họ thấy rằng những sai lầm là một phần của việc học và họ nên sử dụng chúng như một cơ hội để học hỏi.

  • (Từ RuneFS bên dưới) Thay vì nói cho họ cách làm một cái gì đó, hãy cố gắng giúp họ tự tìm ra. Điều này sẽ giúp cải thiện khả năng làm việc logic của họ thông qua một vấn đề và tăng khả năng học tập của họ

  • (Từ RuneFS bên dưới) Thay vì nói với họ những gì họ đã làm sai, hãy nói với họ những cách họ có thể cải thiện nó. Hãy chắc chắn bao gồm lý do tại sao cách của bạn tốt hơn so với họ. Điều này sẽ thúc đẩy sự tự tin của họ thay vì làm suy yếu nó. Tất nhiên, nếu họ không lắng nghe bạn thì đừng ngại chỉ bảo họ làm điều đó đúng cách :)

68
+1 không chạm vào bàn phím. Một phần vì dạy họ cách làm một cái gì đó quan trọng hơn là hoàn thành nó trong một tình huống cố vấn, nhưng thực sự bởi vì tôi hoàn toàn ghét mọi người ăn cắp bàn phím của tôi.
fire.eagle

3
Tôi biết điều đó đã được nói nhưng "đừng chạm vào bàn phím". Là một điểm RẤT tốt
Tom Squires

3
Tôi nhận ra rằng rất nhiều điều này chỉ là dạy cho nhà phát triển cơ sở hỏi những câu hỏi thông minh hơn. Tài nguyên tuyệt vời cho việc này: catb.org/esr/faqs/smart-questions.html
TALlama

4
Tôi đồng ý với hầu hết các điểm của bạn, có hai phần tôi rất cố gắng để dạy huấn luyện viên và những người khác có trách nhiệm phát triển các dân tộc khác. Không bao giờ nói với họ làm thế nào để làm một cái gì đó. Giúp họ tự tìm ra điều đó và không bao giờ nói với họ những gì họ đã làm sai cho họ biết họ có thể cải thiện như thế nào. Cái trước vì điều đó làm tăng việc học của chúng sau vì thay vì sự tự tin yếu đi, nó có thể thúc đẩy nó
Rune FS

1
@Jae: lời khuyên dành cho người cố vấn là đừng chạm vào bàn phím của đàn em.
ftr

21

Tôi có khoảng 4 năm kinh nghiệm và tôi có thể nói với bạn từ kinh nghiệm của tôi với tư cách là một nhà phát triển cơ sở, những gì tôi ước tôi có về mặt cố vấn. Có vẻ như bạn đang thực sự mô tả loại nhà phát triển tôi đã có khi tôi bắt đầu :)

Chủ yếu bạn muốn khuyến khích họ học hỏi. Một số người nghĩ rằng sau khi học xong đại học, họ không phải đọc sách hay học nữa. Kiểu thái độ này có thể dẫn đến việc tìm kiếm các phím tắt và chỉ "hoàn thành nó".
Nhận cho họ "Lập trình viên thực dụng" và cho họ đọc nó. Cuốn sách này sẽ giúp họ nhận ra rằng lập trình là một nghề / nghề nghiệp chứ không chỉ là một công việc. Đề nghị sách cho họ đọc mỗi quý hoặc lâu hơn. Giúp họ xây dựng "danh mục kiến ​​thức" của họ (như đã đề cập trong Lập trình viên thực dụng). Tôi đánh giá cao Safari Books Online có rất nhiều sách CS / Lập trình.

Với danh mục kiến ​​thức của họ, họ sẽ biết nơi để tìm nếu họ có vấn đề. Dạy chúng xem ở đâu. Bản thân tôi đã phát hiện ra tính hữu dụng của StackOverflow gần đây (và như bạn biết, tốt hơn hết là tìm kiếm ở đây sau đó chỉ Google).

Có vẻ như bạn không thể dành nhiều thời gian với họ, nhưng Lập trình cặp rất hữu ích. Nếu bạn không thể làm điều đó, thì ít nhất hãy thực hiện đánh giá mã bằng CodeCollaborator hoặc một công cụ tương tự khác. Họ không mất nhiều thời gian như bạn nghĩ.

Kiểm tra đơn vị là rất quan trọng là tốt. Họ có thể nhanh chóng tiết lộ các thực tiễn phát triển xấu, đặc biệt nếu bạn kết hợp điều đó với sự tích hợp liên tục.


10

Đặt câu hỏi hàng đầu trở lại để điều khiển anh ta trả lời thay vì chỉ nói với anh ta (bạn cũng có thể nói với anh ta một số điều cơ bản như tên máy chủ là gì và cơ sở dữ liệu lưu trữ thông tin). Chỉ cho anh ta cách tìm câu trả lời của mình.

Và không bao giờ viết lại mã của anh ấy khi nó sai, nói cho anh ấy biết cái gì sai và mong anh ấy sửa nó. Bạn nhận được những gì bạn mong đợi. Bạn không giúp đỡ ai bằng cách khiến anh ấy phụ thuộc vào bạn.

Mã đánh giá là rất quan trọng. Và nếu bạn ghép nối chương trình, hãy để anh ấy có bàn phím thường xuyên. Ngay cả khi bạn đang nói với anh ấy những gì cần gõ, anh ấy sẽ học được từ việc gõ nhiều hơn mà anh ấy sẽ học chỉ ngồi bên cạnh bạn trong khi bạn lập trình.

Lấy một số ví dụ từ phần mềm tiêu biểu cho cách ứng dụng được cấu trúc và đi qua chúng theo từng dòng để đảm bảo anh ta hiểu tại sao mỗi dòng là cần thiết và những gì nó làm. Công việc của bạn là đảm bảo anh ấy biết các tiêu chuẩn mã hóa và cách tổ chức mã và lý do tại sao bạn (với tư cách là một công ty) làm mọi việc theo cách bạn làm.

Nếu anh ấy có một cách khác để đề nghị, hãy lắng nghe cẩn thận. Ở nơi đầu tiên anh ấy có thể đúng. Ở vị trí thứ hai, lắng nghe sẽ cho bạn biết điểm yếu của anh ấy trong sự hiểu biết là gì nếu những gì anh ấy gợi ý là không thực tế. Hơn nữa, mọi người có xu hướng tôn trọng bạn hơn nếu bạn lắng nghe họ. Khi anh ta sai, sau đó quay lại các câu hỏi hàng đầu để anh ta tự mình xem tại sao ý tưởng đó sai. NẾU anh ấy thậm chí gần như đúng, đôi khi đi với ý tưởng của anh ấy, không có gì đáng nản lòng hơn là luôn luôn nói rằng ý tưởng của bạn là vô giá trị.

Đặt câu hỏi về lý lịch của mình. Anh ta có thể biết một số điều bạn chưa có cơ hội làm việc. Nếu vậy và cơ hội sử dụng chúng xuất hiện, hãy hỏi anh ấy những câu hỏi về kiến ​​thức của anh ấy.

Nếu ứng dụng của bạn hoàn toàn cũ, nó có thể có một số "gotchas" lén lút hơn so với người mới sẽ không có cách nào để biết. Vì vậy, khi anh ấy bắt đầu làm việc trên một khu vực nơi bạn có một hoặc nhiều loại gotchas này, bạn có thể nói với anh ấy về chúng khi anh ấy đang tăng tốc trước khi mã hóa, sau đó nhìn xem liệu anh ấy có rơi vào gotcha khi anh ấy mã hóa không.

Cuối cùng, bạn có được sự tôn trọng một phần bằng cách tôn trọng. Hãy đối xử với mọi người mà bạn cố vấn tôn trọng. Đừng làm cho họ cảm thấy bị coi thường hoặc ngu ngốc. Họ sẽ lắng nghe bạn nhiều hơn nếu bạn đối xử với họ một cách tôn trọng.


1
Gần giống với câu trả lời tôi sẽ tự đưa ra, nhưng tôi cũng nói thêm: Hãy để đàn em mắc lỗi (tạo cơ hội để làm cho chúng đồng đều) vì sai lầm mang lại cơ hội tốt nhất để học hỏi. Thất bại kích thích một kích thích cảm xúc có nhiều khả năng dẫn đến sự liên kết trí nhớ khuyến khích học tập, và hy vọng đàn em của bạn sẽ được khuyến khích bởi những thất bại của họ để đặt nhiều câu hỏi hơn. Tôi thường nói với các đàn em của mình rằng ban đầu tôi vẫn cố gắng để thất bại nếu họ cũng cố gắng học hỏi từ những thất bại của mình và tôi sử dụng các bài kiểm tra và đánh giá mã để hướng dẫn nỗ lực học tập của họ.
S.Robins

Đặt câu hỏi hàng đầu là một trong những kỹ thuật tốt nhất tôi đã tìm thấy để đưa ai đó đến một mức độ trưởng thành khác. Mục tiêu chính của bạn không phải là đưa họ đến câu trả lời đúng, mà là đưa họ đến một nơi mà họ có thể nhận ra câu trả lời đúng khi họ tìm thấy nó (và như vậy, có thể loại bỏ các câu trả lời sai trên đường đi.)
gai

1
@ S.Robins, tôi đã thấy rằng nó cũng giúp chỉ ra rằng bạn biết công cụ này vì những sai lầm bạn đã rơi vào.
HLGEM

8
  • Tôi luôn đảm bảo rằng nhà phát triển muốn sự giúp đỡ của tôi và tôi hết sức cẩn thận để không đi sâu vào giải thích hơn sự kiên nhẫn của họ có thể chịu đựng được. Giống như mọi người, tôi yêu âm thanh của giọng nói của chính mình!
  • Tôi coi họ là bình đẳng, và đảm bảo hỏi ý kiến ​​của họ thường xuyên khi tôi tắt âm thanh.
  • Bắt họ làm điều gì đó đúng và cho họ biết.
  • Tôi luôn học được điều gì đó khi tôi làm điều này đúng - về nghề của tôi, về nghề nghiệp của tôi, về nhà phát triển và về giảng dạy.
  • Bài học đầu tiên luôn là: khi nào bạn biết bạn đã thử nó quá lâu. Nhiều người tự hào trong việc tìm ra câu trả lời của riêng mình và đốt thời gian quý giá đi theo vòng tròn.

Re: "Bắt họ làm điều gì đó đúng": Tôi không chắc là tôi đồng ý với điều này, vì nó ngụ ý rằng bạn luôn nhìn qua vai họ, hoặc ít nhất, thường xuyên kiểm tra họ. Có thể có một số mối quan hệ khi cần thiết, nhưng tôi không nghĩ mối quan hệ cố vấn / bảo trợ là một trong số đó; và nó mâu thuẫn với lời khuyên tuyệt vời của bạn để "coi chúng là bằng nhau".
ruakh

Ruak, bạn làm cho một điểm tuyệt vời. Tôi đã được người quản lý của mình dạy rằng khi tôi mới trở thành người quản lý (anh ấy là người cố vấn của tôi, nhưng anh ấy đến từ Brooklyn ...) và tôi chưa bao giờ đặt câu hỏi cho từ ngữ cho đến bây giờ. Một cách thích hợp hơn: "Lưu ý điều gì đó đúng về những gì họ đang làm." Tôi dẫn đầu với điều đó. Khi vấn đề 'không thể tránh khỏi 1' không thể tránh khỏi xảy ra với các lập trình viên C, tôi có thể nhận xét rằng việc xây dựng vòng lặp của cô ấy nhỏ gọn và được nhận xét tốt, sau đó yêu cầu cô ấy đưa tôi qua logic. Cảm ơn.
Thomas McNamee

OK, vâng, tôi đang ở trên đó. +1. :-)
ruakh

7

Tôi là một nhà phát triển cơ sở và tôi nghĩ rằng người cố vấn của tôi xử lý những điều này rất tốt. Nói chung, anh ấy sẽ cho tôi biết một vài cách để làm một cái gì đó, nhưng không phải làm thế nào để làm điều đó. Sau đó, tôi thường ngồi đó và thử cả hai cách, và quyết định đó là giải pháp sạch nhất cho vấn đề.

Ngoài ra, nếu anh ấy đang làm điều gì đó có ích cho tôi, anh ấy sẽ gọi cho tôi chỉ để xem qua những gì anh ấy đang làm và tại sao.

Điều này dẫn đến một lượng nhỏ thời gian dành cho tôi và về cơ bản có nghĩa là tôi phải tự học các câu trả lời đúng và cách thực hiện mọi thứ. Tất nhiên, nếu tôi gặp khó khăn, anh ấy sẽ ở đó để giúp đỡ nhưng đây là một vài lần. Chỉ sau 5 tháng làm việc với anh ta, tôi có thể có được nhiều kiến ​​thức về mọi thứ hơn toàn bộ khóa học đại học của tôi.

Điều quan trọng cần nhớ là tôi chỉ là một cá nhân và điều này làm việc tốt cho tôi vì tôi là ai và anh ấy như thế nào. Đó là về việc tìm kiếm một cấu trúc phù hợp sẽ giúp cả hai bạn.


5
+1 Tôi đã học được nhiều hơn về công việc sau đó tôi có thể có ở Đại học, chỉ vì mọi người dành thời gian để dạy tôi.
James Khoury

7

Tùy thuộc vào nhiệm vụ được giao, tôi muốn thử một vài cách tiếp cận khác nhau:

  • Hỏi họ những gì họ sẽ cố gắng tiếp theo để hoàn thành nhiệm vụ. Điều này có thể đưa ra ý tưởng về việc từ "Tôi không biết phải làm gì" đến "Chà, tôi sẽ thử loại này nhưng ..." là về mặt ý tưởng của riêng họ có thể hữu ích cho điểm xuất phát .

  • Hãy xem nhanh những gì họ muốn làm và đưa ra gợi ý để họ tìm ra vấn đề. Điều này thay vì đưa ra câu trả lời, "Chỉ cần lấy ra dòng mã này", đề nghị họ xem xét những gì đang có và tất cả đều cần thiết.

  • Nếu cặp vợ chồng đầu tiên không đi làm, thì tôi sẽ cố gắng khiến họ làm theo chỉ dẫn của tôi về những việc cần làm để giải quyết vấn đề. Đây là bước tiếp theo trong tiến trình mà nếu họ không biết bắt đầu từ đâu và gợi ý không hoạt động, đây là điểm tiếp theo.

  • Cuối cùng, nếu không có gì khác hoạt động thì tôi sẽ làm việc cho họ nhưng tôi sẽ cố gắng tránh điều này càng nhiều càng tốt vì đây là cách mà một người thân mật biết một hệ thống được tạo ra khi ai đó có thể xem công việc giảm tải vào tôi cho hệ thống này mà tôi dường như biết rất rõ.


+1 Tôi sẽ viết một cái gì đó nhưng điều này tổng hợp nó theo cách tiếp cận của tôi.
Jason Sebring

5

Một điều tôi đã làm ở đây trong công việc mà tôi thấy thực sự hữu ích là thiết lập một diễn đàn (ví dụ PHPbb) cho Hỏi và trả lời nội bộ, và tuân theo quy tắc rằng nếu câu hỏi và / hoặc câu trả lời mất hơn 5 phút thì nên hỏi và trả lời qua diễn đàn Những lợi ích:

  • Nó buộc các nhà phát triển đàn em phải nêu rõ câu hỏi, điều này giúp dễ trả lời hơn, không kể đến những lần anh ta tự tìm câu trả lời, chỉ bằng cách suy nghĩ thêm một chút về nó
  • Nó tránh các câu hỏi trùng lặp, vì nhà phát triển cơ sở nên bắt đầu bằng cách tìm kiếm các câu hỏi tương tự đã được thực hiện
  • Nó giúp xây dựng một nền tảng kiến ​​thức sẽ hữu ích cho việc tuyển dụng trong tương lai và để ghi lại nhiều điều nhỏ nhặt có thể bị mất theo thời gian.

4

Tôi sẽ nắm bắt xu hướng ở đây và đề nghị bạn không cố gắng khuyến khích các nhà phát triển cơ sở tìm hiểu cách tự tìm câu trả lời. Đây trông giống như một trò chơi "Tôi có nó nhưng tôi sẽ không đưa nó cho bạn."

Thay vào đó, hãy kết hợp với họ trong việc tìm câu trả lời. Dù sao bạn cũng sẽ google nó, vì vậy hãy làm điều đó trong khi ngồi với họ. Họ sẽ chọn rằng đây là cách để tìm câu trả lời.

Nếu bạn hợp tác chặt chẽ với họ, họ sẽ chọn cách sử dụng IDE đúng cách; Làm thế nào để bình thường hóa một cơ sở dữ liệu; làm thế nào để loại bỏ mã của bạn ... bất cứ điều gì bạn biết là đáng để biết.

Các chìa khóa là: một - để làm cho bạn có sẵn cho họ để họ có thể thấy cách bạn làm việc. Và hai - để nói to tại sao bạn đang làm những gì bạn đang làm. "Mã này lặp lại chính nó, vì vậy tôi sẽ cấu trúc lại nó," không "sử dụng phương thức trích xuất trên ba dòng đó."


Tôi không tin rằng bạn đang làm khuynh đảo xu hướng. Đây là một mẹo tốt; để làm việc với họ và chỉ cho họ cách bạn giải quyết vấn đề (mặc dù, người ta có thể phải giả vờ rằng họ không biết câu trả lời đã [không che giấu] để hiển thị quá trình tìm kiếm nó).
Josh Johnson

Và để rõ ràng, tôi không có ý định che giấu kiến ​​thức. Nhưng nó đã trở nên rõ ràng rằng những gì tôi biết đang bị lợi dụng (một cách có ý thức hoặc vô thức). Và tôi không nói về một số hang động ẩn sâu của công nghệ chúng ta đang sử dụng; Tôi đang nói về sự khác biệt giữa một đối tượng nguyên thủy và một đối tượng, hoặc một biến đối tượng và cục bộ hoặc một thông báo lỗi cho biết chính xác lỗi đó là gì và bắt đầu tìm kiếm nó ở đâu. (để tham khảo, học trò hiện tại của tôi có 5 năm kinh nghiệm chuyên môn; tôi không nghĩ mình không hợp lý.)
Josh Johnson

4

Tôi chỉ phải đào tạo một lập trình viên cơ sở một lần. Đó là để giúp duy trì một hệ thống tôi đã xây dựng. Mục đích cuối cùng là giao toàn bộ hệ thống cho anh ta.

Sau một thời gian ngắn mà anh ta theo dõi tôi, tôi đã ném anh ta vào lửa. Tôi sẽ phân công các trường hợp cho anh ta, và hy vọng chúng sẽ được hoàn thành. Nếu anh ta gặp rắc rối, tôi sẽ nhờ anh ta giải thích vấn đề là gì, và anh ta đã nhìn vào đâu. Sau đó tôi sẽ tư vấn cho anh ta trong các điều khoản chung nhất, nơi để tìm tiếp theo. (Ứng dụng nào, có thể xem mô-đun nào, v.v.). Tôi sẽ không bao giờ để anh ta lúng túng, nhưng tôi cũng sẽ không bao giờ làm bất kỳ công việc nào. Chỉ cung cấp hướng. Nếu anh ấy vẫn gặp rắc rối, tôi sẽ chỉ nhún vai và nói "Bắt đầu truy tìm mã". Và mỗi khi tôi nói điều đó, anh ấy sẽ co rúm người lại - biết rằng anh ấy đang tập thể dục tẻ nhạt. Nó khiến anh ta phát điên, bởi vì cả hai chúng tôi đều biết tôi có thể tìm ra vấn đề trong 10 phút nếu tôi chỉ cần rời khỏi mông và giúp đỡ.

Nhiều năm sau, anh ấy đã chuyển sang những thứ lớn hơn và bây giờ anh ấy đang đào tạo đàn em của mình. Và câu chuyện yêu thích của anh ấy là làm thế nào tôi luôn bảo anh ấy "theo dõi mã", và làm thế nào những bài tập truy tìm mã đó là rất quan trọng để biến anh ấy thành lập trình viên mà anh ấy có ngày hôm nay.


3

Bất cứ khi nào tôi được hỏi một câu hỏi mà tôi biết có thể được giải quyết bằng một tìm kiếm nhanh trên Google, tôi sẽ tìm tài liệu hoặc một bài viết tương đối và chuyển tiếp câu hỏi đó cho người đặt câu hỏi.

Biết nơi để tìm kiếm mọi thứ là một kỹ năng quan trọng và đôi khi khó khăn hơn bạn nghĩ đối với một nhà phát triển mới. Họ thậm chí có thể không biết những gì họ đang tìm kiếm, và đây là lúc bạn cần giúp đỡ họ.

Khi có trong tay, các bài báo và tài liệu sẽ buộc họ đọc về giải pháp thay vì vuốt các nhà phát triển khác để có câu trả lời nhanh chóng.

Điều này sẽ thực hiện như sau:

  • Lấy một số gánh nặng của các nhà phát triển dày dạn.
  • Buộc các nhà phát triển mới phải học hỏi.
  • Hạnh phúc cho tất cả.

Đôi khi bạn chỉ cần cho họ một tình yêu bền bỉ, đặc biệt là nếu họ không muốn học. Đừng cho họ câu trả lời, nhưng hãy chắc chắn rằng bạn chỉ cho họ đi đúng hướng.


3

Tôi sẽ khuyên bạn nên bắt đầu đưa ra các phần của bài tập thực sự bạn có và làm mọi thứ để có thể sử dụng mã của anh ấy. Nói cách khác, đào tạo anh ta như là sự thay thế cho chính mình.

Bằng cách này, bạn sẽ cam kết phân bổ thời gian để làm việc với đàn em và anh ấy sẽ có thể nhìn thấy "cuộc sống thực". Bằng cách làm việc trên các bài tập thực sự và nghe phản hồi sinh động, anh ta sẽ có thể đạt được tốc độ khá nhanh.


1

Tôi đã dạy cho mọi người nhiều môn học trong quá khứ và điều khiến tôi ấn tượng nhất là hầu hết mọi người không có bất kỳ kỹ năng giải quyết vấn đề nào . Đó là, nếu bạn chỉ cho họ một giải pháp chính xác, thì họ có thể sử dụng lại sau nếu họ nhận ra hoặc được cho biết họ cần nó.

Nhưng, rất ít tình huống trong cuộc sống là như vậy. Trừ khi công việc của bạn là một "nhà máy tinh thần" liên quan đến việc gắn widget A vào widget B với công cụ C, thì bạn sẽ cần phải có một vài mục:

  • Một hộp công cụ kỹ năng và công cụ
  • Một phương pháp giải quyết vấn đề

Ví dụ, hãy xem câu trả lời này tôi đã đăng . Điều đó bao gồm phương pháp giải quyết vấn đề mà nhiều người không có . Đại học đã không dạy điều này cho bất cứ ai trong chương trình CompSci, bạn đã biết hoặc tự mình tìm ra nó.

Một khi các dev nhỏ hiểu cách giải quyết vấn đề, họ cần một bộ công cụ để làm việc đó.

  • Debugger (Cao đẳng không bao giờ đề cập đến điều này)
  • Hồ sơ
  • Trình soạn thảo văn bản
  • Shell (và các dụng cụ liên quan)
  • Tài nguyên (sách, google, SO, manpages)

Xác định những gì còn thiếu cho nhà phát triển cơ sở và bạn có thể giúp họ cải thiện. Chỉ cần lưu ý rằng một số người thực sự không quan tâm đến việc học cách giải quyết vấn đề của riêng họ và chỉ muốn một giải pháp "rõ ràng từng bước" được trao cho họ. Đây không phải là nhà phát triển tốt.

Hy vọng rằng, bạn sẽ không có bất kỳ thứ gì trong số đó. Nếu bạn làm thế, hãy nhận ra rằng dù bạn có dành bao nhiêu thời gian đi chăng nữa, họ sẽ không tự giúp mình. Nó sẽ đòi hỏi nỗ lực, và sẽ dễ dàng hơn khi chỉ yêu cầu bạn làm điều đó cho họ. Nó tương tự như vấn đề phúc lợi, và được giải thích bằng lý thuyết kinh tế.

Tự giác ngộ cho biết mọi người sẽ coi những gì họ xem là lựa chọn có lợi nhất trong bất kỳ tình huống nào. Lưu ý rằng đó là những gì họ xem. Tôi thấy điều quan trọng nhất là tự lập và học hỏi. Vì vậy, tôi tự làm mọi thứ. Nhưng những người khác có thể thấy rằng họ chỉ cần cung cấp mã làm việc trước hạn chót. Vì vậy, họ tìm kiếm phương pháp ít tốn kém nhất để làm như vậy. Bằng cách cung cấp cho họ "những thứ miễn phí", họ cần nỗ lực hết sức để hoàn thành mục tiêu của mình. Cho đến khi bạn loại bỏ cái nạng đó, chúng sẽ không phát triển.


1

Tổ chức của bạn như bạn mô tả nó rất khác với tôi. Tôi đang ở trong công việc của đàn em và tôi coi đó là vai trò của mình để đánh giá. Vì vậy, rất nhiều là khác nhau.

Một điều mà tôi muốn khuyên bạn nên làm bằng mọi cách, đó là thường xuyên ghé thăm bàn của họ trong hai tuần đầu tiên một cách hoàn hảo. Một cái gì đó như ba lần một ngày trong tuần đầu tiên, giảm dần.

Thông điệp tôi cố gắng gửi theo cách này là tôi quan tâm đến năng suất của họ. Tôi chắc chắn rằng họ không bị mắc kẹt. Tôi đảm bảo họ tuân theo các quy tắc và không phát minh lại bánh xe. Tôi dạy họ cam kết thường xuyên nhất có thể. Tìm hiểu chúng để phát triển gia tăng và suy nghĩ về thiết kế tăng dần.

Cơn ác mộng tồi tệ nhất của tôi là các nhà phát triển mỗi ngày nói với bạn rằng họ chỉ cần một ngày nữa để hoàn thành tính năng của họ. Sau nhiều tuần trì hoãn, bạn nhận được một thiết kế quá phức tạp, bị hack từ đầu bởi tác giả của nó. Các tính năng lỗi không được yêu cầu bổ sung, được đưa vào hỗn hợp để bù đắp cho sự chậm trễ và bởi vì chúng là một tác dụng phụ miễn phí của thiết kế.

Tôi tin rằng nhiều nhà phát triển đang nghiêng về phương pháp này. Nếu bạn tự mình rời đi với một nhiệm vụ compex, đó là một phản ứng tự nhiên để cố gắng chứng minh bạn có thể tự làm điều đó. Nhưng đó là phản ứng sai. Chất lượng là tinh thần đồng đội, và càng học sớm thì càng tốt.


1

Các câu trả lời khác là rất tốt, nhưng tôi muốn bình luận về một câu này.

Gần đây và trong quá khứ, chúng ta đã có những người bắt đầu ở đây, những người dường như có thái độ đối với sự phát triển / lập trình khác với tôi và khó để tôi hòa giải; họ dường như trích xuất thông tin vừa đủ để hoàn thành nhiệm vụ nhưng không thực sự học hỏi từ nó.

Hầu hết mọi người muốn biết làm thế nào để làm một cái gì đó. Thái độ này là tốt ngay từ đầu khi bạn choáng ngợp với việc học những điều mới và học cách làm công việc của bạn.

Hiếm có những người muốn biết tại sao một cái gì đó được thực hiện. Đây là những người mà các nhà quản lý thông minh muốn, ngay cả khi họ khó quản lý.

Một số người mã để được trả tiền tốt. Những người khác vui vẻ chấp nhận tiền để mã hóa. Làm việc với những người có niềm đam mê thiết kế và mã hóa sẽ tốt hơn nhiều. Thật không may cho tôi, nó cũng khá hiếm. Ít nhất cho đến khi tôi tìm thấy Stack Overflow.


1

Một điều cần chú ý, đối với những người cảm thấy phấn khích trước viễn cảnh thực hiện tất cả những lời khuyên này cho các nhà phát triển cơ sở: đảm bảo quản lý của bạn hiểu những gì đang diễn ra.

Dạy người khác là công việc khó khăn, nói chung. Nó tập trung và tập trung, lập kế hoạch và nỗ lực, và hầu hết tất cả đều cần có thời gian. Bất cứ cách tiếp cận nào bạn thực hiện, nếu bạn đang giảng dạy và tư vấn theo bất kỳ cách nghiêm túc nào, nó sẽ ăn vào thời gian của bạn.

  • Nếu quản lý của bạn thuê các nhà phát triển ít kinh nghiệm với mong muốn các nhà phát triển cấp cao sẽ đảm nhận nhiệm vụ đào tạo, hãy đảm bảo rằng điều đó rõ ràng. Tìm hiểu khung thời gian sẽ là gì và đảm bảo rằng lịch trình phát triển của bạn phản ánh thời gian và nỗ lực dành cho đào tạo. Hãy chắc chắn rằng quản lý có một số kế hoạch để đánh giá sự thành công của những nỗ lực cố vấn tại một số thời điểm đã thỏa thuận. (Tất nhiên, nếu họ thuê các nhà phát triển cần giảng dạy và tư vấn, nhưng quản lý không có kế hoạch cho nó, thì đó rõ ràng là một vấn đề nghiêm trọng.)

  • Không phải ai cũng là một giáo viên hay người cố vấn tốt, và không phải ai cũng muốn trở thành. Tôi không có nghĩa là âm thanh giòn hoặc đắng; Tôi thích giảng dạy, rất nhiều. Nhưng thật ngớ ngẩn khi hy vọng rằng mọi người sẽ giỏi về điều đó (mặc dù tài năng của họ), chúng ta cũng không thể hy vọng mọi người sẽ tận hưởng quá trình này (hãy nhớ rằng, điều đó không dễ dàng). Hơn nữa, nếu bạn là nhà phát triển cấp cao không thích tư vấn hoặc nếu bạn thực sự cảm thấy mình là một lựa chọn kém cho giáo viên hoặc người cố vấn, hãy đảm bảo rằng quản lý của bạn hiểu rằng kế hoạch liên quan đến bạn thực hiện các nhiệm vụ đó là một kế hoạch với lỗ hổng nghiêm trọng. Mặt khác, nếu bạn muốn trở nên giỏi trong việc giảng dạy hoặc cố vấn, đó cũng là điều cần giao tiếp.

  • Nếu việc giảng dạy và cố vấn là gánh nặng được chia sẻ không đồng đều trong dân số của các nhà phát triển cao cấp, hãy đảm bảo rằng các nhiệm vụ đó được công nhận là có giá trị đối với công ty giống như cách các thành tựu phát triển sản phẩm được công nhận.


1

Tôi sẽ cung cấp cho bạn cái nhìn của tôi về nó.

Về cơ bản, tôi học tốt khi tôi:

  1. Được đưa ra một giới thiệu chính thức cho chủ đề. Tôi không bao giờ có thể học được điều gì mới mà không có ai đó (vâng, một người) trả lời tất cả các câu hỏi tôi có về các khái niệm mới. Khi tôi đã làm xong tôi ...
  2. Lấy một quyển sách. Là người cố vấn của tôi, bạn nên có cùng một cuốn sách để tôi luôn có thể nói điều gì đó như "Này, điều đó có nghĩa gì trong chương bốn, trang 72, đoạn 6 ..." và bạn sẽ biết chính xác những gì tôi đang nói trong khoảng. Khi tôi có một cuốn sách, tôi độc lập hơn và thực sự chỉ đặt câu hỏi. Sau đó tôi...
  3. Bắt đầu một dự án cùng nhau. Đây là phần quan trọng nhất của quá trình. Đây là nơi bạn có thể bắt đầu dạy tôi về Thực tiễn tốt nhất, Thuật toán, các tính năng ngôn ngữ khó (nhưng hữu ích), v.v.

Bây giờ bạn đã nói rằng bạn có các dự án của riêng mình để chăm sóc và bạn không luôn có thời gian. Đó là lý do tại sao chúng tôi may mắn có được StackOverflow . Tôi chắc rằng họ sẽ rất vui khi giúp anh ấy gỡ lỗi mã của mình. Đối với những câu hỏi không có chủ đề ở đó, anh ta có thể hỏi ở đây.

Nói như vậy, bạn vẫn phải làm việc với anh ấy một cách thường xuyên. Một "dòng thời gian" chung nên là:

  • 1 tháng. Nên biết cú pháp cơ bản. Vẫn không độc lập khi mã hóa.
  • 3 tháng. Tại thời điểm này anh ta nên biết cú pháp như mu bàn tay của mình, và có thể giải quyết các vấn đề đơn giản một cách dễ dàng. Anh ấy độc lập hơn nhiều, chỉ là chưa hoàn toàn ở đó.
  • 6 tháng. Họ nên biết, trên hết mọi thứ khác: Thực tiễn tốt nhất, Thuật toán chung, v.v. Anh ấy có thể tự thực hiện một dự án, có thể với một chút trợ giúp từ SO.

Bên cạnh những điều trên, cách dễ nhất để khiến ai đó trở nên độc lập là cung cấp cho họ một chủ đề khó học, và không cho họ gì để giúp họ ngoài internet. Anh ta sẽ bị buộc phải tự học và anh ta sẽ biết công cụ của mình.

Sau khi anh ấy biết những gì bạn muốn anh ấy biết, hãy giải phóng anh ấy. Cho phép anh ấy đi ra ngoài và học những gì anh ấy muốn học (bạn luôn có thể nói rằng bạn muốn anh ấy tiếp tục làm việc với ngôn ngữ đó).

Tôi hi vọng cái này giúp được! Nhân tiện, hãy để anh ấy đọc điều này: Dạy cho chính bạn lập trình trong mười năm .


0

Phân biệt giữa cấp độ học tập thấp hơn và cao hơn. Nếu đó là kiến ​​thức, sự hiểu biết hoặc ứng dụng liên quan, tôi không có vấn đề gì chỉ cần đưa ra câu trả lời cho họ, với một lời giải thích ngắn gọn về cách họ có thể tìm kiếm nó vào lần tới. Đây không phải là trường học, nó không phải là gian lận và họ sẽ không dựa vào bạn như vậy mãi mãi. Chỉ cần không có kế hoạch hoàn thành bất cứ điều gì khác trong một hoặc hai tuần đầu tiên, vì vậy nó sẽ không làm phiền bạn khi bạn không làm.

Sau vài tuần đầu tiên, nếu bạn bị gián đoạn quá thường xuyên với các loại câu hỏi này, hãy sử dụng đồng hồ bấm giờ pomodoro và không trả lời bất kỳ câu hỏi nào cho đến khi kết thúc pomodoro. Google rất dễ dàng cho bạn vì bạn biết phải tìm kiếm gì. Họ thường không làm như vậy, vì vậy nếu bạn phải bảo họ google một cái gì đó, hãy nói cho họ biết những thuật ngữ tìm kiếm nào sẽ sử dụng để có kết quả tốt nhất.

Nếu một vấn đề liên quan đến phân tích, tổng hợp hoặc đánh giá, tôi dành nhiều thời gian hơn cho chủ đề này. Đây là nơi bạn cung cấp lý do của bạn đằng sau các quyết định của bạn và giúp họ đưa ra kết luận tương tự. Điều này xuất hiện thường xuyên nhất trong các vấn đề về thiết kế và phong cách. Đừng chỉ bảo họ sử dụng một thiết kế nhất định, hãy cho họ thấy lý do tại sao nó vượt trội so với lựa chọn đầu tiên của họ. Hãy để họ phạm sai lầm, và để họ sửa chữa sai lầm của chính họ.


0

Tôi chưa thấy ai ở đây nhắc đến anh hùng cá nhân của tôi, Randy Pausch .

Tôi nghĩ rằng nó có thể có ích cho bất cứ ai thực sự làm, giảng dạy hoặc cố vấn lập trình (hoặc thậm chí cho bất cứ ai muốn sống một cuộc sống có ý nghĩa). Bạn và / hoặc đồng nghiệp của bạn có thể thấy việc xem những bài giảng này có giá trị thời gian như tôi có, trên


-4

Tôi, với tư cách là một nhà phát triển cơ sở cảm thấy rằng nếu tôi gặp phải một vấn đề sẽ tốt hơn là đặt câu trả lời ngay lập tức và dành thời gian để hiểu cách giải quyết nó.

Tôi đã trả tiền. chủ nhân của tôi không mong đợi tôi trả tiền cho việc học. tôi dự kiến ​​sẽ làm một công việc vào cuối ngày. Không có điểm lãng phí thời gian trong một môi trường làm việc cố gắng khám phá một giải pháp. Đó là một cái gì đó tôi sẽ nhận kịp thời, hy vọng nhanh chóng nếu tôi làm tốt những gì tôi làm.


9
Bằng cách này hay cách khác, chủ nhân của bạn đang trả tiền cho bạn để học
smp7d

13
Bạn không có giá trị với nhà tuyển dụng của bạn nếu bạn không bao giờ, trở nên tốt hơn bạn là ngày bạn được thuê làm lập trình viên cơ sở.

10
Max, bạn sai rồi, trừ khi bạn có một chủ nhân nhảm nhí. Nhà tuyển dụng giỏi S pay trả tiền cho bạn để học, trong công việc, hoặc thậm chí bằng cách gửi bạn đến các hội nghị hoặc lớp học. Nếu bạn giữ thái độ hiện tại của mình, đừng mong đợi sẽ trở thành một nhà phát triển cơ sở. Các tiêu đề như đàn em / đàn anh không được trao giải dựa trên lượng thời gian bạn đã làm gì đó; nếu bạn đã làm điều tương tự trong một thời gian dài nhưng không học được thì bạn vẫn được coi là đàn em.
Andy

5
@MaxSan Vấn đề là các nhà phát triển cấp cao hiếm khi muốn cho bạn ăn. Chúng tôi đã không thuê thực tập sinh làm bộ tính giờ đầy đủ vì họ không thể tự mình tìm ra giải pháp. Chúng tôi hy vọng rằng bạn dành một chút thời gian để cố gắng tìm ra nó và chỉ khi bạn dành một khoảng thời gian hợp lý để đến yêu cầu giúp đỡ. Là một đàn anh, bạn sẽ được mong đợi giải quyết các vấn đề mà không ai có thể làm được, và bạn sẽ không thể làm điều đó nếu bạn cho ăn bằng thìa.
Andy

6
Nếu bạn muốn một giải pháp "trên một tấm", bạn sẽ không bao giờ thoát khỏi tình trạng là một nhà phát triển cơ sở. Học hỏi từ các giải pháp hoàn chỉnh được cung cấp cho bạn có thể là có thể nhưng chắc chắn nó không hiệu quả . Đó là cách bộ não hoạt động: Nếu bạn trải nghiệm cách giải quyết, không chỉ là giải pháp, bạn sẽ học được nhiều điều hơn là chỉ nghiên cứu giải pháp mà người khác trình bày cho bạn.
perdian
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.