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?
źródło
Odpowiedzi:
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.
źródło
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?
Jedynym sposobem, aby sprawdzić, czy działa, jest wypróbowanie go.
źródło
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ś.)
źródło
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.
źródło
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:
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.
źródło
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.
źródło
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ę.
źródło
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).
źródło
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 ...
źródło