Czy w trakcie nauki programowania jest ok to że zwłaszcza na początku będę robił projekty próbujące funkcjonalnością naśladować istniejące na githubach, robić wiele rzeczy na piechotę, wymyślać koło na nowo zamiast pisać rzeczy, których jeszcze nikt nie stworzył?
Wymyślanie koła na nowo
- Rejestracja: dni
- Ostatnio: dni
- Postów: 242
- Rejestracja: dni
- Ostatnio: dni
- Postów: 108
Oczywiście, że tak :) Mnie zawsze największą satysfakcję daje tworzenie maksymalnie jak najwięcej rzeczy samemu, bez bibliotek trzecich. Oczywiście, w komercyjnym / poważnym projekcie lepiej używać gotowych bibliotek do wielu bardziej skomplikowanych rzeczy, bo mają one po prostu większe wsparcie i niezawodność, a ich ewentualne błędy (tudzież luki w bezpieczeństwie) zostaną szybko wyłapane i naprawione przez społeczność / dostawcę.
Ale przy własnych projektach, moim zdaniem, tworzenie wszystkiego samemu daje właśnie najwięcej nauki i pozwala zrozumieć daną technologię. Nie wiem, w czym Ty piszesz, ale jak ja tworzę np. głównie aplikacje desktopowe (C# WPF), to wszelkie kalendarze rezerwacji, diagramy gantta, wykresy tworzę właśnie sam od zera, mimo że istnieją gotowe "kombajny" typu DevExpress, bo to właśnie najbardziej sprawia mi przyjemność :)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 242
Aktualnie piszę sobie w Pythonie aplikację o nazwie backupctl. Python jest mega przyjemny, planuję napisać w nim menedżer kontenerów LXC jak skończę robić backupctl. Myślę tak sobie że może kiedyś pobawię się biblioteką tkinter, spróbuję coś porobić przy backendzie w Django, coś porobić dla zabawy w pygame. Myślę że mój docelowy stack to będzie Bash + Python + Go + JavaScript i Lua na tyle na ile mi potrzebna przy Neovimie. Mam trochę pomysłów na programy w Pythonie.
Myślę że sporym błędem jaki popełniłem było branie się za akademickie książkowe przykłady i traktowanie języków programowania jako celów samych w sobie a nie narzędzi. Próbowałem robić większe rzeczy w Bashu i sam się przekonałem że jednak Python do większych rzeczy wygodniejszy. Bash wraz z rozrostem złożoności projektu robi się coraz bardziej upierdliwy w maintainowaniu a Python ładnie pozwala mi osiągnąć to co chcę. Dlatego go używam.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 2025
Tak długo, jak rozwiązujesz w miarę samodzielnie napotkane problemy, zamiast brać gotowce, lub przynajmniej Twój poziom samodzielności się zwiększa - jest ok.
W nauce nie chodzi o to, by tworzyć coś innowacyjnego tylko by zrealizować jakiś postawiony sobie cel edukacyjny. Być może istotniejsze jest, czy masz jakiś pomysł na to czego ma Cię nauczyć realizacja danego projektu np. obsługi kontroli wersji, FE, BE, pracy z Azure albo nie wiem, konfigurowania CI/CD. Wtedy koncentrujesz się na tym co jest dla Ciebie priorytetowe, a pozostałe kwestie, jak oryginalność pomysłu, schodzą na dalszy plan.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 7102
whiteman808 napisał(a):
Czy w trakcie nauki programowania jest ok to że zwłaszcza na początku będę robił projekty próbujące funkcjonalnością naśladować istniejące na githubach, robić wiele rzeczy na piechotę, wymyślać koło na nowo zamiast pisać rzeczy, których jeszcze nikt nie stworzył?
Zamiast wymyślać własny sposób chodzenia na prawej ręce i lewej nodze, nauczyłeś się chodzić na dwóch nogach, tak jak inni ludzie, naśladując ich.
Teraz chodzisz w swój własny indywidualny sposób.
Jeśli nie nauczysz się podstaw, to jak chcesz robić coś nowego, lepszego, nieoklepanego?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Silesia/Marki
- Postów: 5666
moim najlepszym narzędziem jakie napisałem open source w ramach nauki był program do formatowania jsona. W zasadzie line jsona. Każda linia na wejściu byłą jsonem i można było go formatować do bardziej czytelnej formy. Nawet kilka osób w firmie go używało bo mieliśmy w tym formacie logi gdzieś w 2015-2016 roku. A potem się dowiedzieliśmy że istnieje jq XD Trudno napisać coś nowego i niepowtarzalnego. Chociaż ostatnio się dowiedziałem że firma która skleja i dzieli pdfy online jest wyceniania na milion dolarów XD
- Rejestracja: dni
- Ostatnio: dni
- Postów: 8536
whiteman808 napisał(a):
zamiast pisać rzeczy, których jeszcze nikt nie stworzył?
Wszystko już było. Ale i tak rzeczy faktycznie innowacyjne, które się jakoś wyróżniają, zwykle są tworzone latami, a pisanie ich jest żmudne i wymaga dużych skilli ogólno-programistycznych, w tym umiejętności zaprojektowania czegoś większego, umiejętności przerabiania kodu, dokonywania kompromisów (np. może się okazać, że żeby coś osiągnąć np. większą wydajność, to trzeba z czegoś zrezygnować np. z czytelności kodu. Albo odwrotnie).
Ale żeby nauczyć się pisać większe i innowacyjne rzeczy, trzeba najpierw umieć napisać mniejsze rzeczy i umieć odkryć koło na nowo.
Chociaż dzisiaj pewnie należałoby radzić bardziej "olać w ogóle naukę programowania, lepiej stawiać na miękkie skille, a z technikaliów być biegłym w narzędziach AI, które same piszą kod", ale jestem tu jednak idealistą i dalej wierzę w ręczne pisanie kodu.