Temat: Projekty open-source z możliwością dołączenia...
Hej,
Może Ci być ciężko dołączyć do już istniejącego projektu, bo wymaga to ogarnięcia na start wielu rzeczy, m.in. zarządzania wymaganiami, testowania kodu, wspólnej (zespołowej) pracy nad kodem (wersjonowanie kodu, repozytorium) - a przede wszystkim - zapewnienia dobrej jego jakości (wzorce projektowe, architektura, zasady programowania obiektowego jak SOLID, KISS, DRY, YAGNI itd).
Ale to nie znaczy, że to zły pomysł! Przeciwnie, uważam, że to słuszna koncepcja, tylko może na ten pierwszy raz zacznij sam coś tworzyć. Nie będziesz wtedy "uwiązany" do reszty zespołu, a zatem nie będziesz miał na początek stresu, że coś zawalisz, że ktoś czeka na Twój kawałek kodu, a Ty nie masz czasu albo coś Ci nie wychodzi. W warunkach stresu ciężko się uczy - choć z czasem będzie to Twój chleb powszedni. Na naukę pracy w grupie przyjdzie spokojnie czas - np. w kolejnym projekcie albo na studiach. Na początek ogarnij środowisko pracy, a także zainstaluj i poznaj jakiś system wersjonowania kodu - nawet jeśli pracujesz sam. Nabierzesz nawyku "commitowania", poćwiczysz "revert to revision". W przyszłości będziesz w ten sposób pracować na wspólnym kodzie, więc czas poświęcony na naukę tego zagadnienia na pewno nie będzie stracony - nawet, jeśli będziesz pracował na zupełnie innym systemie wersjonowania.
A zatem - stwórz coś swojego. Pomyśl, co mógłbyś ofiarować społeczności, by jej ułatwić życie? Może jakiś program narzędziowy? Nie przejmuj się, że są ich setki - alternatyw nigdy dość! Na zupełny początek może napisz jakieś GUI do już gotowego konsolowego programu. Szybko będziesz miał efekt swojej pracy, co powinno Cię cieszyć i mobilizować do dalszej pracy. Parsowanie wyjścia aplikacji konsolowej (np. wyrażenia regularne), tworzenie GUI (szybko widać efekty), zapewnienie elastycznej konfiguracji (autor aplikacji może zmienić format wyjścia, możesz też chcieć obsługiwać różne aplikacje), wielojęzyczność, zapisywanie konfiguracji - to jest dużo do nauki na początek. Na pewno lepsze to, niż kolejne zadanie w rodzaju "trójmian kwadratowy", bo i pożytek z tego będzie dla innych, i Ty pisząc dla kogoś (!) będziesz musiał zadbać o łatwość użytkowania, odporność na błędy, odporność na zróżnicowanie środowisk pracy użytkownika (brakuje czegoś, coś trzeba doinstalować, skonfigurować, etc.).
A przy okazji - skoro wybrałeś już .NET, to możesz przyjrzeć się Mono i zacząć pisać przenośne programy, które da się uruchomić także np. na Linuksach. Wiedza, którą tu zdobędziesz (jak zapewnić przenaszalność), przyda Ci się także przy innych językach programowania.
Możesz też iść z duchem czasu i zamiast uczyć się pisania aplikacji "formsowych" (chociaż formsy w rodzaju Windows Forms, GTK#, WPF na pewno warto znać), możesz spróbować zapoznać się z ASP.NET MVC. Napisz własną stronę internetową - taki mini CMS (narzędzie do zarządzania treścią) pozwalający dodawać nowe artykuły, ilustracje, zmieniać layout strony itd, itp. Postawisz sobie lokalnie nawet na prymitywnym mini-serwerku jak Cassini albo użyjesz profesjonalnego Apacha albo NGinxa, a w przyszłości odłożysz nieco kasy i kupisz sobie na rok najtańszy plan hostingowy na Webio.pl (sorry za reklamę, ale to naprawdę dobry polski hosting dla ASP.NET). To będzie świetna (bo praktyczna) nauka wzorca architektonicznego model-widok-kontroler, przy okazji liźniesz baz danych, ORMów, podejścia IoC (inversion of control), narzędzi do tesów jednostkowych, konfiguracji serwera, a także podstaw semantycznego HTML, przenośnego CSS, JavaScriptu, bibliotek JS w rodzaju jQuery, formatów XML i JSON i całej masy(!) różnych innych fajnych rzeczy i przydatnych pojęć :) Co ważne - jest to prosty sposób na napisanie przenośnej aplikacji, bo odpada Ci pisanie GUI w "dziwnych" toolkitach. HTML to HTML :) A Mono dobrze sobie radzi z ASP.NET zarówno z WebForms jak i MVC. A jak będziesz miał już Twoj serwis, to pewnie pomyślisz o jego wersji mobilnej (osobne, "mobilne" strony, albo podejście RWD) albo apce dla Androida - a to znów będzie wymagać nieco wiedzy o tworzeniu webserwisów (SOAP, REST).
Otwiera się przed Tobą morze możliwości, tylko wymyśl coś fajnego, praktycznego, coś, co nie znudzi Cię po tygodniu. A potem, jak popatrzysz na to krytycznym okiem, sam dojdziesz do wniosku, czy programowanie to Twój przyszły zawód, zdobędziesz pewnosć siebie i pewną intuicję. A wtedy startuj do już istniejących projektów OpenSource.
Tak to widzę :)
PS: ja też zaczynałem w czasach liceum :) MS-DOS 6.22 i Windows 3.11, Turbo i Borland C++, Turbo Pascal, Microsoft Assembler (MASM), kilka modeli pamięci (długie i krótkie wskaźniki), początki z trybem chronionym, programy rezydentne (TSR), grafika BGI i VESA, przerwania BIOS... ech :)