Làm thế nào để trở thành một người chơi nhóm tốt? [đóng cửa]


19

Tôi đã lập trình (một cách ám ảnh) từ khi tôi 12 tuổi. Tôi khá am hiểu về các ngôn ngữ ngoài kia, từ lắp ráp, đến C ++, đến Javascript, đến Haskell, Lisp và Qi. Nhưng tất cả các dự án của tôi đã được một mình.

Tôi có bằng kỹ sư hóa học, không phải CS hay kỹ sư máy tính, nhưng lần đầu tiên vào mùa thu này, tôi sẽ thực hiện một dự án lập trình lớn với những người khác và tôi không biết phải chuẩn bị như thế nào. Tôi đã sử dụng Windows suốt đời, nhưng dự án này sẽ rất đơn giản, vì vậy tôi đã mua một chiếc máy Mac gần đây với hy vọng làm quen với môi trường.

Tôi đã may mắn được tham gia một cuộc thi hackathon với một số người bạn trong năm qua - cả hai chuyên ngành CS - và thật thú vị, chúng tôi đã giành chiến thắng. Nhưng tôi nhận ra khi tôi làm việc với họ rằng quy trình làm việc của họ rất khác với tôi. Họ đã sử dụng Git để kiểm soát phiên bản. Tôi chưa bao giờ sử dụng nó vào thời điểm đó, nhưng tôi đã học được tất cả những gì tôi có thể về nó. Họ cũng đã sử dụng rất nhiều khung và thư viện. Tôi đã phải học những gì Rails đã qua đêm khá nhiều cho cuộc thi hackathon (mặt khác, họ không biết phạm vi từ vựng hay đóng cửa là gì). Tất cả các mã của chúng tôi hoạt động tốt, nhưng họ không hiểu của tôi và tôi không hiểu mã của họ.

Tôi nghe các tài liệu tham khảo về những điều mà các lập trình viên thực sự làm hàng ngày - kiểm tra đơn vị, đánh giá mã, nhưng tôi chỉ có ý thức mơ hồ về những gì chúng là. Tôi thường không có nhiều lỗi trong các dự án nhỏ của mình, vì vậy tôi chưa bao giờ cần hệ thống theo dõi lỗi hoặc kiểm tra chúng.

Và điều cuối cùng là tôi phải mất một thời gian dài để hiểu mã của người khác. Các quy ước đặt tên biến (thay đổi theo từng ngôn ngữ mới) rất khó (__mzkwpSomRidicAboustv) và tôi thấy việc ghép lỏng khó khăn. Điều đó không có nghĩa là tôi không lỏng lẻo vài thứ - Tôi nghĩ rằng tôi khá giỏi về công việc của mình, nhưng khi tôi tải xuống một cái gì đó như nhân Linux hoặc mã nguồn Chromium để xem xét, tôi đã dành hàng giờ để thử để tìm hiểu làm thế nào tất cả các thư mục và tập tin có tên kỳ lạ này kết nối với nhau. Đó là một tội lỗi lập trình để phát minh lại bánh xe, nhưng tôi thường thấy việc tự mình viết ra các chức năng nhanh hơn là dành hàng giờ để mổ xẻ một số thư viện.

Rõ ràng, những người làm việc này để kiếm sống không gặp phải những vấn đề này và tôi sẽ cần phải tự mình đi đến điểm đó.

Câu hỏi: Một số bước mà tôi có thể thực hiện để bắt đầu "tích hợp" với mọi người khác là gì?

Cảm ơn!


Tôi muốn nói bước đầu tiên là học lập trình để bạn ít nhất có thể nói cùng một ngôn ngữ.
Giàn

Không phải là câu hỏi nhiều hơn về cách bạn sẽ tích hợp vào một dự án với một cơ sở mã lớn hơn so với trước đây?
Louis Kottmann

3
"... Dự án này sẽ rất đơn giản, vì vậy tôi đã mua máy Mac ..." Tôi đã hiểu nhầm điều gì đó, hay đây là một lỗi đánh máy?
Stu Pegg

4
@StuartPegg: Mac OS X là một * nix, hoàn chỉnh với thiết bị đầu cuối shell tích hợp, mặc dù tôi khuyên bạn nên cài đặt MacPorts trên nó nếu bạn muốn sử dụng phần * nix rất nhiều.
Dave Sherohman

1
Tôi nhớ một lần trong phim American Pie có câu "bạn không ghi điểm cho đến khi bạn ghi bàn". Vì vậy, như tGilani đã nói Trở thành một phần của một đội. :)
asakura89

Câu trả lời:


13

Tôi nghĩ rằng bạn đang có một chút vừa lo lắng vừa hào hứng khi làm việc cho một nhóm.

Không ai trong chúng tôi học được cách làm việc trong một nhóm hoặc nhóm từ sách hoặc được đưa ra bất kỳ bước nào của em bé hoặc "Hướng dẫn về người làm việc trong nhóm".

Chúng tôi chỉ học cách làm việc VỚI các nhóm bằng cách làm việc trong các nhóm.

Tất cả mọi thứ bạn đã nghe về các lập trình viên chuyên nghiệp, sẽ rơi vào vị trí dần dần khi bạn làm việc trong nhóm .. Bạn sẽ tìm hiểu về tất cả từng người một như kiểm soát phiên bản, kiểm tra đơn vị, v.v.

Đối với tôi, điểm mấu chốt là

Trở thành một phần của một nhóm.


8

Tôi sẽ chọn ra một số câu của bạn và đưa ra một vài điểm chung:

(mặt khác, họ không biết phạm vi từ vựng hoặc đóng cửa là gì). Tất cả các mã của chúng tôi hoạt động tốt, nhưng họ không hiểu của tôi và tôi không hiểu mã của họ.

...

Tôi nghe các tài liệu tham khảo về những điều mà các lập trình viên thực sự làm hàng ngày - kiểm tra đơn vị, đánh giá mã, nhưng tôi chỉ có ý thức mơ hồ về những gì chúng là. Tôi thường không có nhiều lỗi trong các dự án nhỏ của mình, vì vậy tôi chưa bao giờ cần một hệ thống theo dõi lỗi hoặc kiểm tra chúng.

...

Tôi dành hàng giờ cố gắng để tìm hiểu làm thế nào tất cả các thư mục và tệp có tên kỳ quặc này kết nối với nhau ... Tôi thường thấy việc tự mình viết ra chức năng này nhanh hơn là dành hàng giờ để mổ xẻ thư viện.

Tôi nghĩ rằng điều duy nhất lớn nhất mà bạn sẽ cần phải học là:

Đối với một tiêu chuẩn nhất định về khả năng của nhà phát triển, một nhóm các nnhà phát triển thực hiện ít hơn ncông việc mà một trong số các nhà phát triển có thể làm một mình - nhưng họ vẫn làm nhiều hơn bất kỳ ai .

Lý do rất đơn giản: khi làm việc với người khác, bạn phải dành một chút thời gian để trao đổi thông tin với những người khác; trong khi đó khi làm việc một mình, việc trao đổi thông tin diễn ra trong đầu bạn. Mà tự nhiên là nhanh hơn.

Điều quan trọng khác là:

Một số đồng nghiệp của bạn sẽ ít có khả năng hơn bạn, chắc chắn trong một số kỹ năng; một số thậm chí sẽ ít có khả năng hơn bạn trong tất cả các kỹ năng

Với hai ý tưởng này, mọi thứ tôi đã trích dẫn ở trên đều có ý nghĩa. Rất nhiều người không 'đóng cửa'. Các đánh giá kiểm tra và mã là để đảm bảo chất lượng và giảm rủi ro khi mã được tạo ra bởi một nhóm người có khả năng hỗn hợp . Theo dõi lỗi là bởi vì khi bạn sản xuất đủ hệ thống lớn, lỗi là không thể tránh khỏi. Và các thư viện vô tận với các quy ước của họ là bởi vì không có quy ước, chỉ có quá nhiều mã để học hoặc viết nó mỗi lần bạn cần.

Thực sự, tôi nghĩ cách duy nhất để học cách làm việc trong nhóm là thực sự làm điều đó; nhưng hy vọng những điều trên sẽ giúp bạn chuẩn bị tinh thần. Chúc may mắn!


4

Cách hiệu quả nhất là trở thành một phần của một nhóm.

Tham gia một nhóm có vẻ khó khăn, vì tôi hiểu rằng bạn chưa phải là một phần của nhóm, giống như nhiều sinh viên và nhiều người có công việc là làm việc mà không có nhà phát triển nào khác ở xung quanh.

Tôi khuyên bạn nên tham gia vào một dự án nguồn mở rất tích cực và ưu tiên liên lạc thường xuyên trên các kênh mở hiện đại (theo dõi vấn đề, danh sách gửi thư, wiki, v.v.). Giao tiếp mở rất quan trọng vì có thể bạn sẽ bắt đầu bằng cách quan sát cách người khác tương tác, vì vậy hãy tránh các dự án dựa vào email giữa các nhà phát triển cốt lõi hoặc IRC không được lưu trữ.

Thích một dự án có vẻ như được chào đón, với một số người đóng góp khá thường xuyên , thay vì một dự án có 1 người làm mọi thứ. Ngoài ra, thích các dự án mà bất kỳ ai cũng được phép chạm vào mọi thứ (thay vì mỗi nhà phát triển có khu vực giới hạn của họ), vì nó thú vị hơn và cung cấp nhiều cơ hội hơn để giao tiếp.

Ổ cắm không biết xấu hổ: bạn rất hoan nghênh ở đây !


1

Tôi sẽ không nhắc lại những gì mọi người đã nói về tác dụng của nó "just do it", nhưng tôi sẽ thêm một điểm nữa mà tôi chưa thấy đề cập: một người quản lý giỏi sẽ thực sự giúp bạn hòa nhập với nhóm.

Mặc dù bạn có thể có tất cả những thứ phù hợp với bạn cho phần lập trình của công việc, bạn có thể thiếu một số thứ liên quan đến phát triển phần mềm và liên cá nhân hơn. Một người quản lý giỏi sẽ hướng dẫn bạn thực hành các nhóm (cả về kỹ năng mềm và kỹ năng cứng) để giúp bạn tạo gel, và cũng hy vọng sẽ cho bạn biết nếu bạn đã làm, hoặc làm, điều gì đó trái ngược với những thực tiễn đó; bởi vì bạn không thể sửa cái gì đó mà bạn không biết đã bị hỏng.


0

Một mẹo khác tôi muốn đưa ra cho bạn là không có hai đội nào giống nhau và thậm chí một đội hiện có sẽ thay đổi khi một hoặc nhiều người tham gia.

Một nhóm bắt nguồn từ sự tương tác của các cá nhân làm quen với nhau và cố gắng hiểu cách làm việc cùng nhau cho đến khi họ tìm thấy một cách chung (xem ví dụ các giai đoạn phát triển nhóm của Tuckman ).

Vì vậy, lời khuyên của tôi sẽ không phải là cố gắng và tìm câu trả lời cho câu hỏi của bạn bây giờ, mà hãy xem điều gì xảy ra khi bạn thực sự bắt đầu làm việc trong nhóm mới. Một số vấn đề của bạn có thể được các đồng nghiệp coi là không có vấn đề, một số vấn đề khác sẽ được coi là có liên quan và bạn sẽ có khả năng thảo luận chúng cùng nhau hoặc thậm chí thúc đẩy quan điểm của riêng bạn về chủ đề này. Và cuối cùng, có lẽ bạn cũng sẽ đối phó với các khía cạnh bạn chưa từng nghĩ đến.

Tôi đồng ý với ElYusubov rằng bạn cần rất nhiều kiên nhẫn và dành cho bản thân và các đồng nghiệp mới một số nhóm để học cách làm việc cùng nhau cho đến khi bạn trở thành một nhóm. Nếu bạn luyện tập một số môn thể thao đồng đội, bạn đã có kinh nghiệm này rồi.

Một bình luận cuối cùng về việc dành nhiều thời gian để hiểu mã của người khác. Làm việc trong một nhóm có nghĩa là bạn sẽ làm việc với mã của người khác và các nhà phát triển khác sẽ làm việc với mã của bạn. Đôi khi mã quá phức tạp để được viết lại từ đầu. Một giải pháp điển hình là yêu cầu nhà phát triển ban đầu xem xét các thay đổi của bạn, để bạn tự tin hơn một chút rằng bạn không vi phạm bất cứ điều gì trong mã của họ.

Đây là một bước tiến lớn trong quá trình chuyển đổi từ một lập trình viên solo sang một lập trình viên nhóm: bạn làm việc với mã bạn chỉ hiểu được một phần và bạn phải làm quen với nó. Điều này liên quan đến việc giao tiếp nhiều hơn với các đồng nghiệp của bạn, rất nhiều sự tôn trọng (vâng, các quy ước đặt tên kỳ lạ cho các biến của họ, vậy thì sao?) Và tin tưởng lẫn nhau (mặc dù chúng có phong cách mã hóa khác nhau, tôi biết họ cung cấp mã làm việc) .


0

Trở thành một thành viên tốt trong nhóm có nghĩa là giao tiếp không sợ hãi, tin tưởng vào các trường đại học của bạn và vượt qua những trở ngại trong một dự án với tư cách là một nhóm vàdeliver project as a team.

Phải mất thời gian , kiên nhẫn và đòi hỏi phải học để cảm thấy thoải mái và tự tin như một lập trình viên. Cũng đúng là KHÔNG phải mọi lập trình viên đều là một người chơi Đội giỏi và những người chơi nhóm chia sẻ thành công của họ và học bài học từ những thất bại.

Nó sẽ hữu ích để làm nổi bật một số nhân vật của thành viên nhóm tốt .

a) Thành viên nhóm tốt là người có định hướng mục tiêu thay vì tự định hướng.

b) Phẩm chất: suy nghĩ nhiều hơn về bức tranh lớn hơn là tự hài lòng. Đây là điểm mấu chốt. Tất cả các phẩm chất khác (như độ tin cậy, giao tiếp mang tính xây dựng) được thừa hưởng từ điều này

c) Cách cải thiện: Cố gắng đủ điều kiện làm thế nào bạn tương tác với nhóm của bạn trong ngày, xác định điểm tốt và điểm xấu, chú ý đến họ trong các cuộc họp tiếp theo. Ngoài ra, hãy cố gắng nhìn vào các quyết định của Đội từ nhiều góc độ. Đặt mình vào vai trò của người khác, nghĩ xem bạn có thể ảnh hưởng đến công việc của người khác như thế nào.


0

Đầu tiên, xin chúc mừng vì bạn là người có vẻ thực sự thích lập trình. Tuy nhiên, lập trình không phải là khởi đầu và kết thúc của việc cung cấp các hệ thống hữu ích. Bạn sẽ có một thử thách trước mặt và điều đó sẽ tùy thuộc vào bạn cho dù bạn quay lại các chương trình sở thích hay tiếp tục sự nghiệp nơi bạn có thể làm những gì bạn yêu thích và được trả tiền cho nó.

Bạn bị thiệt thòi ở chỗ bạn không được giáo dục về xây dựng phần mềm. Trong nền giáo dục đó, có một số điều được dạy (không chỉ là cách lập trình) mà đối với các sinh viên tốt nghiệp CS và các nhà phát triển phần mềm có kinh nghiệm sẽ là bản chất thứ hai. Không phải là nó xuất hiện thường xuyên ở nơi làm việc (mặc dù nó đã từng làm cho tôi một lần) nhưng NP-hard là một ví dụ về thuật ngữ họ có thể hiểu còn bạn thì không. Bạn có thể thiếu bất kỳ nền tảng nào trong lý thuyết chính thức đằng sau tính toán, nhưng điều đó không sao, miễn là bạn sẵn sàng tìm hiểu về nó. Có lẽ một bậc thầy trong CS trong tương lai của bạn? Nghe có vẻ như một số mã của bạn có thể là thành ngữ, theo nghĩa là bạn có một phong cách lập trình có vẻ rõ ràng đối với bạn, nhưng đối với người khác thì không. Hãy chú ý trong các đánh giá mã và sẵn sàng chấp nhận những lời chỉ trích và học hỏi. Điều này sẽ mất công, và bạn có thể thất vọng,

Những gì bạn đã đi cho bạn là vô giá. Bạn thực sự xuất hiện để thưởng thức lập trình. Tôi nghĩ bạn cũng sẽ thích các khía cạnh khác của việc phát triển các hệ thống, như thiết kế, kiến ​​trúc, thử nghiệm, tối ưu hóa, v.v. Lập trình là một phần của câu đố và bạn sẽ phải học các kỹ năng khác để trở thành nhà phát triển phần mềm. Bên cạnh Hackathons, rất nhiều công việc liên quan đến giao tiếp, học hỏi lẫn nhau, lắng nghe và lập kế hoạch. Tôi đã làm việc với nhiều người tốt nghiệp CS và thích phát triển phần mềm hơn là bán ô tô hoặc sơn nhà, nhưng không có tình yêu thực sự với 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.