Jak mogę założyć społeczność programistów w mojej szkole?

14

Jestem studentem na University of South Florida, który jest sfrustrowany środowiskiem edukacyjnym w programie Computer Science. W tej chwili biorę „Projektowanie programu”. Powinienem uczyć się, jak organizować mój kod źródłowy w funkcje i moduły, aby moje programy były czytelne i łatwe do utrzymania; zamiast tego uczę się o tablicach i rekurencji w C. W następnym semestrze muszę wziąć „Object-Oriented Design”, który uczy się w C ++ ( dreszcz ).

Dwa lata temu zakochałem się w programowaniu i od tego czasu uczyłem się tyle, ile mogłem. Perspektywa wzięcia kolejnej klasy C ++ prawie nudzi mnie. Z tego powodu pomyślałem, że założę klub programistyczny, aby spotkać podobnie ambitnych studentów, uczyć się nowych języków, omawiać tematy związane z programowaniem i współpracować z innymi programistami.

Zaczynam jednak zdawać sobie sprawę, że może nie być żadnych innych studentów, którzy dzieliliby się moim doświadczeniem w tworzeniu oprogramowania. Nie wynika to z braku motywacji, ale z braku okazji: znam tylko jedną inną klasę programowania („Języki programowania”) i nie ma klas dotyczących tworzenia oprogramowania w świecie rzeczywistym. Wszyscy inni mają tylko doświadczenie w pisaniu prostych skryptów w C i C ++.

Zdałem sobie sprawę, że jeśli chcę współpracować z innymi programistami programistami dla studentów, sam będę musiał ich szkolić. Teraz planuję uczynić z klubu bootcamp rozwoju oprogramowania, ucząc członków, jak tworzyć oprogramowanie za pomocą nowoczesnych narzędzi i języków. Oczywiście rozpoczęcie nieoficjalnego kursu rozwoju oprogramowania jest ogromnym zadaniem z wieloma możliwymi podejściami. Moje pytanie do ciebie, drogi czytelniku, brzmi:

Jaki jest mój plan ataku?

Czy powinienem

  • sam wykładam klub, próbując zrównoważyć pracę klubu z pracą domową?
  • poprosić wydział CS o nauczanie na tematy w ramach ich wiedzy specjalistycznej, które mogą być mniej istotne niż dla członków?
  • próbujesz znaleźć sympatycznego, doświadczonego programistę w szkole lub poza nią, który mógłby dzielić moje obciążenie pracą?
  • wyświetlać wykłady wideo (z MIT OpenCourseWare , Google Tech Talks itp.)?
  • organizować praktyczne warsztaty programowania?
  • powierzyć zadanie domowe?
  • Zrób coś innego?
Evan Kroske
źródło
3
Dlaczego wzdrygasz się, gdy nauczasz OOP przez C ++? Czy po prostu czujesz się niekomfortowo z językami wysokiego poziomu? Jeśli tak, jak możesz się uczyć OOP?
Cam
4
@Evan: Mówiąc szczerze, jeśli uważasz, że C ++ jest językiem niskiego poziomu, kurs C ++ byłby dla Ciebie idealny. Dowiesz się dużo. C ++ może wydawać się początkującym na niskim poziomie, ponieważ oferuje funkcje niskiego poziomu, ale zdecydowanie nie musisz ich używać. W rzeczywistości przez większość czasu będziesz używać STL i wszystkich jego funkcji OOP wysokiego poziomu.
Cam
10
C ++ jest na niskim poziomie w porównaniu do, powiedzmy, Java, Ruby, JavaScript, C # itp. Jest na wysokim poziomie w porównaniu do wielu innych języków. Wydaje się, że jest to bezcelowa debata.
Fishtoaster,
2
@fishtoaster: Nie powiedziałbym, że c ++ jest niskiego poziomu w porównaniu do Java i C #. Jest co najmniej na wysokim poziomie co najmniej w tym języku (niewiele wiem o drugim języku). Dodatkową zaletą jest to, że może być również na niskim poziomie, dzięki czemu można uzyskać to, co najlepsze z obu światów.
n1ckp 18.10.10
1
@ n1ck: Wskaźniki są oczywiście (wiem, że C # ma je, ale ich użycie jest rzadkie), ręczne zarządzanie pamięcią, brak lambdas (nie jestem pewien, jaką nazwę daje im C #, python używa lambdas), brak natywnego foreach, znacznie mniejszy standard biblioteka, częstsze kręcenie bitów, rekompilacja wymagana dla różnych platform itp. Nie musisz być asemblerem, aby być niższym poziomem niż te dwa.
Macha,

Odpowiedzi:

20

Szczerze mówiąc, cała twoja postawa dotyczy mnie. Nie udało ci się nawet zebrać grupy razem i już zakładasz, że będziesz tylko tym, który ma jakąkolwiek wiedzę do przekazania i tym, który powinien zdecydować, co zrobi grupa.

Najlepiej jest zebrać grupę początkową i wspólnie przeprowadzić burzę mózgów, co chcą zrobić. To, co osobiście chcesz zrobić, jest nieistotne z punktu widzenia tego, co grupa chce zrobić. Decydując, co robić bez udziału innych członków grupy przed pierwszym spotkaniem, spotkasz się jako arogancki idiota, z którym nie chciałbym pracować dobrowolnie. W ten sposób zabijesz grupę, zanim się zacznie.

HLGEM
źródło
Masz absolutną rację; Nie muszę samodzielnie formułować i wdrażać ogólnego planu klubu. Niemniej jednak potrzebuję pomysłów na zajęcia klubowe i spotkania, aby omówić je z resztą klubu.
Evan Kroske
5

Ponieważ wszyscy w twoim klubie przyjeżdżają dobrowolnie, musisz uczynić je interesującym i motywującym. A praca domowa nie jest dokładnie motywująca.

Nauczanie kogokolwiek jest trudne, ale dlaczego by nie spróbować uczyć w sposób wręcz bezcelowy z celem na końcu? Zasadniczo na początku zbierzecie wszystkich razem i wymyślicie projekt grupowy oraz język. Projekt musi być interesujący i pokazywać widoczne postępy, ale nie za mocno. Po opanowaniu języka uczysz go podstaw (składnia, pakiety / przestrzenie nazw, klasy, pisanie statyczne / dynamiczne itp.). Następnie dajesz im zasoby (książki, samouczki online, dokumentację online), łatwy sposób, aby cię złapać i określoną część projektu do pracy. Następnie każda osoba pracuje nad projektem w wolnym czasie, w razie potrzeby konsultując się z dokumentacją.

Jaka jest zaleta tego procesu?

  • Ludzie nie nudzą się słuchając ciebie lub kogoś, kto błąka się o czymś na każdym spotkaniu
  • Ludzie uczą się, jak samodzielnie uczyć, bardzo ważnej umiejętności w świecie rzeczywistym
  • Nie nadmiernie się angażujesz, ponieważ nie jesteś jedynym zasobem wiedzy
  • Nie musisz znać całego języka, zanim będziesz mógł go uczyć, ponieważ musisz tylko zapoznać się z nim. A kiedy będą musieli cię o coś zapytać, możesz szybko to zbadać. Musisz jednak wyprzedzić wszystkich, ponieważ niektóre rzeczy wymagają wiedzy o 5 krokach do przodu
  • Tworzysz coś, co motywuje ludzi

Jedynym sposobem, aby sprawdzić, czy działa, jest wypróbowanie go.

TheLQ
źródło
Dobrym pomysłem byłby projekt grupowy, gdybym mógł utrzymać członkostwo w klubie poniżej dziesięciu studentów. Po tym zespoły stają się nieporęczne. Nie mogę jednak uzyskać wsparcia uniwersyteckiego, jeśli zabronię studentom przystąpienia do klubu, i jestem pewien, że więcej niż 10 studentów będzie zainteresowanych przystąpieniem do klubu. Nasz klub hakerski zawsze ma ponad trzydziestu studentów na cotygodniowych spotkaniach.
Evan Kroske
1
Więc więcej niż jeden projekt? Spróbuj znaleźć wspólne zainteresowania wszystkich członków grupy. Najpierw spotkaj się na temat osobistych zainteresowań, a następnie spróbuj wymyślić projekty obracające się wokół tych projektów?
Chris
4

Patrząc na schemat kursu dla swojego kierunku , naprawdę nie rozumiesz, czego się spodziewać w różnych klasach kierunku informatyka.

Zajęcia, o których mówisz, to zajęcia wprowadzające, które wprowadziły uczniów w różne podstawowe pojęcia związane z kodowaniem. Wygląda na to, że „Koncepcje programowania” to wprowadzenie do zawodu z tygodniowymi przeglądami wszystkich podstawowych dziedzin informatyki, bez faktycznego kodowania. Stamtąd NORMALNY jest kurs wprowadzający w C, a inny kurs wprowadzający w C ++ jest NORMALNY dla kierunku informatyka. Być może wchodzisz do programu z pewnym doświadczeniem w programowaniu, ale większość ludzi nie. Program musi uczyćkoncepcje takie jak rekurencja, pisanie klas, przeciążanie operatorów, szablony i wszystkie inne rzeczy (nie wspominając o nauczaniu o zmiennych, pętlach for, instrukcjach if itp.), więc istnieją dwie klasy zasadniczo zaprojektowane do nauczy Cię, jak pisać w jakimś języku programowania. I zwykle mają mylące nazwy, które robią zajęcia na twoim uniwersytecie. Klasy uczące pożądanego poziomu organizacji są zwykle nazywane „inżynierią oprogramowania” lub „wzorami projektowymi”. Ten pierwszy jest zazwyczaj wymagany, a drugi jest zazwyczaj do wyboru (może na poziomie magisterskim), ale oba mogą być do wyboru.

Odbywa się debata akademicka i branżowa na temat tego, czy program informatyki koncentruje się na organizacji oprogramowania tak bardzo, jak powinien, czy reorganizacja kierunków głównych i czy informatyka i inżynieria oprogramowania są różnymi kierunkami, ale na razie twój program informatyki jest NORMALNY .

(I trzymaj się - w następnym semestrze lub dwóch przejdziesz do trudniejszych zajęć, które uczą cię rzeczy, których sam się nie nauczyłeś.)

Ken Bloom
źródło
Nie jestem zadowolony z „normalnego”. Chcę skończyć studia ze światowej klasy edukacją w zakresie tworzenia oprogramowania i jestem gotów (ciężko) pracować, aby to osiągnąć. Zamierzałem przenieść się do MIT zamiast USF, więc używam programu informatycznego i inżynieryjnego MIT jako mojej idealnej edukacji CS.
Evan Kroske
@Evan @Ken heh. Wtedy mój college uważałbym za normalny. Wprowadzenie do aplikacji komputerowych (tj. Jak używać Worda) -> Logika komputerowa i algorytmy (tj. Schematy blokowe i logika boolowska. Właściwie nie ma żadnych algorytmów) -> Programowanie w C ++ (składnia, OOP, podstawy) -> Zaawansowane Programowanie w C ++ (algorytmy, rekurencja, wskaźniki) -> Programowanie w Javie (to samo, co podstawowe C ++) -> Programowanie w Cobolu (Jeszcze nie
posunąłem
1

Co z konkursami programistycznymi? Nawet coś takiego jak Perl Golf (lub PHP Golf), w którym ludzie (lub zespoły) pracują nad rozwiązaniem problemu przy użyciu możliwie najmniejszej ilości kodu? To świetny sposób, aby dowiedzieć się więcej o językach i konkursach, które zawsze sprawiają, że rzeczy są interesujące.

Oczywiście powinieneś oferować więcej niż tylko zawody, ale są one dość łatwe do skonfigurowania i zawsze mi się podobały.

Colin O'Dell
źródło
1

Masz rację, że potrzebujesz struktury; chcesz zmusić siebie i innych do nauki, a nie tylko gadać o oprogramowaniu / przekpać na temat kiepskiego wyboru kursu. Ale nie jestem pewien, czy traktuję to jako klasę z tobą jako nauczycielem. nie jesteś jeszcze ekspertem i też chcesz się czegoś nauczyć.

A może zorganizujesz klub wokół projektów oprogramowania? Nie niektóre programy do odrabiania zabawek, ale coś, co może się okazać przydatne. (Pamiętaj, że „marginalnie użyteczne” nadal kwalifikuje się jako „użyteczne”; próbujesz uczyć się przez działanie, nie znalazłem startupu :-)) Jeśli w klubie jest wystarczająca liczba osób dla wielu drużyn, utwórz wiele drużyn. Zespół decyduje, jakiego języka chce użyć, jakie są specyfikacje, jak podzielić pracę itp. Itd. I pracuje nad nim indywidualnie w swoim czasie. Następnie na cotygodniowym spotkaniu w klubie omawiasz, jak zmierza się twarzą w twarz, gdzie są blokady, jakie rzeczy nauczyłeś się itp.

Bardzo podoba mi się również pomysł wprowadzenia zaproszonych wykładowców, zarówno wykładowców, specjalistów, jak i filmów, które według ciebie lub kogoś innego są warte podzielenia się. Możesz więc zorganizować takie nocne spotkanie:

  1. Wykład gościnny na temat oprogramowania od osoby, która dobrze go zna.
  2. Sesja pytań i odpowiedzi na temat wykładu (mam nadzieję, że z udziałem wykładowcy, ale tylko między sobą w przypadku filmów).
  3. Podziel się na zespoły projektowe, rób rzeczy projektowe.

To zajmie wieczór i sprawi, że stanie się on pełen dobroci podnoszących wiedzę. Ufnie.

Niezależnie od tego życzę powodzenia w tym projekcie. Kiedy zdejmiesz go z ziemi, mam nadzieję, że wrócisz tutaj i powiesz nam, jak to działa.

BlairHippo
źródło
1

Projekt grupowy to świetny pomysł. Zwłaszcza jeśli projekt jest czymś, co może pomóc uniwersytetowi lub innym kolegom z klasy.

Dołączyłem do grupy na studiach, która pracowała nad projektami dla studentów.
Najpopularniejszym projektem była wirtualna wycieczka po kampusie w zakresie 360 ​​stopni.
Kupiliśmy potrzebny sprzęt i zaczęliśmy robić zdjęcia na terenie kampusu. Następnie stworzyliśmy stronę internetową, w której można zorganizować wycieczkę, opracowaliśmy organizację hostingu i umieściliśmy ją na stronie uniwersyteckiej dla przyszłych studentów. Projekt obejmował nie tylko zadania programistyczne, ale również zainteresował nie-programistów.

Spróbuj zidentyfikować nową stronę internetową lub aplikację, z której nie tylko korzystałbyś, ale wszyscy w kampusie chcieliby z niej korzystać. Myślę, że łatwiej i przyjemniej jest się uczyć, jeśli masz na myśli cel.

Todd Bumbarger
źródło
Naprawdę podoba mi się ten pomysł; istnieje wiele sposobów, które mój nowy klub może uzupełnić lub ulepszyć systemy informatyczne uczelni. Z ciekawości, gdzie poszedłeś na studia?
Evan Kroske
Clarion University in PA. Raz nawet poszedłem na rozmowę kwalifikacyjną, w której ankieter wspomniał, że wykorzystał trasę do przeszukania swojego syna w college'u. To było bardzo fajne.
Todd Bumbarger,
1

Jeśli będzie to zajęcia pozalekcyjne, nie odrabiaj zadania domowego. To po prostu kiepskie.

Prawdopodobnie możesz uzyskać coś fajnego, po prostu zakładając grupę github i wysyłając / wysyłając e-maile w swojej szkole (wydaje mi się, że dzieci w dzisiejszych czasach również korzystają z Facebooka i Twittera? Może to być dobry pomysł, aby zdobyć te punkty). Kiedy znajdziesz grupę 5-6 osób, które są naprawdę naprawdę razem zainteresowane, zdecyduj się na projekt i po prostu nad nim popracuj.

Jeśli nie ma zainteresowania, jest dość śmiesznie łatwo dołączyć do projektu open source, jeśli masz odpowiednie umiejętności. Proste jak rozwidlenie czegoś, co cię interesuje w github i rozpoczęcie rozmowy z programistami.

Zaletą, której nie ma poprzednia generacja, jest to, że nie jest wcale trudno połączyć się z programistami na twoim poziomie i w swoim języku, będąc jednocześnie bardzo zróżnicowanym geograficznie. I nie chodzi mi tylko o wysłanie e-maila. Skype / iChat / Ventrilo ułatwiają konferencje głosowe, narzędzia takie jak git / mercurial (i powiązane strony projektu online) ułatwiają kodowanie jako grupa, nawet jeśli jesteś po przeciwnych stronach Atlantyku. Naprawdę nie ma powodu, aby w dzisiejszych czasach nie kodować społecznie, jeśli to właśnie chcesz zrobić.

Wreszcie, nie przyzwyczajaj się do oceniania ludzi na podstawie języków, które znają / chcą znać. Łatwo wpaść w pułapkę, gdy jesteś jedynym Smalltalkerem w stadzie ludzi, którzy uważają, że C ++ stanowi granicę programowania, ale nie zapewni ci wielu przyjaciół i da ci stronniczość w stosunku do niektórych narzędzi. Spotkałem hakerów, którzy są przede mną umiejętnościami i doświadczeniem, którzy używali LISP, Perla i C. w tym samym projekcie . Ludzie na szczycie stosu profesjonalnych programistów nie dbają zbytnio o poziom swoich narzędzi, o ile wykonują swoją pracę.

Inaimathi
źródło
1

To brzmi jak możliwość nawiązania współpracy, jestem pewien, że jest wielu studentów zainteresowanych programowaniem z podobnym poziomem doświadczenia / szkolenia ... po prostu ich nie znajdujesz ...

Czy uczestniczyłeś w jednym z Code Camps (bezpłatne szkolenie dla programistów) w rejonie Zatoki Tampa lub dołączyłeś do jednej z lokalnych grup użytkowników programowania?

Oba te zasoby zapewnią ci możliwości nawiązywania kontaktów. I zamiast czuć, że musisz szkolić swoich kolegów, będziesz mógł zaprosić przyjaciół razem z tobą, a następnie omówić, co zostało objęte.

Uzyskasz również dostęp do osób, które programują jako kariera i możesz dowiedzieć się, jakie sytuacje możesz spotkać w „prawdziwym świecie”.

Po zapoznaniu się z tymi lokalnymi zasobami może się okazać, że możesz podzielić się swoją wiedzą, robiąc własne prezentacje, co jest świetne. Dzielenie się tym, czego nauczyłeś się z grupą użytkowników lub jako prelegentem prezentacji w obozie programistycznym, jest dobrym sposobem na uzyskanie informacji zwrotnej na temat tego, czego się nauczyłeś, i otwiera cię również na więcej.

Dorastałem w rejonie Zatoki Tampa i uczestniczyłem w wielu bezpłatnych wydarzeniach sponsorowanych przez Microsoft. Twoja lokalna grupa użytkowników powinna również mieć informacje na temat tego, jak wziąć udział w tych wydarzeniach.

To była długa odpowiedź…

Kolejny Code Camp w Tampie odbędzie się 13 listopada 2010 r. Według strony internetowej tampacodecamp.

Oto link do Twojej lokalnej grupy użytkowników INETA / programowania:

http://www.tampadev.org/

(Jestem nowy w tej grupie i mogłem dołączyć tylko jeden link).

Jeff
źródło
1

Co powiesz na znalezienie projektu typu open source (lub więcej niż jednego), w który Twoja grupa jest zainteresowana udziałem?

Myślę, że największym wyzwaniem, przed którym prawdopodobnie staniesz, jest to, że pisanie kodu jest zabawne, ale cały otaczający go administrator itp. Może szybko przekształcić go w bolesne doświadczenie. Jeśli możesz znaleźć istniejący projekt typu open source, powinieneś mieć przynajmniej część ram wsparcia.

Open source wprowadzi cię w dobre nawyki i chociaż będziesz trochę mokry za uszami w porównaniu do niektórych współpracowników, będziesz miał jedną główną przewagę nad innymi ludźmi - wszyscy będą w tej samej lokalizacji i będą mogli prowadzić rozmowy z członkami zespołu, co zwykle jest jednym z największych problemów związanych z pracą społeczności open source ...

DanW
źródło