2016-11-29 09:43:59 +0000 2016-11-29 09:43:59 +0000
249
249

Czy korzystanie z dokumentacji jako programista sprawia, że wyglądam nieprofesjonalnie?

Jestem młodszym programistą i pracuję co trzy miesiące w firmie programistycznej w ramach studiów korporacyjnych.

Mimo, że programuję od prawie 1 roku (3 x 3 miesiące doświadczenia zawodowego + projekty poboczne), dość często muszę sprawdzać dokumentację i/lub Stack Overflow w ciągu dnia pracy. Obawiam się, że to sprawia, że wyglądam nieprofesjonalnie lub bardziej niedoświadczenie niż w rzeczywistości (jestem dość wygodny w projektowaniu i budowaniu oprogramowania, ale często muszę szukać takich terminów jak “funkcja PHP/JavaScript, która robi XYZ”). W większości przypadków powinienem już o tym wiedzieć, ponieważ mam już to wcześniej w zwyczaju, ale chcę sprawdzić przed popełnieniem błędów.

Powodem zadania tego pytania jest to, że tak często drwię z używania Stack Overflow/dokumentacji, co sprawia, że inni i ja sami wątpimy w moje możliwości. Jest to dla mnie naturalne, że mogę pracować wydajniej i bardziej świadomie używać języka. Ktoś kiedyś powiedział mi coś takiego: “Chirurg nie może czytać swoich książek za każdym razem, gdy musi operować pacjenta.” Co jest moim zdaniem nonsensem.

Proszę również o przyszłość; np. jeśli muszę napisać kod podczas rozmowy kwalifikacyjnej do innej pracy, to chyba nie powinieneś używać tej dokumentacji.

Odpowiedzi (14)

125
125
125
2016-11-29 13:26:09 +0000

Czy korzystanie z dokumentacji jako deweloper sprawia, że wyglądam nieprofesjonalnie?

Nie, to znaczy wręcz przeciwnie… ponieważ nie przeszkadzasz swoim seniorom zadając pytanie, które łatwo znaleźć w Internecie lub poprzez dokumentację.

Większość z nas nie pamięta tysięcy linijek dokumentacji… Cały czas, szczególnie gdy przełączamy się pomiędzy technologiami

Pytam też o przyszłość; np. jeśli muszę napisać kod podczas rozmowy kwalifikacyjnej do innej pracy, to chyba nie powinieneś używać dokumentacji.

Większość rozsądnych firm chciałaby przetestować logikę/strukturę, którą wymyślasz w teście kodowania… nie tyle o składni.

63
63
63
2016-11-29 18:43:48 +0000

Ktoś mi kiedyś coś takiego powiedział: “Chirurg nie może czytać swoich książek za każdym razem, gdy musi operować pacjenta.”

Ktokolwiek ci powiedział, że nie wie, jak działa operacja. O ile nie jest to bardzo powszechna procedura, którą chirurg praktykował sto razy, o tyle ci dobrzy spędzają dużo czasu na studiowaniu przed każdym widzianym przez siebie pacjentem. Spędzają też wiele lat w szkole medycznej studiując przedmiot, który nie zmienił się wiele w ciągu kilku tysięcy lat.

Jesteś na pierwszym roku w branży, w której co tydzień wymyślane są nowe sposoby robienia rzeczy. Jesteś niedoświadczony, więc należy się spodziewać, że będziesz musiał często sprawdzać te rzeczy. Tak długo, jak masz podstawy, aby wiedzieć, czy rozwiązania, które znajdziesz, rzeczywiście rozwiążą Twój problem i czy wyciągasz wnioski z tego doświadczenia, nie ma w tym nic złego. Jestem inżynierem oprogramowania od 15 lat i nadal muszę sprawdzać wszystko prawie codziennie. Profesjonalista korzysta z każdego dostępnego mu zasobu, aby wykonać swoją pracę.

29
29
29
2016-11-29 12:57:01 +0000

Profesjonalizm i wiedza to dwie zupełnie różne rzeczy.

Szukanie rzeczy ze źródeł zewnętrznych oznacza brak wiedzy, a nie brak profesjonalizmu. Brak wiedzy jest tematem samym w sobie, ale ogólnie rzecz biorąc nie ma osoby, która wiedziałaby wszystko.

Jeśli wiesz o swoim braku wiedzy i radzisz sobie z nim, szukając rzeczy ze źródeł zewnętrznych, oznacza to, że masz profesjonalną strategię, aby rozwiązać swój specyficzny problem braku wiedzy.

Nie szukanie rzeczy, nie wiedząc, że rzeczy są nieprofesjonalne, ale to nie jest twoja sprawa.

Dalsza lektura na temat efektu, który kontrastuje z twoją “strategią używania dokumentacji”: Efekt Dunning-Krugera

24
24
24
2016-11-29 14:39:01 +0000

Czy korzystanie z dokumentacji jako deweloper sprawia, że wyglądam nieprofesjonalnie?

Nie. Pamiętanie o drobnych, arbitralnych szczegółach to strata zasobów. Musiałbyś zapamiętać wiele z nich zarówno w PHP (który nie ma trochę na stronie konsystencji), jak i ogólnie w rozwoju sieci, gdybyś poznał kilka języków i kilkanaście frameworków.

Wyśmiewam się z tego, że tak często używam SO/Documentation, co sprawia, że wątpię w swoje możliwości

To może nie być najbardziej efektywny sposób na rozwiązanie Twoich zadań.

Czy używasz jakiegoś IDE? Czy Twoi koledzy używają jakiegoś IDE? Ponieważ wyszukiwanie tych drobnych szczegółów może być usunięte z IDE w funkcji automatycznego uzupełniania danych. Używanie funkcji autouzupełniania jest bardziej efektywne niż przełączanie się na przeglądarkę i szukanie tam odpowiedzi.

Jeśli Twoi współpracownicy korzystają z funkcji autouzupełniania IDE, a Ty używasz Google, może to wyglądać nieprofesjonalnie - nie dlatego, że sprawdzasz dokumenty, ale dlatego, że robisz to nieefektywnie.

Jeśli Twoi współpracownicy polegają na ich pamięci, a Ty polegasz na funkcji autouzupełniania, będziesz w stanie wykonać je w zadaniach, które wykorzystują jakiś framework, z którym nikt z Was nie jest zaznajomiony, co nie jest tak rzadkie w sieci.

Opanuj swoje narzędzia i pokaż wydajność, to jest profesjonalne.

19
19
19
2016-11-29 16:41:49 +0000

Inni udzielili solidnych odpowiedzi, ale tak naprawdę nikt się tym nie zajmuje; śmiały akcent jest mój:

The reason for asking this question is that I get kpi for using Stack Overflow/documentation frequently which makes others doubt my abilities.

Kim są ci ludzie “kpiący” z ciebie i skąd to wiesz “…makes others doubt [your] abilities?”

This all sounds like garden variety (aka: common) hazing to me. Jeśli jesteś młodszym deweloperem, jesteś naturalnie w hierarchii, gdzie inni będą cię testować i wciskać guziki w ramach swoich własnych zachowań. Dzieje się tak bez względu na to, czy są tego świadomi, czy nie; to jest po prostu równorzędne z kursem.

Pod koniec dnia, każda osoba na świecie używa narzędzi referencyjnych, aby wykonać pracę. Heck, czy prawnicy i lekarze nie mają mnóstwa referencji i książek, do których nieustannie się odwołują? Programowanie nie jest inne.

Twoja praca jako programisty polega na łączeniu pragnień projektu z rzeczywistością samego kodu. Twoja praca nie polega na zapamiętywaniu tajemniczych bzdur, a jeśli dojdziesz do punktu, w którym możesz zapamiętać - a nawet wizualizować - tajemnicze bzdury, to gratuluję! Ale to nie zdarza się z dnia na dzień i czasami dla niektórych w ogóle nie zdarza się.

FWIW Pracę komputerową wykonuję od ponad 20 lat i tylko w ostatnich latach mogę dosłownie wizualizować rozwiązania w mojej głowie bez pisania wiersza kodu. Jest to umiejętność, w którą się wyrasta i nie można jej wymagać od kogoś, kto ma ją na żądanie.

16
16
16
2016-11-29 16:00:03 +0000

Chociaż nie sprawi to, że będziesz wyglądał nieprofesjonalnie do profesjonalisty (w przeważającej większości przypadków), możesz zachować ostrożność wobec naiwnego klienta lub menedżera. Tak jak ty, z prawie rocznym doświadczeniem programistycznym, nie jesteś pewien, czy profesjonaliści muszą sprawdzać wszystko, tak i ludzie z jeszcze mniej istotnym doświadczeniem mogą być niepewni.

W rzeczywistości broniłem innych programistów przy kilku okazjach, kiedy klient zaangażowany w konsulting powiedział coś w stylu “dlaczego płacę dobre pieniądze za kogoś, kto nie potrafi nawet napisać kodu bez sprawdzenia go w Internecie?”

To było rzadkie, ale oczywiście nie wiem ilu ludzi miało złe wrażenie, ale milczeli.

14
14
14
2016-11-29 16:08:10 +0000

Z pewnością nie jest nieprofesjonalne sprawdzanie rzeczy, które nie są Ci znane.

Jednak Jeżeli nie zachowujesz tej wiedzy i ciągle szukasz tych samych rzeczy , to może być problem. To jest nieefektywne. To sprawia, że jesteś wolniejszy i to może być przyczyną kpin. Musisz nauczyć się podstaw swojego zawodu do tego stopnia, że nie będziesz musiał szukać ich za każdym razem.

10
10
10
2016-11-29 20:10:41 +0000

Dużo bardziej profesjonalnie jest przeczytać dokumentację i dobrze zrozumieć swój kod niż zgadywać i źle go zrozumieć. Dotyczy to zwłaszcza języka takiego jak PHP, gdzie standardowa biblioteka jest przypadkowo zaprojektowana, trudna do zapamiętania i pełna gotchas.

Weźmy na przykład funkcję mail() . Czy wiesz, że…

additional_headers nie ma zabezpieczenia nagłówka poczty przed wstrzyknięciem. Dlatego też użytkownicy muszą się upewnić, że określone nagłówki są bezpieczne i zawierają tylko nagłówki, tzn. nigdy nie uruchamiaj korpusu maila poprzez umieszczanie wielu nowych nagłówków.

Jeśli nie jesteś świadomy tego zastrzeżenia, to w końcu wprowadzasz lukę bezpieczeństwa .

Wysyłając maila, mail musi zawierać nagłówek From. Można to ustawić przy pomocy parametru additional_headers, lub ustawić domyślnie w php.ini.

Oznacza to, że zachowanie Twojej aplikacji może zależeć od globalnego ustawienia konfiguracji. Warto o tym wiedzieć, aby uniknąć pisania kodu, który wydaje się działać poprawnie na jednej maszynie, ale nie jest przenośny dla innej.

Jasne, możesz być w stanie wykręcić więcej kodu nie czytając uważnie dokumentacji, ale prawdopodobnie nie będzie to kod professional-quality. Nie ma żadnego wstydu w częstym sprawdzaniu dokumentacji, aby upewnić się, że używasz poprawnie języka i bibliotek.

7
7
7
2016-11-29 10:20:30 +0000

Szukanie rzeczy, co do których nie jesteś pewien, oszczędza czas, a także pozwala sprawdzić, czy nie ma lepszych sposobów, aby coś zrobić. Utknięcie w miejscu i robienie tego samego w kółko nieefektywnie, gdy jest lepszy sposób tylko przez sprawdzenie, że sieć nie jest dobra.

4
4
4
2016-11-30 09:21:58 +0000

Jest różnica między “zawodowcem” a “znającym się na rzeczy”. Jeśli jest jakaś informacja, którą muszę znać, a mam wybór między głupim siedzeniem na krześle a utknięciem, albo sprawdzeniem dokumentacji, to sprawdzam dokumentację. To jest absolutnie profesjonalne.

Jeśli ta informacja jest czymś, co osoba obeznana z moim stanowiskiem powinna wiedzieć, to jej sprawdzenie może pokazać, że nie jestem tak obeznany z tym, jak powinienem, ale nadal jest całkowicie profesjonalne - ponieważ alternatywą jest nie wiedzieć jej, a nie uczyć się jej. Co (część nie ucząca się) jest całkowicie nieprofesjonalne.

Byłoby śmieszne zakładać, że wiesz wszystko, co powinieneś wiedzieć, bo każdego dnia będzie coś świeżego, co powinieneś wiedzieć, czego nie było wczoraj. Nawet jeśli know coś, skąd wiesz, że twoja wiedza jest najlepsza z możliwych? Konsultujesz się z dokumentacją, aby dowiedzieć się, czy jest jakaś lepsza wiedza na ten sam temat.

Rzadko zdarza się, że jest jakiś problem, którego sam nie potrafię rozwiązać. Ale to wymaga czasu. Biorąc pod uwagę wybór pomiędzy jedną godziną na samodzielne rozwiązanie problemu, a pięcioma minutami w Google, spędzenie tej godziny jest nieprofesjonalne.

4
4
4
2016-11-29 22:24:12 +0000

Jak inni odpowiedzieli, nie ma czegoś takiego jak bycie nieprofesjonalnym w sprawdzaniu dokumentacji, szczególnie biorąc pod uwagę, że jesteś juniorem, szczególnie biorąc pod uwagę, że programowanie jest ogromne i zawsze jest jakiś szczegół, o którym możesz zapomnieć i masz misję, aby Twój kod był poprawny.

Istnieją jednak przypadki, które uznałbym za nadużycie dokumentacji.

Mam uczelnię, która czasami nie jest w stanie wymyślić własnego rozwiązania danego problemu. Dlatego też czasami sprawdza on w sieci, jak rozwiązać swój problem. Ostatnim razem, na przykład, sprawdzał jak framework webowy był architekturą walidatorów i liczników błędów, ponieważ miał pozornie podobną funkcję do projektowania.

Jest to przypadek, w którym to czego szukasz jest zbyt abstrakcyjne, aby Internet mógł Ci pomóc. Co gorsza, można znaleźć rozwiązania, które pozornie pasują, ale w rzeczywistości nie pasują, ponieważ są stosowane do innego przypadku użycia. Próbując złapać jakiś wcześniej przygotowany kod/architekturę/wzór miałby mniej lub bardziej wstrzykiwany kod w naszej bazie, który być może zadziałał, ale byłby trudny do utrzymania, ponieważ napisany przez kogoś innego w innym celu.

Nie zaglądam do dokumentacji często, ponieważ piszę kod, który używa głównie podstawowych funkcji językowych (brak frameworka) i jestem obdarzony niezawodną pamięcią, jeśli chodzi o kod, ale używam doc za każdym razem, gdy utknąłem na czymś trywialnym. Jeśli jednak utknąłem na jakimś wyższym poziomie, dobrą rzeczą do zrobienia jest zwrócenie się o pomoc do bardziej doświadczonego college'u, dostaniesz znacznie lepszą odpowiedź.

2
2
2
2016-12-02 12:29:29 +0000

Masz już kilka dobrych odpowiedzi, ale pozwól mi dodać trochę przekrętu…

Lubię ludzi używających dokumentacji i jest to świetny znak dla twojego profesjonalizmu.

Not using documentation

Znam wystarczająco dużo programistów, którzy potykają się bez prawdziwego planu na długie okresy czasu, próbując tego i owego przez przypadek, wybierając przez stary kod źródłowy, gdzie cokolwiek chcą osiągnąć wydaje się, że zostało już zrobione (ale nie całkiem) i tak dalej. Szczerze mówiąc, nienawidzę tego rodzaju podejścia. Nigdy nie zbliżają się bardzo daleko, często muszą pytać ludzi, rzadko korzystają z rad i wolą kontynuować to w ten sposób na zawsze, pozornie.

Tylko tutoriale?

Ludzie często googlują po tutoriale lub fragmenty kodu, w tym SO, bez odwoływania się kiedykolwiek do dokumentacji, irk mnie do końca. To zachowanie jest, moim zdaniem, ogromną pułapką. Prowadzi ono do pewnego rodzaju programowania napędzanego na wpół upieczoną, arbitralną, niesystematyczną “wiedzą”. Ci programiści mają tendencję do kończenia z wieloma uprzedzeniami. To właśnie stąd pochodzą takie nuggetsy jak “never use git rebase”, “never use not in in SQL”, “always do XXX”, “never do YYYY”. Będzie im bardzo trudno myśleć nieszablonowo, wymyślać nowe pomysły, formować intuicję o tym, jak zbudować swoje aplikacje i wszystko to, co składa się na świetnych programistów.

Nalegam, abyś rozwiązał każdy problem najpierw patrząc na dokumentację/podręcznik, i then szukaj SO lub innych snippetów.

Oczywiście są wyjątki. Jeśli twój problem jest oczywiście czymś w rodzaju błędu, lub czymś bardzo, bardzo, bardzo szczególnym, co raczej nie będzie rozpatrywane w jakiejkolwiek dokumentacji (np, specjalna kombinacja bibliotek/modułów itp.), wtedy na wszelki wypadek przejdź od razu do SO.

Jeśli jest to coś co może być łatwo rozwiązane przez dokumentację/API, wtedy sugerowałbym usiąść i popracować nad tą konkretną częścią twojego języka programowania / bibliotekami itp. tak aby twoja wiedza się zacieśniła.

Dokumentacja

Najlepszy rodzaj, dla mnie, to programista, który spotykając się z nowym tematem, poświęca czas aby naprawdę usiąść, zagłębić się w niego, uzyskać dobry przegląd i dobre zrozumienie techniczne. Najczęściej osiąga się to (znów, z moim doświadczeniem, z wieloma językami programowania, z którymi miałem kontakt) czytając starą, dobrą dokumentację zawierającą odniesienia do API i tak dalej. Moim zdaniem, nigdy nie można tego zastąpić niczym innym.

Nie uważam, aby czytanie, na przykład, starej klasyki C++ (starego dobrego papieru), Gang of Four Design Patterns, (internetowej wersji) podręcznika “Programming Ruby”, niezwykle dobrze przygotowanych manuskryptów Perla, książki Gita, niektórych RFC, specyfikacji HTML/XML/etc. i tak dalej od przodu do tyłu. Zrobiłbym i zrobiłbym to nawet w wolnym czasie i, szczerze mówiąc, oczekiwałbym tego od każdego programisty wartego jego soli (oczywiście w zależności od tego, z czym pracują). Jestem również w pełni świadomy, że jestem (przynajmniej w firmach, w których pracowałem, w ostatnich dekadach) całkiem sam z tą opinią.

(Uwaga: Oczywiście nie musisz zapamiętywać ogromnych list referencji API, ale przynajmniej zerknij na nie, aby zobaczyć co jest dostępne i jaki jest “duch” API. )

Po dokładnym zapoznaniu się z tematem, then to czas na przyjrzenie się kodowi strony trzeciej w poszukiwaniu inspiracji, lub na przyjrzenie się starszym pytaniom SO (lub zadawanie nowych pytań samodzielnie).

Możesz również zauważyć, że gdy wchłonąłeś jedno takie pole, bardzo łatwo jest znaleźć odpowiedzi poprzez zbliżenie do miejsca, z którego otrzymałeś dokumentację (man pages etc.). W tym momencie, autokompletacja Twojego edytora może być już wystarczająca. I równie dobrze możesz szybko dowiedzieć się, kiedy coś jest po prostu niemożliwe z narzędziem, z którym pracujesz, oszczędzając wiele daremnych poszukiwań.

0
0
0
2016-12-05 01:57:48 +0000

Twoje umiejętności jako programisty polegają na tym, w jaki sposób możesz zrobić pełny obraz i zaprojektować efektywne rozwiązania, a nie na tym, ile API możesz zapamiętać. Celem jest prawidłowe i efektywne wykonanie pracy. Gdybyś musiał sprawdzać każde API i każdy szczegół, to powiedziałbym, że masz jakieś problemy. Oczekiwałbym, że dobry programista będzie dokładnie zaznajomiony ze wszystkim, co jest często używane, ostatnio i rutynowo, ale nie będzie marnował siły na rzeczy używane rzadko, kiedy można je łatwo przejrzeć. Jeśli odwiedzałbyś stackoverflow mniej więcej raz dziennie, to nie byłby to problem; jeśli jesteś na nim w większości swoich typowych dni roboczych, to byłby to problem.

-1
-1
-1
2016-12-06 14:36:27 +0000

Wyśmiewam się z tego, że tak często używam Stack Overflow/documentation

Opinie innych ludzi o tobie nie definiują you, definiują tylko them

Czy używanie dokumentacji jako dewelopera sprawia, że wyglądam nieprofesjonalnie?

Nie… częścią bycia profesjonalistą jest kompetencja w wykonywaniu pracy. Jesteś wyśmiewany, ponieważ twoi koledzy są dręczycielami, a nie z powodu czegoś, co robisz źle.

“Chirurg nie może czytać swoich książek za każdym razem, gdy musi operować pacjenta.”

Dlaczego nie? Jestem sceptycznie nastawiony do tego twierdzenia, chyba że jest niezwykły kryzys czasowy. Używanie materiałów referencyjnych zajmuje tylko kilka sekund.

jeśli muszę napisać kod podczas rozmowy kwalifikacyjnej do innej pracy, to chyba nie powinieneś używać dokumentacji

Zależy od zasad rozmowy kwalifikacyjnej, niektórzy na to pozwalają, inni nie. W szczególności, jeśli jest to test, to może być dozwolone. Dobrym pomysłem jest, aby najpierw sprawdzić!