Czy powinienem skupić się na byciu głębokim czy szerokim [zamknięty]

10

Od ponad pół roku jestem profesjonalnym programistą i zadziwiło mnie, jak wielki jest świat po studiach. Nadal uczę się w wolnym czasie, ale zastanawiam się, na czym powinienem się skupić?

FOCUS 1) Stos programistyczny używany przez moją firmę. Najszybsza wypłata w moim codziennym rozwoju. # Deeestest

FOCUS 2) Inny język z tym samym paradygmatem. Sprawdź, czy mogę uogólnić swoją wiedzę i sposób myślenia.

FOCUS 3) Inny język, inny paradygmat. Rozszerz moje granice i naucz się nowych sposobów robienia rzeczy. #Bestest

Jeśli ktoś ma inny cel, nie krępuj się.

Bob Roberts
źródło

Odpowiedzi:

18

Tak.

Powiedziałbym, że musisz zrobić jedno i drugie. Zacznij od nr 1, ponieważ ma to natychmiastową wypłatę, a nie robiłeś tego zbyt długo. Ale zdecydowanie musisz wykonać część 2 i 3.

Marcie
źródło
Dobry plan, sprawiając, że od razu będę bardziej przydatny, zwiększy moją wartość w firmie, podczas gdy dwa ostatnie zwiększą moją wartość jako dewelopera w ogóle.
Bob Roberts,
Dokładnie. Chociaż myślę, że przekonasz się w trakcie swojej kariery, uczynienie z siebie wartościowego programisty w ogóle zwiększy twoją wartość w firmie. Wypłata może jednak potrwać kilka lat.
Marcie,
1
Może odpowiedź powinna brzmieć „Oba” zamiast „Tak”. Patrząc na tytuł pytania i odpowiedź, jestem zdezorientowany.
Amr
1
Przekonałem się, że ucząc się nowego języka lub paradygmatu, jestem bardziej skuteczny na pierwszym miejscu - uważam, że dzieje się tak, ponieważ szersze doświadczenie daje różne perspektywy na rozwiązanie konkretnego problemu. Nauczyłem się tej samej lekcji: jeśli masz tylko młotek, każdy problem zaczyna wyglądać jak gwóźdź.
Bryan Rehbein,
25

Kiedy ludzie pytają mnie o radę zawodową, twoje pytanie jest jednym z pierwszych pytań, które zadaję. Nie sądzę, aby ktokolwiek mógł odpowiedzieć na to pytanie; Myślę, że musisz sam zdecydować, czy skupienie się na głębokości, czy szerokości jest bardziej prawdopodobne, aby osiągnąć swoje cele zawodowe.

Kiedy ostatnio zmieniałem zespoły, miałem dwie możliwości: pracować w zespole narzędzi programistycznych XBOX lub pracować w zespole kompilatorów C #. Uświadomiłem sobie, że sprowadza się to do szerokości względem głębokości. W zespole XBOX mógłbym kiedyś pracować nad systemami bezpieczeństwa, następnego systemy audio, wideo, sieci, interfejsy sprzętowe, jak to nazywacie. Jasne, niektórzy ludzie są ekspertami, ale każdy musi się trochę dowiedzieć o wszystkim. W zespole kompilatorów C # mogłem zanurzyć się w jednym języku i jednym kompilatorze i naprawdę zrozumieć to wszystko dogłębnie.

Zastanowiłem się nad tym i zdecydowałem, że bardziej jestem temperamentny niż ekspert dyletancki. To był dla mnie dobry wybór, ale może nie być dla ciebie. Niektórzy ludzie odnoszą duże sukcesy, wiedząc trochę wszystkiego.

Dlatego radzę odwrócić to pytanie. Dowiedz się, jakim jesteś człowiekiem, a następnie sprawdź, czy Twoja firma ma możliwości dla kogoś takiego jak Ty. Jeśli nie, znajdź taki, który to robi.

Eric Lippert
źródło
Z perspektywy czasu kim jesteś, ten post jest naprawdę epicki. :)
ashes999
12

Bycie specjalistą może sprawić, że będziesz droższy. Ale możliwości zatrudnienia wymagające tego wysokiego poziomu będą ograniczone, zarówno pod względem liczby, jak i położenia geograficznego.

Być generalistą, być może, płaci mniej, ale otwiera przed Tobą wiele możliwości pracy, potencjalnie na całym świecie.

Również na wyższych stanowiskach i stanowiskach kierowniczych najlepiej jest mieć osobę doświadczoną w różnych rzeczach, technikach i technologiach. Znajomość krawędzi i możliwość zobaczenia dużego obrazu czyni cię cennym zasobem.


źródło
Och, nawet nie pomyślałem o moim obecnym zatrudnieniu (choć mam nadzieję, że będzie to pobyt długoterminowy).
Bob Roberts,
3

Myślę, że na twoim etapie rozwoju priorytetem jest uzyskanie pewnej głębi. Widzę zbyt wielu ludzi, którzy wiedzą trochę na temat wielu rzeczy, ale nie mogą sobie poradzić z pracą na poziomie podstawowym, ponieważ cała ich wiedza jest na poziomie podstawowym.

Jeśli chciałem być specjalistą, to głębokość zabudowy jest najlepszym wyborem.

Jeśli chcę być generalistą, najpierw zbuduj głębokość (przejdź do co najmniej poziomu pośredniego) na jednym stosie, a następnie przejdź do innych języków. Jeśli najpierw zbudujesz głębię, łatwiej ci będzie zbudować głębię w wielu językach, ponieważ masz do dyspozycji więcej pojęć i wiesz, czego możesz się nauczyć. Potem rozgałęziłbym się trochę w coś innego. Następnie wróć i zbuduj głębię do poziomu zaawansowanego, a następnie ponownie rozgałęź się i dowiedz się więcej o rzeczach zupełnie innych niż to, co już wiesz. Następnie rozwiń tę głębokość w innym obszarze do poziomu pośredniego, naucz się czegoś innego itp.

Zastrzeżenie - jestem wyjątkowy, więc zdecydowanie popieram głębię wiedzy

HLGEM
źródło
1

Obie opcje mają swoje miejsce. Skupienie się na stosie programistycznym używanym przez Twoją firmę pomoże ci w pracy, ale poznanie innych technologii pomoże ci w karierze.

Pod koniec lat 90. umiejętności w języku COBOL były bardzo poszukiwane przez firmy, które musiały przygotować swoje oprogramowanie na rok 2000. Jednak każdy, kto wciąż zna tylko język COBOL, będzie miał znacznie trudniej znaleźć pracę.

W ten sam sposób dzisiejsza technologia stanie się przestarzała na długo przed tym, zanim większość z nas będzie gotowa na emeryturę, więc nauka nowych umiejętności i technologii jest niezbędna.

Bruce Alderman
źródło
0

Idź dalej i naucz się czegoś takiego jak Haskell lub Lisp. Nauka języka funkcjonalnego naprawdę sprawiła, że ​​rozszyfrowałem mój kod, co upraszcza ogólne debugowanie. Jedynym problemem, jaki możesz napotkać, jest to, że nie chcesz wracać.

http://book.realworldhaskell.org/read/

http://lisperati.com/haskell/

http://learnyouahaskell.com/

Theo Belaire
źródło
To prawda, naucz się programowania funkcjonalnego, jak dla mnie, głosuję na OCaml lub F #
0xFF
F # dobrze integruje się z C # lub innymi rzeczami .net, nad którymi pracujesz. Tylko coś do zapamiętania. Clojure działa dobrze z Javą.
Theo Belaire,