Kilka dni temu DHH – twórca Ruby On Rails, współtwórca 37 signals i Basecamp – wrzucił tweet. Prosty. Ale niesie on solidne i bardzo mądre przesłanie. Wszyscy dążymy do tego, by być najlepszymi programistami. W tym wszystkim zapędzamy się. Ja mam takie odczucie (i może jest to błędne, popraw mnie jak tak), że patrząc na innych uważamy, że oni to potrafią wszystko napisać. My sami zaś nie zawsze wiemy co i jak napisać. Googlamy i szukamy. Jednak nie przyznamy się do tego tak otwarcie. Czasami nawet usuniemy wzmiankę o tym skąd kod pochodzi by nie było, że to nie my napisaliśmy – albo by nie było widać, że to nie nasz kod i by nasza niewiedza nie wyszła na jaw w firmie. Ktoś z was tak robił?
Hello, my name is David. I would fail to write bubble sort on a whiteboard. I look code up on the internet all the time. I don't do riddles.
— DHH (@dhh) February 21, 2017
Moim zdaniem jest bo błędne koło i drażni mnie to, że sądzimy iż inni to SĄ DOPIERO PROGRAMISTAMI a my tacy tyci malutcy jesteśmy. Gubimy w tym siebie, wynosimy na piedestały innych, nakładamy pewny swój punkt widzenia. To nas dołuje. Co gorsze, jest to w naszej naturze – pomniejszamy swoje umiejętności i wywyższamy innych. My czujemy, się tak jakbyśmy nie potrafili programować. Bo skoro ściągamy kod z sieci nawet dla jakieś błahostki to jest coś z nami nie tak. Zaczynamy podważać naszą wiedzę, naszą pewność siebie. Czyste ZŁO i nic bardziej mylnego. Moim zdaniem fajnie by było gdyby nasi seniorzy, eksperci napisali jak to jest u nich podejmując wyzwanie DHH. Czy oni wszystko sami piszą z palca? Ile tego kodu jest z sieci? Po prostu zacznijmy być szczerzy. Jak nie publicznie w sieci to w zespole, w firmie. To jest klucz do dobrych relacji i kreatywności (jak się okazuje).
Ja na przykład jestem wolny w operacjach bitowych – wiem jak one działają, ale ich policzenie lub zrozumienie konkretnego wykorzystania zajmuje mi więcej czasu. Nie potrafię rozwiązywać zagadek/łamigłówek. Bardzo dużo googlam odpowiedzi na różne pytania, zaczynając od refleksji, a czasami kończąc na jakiś algorytmach. Potrafię się spektakularnie wyłożyć na prostych algorytmach pokazujący kompletny brak umiejętności myślenia logicznego – true story. Jestem słaby w algorytmach – wywalam je z miejsca z głowy bo nigdy się mi do niczego one nie przydały. Jak widać dużo tego jest. Nie jestem chodzącą encyklopedią wiedzącą wszystko. Jestem taki jak ty.
Więc jeżeli zaczynasz przygodę z programowaniem, nie przejmuj się, tym, że szukasz i rozwiązujesz problem za pomocą google. Większość to robi. Nie każdy się do tego przyznaje.
Niewiedza nie jest zła. Nie bójmy się do tego przyznać.
A więc, z czym TY masz problem drogi czytelniku? Wszystko Ci wchodzi w programowaniu? Czy może jednak nie jest to tak piękne jak inni uważają, że jest?
Bardzo pokrzepiający ten tweet – niemal lekarstwo na nękający wiele osób z branży Impostor syndrome. Pomimo wielu lat grzebania w .net i w wpf też często łapię się na tym, że nie pamiętam jak zrobić pewne proste rzeczy i sporo czasu tracę na grzebanie w starych projektach albo na googlanie. Swoją drogą ciekaw jestem czy np. Jon Skeet też się mierzy z takimi problemami…
Mamy w polskojęzycznej psychologii odpowiednik “impostor syndrome” – “syndrom Nikodema Dyzmy”. :)
hahaha :)
oo dobre pytanie z Skeet :) postaram się dowiedzieć :)
Też mnie to martwi. Od zawsze miałem problem z algorytmami. Moi znajomi są w tym dobrzy (finaliści olimpiad), a ja nigdy nie mogłem tego załapać. A skoro nie czaję algorytmiki, to znaczy, że mam problemy z logicznym myśleniem -› to co ze mnie za programista w takim razie ?
no, też długo myślałem kiedyś, że ja to muszę łykać takie problemy bo inaczej to słabo. Potem sobie to prosto wytłumaczyłem: ja nie tworzę nowych protokołów, nie wymyślam nowych standardów, nie tworzę i nie oprogramowuje komunikacji pomiędzy komponentami na płytach głównych. Więc mi ta wiedza do niczego nie jest potrzebna. Co prawda nie mówię, że w tych wypadkach ta wiedza jest potrzebna. Ale mi osobiście takie myślenie pomogło :)
Czy to nie jest tajemnica poliszynela? Każdy tak robi, każdy o tym wie ale nikt o tym nic nie mówi… Zapewne wiele osób Tobie przytaknie ale kiedy przyjdzie co do czego, to czy jednak strach przez “obnażeniem” okaże na tyle duży aby uniknąć prawdziwej odpowiedzi? Czy może tu działa jak zasada DADT (Don’t ask, don’t tell)?
Nie ukrywam, że zdarzało mi się na początku pracy w tej branży ukradkiem kopiować funkcjonalności, których nie do końca rozumiałem ale wiedziałem że działają w efekcie końcowym mogłem pokazać kolegom działający program bez tłumaczenia że tę a tę funkcję nie ja pisałem. To było już dość dawno. Masz rację, że nie ma się do kryć. Nie możemy być ekspertami we wszystkim, a jak czegoś bardzo rzadko używamy to tym bardziej nie ma sensu robić doktoratu z danej dziedziny.
Tutaj jeszcze wchodzi aspekt psychologiczny. Jak zaczynasz przygodę z programowaniem i patrzysz na swoich Guru, to wypierasz to, że oni też pewnie to robią. Taka smutna prawda :(
Więc tym bardziej Junior powinien wiedzieć o tym, że to nie jest tak, że tylko on szuka. Szuka każdy i jest wiele powodów dla których to robi.
W branży szkoleniowej startujący trenerzy zaczynają pracę od pochwalenia się swoimi zdolnościami, umiejętnościami i certyfikatami. Ci nieco bogatsi w doświadczenie rozumieją, że moment “przedstawienia się” to najlepsza chwila, by powiedzieć w czym NIE jest się ekspertem, aby uniknąć bycia postrzeganym jako α i Ω, podkreślając swoją “ludzką” naturę. Tworzy się zupełnie inna relacja na linii klient <–> trener.
Prawda, szczerość jest tutaj podstawą. Skoro klient uważa, że my jesteśmy szczerzy i ludzcy to i on łatwiej nam zaufa jak i będzie z nami szczery i ludzki.
Dla mnie szukanie rozwiązań w necie to norma i żaden powód do wstydu. Po co samemu się głowić nad rozwiązaniem (choćby tego sortowania bąbelkowego), jeżeli można skopiować gotowca z SO i tylko sprawdzić czy działa i ewentualnie poprawić jego czytelność. Zwykła oszczędność czasu i energii na bardziej złożone problemy, których google za nas nie rozwiąże. Sprawdzać składnie też żaden wstyd jak np. rzadko używa się SQL i raz na jakiś czas trzeba napisać jakiś bardziej złożony skrypt niż zwykły select. Niedawno np. potrzebowałem użyć kursor SQLowy, którego nie używałem od grubo ponad roku. Szybciej było skopiować gotowy szablon z msdn niż samemu kombinować jaka jest składnia.
Ciągle grzebię w różnych językach i technologiach. Często muszę nawet podpatrzeć jak zrobić for czy podmienić jakiś ciąg znaków w stringu :) Kiedyś były do tego ksiązki, teraz łatwiej sprawdzić na google. Totalnie nigdy nie pamiętam jaka jest konstrukcja języka. Ale to też o tyle fajne, ze na googlach łatwo wyłapać jakieś ciekawe konstrukcje, specyficzne dla danego języka. Code Wars po rozwiązaniu zadania widać jak inni to robią – naprawdę to jest ql.
Generalnie pomysły mam swoje (ogólna koncepcja i sposób rozwiązania – architektura). Algorytm jest mój (w tym chyba niezły jestem). Oczywiście ta wiedza wynika z pogłębiania wiedzy i miksowania jej. Znajomości jakichś tam micro serwisów i np wzorców projektowych czy architektonicznych. Ciągle pogłębiam wiedzę o tym jak się to robi – ogólnie. Ale to też nie jest tak, że sam coś wielkiego wymyśliłem. Ja raczej tylko dopasowuję to co znam, czasem jakąś malutką cegiełkę dołożę i tyle (a czasem wywalę parę cegieł i mur runie :D )
jasne, pytanie czy każdy o tym wie? ty wiesz, ja wiem, ale czy jak byłeś studentem i patrzyłeś na swojego Guru to myślałeś, że on tak robi? raczej nie :)
Natomiast do tego co się tu mówi, i napisał DHH – jakie są pytania rekrutacyjne :) Nie jak byś rozwiązał problem XYZ aplikacji, tylko napisz kod x czy y :)
Bez przesady, przecież cała nasza nauka to pobieranie z przykładów (choćby autorów)
no bo skąd człowiek miałby wiedzieć jak podejść np. do takiego NancyFX?
Miałby się przekopywać przez źródła biblioteki i rozkminiać jak to użyć? Bez sensu.
Z kolei jak się bierze całe biblioteki czy algorytmy to należy przestrzegać licencji i tyle,
zresztą widać to po kodzie źródłowym, gdzie po prostu jest w osobnym pliku z nagłówkiem
lub na liście pakietów. Jak licencja każe, to w about daje się info (np. wyliczanka jak Spotify).
Zresztą twórcy bibliotek mają w nosie tworzenie dobrej, przejrzystej i aktualnej dokumentacji,
więc szukanie po necie to chleb codzienny każdego programisty. W tych czasach :-D
po necie to mus.
i to znaczy, że dobrze, że jest nie mówimy o tym otwarcie tylko zachowujemy to dla siebie czy, że zakładasz, że wszyscy o tym wiedzą, że każdy ściąga kod z sieci? :)
Przecież każdy ściąga kod z sieci, oczywiście mam na myśli jakiś chwyt, podejście, a nie znak w znak dłuższą cześć.
Przecież nie od parady stackoverflow ma taki ruch i rozbudowaną infrastrukturę. Przeczytam, jak ktoś rozwiązał problem
a kod przepiszę choćby dlatego, że u mnie są inne nazwy zmiennych. Poza tym kod nie jest jakiś odkrywczy, nie ma
znamion wynalazczości (choćby jak wczoraj zastosowałem ze SOv route.MapRoute(‘favicon’, …) )
Rozróżnij, proszę, ściąganie kodów źródłowych całych bibliotek z sieci od wykorzystania fragmentów
przedstawionych w internecie.Poza tym te fragmenty to nierzadko kompilacja rozwiązań kilku osób.
To po prostu część nauki.
“że wszyscy o tym wiedzą, że każdy ściąga kod z sieci?” programiści doskonale wiedzą, że trzeba szukać informacji
w necie, bo taki jest duch czasów . Zaś nieprogramistów to nie obchodzi, a prawnicy nie mają pojęcia o co chodzi
(tak jak prawniczka z Warszawy w jednej umowie ze mną napisała głupoty, bo już nie miałem sił jej tłumaczyć)
Biblioteki są szybko aktualizowane, modyfikowane, tracą kompatybilność wsteczną, a dokumentacja
nie nadążą (dobry przykład jest w NancyFX, gdzie jawnie są braki).
To nie te czasy z przed internetu, gdy IDE Borlanda wychodziło co parę lat na kilkudziesięciu dyskietkach,
a aktualizację do Windows wysyłano tradycyjną pocztą na płycie CD. Teraz wszystko pędzi
i trzeba się dowiadywać z różnych źródeł.
To że Spotify zamieściło wyliczankę wynika wprost z zapisów licencyjnych danej biblioteki i faktu, że oni wykorzystali
całą bibliotekę.
Według Ciebie w About mojego softu mam podawać, że wykorzystałem fragmenty
z pluralsight.com czy learnvisualstudio czy podstron z stackoverflow.com?
Jak dany autor przykładu chce, aby było informacja, niech załączy licencję (na SO jest chyba takie pojęcie) i po sprawie.
Mam tak!
Comments are closed.