Làm cách nào tôi có thể tự khởi động một cộng đồng phát triển phần mềm tại trường của mình?


14

Tôi là một sinh viên tại Đại học Nam Florida, người thất vọng với môi trường giáo dục trong chương trình Khoa học Máy tính. Ngay bây giờ, tôi đang tham gia "Thiết kế chương trình." Tôi nên học cách sắp xếp mã nguồn của mình thành các hàm và mô-đun để làm cho chương trình của tôi có thể đọc và duy trì được; thay vào đó, tôi đang học về mảng và đệ quy trong C. Học kỳ tiếp theo, tôi phải học "Thiết kế hướng đối tượng", được dạy qua C ++ ( rùng mình .)

Hai năm trước, tôi đã yêu thích lập trình và tôi đã học được nhiều nhất có thể kể từ đó. Viễn cảnh học thêm một lớp C ++ khiến tôi gần như rơi nước mắt. Vì lý do đó, tôi nghĩ rằng tôi sẽ thành lập một câu lạc bộ lập trình để gặp gỡ những sinh viên tham vọng tương tự, học ngôn ngữ mới, thảo luận về các chủ đề phát triển phần mềm và làm việc với các nhà phát triển sinh viên khác.

Tuy nhiên, tôi bắt đầu nhận ra rằng có thể không có bất kỳ sinh viên nào khác chia sẻ kinh nghiệm phát triển phần mềm của tôi. Không phải vì thiếu động lực mà là thiếu cơ hội: Tôi chỉ biết một lớp lập trình khác ("Ngôn ngữ lập trình") và không có lớp nào về phát triển phần mềm trong thế giới thực. Mọi người khác chỉ có kinh nghiệm viết các kịch bản tầm thường trong C và C ++.

Tôi đã nhận ra rằng nếu tôi muốn làm việc với các nhà phát triển phần mềm sinh viên khác, tôi sẽ phải tự đào tạo họ. Bây giờ, tôi đang lên kế hoạch biến câu lạc bộ thành một bootcamp phát triển phần mềm, dạy các thành viên cách phát triển phần mềm với các công cụ và ngôn ngữ hiện đại. Rõ ràng, bắt đầu một khóa học phát triển phần mềm không chính thức là một nhiệm vụ hoành tráng với nhiều cách tiếp cận có thể. Câu hỏi của tôi cho bạn, bạn đọc thân mến, là

Kế hoạch tấn công của tôi là gì?

Tôi có nên

  • Tự giảng bài cho câu lạc bộ, cố gắng cân bằng công việc của câu lạc bộ với bài tập về nhà?
  • yêu cầu giảng viên CS giảng dạy về các chủ đề trong chuyên môn của họ mà có thể ít liên quan đến các thành viên?
  • cố gắng tìm một nhà phát triển thông cảm, có kinh nghiệm trong hoặc ngoài trường, người có thể chia sẻ khối lượng công việc của tôi?
  • hiển thị các bài giảng video (từ MIT OpenC thuyếtWare , Google Tech Talks , v.v.)?
  • tổ chức hội thảo lập trình thực hành?
  • giao bài tập về nhà?
  • làm việc gì khác?

3
Tại sao bạn rùng mình khi OOP được dạy qua C ++? Bạn chỉ đơn giản cảm thấy không thoải mái khi đối phó với các ngôn ngữ cấp cao? Nếu vậy, làm thế nào bạn mong đợi để học OOP?
Cam

4
@Evan: Thành thật mà nói, nếu bạn nghĩ C ++ là ngôn ngữ cấp thấp, thì một khóa học C ++ sẽ hoàn hảo cho bạn. Bạn sẽ học được rất nhiều. C ++ có vẻ ban đầu ở cấp độ thấp cho người mới bắt đầu vì nó cung cấp các tính năng cấp thấp, nhưng bạn chắc chắn không phải sử dụng chúng. Trên thực tế, hầu hết thời gian, bạn sẽ sử dụng STL và tất cả các tính năng OOP cấp cao của nó.
Cam

10
C ++ ở cấp độ thấp so với, giả sử, Java, Ruby, Javascript, C #, v.v ... Đó là cấp độ cao so với nhiều langau khác. Có vẻ như một cái gì đó của một cuộc tranh luận vô nghĩa.
Fishtoaster

2
@fishtoaster: Tôi sẽ không nói c ++ ở mức độ thấp so với java và c #. Nó cũng cao cấp như những ngôn ngữ đó ít nhất (tôi không biết nhiều về ngôn ngữ khác). Có một lợi thế nữa là nó cũng có thể ở cấp độ thấp để bạn có được thứ tốt nhất của cả hai thế giới.
n1ckp

1
@ n1ck: Con trỏ là một vấn đề tất nhiên (tôi biết C # có chúng nhưng việc sử dụng chúng rất hiếm), quản lý bộ nhớ thủ công, không có lambdas (không biết tên C # mang lại cho chúng là gì, python sử dụng lambdas), không có thông báo gốc, tiêu chuẩn nhỏ hơn nhiều thư viện, xoay vòng bit thường xuyên hơn, biên dịch lại cần thiết cho các nền tảng khác nhau, v.v. Bạn không cần phải lắp ráp ở mức thấp hơn hai nền tảng đó.
Macha

Câu trả lời:


20

Thẳng thắn toàn bộ thái độ của bạn liên quan đến tôi. Bạn thậm chí còn không tập hợp được nhóm và bạn cho rằng bạn sẽ chỉ là người có kiến ​​thức để truyền đạt và là người sẽ quyết định nhóm sẽ làm gì.

Đặt cược tốt nhất là tập hợp các nhóm thân mật với nhau và, như một nhóm, suy nghĩ về những gì họ muốn làm. Những gì cá nhân bạn muốn làm là không liên quan về những gì nhóm muốn làm. Quyết định làm gì mà không có sự góp ý của các thành viên khác trong nhóm trước cuộc họp đầu tiên, bạn sẽ bắt gặp một tên ngốc ngạo mạn mà tôi không muốn làm việc một cách tự nguyện. Vì vậy, bạn sẽ giết nhóm trước khi nó bắt đầu.


Bạn hoàn toàn đúng; Tôi không phải tự mình xây dựng và thực hiện kế hoạch tổng thể cho câu lạc bộ. Tuy nhiên, tôi cần ý tưởng cho các hoạt động câu lạc bộ và các cuộc họp để thảo luận với phần còn lại của câu lạc bộ.
Evan Kroske

5

Vì tất cả mọi người trong câu lạc bộ của bạn đang đến một cách tự nguyện, bạn cần làm cho nó thú vị và tạo động lực. Và bài tập về nhà không chính xác là động lực.

Dạy bất cứ ai cũng khó, nhưng tại sao không thử dạy theo cách hoàn hảo với mục tiêu cuối cùng? Về cơ bản, lúc đầu, bạn có được mọi người cùng nhau và đưa ra một dự án nhóm và ngôn ngữ. Dự án cần phải thú vị và có thể hiển thị tiến độ rõ ràng nhưng không quá khó. Khi bạn đã có ngôn ngữ đóng đinh, bạn dạy họ những điều cơ bản (cú pháp, gói / không gian tên, lớp, gõ tĩnh / động, v.v.). Sau đó, bạn cung cấp cho họ các tài nguyên (sách, hướng dẫn trực tuyến, tài liệu trực tuyến), một cách dễ dàng để nắm bắt bạn và một phần cụ thể của dự án để thực hiện. Mỗi người sau đó làm việc trong dự án trong thời gian rảnh rỗi, tư vấn tài liệu và bạn khi cần.

Lợi thế của quá trình này là gì?

  • Mọi người không cảm thấy nhàm chán khi nghe bạn hoặc ai đó nói về điều gì đó trong mỗi cuộc họp
  • Mọi người học cách tự dạy, một kỹ năng thực tế rất quan trọng
  • Bạn không quá cố chấp vì bạn không phải là nguồn tri thức duy nhất
  • Bạn không cần phải biết toàn bộ ngôn ngữ trước khi bạn có thể dạy nó vì bạn chỉ cần giới thiệu chúng với ngôn ngữ. Và khi họ cần hỏi bạn về điều gì đó, bạn có thể nhanh chóng nghiên cứu nó. Tuy nhiên, bạn cần phải đi trước một chút so với những người khác, vì một số điều đòi hỏi phải biết trước 5 bước
  • Bạn đang tạo ra một cái gì đó, có xu hướng thúc đẩy mọi người

Cách duy nhất để xem nó có hoạt động hay không là dùng thử.


Một dự án nhóm sẽ là một ý tưởng tốt, nếu tôi có thể giữ thành viên câu lạc bộ dưới mười sinh viên. Quá khứ, các đội bắt đầu trở nên khó sử dụng. Tuy nhiên, tôi không thể nhận được hỗ trợ của trường đại học nếu tôi cấm sinh viên tham gia câu lạc bộ và tôi chắc chắn rằng hơn 10 sinh viên sẽ quan tâm đến việc tham gia câu lạc bộ. Câu lạc bộ hack của chúng tôi luôn có hơn ba mươi sinh viên tại các cuộc họp hàng tuần.
Evan Kroske

1
Vì vậy, nhiều hơn một dự án? Cố gắng tìm lợi ích chung giữa tất cả các thành viên trong nhóm. Cuộc họp đầu tiên khảo sát lợi ích cá nhân và sau đó cố gắng đưa ra các dự án xoay quanh các dự án đó?
Chris

4

Nhìn vào sơ đồ khóa học cho chuyên ngành của bạn , bạn thực sự đang hiểu sai những gì mong đợi trong các lớp khác nhau của một chuyên ngành Khoa học Máy tính.

Các lớp học mà bạn đang nói đến là các lớp giới thiệu đã giới thiệu cho sinh viên các khái niệm cơ bản khác nhau trong mã hóa. Có vẻ như "Khái niệm lập trình" là một giới thiệu về nghề nghiệp với tổng quan 1 tuần về tất cả các lĩnh vực cơ bản của khoa học máy tính, không có mã hóa thực tế. Từ đó, BÌNH THƯỜNG để có một khóa học giới thiệu về C và một khóa học giới thiệu khác về C ++ là BÌNH THƯỜNG cho một chuyên ngành Khoa học Máy tính. Bạn có thể tham gia chương trình với một số kinh nghiệm mã hóa, nhưng hầu hết mọi người thì không. Chương trình phải dạycác khái niệm như đệ quy và cách viết các lớp, và nạp chồng toán tử, và các mẫu và tất cả những thứ đó (không đề cập đến việc dạy về các biến, vòng lặp, câu lệnh if, v.v.), vì vậy có hai lớp được thiết kế cơ bản để dạy bạn cách viết mã trong một số ngôn ngữ lập trình. Và họ thường có những loại tên gây hiểu lầm mà các lớp học của trường đại học của bạn làm. Các lớp dạy mức độ tổ chức bạn muốn thường được đặt tên là "Kỹ thuật phần mềm" hoặc "Các mẫu thiết kế". Cái trước thường là một yêu cầu, và cái sau thường là một môn tự chọn (có thể ở cấp độ sau đại học), nhưng cả hai có thể là môn tự chọn.

Có một cuộc tranh luận về học thuật và công nghiệp về việc chương trình Khoa học Máy tính tập trung vào tổ chức phần mềm nhiều nhất có nên hay không, liệu chuyên ngành có nên được tổ chức lại hay không và liệu Khoa học Máy tính và Kỹ thuật Phần mềm có phải là chuyên ngành khác nhau hay không, nhưng hiện tại, chương trình Khoa học Máy tính của bạn là BÌNH THƯỜNG .

(Và chờ đợi ở đó - trong một hoặc hai học kỳ nữa, bạn sẽ đến các lớp học thử thách hơn, dạy cho bạn những điều bạn chưa từng dạy cho mình.)


Tôi không hài lòng với "bình thường." Tôi muốn rời khỏi trường đại học với một nền giáo dục đẳng cấp thế giới về phát triển phần mềm và tôi sẵn sàng làm việc (chăm chỉ) để đạt được điều đó. Tôi đã có ý định chuyển sang MIT thay vì USF, vì vậy tôi sử dụng chương trình Khoa học và Kỹ thuật Máy tính của MIT làm giáo dục CS lý tưởng của mình.
Evan Kroske

@Evan @Ken heh. Sau đó, đại học của tôi, tôi sẽ xem xét không bình thường. Giới thiệu về các ứng dụng máy tính (nghĩa là bạn sử dụng Word như thế nào) -> Logic máy tính và thuật toán (nghĩa là biểu đồ dòng chảy và logic boolean. Thực tế không có thuật toán nào cho nó) -> Lập trình trong C ++ (cú pháp, OOP, cơ bản) -> Nâng cao Lập trình trong C ++ (thuật toán, đệ quy, con trỏ) -> Lập trình trong Java (tương tự như C ++ cơ bản) -> Lập trình trong Cobol (Chưa hiểu được điều đó, nhưng chúa ơi tôi sợ nó)
Earlz

1

Còn các cuộc thi lập trình thì sao? Ngay cả một cái gì đó như Perl Golf (hoặc PHP Golf), nơi bạn có người (hoặc đội) làm việc để giải quyết vấn đề bằng cách sử dụng ít mã nhất có thể? Đó là một cách tuyệt vời để tìm hiểu thêm về ngôn ngữ và các cuộc thi luôn khiến mọi thứ trở nên thú vị.

Tất nhiên bạn nên cung cấp nhiều hơn là chỉ các cuộc thi, nhưng chúng khá dễ cài đặt và tôi luôn thích chúng.


1

Bạn đúng rằng bạn cần một số cấu trúc; bạn muốn ép buộc bản thân và những người khác học hỏi, và không chỉ ngồi quanh quẩn về phần mềm / chê bai về lựa chọn khóa học tệ hại. Nhưng tôi không chắc chắn coi đây là một lớp học với bạn vì giáo viên của nó là con đường để đi; bạn chưa phải là chuyên gia và bạn cũng sẽ học được điều này.

Làm thế nào về việc tổ chức câu lạc bộ xung quanh các dự án phần mềm? Không phải một số chương trình bài tập về nhà đồ chơi, nhưng một cái gì đó bạn nghĩ rằng bạn thực sự có thể thấy hữu ích. (Lưu ý rằng "hữu ích bên lề" vẫn đủ điều kiện là "hữu ích"; bạn đang cố gắng học hỏi, không tìm thấy một khởi động. :-)) Nếu câu lạc bộ có đủ người cho nhiều đội, hãy lập thành nhiều đội. Nhóm quyết định ngôn ngữ nào họ muốn sử dụng, thông số kỹ thuật là gì, cách phân chia lao động, v.v., v.v. và làm việc riêng với ngôn ngữ đó trong thời gian riêng của họ. Sau đó, tại cuộc họp câu lạc bộ hàng tuần của bạn, bạn sẽ thảo luận về việc nó sẽ đối mặt như thế nào, nơi những rào cản, những thứ gọn gàng bạn đã học, v.v.

Tôi cũng thực sự thích ý tưởng đưa các giảng viên khách mời, có thể là giảng viên, chuyên gia hoặc video mà bạn hoặc ai đó nghĩ là đáng để chia sẻ. Vì vậy, bạn có thể tổ chức một cuộc họp hàng đêm như thế này:

  1. Bài giảng của khách về một số chủ đề phần mềm từ một người biết rõ về nó.
  2. Câu hỏi và trả lời về bài giảng (hy vọng có giảng viên tham gia, nhưng chỉ trong số các bạn cho video).
  3. Chia thành các nhóm dự án, làm công cụ dự án.

Điều đó sẽ chiếm một buổi tối và chứa đầy sự tốt lành nâng cao kiến ​​thức. Hy vọng.

Bất kể, tôi chúc bạn may mắn với dự án này. Khi bạn đưa nó lên khỏi mặt đất, tôi hy vọng bạn sẽ quay lại đây và cho chúng tôi biết làm thế nào nó hoạt động.


1

Dự án nhóm là một ý tưởng tuyệt vời. Đặc biệt nếu dự án là một cái gì đó có thể giúp các trường đại học, hoặc các bạn cùng lớp của bạn.

Tôi đã tham gia một nhóm khi còn học đại học đang thực hiện các dự án cho sinh viên.
Dự án phổ biến nhất là một tour du lịch ảo 360 độ trong khuôn viên trường.
Chúng tôi đã mua các thiết bị cần thiết và bắt đầu chụp ảnh xung quanh khuôn viên trường. Sau đó, chúng tôi xây dựng một trang web để tổ chức tour du lịch, tìm ra dịch vụ lưu trữ và đưa nó vào trang web của trường đại học dành cho sinh viên tương lai. Dự án này kéo dài không chỉ các nhiệm vụ lập trình và cũng khiến những người không phải lập trình viên quan tâm.

Hãy thử xác định một trang web hoặc ứng dụng mới mà không chỉ bạn sẽ sử dụng mà tất cả mọi người trong trường đều muốn sử dụng. Tôi nghĩ rằng nó dễ dàng và thú vị hơn để học nếu bạn có một mục tiêu trong tâm trí.


Tôi thực sự thích ý tưởng này; có rất nhiều cách mà câu lạc bộ mới của tôi có thể thêm hoặc cải thiện hệ thống CNTT của trường đại học. Vì tò mò, bạn đã học đại học ở đâu?
Evan Kroske

Đại học Clarion ở PA. Tôi thậm chí đã đi đến một cuộc phỏng vấn một lần khi người phỏng vấn đề cập đến việc sử dụng tour du lịch để tìm kiếm trường đại học của con trai bà. Nó rất mát mẻ.
Todd Bumbarger

1

Nếu đây sẽ là một hoạt động ngoại khóa, đừng làm bài tập về nhà. Điều đó thật khập khiễng.

Bạn có thể có thể có được điều gì đó thú vị bằng cách chỉ cần bắt đầu một nhóm github và gửi / gửi email trong trường của bạn (tôi đoán những đứa trẻ ngày nay cũng sử dụng Facebook và Twitter? Có thể là một ý tưởng tốt để đạt được những điểm đó). Khi bạn có được một nhóm 5-6 người thực sự quan tâm cùng nhau, hãy quyết định một dự án và chỉ làm việc với nó.

Nếu không có hứng thú, thật dễ dàng để tham gia một dự án nguồn mở nếu bạn có kỹ năng hợp lý. Đơn giản như tìm kiếm thứ gì đó bạn quan tâm tại github và bắt đầu nói chuyện với các nhà phát triển.

Ưu điểm mà bạn có ở thế hệ trước là không khó để kết nối với các lập trình viên ở cấp độ của bạn và trong ngôn ngữ của bạn, trong khi rất khác biệt về mặt địa lý. Và tôi không có nghĩa là chỉ cần gửi một email. Skype / iChat / Ventrilo làm cho các cuộc hội thảo bằng giọng nói trở nên dễ dàng, các công cụ như git / mercurial (và các trang dự án liên quan trực tuyến) giúp bạn dễ dàng viết mã thành một nhóm ngay cả khi bạn ở phía đối diện của đại tây dương. Thực sự không có lý do gì để không mã hóa xã hội những ngày này, nếu đó là những gì bạn muốn làm.

Cuối cùng, đừng tạo thói quen đánh giá con người bằng ngôn ngữ họ biết / muốn biết. Đó là một cái bẫy dễ rơi vào khi bạn là Smalltalker duy nhất trong một nhóm người nghĩ rằng C ++ đại diện cho giới hạn của lập trình, nhưng nó sẽ không giúp bạn có được nhiều bạn bè và nó sẽ cho bạn sự thiên vị đối với một số công cụ nhất định. Tôi đã gặp những tin tặc đi trước tôi cả về kỹ năng và kinh nghiệm, những người đã sử dụng LISP, Perl và C trong cùng một dự án . Những người ở trên đỉnh của nhà phát triển chuyên nghiệp có xu hướng không quan tâm nhiều đến mức độ công cụ của họ miễn là họ làm công việc đó.


1

Điều này nghe có vẻ như là một cơ hội kết nối mạng, tôi chắc chắn rằng có một số sinh viên quan tâm đến lập trình với mức độ kinh nghiệm / đào tạo tương tự ... bạn chỉ không tìm thấy họ ...

Bạn đã tham dự một trong các Trại Mã (đào tạo liên quan đến nhà phát triển miễn phí) ở khu vực Vịnh Tampa hay tham gia một trong các nhóm người dùng lập trình địa phương chưa?

Cả hai tài nguyên này sẽ cung cấp cho bạn cơ hội kết nối. Và thay vì cảm thấy như bạn phải đào tạo các sinh viên của mình, bạn sẽ có thể mời bạn bè của mình cùng với bạn và sau đó thảo luận về những gì được bảo hiểm.

Bạn cũng sẽ có quyền truy cập vào những người đang lập trình như một nghề nghiệp và có thể biết được loại tình huống nào bạn có thể gặp phải trong "thế giới thực".

Khi bạn đã khám phá những tài nguyên địa phương này, bạn vẫn có thể thấy rằng bạn có cơ hội chia sẻ kiến ​​thức của mình bằng cách thực hiện các bài thuyết trình của riêng bạn, điều này thật tuyệt. Chia sẻ những gì bạn đã học được với một nhóm người dùng hoặc với tư cách là một diễn giả của bài thuyết trình về mã trại là một cách tốt để nhận phản hồi về những gì bạn đã học và mở ra cho bạn để tìm hiểu thêm.

Tôi lớn lên ở khu vực Vịnh Tampa và tham dự rất nhiều sự kiện miễn phí do Microsoft tài trợ, nhóm người dùng địa phương của bạn nên có thông tin về cách tham gia vào các sự kiện đó.

Chà, đây là một câu trả lời dài dòng ...

Trại Code tiếp theo ở Tampa là vào ngày 13 tháng 11 năm 2010 theo trang web tampacodecamp.

Đây là một liên kết đến INETA / nhóm người dùng lập trình cục bộ của bạn:

http://www.tampadev.org/

(Tôi mới tham gia nhóm này và chỉ có thể bao gồm một liên kết.)


1

Còn về việc tìm kiếm một dự án nguồn mở (hoặc nhiều hơn một) mà nhóm của bạn quan tâm để đóng góp?

Tôi nghĩ rằng thách thức lớn nhất mà bạn có thể gặp phải là trong khi viết mã rất thú vị, tất cả các quản trị viên xung quanh, v.v ... có thể nhanh chóng biến nó thành một trải nghiệm đau đớn. Nếu bạn có thể tìm thấy một dự án nguồn mở hiện tại, ít nhất bạn nên có một số khung hỗ trợ tại chỗ.

Nguồn mở sẽ giúp bạn có một số thói quen tốt và mặc dù bạn sẽ hơi ướt sau tai so với một số người đóng góp, bạn sẽ có một lợi thế lớn so với những người khác - tất cả bạn sẽ ở cùng một vị trí và có thể tổ chức các cuộc trò chuyện với các thành viên trong nhóm của bạn, điều thường là một trong những nỗi đau lớn nhất với công việc cộng đồng nguồn mở ...

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.