Devo me concentrar em ser profundo ou amplo [fechado]

10

Sou desenvolvedor profissional há pouco mais de meio ano e fico impressionado com o tamanho do mundo realmente fora da faculdade. Continuei aprendendo no meu tempo livre, mas estou pensando em onde devo me concentrar?

FOCO 1) A pilha de desenvolvimento usada pela minha empresa. Pagamento mais rápido no meu desenvolvimento do dia a dia. #Deepest

FOCO 2) Uma linguagem diferente com o mesmo paradigma. Veja se consigo generalizar meus conhecimentos e minha maneira de pensar.

FOCO 3) Linguagem diferente, paradigma diferente. Expanda minhas fronteiras e aprenda novas maneiras de fazer as coisas. #Amplo

Se alguém tiver um foco diferente, sinta-se à vontade para divulgá-lo.

Bob Roberts
fonte

Respostas:

18

Sim.

Eu diria que você precisa fazer as duas coisas. Comece com o número 1, pois isso tem o retorno imediato e você não faz isso há muito tempo. Mas você definitivamente precisa fazer alguns dos itens 2 e 3.

Marcie
fonte
Bom plano, tornar-me imediatamente mais útil aumentará meu valor na empresa, enquanto os dois últimos aumentarão meu valor como desenvolvedor em geral.
Bob Roberts
Exatamente. Embora eu ache que você descobrirá isso ao longo de sua carreira, tornar-se valioso como desenvolvedor em geral também aumentará seu valor na empresa. A recompensa pode demorar alguns anos.
Marcie
11
Talvez a resposta deva ser "Ambos" em vez de "Sim". Olhando o título da pergunta e a resposta, estou confuso.
Amr
11
Descobri que, ao aprender um novo idioma ou paradigma, me torno mais eficaz no número 1 - acredito que é porque ter uma experiência mais ampla oferece perspectivas diferentes sobre como resolver um problema específico. A mesma lição aprendida como: Se você só tem um martelo, todo problema começa a parecer um prego.
Bryan Rehbein
25

Quando as pessoas me pedem conselhos de carreira, sua pergunta é uma das primeiras perguntas que faço. Eu não acho que alguém possa responder a essa pergunta para você; Acho que você deve decidir por si mesmo se é mais provável que o foco na profundidade ou na amplitude atinja seus objetivos de carreira.

Quando mudei de equipe pela última vez, tive duas oportunidades: trabalhar na equipe de ferramentas para desenvolvedores do XBOX ou na equipe do compilador C #. Percebi que tudo se resumia à amplitude versus profundidade. Na equipe da XBOX, eu poderia trabalhar em sistemas de segurança um dia, sistemas de áudio no dia seguinte, vídeo, rede, interface de hardware, etc. Claro, algumas pessoas são especialistas, mas todos precisam saber um pouco sobre tudo. Na equipe do compilador C #, eu poderia mergulhar em um idioma e um compilador e realmente entender tudo em profundidade.

Pensei muito e decidi que era mais temperamental para ser um especialista em uma coisa, e não um diletante para muitas. Essa foi uma boa escolha para mim, mas pode não ser para você. Algumas pessoas têm muito sucesso sabendo um pouco de tudo.

Meu conselho, portanto, é inverter a questão. Descubra que tipo de pessoa você é e veja se sua empresa tem oportunidades para alguém como você. Caso contrário, encontre um que faça.

Eric Lippert
fonte
Em retrospecto de quem você é, este post é realmente épico. :)
ashes999
12

Ser um especialista pode torná-lo mais caro. Mas as oportunidades de emprego que exigem esse alto nível serão limitadas, tanto em número quanto geograficamente.

Ser generalista talvez pague menos, mas abre uma grande variedade de oportunidades de emprego para você, potencialmente em todo o mundo.

Também para trabalhos gerenciais e de nível superior, é preferível ter uma pessoa com experiência em várias coisas, técnicas e tecnologias. Conhecer as arestas e ser capaz de ver uma imagem grande faz de você um ativo valioso.


fonte
Ah, eu nem pensei no meu emprego atual (embora eu espere que seja uma estadia de longo prazo).
Bob Roberts
3

Penso que, no seu estágio de desenvolvimento, obter profundidade é a primeira prioridade. Eu vejo muitas pessoas que sabem um pouco sobre um monte de coisas, mas não conseguem deixar de fazer um trabalho de nível de entrada, porque todo o seu conhecimento é de nível de entrada.

Se eu quisesse ser especialista, claramente, construir profundidade é a melhor primeira escolha.

Se eu quiser ser um generalista, construa a profundidade primeiro (chegue ao nível intermediário) em uma pilha e depois se ramifique para outros idiomas. Se você desenvolver um pouco de profundidade primeiro, poderá achar mais fácil criar profundidade em vários idiomas, pois possui mais conceitos disponíveis e sabe mais sobre o que você pode aprender. Então eu me ramificaria um pouco para outra coisa. Em seguida, volte e desenvolva profundidade para o nível avançado, depois se ramifique novamente e aprenda mais coisas muito diferentes do que você já sabe. Em seguida, expanda essa profundidade em uma área diferente para um nível intermediário, aprenda outra coisa novamente etc.

Advertência - sou especialista, por isso sou a favor da profundidade do conhecimento

HLGEM
fonte
1

Ambas as opções têm seu lugar. O foco na pilha de desenvolvimento usada pela sua empresa o ajudará em seu trabalho, mas aprender sobre outras tecnologias o ajudará em sua carreira.

No final dos anos 90, as habilidades em COBOL eram muito procuradas por empresas que precisavam preparar seu software para o ano 2000. Mas quem ainda conhece apenas hoje a COBOL terá muito mais dificuldade em encontrar trabalho.

Da mesma forma, a tecnologia de hoje ficará obsoleta muito antes de a maioria de nós estar pronta para se aposentar, portanto, aprender novas habilidades e tecnologias é essencial.

Bruce Alderman
fonte
0

Vá em frente e aprenda algo como Haskell ou Lisp. Aprender uma linguagem funcional realmente me permitiu dissociar meu código, tornando mais simples a depuração geral. O único problema que você pode encontrar é que não deseja voltar.

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

http://lisperati.com/haskell/

http://learnyouahaskell.com/

Theo Belaire
fonte
Está correto, aprenda programação funcional, quanto a mim, voto no OCaml ou F #
0xFF
O F # se integrava bem ao C # ou a outras coisas em que você está trabalhando. Apenas algo para ter em mente. Clojure funciona bem com Java.
Theo Belaire