Jak zostać bardziej autonomicznym i samowystarczalnym programistą? [Zamknięte]

13

Jedynym największym czynnikiem, który powstrzymuje mnie przed byciem gwiazdorskim deweloperem, jest moje poleganie na innych. Czuję, że zadaję zbyt wiele pytań, ponieważ boję się konsekwencji zniszczenia wszystkiego i powstrzymania wszystkich. Jestem więc zbyt ostrożny, zadając tak wiele pytań, że w zasadzie dostaję odpowiedzi po wystarczającej liczbie pytań. Uznałem, że to źle, ale chcę to zatrzymać. Częściowo wynika to z tego, że czasami po prostu nie znam kodu (albo to gałąź, z którą nigdy nie pracowałem, albo zupełnie nowy produkt), ale chcę polegać na innych mniej. Przedmowa, tego rodzaju pytania nie dotyczą ogólnych wzorców lub języków: zazwyczaj moje pytania dotyczą tego, w jaki sposób kodujemy w naszej firmie i jak działamy w naszym ekosystemie. Chcę być w stanie brać specyfikacje i toczyć się z nimi bez potrzeby czucia, że ​​potrzebuję pomocy na każdym etapie. Czy to normalne? Czy przeszedłeś przez to, a jeśli tak, jak sobie z tym poradziłeś?

acconrad
źródło
1
Może to tylko kwestia kulturowa / językowa ... ale co sprawia, że ​​myślisz, że kiedykolwiek będziesz znakomitym programistą? Co sprawia, że ​​jesteś o wiele lepszy niż 99% innych nowych programistów?
Stephen C
5
Nie jestem teraz jednym, ale chcę być. Zawsze staram się uczyć i doskonalić. Większość ludzi boi się nawet przyznać, że ma problem. Chcę znaleźć swoje problemy, uznać je i rozwiązać je. Najlepsi w każdej dziedzinie dążą do ciągłego doskonalenia, a ja staram się to robić.
acconrad

Odpowiedzi:

24

Widzę, że niektórzy nowi programiści podejmują pracę i od razu czują się nieodpowiedni. Zrobiłem to samo na początku mojej kariery. Myślę, że są co najmniej dwa główne problemy, które większość inteligentnych facetów musi przezwyciężyć: postrzeganie czasu i ich naturalna zdolność.

Percepcja czasu
Inteligentni faceci są przyzwyczajeni do stosunkowo szybkiego rozwiązywania problemów. Pamiętam, jak byłem przerażony, kiedy musiałem spędzić godzinę na jednym problemie z rachunkiem. Spędzanie 60 minut na problemie to już nic. Te dni się skończyły ... pochować ich i pożegnać. Złożoność i wielkość większości dzisiejszych programów jest oburzająca. Ludzie nie rozumieją już wszystkich narzędzi, których muszą używać, aby wykonywać swoje zadania. Douglas Crockford, jeden z kluczowych ludzi języka JavaScript, powiedział:

"Misapplication of standard tools...is the new standard."

Na świecie po prostu nie ma wystarczająco dużo czasu, aby nauczyć się wszystkich narzędzi programistycznych.

Naturalna zdolność
Twoja inteligencja, umiejętność rozwiązywania problemów i naturalne umiejętności sprawiły, że w pierwszej kolejności uczestniczyłeś w całym koncercie deweloperskim. Po prostu nie ma miejsca na nic mniej w tej dziedzinie. Więc co robisz ze 100 000 wierszy kodu, języków i frameworków, które ledwo znasz, wzorami i paradygmatami, które ludzie na ciebie naciska, faceci, którzy znają większość z nich jak na dłoni, klienci, którzy chcą tego wczoraj, i szef kto oczekuje od ciebie świata? Wystraszysz się, gdy zawiodą twoje naturalne umiejętności

Tak, to normalne. Nadal wariuję z niektórymi rzeczami, które mi się wyrzucają.

Co można zrobić?

Czas poprawić te naturalne umiejętności dzięki staromodnej, ciężkiej pracy. Pracuj nad rozkładaniem problemów na mniejsze części. I zdaj sobie sprawę, że w przeciwieństwie do wielu rzeczy, które mogłeś zrobić w przeszłości, problemy te zajmują dużo czasu. Więc nie poddawaj się już po 15 minutach badania złożonego problemu. Zamiast tego rozwiąż problemy i przestań obserwować zegar. Po pewnym czasie 30 minut pracy z problemem nie jest już tym, czym był kiedyś.

Pewność siebie odgrywa dużą rolę w zdolności do samorządności. Podobnie robi zespół, zwłaszcza bardziej doświadczeni seniorzy. Dobrze jest uważać, aby nie zniszczyć rzeczy, ale to nie znaczy, że musisz zadawać ciągły strumień pytań.

Zamiast tego skorzystaj z kontroli źródła. Dopóki nie zameldujesz zmiany, nie możesz złamać głównego produktu i rozgniewać innych deweloperów. Wprowadź zmiany, które możesz zrozumieć i przetestuj, i pamiętaj o ich przetestowaniu przed zameldowaniem.

Mam nawet mały projekt testowy, za pomocą którego piszę jednorazowe, proste programy, więc nie muszę się martwić o wszystkie wydarzenia w głównej aplikacji.

Na koniec pamiętaj, że każda decyzja wiąże się z pewnym poziomem dawania i przyjmowania. Nie można iść naprzód bez poświęcenia na pewnym poziomie. Nie dąż do perfekcji, dąż do niesamowitości i uważaj na swoje czyny. Ponieważ zawsze musisz być przygotowany na krytykę i wyjaśnienie swoich pomysłów oraz powodów, dla których je stworzyłeś. Bądź dumny ze swoich decyzji. Nawet jeśli się mylą, wiele się można nauczyć.

P.Brian.Mackey
źródło
2
Pracuj nad nim +1, dopóki się nie poddasz. Czasami spędziłem 2-3 dni na rozwiązywaniu jednego problemu. Jeśli chodzi o łamanie: spróbuj TDD lub przynajmniej pisz testy jednostkowe.
ashes999
12

Po pierwsze nie bój się zadawać pytań. Widziałem nawet starszych architektów, którzy zadają pytania na temat kodu. Nie oczekuje się, że wiedzą wszystko; oczekuje się, że będą mieli wystarczającą wiedzę, aby wykonać zadanie, i będą mogli zrozumieć resztę.

Prawdopodobnie najlepszą taktyką byłoby:

  • Dowiedz się, jak wyszukiwać w Google. Możesz znaleźć odpowiedzi na prawie wszystko przy odrobinie pracy śledczej. Przepełnienie stosu działa cuda dla tych trudnych do rozwiązania problemów.
  • Dowiedz się, jak debugować. Spędziłem godziny wkraczając w dziwaczny, głęboki kod korporacyjny, ale tylko po to, by znaleźć zmienną X to 3 zamiast 7. Możliwość odczytu kodu i debugowania to prawdopodobnie najlepszy sposób na uzyskanie autonomii.
ashes999
źródło
Nie dlatego, że jestem specjalnym kwiatkiem, ale moje problemy nie dotyczą języków. Nie chodzi o to, jak robić rzeczy w moim języku. Większość moich pytań jest bardzo skoncentrowana na firmie: chodzi o to, jak robić rzeczy w dziedzinie specyficznej dla naszego środowiska w naszym miejscu pracy. Są to rzeczy, których nie możesz Google, jeśli chcesz.
acconrad
3
Rozumiem całkowicie; Byłem w tej samej sytuacji przez trzy lata. Punkt punkt 2 to odpowiedź: Naucz się debugować. Ludzie często nie pamiętają szczegółów; debugowanie jest kluczem.
ashes999
1
Zgadzam się. Zadawaj pytania, dopóki nie poznasz więcej odpowiedzi niż ludzie wokół ciebie. Zejdź na dół i porozmawiaj z zespołem kontroli jakości, aż będziesz w stanie wykryć i naprawić błędy. Google jest Twoim kumplem; używaj go szeroko. Pewnego dnia przekonasz się, że wysyłasz pytający e-mail i sam znajdziesz odpowiedź, zanim odpowiedź wróci.
Andy Canfield
5

Nie bój się zadawać pytań „na duży obraz”

Kiedyś próbowałem znaleźć najmniejsze pytanie, jakie mogłem zadać i nadal móc kontynuować swoją pracę, ze strachu zostałbym uznany za niekompetentnego, gdybym zadawał szerokie pytania, na które wszyscy znają odpowiedź. Nie rozumiałem różnicy między ignorancją a niekompetencją. Niewiedza oznacza po prostu, że jeszcze czegoś się nie nauczyłeś i jest całkowicie do przyjęcia, o ile nie trwa. Udawanie niewiedzy jest znacznie gorsze.

Jeśli okaże się, że odpowiedzi ludzi zabierają cię do tej pory, musisz poprosić ich, aby nauczyli cię łowić ryby zamiast podawać ci inną rybę. Zapytaj, jak Twoja część pasuje do całości. Jeśli twoje pytanie wydaje się tak proste, jak „co to jest SQL”, zadaj je wcześniej niż później. Możesz teraz wyglądać trochę głupio, ale później będziesz wyglądać o wiele głupiej.

Daj sobie okres oczekiwania

Nie zadawaj pytań, gdy tylko je uzyskasz. W zależności od złożoności daj sobie od pół godziny do jednego dnia, aby spróbować samemu to rozwiązać. Wiele razy sam to rozwiążesz. Jeśli nie, będziesz mógł powiedzieć swojemu współpracownikowi, co nie zadziałało, co może pomóc mu w udzieleniu lepszej odpowiedzi.

Ponadto, jeśli twój kolega nie zna odpowiedzi z góry, zwróć uwagę na to, jak do niej doszedł. Wiele razy nie potrzebujesz tak dużo pomocy, jak myślisz. Jeśli nie mam czasu na pytanie, często wskazuję komuś mętny kierunek i mówię, że przyjadę po nim, gdy otrzymam minutę, a oni zazwyczaj rozwiązali to, zanim tam dotrę.

Wyrzuć kilka przeciągów

Usiądź i odłóż wszystko, co przychodzi ci do głowy, a potem jesteś pisarzem. Ale autor jest tym, który bez litości może oceniać własne rzeczy i niszczyć większość z nich.
—Sidonie Gabrielle Colette

Nie bój się pisać kodu, który nigdy nie przekształci go w wydanie. Im więcej zdobędziesz doświadczenia, tym szybciej będziesz w stanie powiedzieć, że idziesz niewłaściwą ścieżką, ale zejście niewłaściwą ścieżką wciąż się zdarza. Wiele razy wartość rozwiązania nie jest widoczna, dopóki nie zobaczysz, że zrobiłeś to źle.

Karl Bielefeldt
źródło
1

Pojawiłaby się samowystarczalność

  • Zwiększone doświadczenie i ekspozycja w domenie.
  • Zwiększone umiejętności obserwacji i umiejętności analityczne w celu zrozumienia istniejących systemów i ich zachowania, zależności.

Częste zadawanie pytań groziłoby pokazaniem, że nie masz ich obu.

Jeśli zmienisz domenę, technologię, platformę, język, wrócisz do punktu wyjścia (prawie nie licząc zwiększonej umiejętności rozwiązywania podobnych problemów i wiedzy, którą można przenieść)

Nie zadawanie pytań, gdy jest naprawdę potrzebne, zmarnowałoby wiele cennego czasu produkcji.

Może to działać na twoją korzyść, upominając słowo o twoim przypuszczeniu na temat zakresu możliwych szkód, jeśli zrobisz to źle. lub co Twoim zdaniem może się popsuć, aby uzyskać rzeczywistą ocenę twoich założeń. Wiele razy może to pozwolić ci odkryć punkty i kąt, które przeoczyłeś.

Ostrożność jest dobra, ale najlepiej zacząć od określenia charakteru swoich pytań. Najlepiej, jeśli zapiszesz go na papierze i sprawdzisz jego trudność / wartość.

  1. Czy jest to coś, co można znaleźć w google / forach lub pracując nad tym dłużej
  2. Czy jest to coś, co można uciec lub naprawić bez większych kosztów, jeśli się zepsujesz?
Aditya P.
źródło
0

Powiedziałbym, żeby spojrzeć na rzeczy, nad którymi pracujesz i sam zaczął podejmować decyzje (oczywiście zachowując specyfikację aplikacji). Do tej pory powinieneś mieć dobre przeczucie, co jest daleko idącą zmianą i co jest prostą zmianą. Zacznij od prostych. Jeśli uważasz, że to, co robisz, jest właściwe, zrób to.

Ci BĘDZIE popełniają błędy i to są bezcenne. Naucz się od nich wszystkiego, co możesz, kiedy się pojawią, ponieważ dzięki temu następnym razem wykonasz lepszą pracę.

Kiedy będziesz już zadowolony z mniejszych decyzji, zacznij podejmować większe. Musisz zdecydować, jak daleko posunąć się do tego, w oparciu o swój projekt / środowisko / zespół.

To strona decyzyjna. Inną rzeczą, którą musisz zrobić, to karmić swój mózg, aby mógł pomóc w podejmowaniu decyzji. Śledź witryny obejmujące Twoją technologię. Dostępne są samouczki online dotyczące prawie wszystkiego, od prostych po dziwnie złożone. Nie bój się pytać ludzi, dlaczego podejmują określone decyzje - jako osoba poszukująca informacji, a nie konfrontacyjna. Większość ludzi chętnie wyjaśnia rzeczy i można się z nich wiele nauczyć.

Gdy masz już wiedzę techniczną, resztą jest mądrość i pewność siebie, a ci mają doświadczenie.

Dave Wise
źródło
0

Gdy byłem początkującym, zadawałem pytania, zawsze starałem się uzyskać częściową odpowiedź na ten temat, korzystając z dostępnych narzędzi; a kiedy dotarłem tak daleko, jak tylko mogłem, wymyśliłem dokładnie, jak sformułować moje pytanie, aby było tak jasne i zwięzłe, jak to możliwe, przy założeniu, że osoba, do której idę po pomoc, jest zajęta. Przy odrobinie przygotowania nie sądzę, żeby ktokolwiek kiedykolwiek miał coś przeciwko, żebym zadawał im pytania, i faktycznie miałem wrażenie, że im się podobało. Później, kiedy zostałem ekspertem w dziedzinie, lubiłem pomagać ludziom, którzy jasno stwierdzili, że szanują mój czas.

Inną rzeczą, którą robiłem, było codziennie przeglądanie architektury systemu. Inne plakaty komentują, jak wielkim przedsięwzięciem są współczesne systemy, jak trudno się z tym pogodzić. Więc chodziłem na wycieczki po kodzie: zacznij od jakiegoś sensownego punktu wejścia, następnie prześledź go, zapisując sobie notatki o tym, jak to działa, zadając pytania, na które czasami odpowiadam sam, a czasem pytam o to innych ludzi. Ten rodzaj nadrzędnej znajomości i kompetencji domeny wymaga czasu, ale można go przyspieszyć; a im więcej będziesz robić, tym szybciej będziesz samowystarczalny w pożądany sposób.

shanusmagnus
źródło