Um conselho de programadores seniores sobre como sempre usar livros é uma boa idéia? [fechadas]

53

Sou desenvolvedor júnior e estou no setor há 5 anos. Na minha empresa atual, há um veterano, vamos chamá-lo de Infestus. Ocasionalmente, tenho a oportunidade de brilhar e fazer algo completamente novo do zero.

Um dos exemplos mais recentes foi que eu tive que criar um singleton no aplicativo multithread. Eu decidi usar esse método. Assim que Infestus viu, ele rapidamente me chamou de idiota e me disse para usar essa abordagem . Ao perguntar a ele por que ele simplesmente ignorou isso, pois isso é melhor e é assim que este e este livro sobre Java dizem que é melhor.

E é um padrão comum: sempre que tenho a chance de fazer algo novo, sou rapidamente abatido por Infestus e o único motivo pelo qual seu método é melhor é porque esses livros foram escritos por programadores famosos. Ele está sempre tentando me dar livros para ler, para que eu possa "aprender" quais maneiras de programar.

Eu tenho apenas programado dinheiro há 5 anos, mas é sempre uma boa ideia seguir cegamente o livro sobre as melhores maneiras de resolver um problema ou devo tentar experimentar de vez em quando? A constante enxurrada de reclamações do Infestus está começando a me fazer nunca tentar algo novo e seguir exemplos nos livros.

EDIT : Estou totalmente perdido. Sim, eu sei que seguir qualquer coisa cegamente é uma má ideia. Mas esse programador infestado, Infestus, que parece saber muito, me diz que a única maneira de programar corretamente é lendo livros e seguindo tudo até um T. Todas as regras que ele impõe são as que estão escritas nos livros, então eu só estou pensando se os livros são a única maneira correta.

EDIT2 : Infestus não é meu chefe. Ele é apenas um dos desenvolvedores seniores encarregados de revisar o código. E a maioria de seus comentários depois de resenhas consiste em nomes de livros em que esse método está errado.

Quillion
fonte
100
Seguir alguma coisa cegamente é uma boa idéia?
FrustratedWithFormsDesigner
16
Seguir qualquer coisa às cegas é uma péssima idéia, mas não deixe que "Infestus" o azeda nos livros. Ler livros é uma das melhores maneiras de sair da sua zona de conforto e ampliar suas habilidades de programação.
Kyralessa
21
Parece que o idoso pode saber por que ele está seguindo essas maneiras específicas de resolver problemas - mas talvez não queira dedicar um tempo para explicar o motivo e está apenas apontando os recursos que o explicam. Você leu os recursos para os quais ele o direcionou? Eles explicam por que a solução escolhida foi escolhida?
Joris Timmermans
28
Cinco anos depois, você não é mais júnior, sabia? Infestus sabe disso?
Iluxa
25
...brushed it off as this is better and that's how this and this book about java says it is better. Isso deve acionar alarmes imediatos. Se Infestus não puder lhe dar uma explicação independente, ele poderá não entender. (Ou ele precisa de uma cópia de um livro ilustrado de maus argumentos .)
Blrfl

Respostas:

87

Você vai encontrar programadores como esse em toda a sua carreira. Não há nada errado com a experimentação e o aprendizado por conta própria. Certamente livros são ótimos. Muitas vezes, os exemplos funcionam em um ambiente limpo, mas se você é desenvolvedor de outra empresa, não existe um ambiente limpo (sem interferência de outras pessoas).

É sempre bom saber como fazer as coisas da maneira "certa", mas as opiniões mudam de ano para ano. Então aprenda o que você pode. Pegue o que puder do desenvolvedor sênior, misture-o com o seu conhecimento que você aprende por conta própria. Eventualmente, você será um desenvolvedor sênior e aproveitará essas experiências e ensinará desenvolvedores juniores.

Só não seja idiota sobre isso.

webdad3
fonte
65

Ele realmente te chamou de idiota ou apenas desvalorizou o código? Chamar qualquer coisa de estúpida não tem tato, mas isso não invalida a sugestão. Acho que Infestus fez uma sugestão valiosa e, no futuro, você deve considerar seriamente as sugestões dele. Ele parece ler muito e, pelo menos nesse caso, sua opinião é bem informada. A sincronização é cara e complicada. Sua implementação recomendada é mais eficiente e mais simples que a sua e é garantida que funcione.

Ele está sempre tentando me dar livros para ler, para que eu possa "aprender" quais maneiras de programar.

Isso é gentil da parte dele. Ele está tentando ativamente ajudá-lo, mas você parece estar deixando seu ego atrapalhar. Não leve críticas ao seu código pessoalmente. O código é barato de produzir e fácil de mudar. Se alguém lhe mostrar uma maneira mais simples de fazer algo, agradeça.

E sim, a leitura fará de você um programador muito melhor. Todos os especialistas que conheço leu extensivamente. Se você não está lendo muito, é medíocre, na melhor das hipóteses, e em mais cinco anos poderá descobrir que não é mais comercializável.

kevin cline
fonte
6
Você faz uma observação muito boa e o artigo ao qual você vincula é muito interessante, mas diz claramente ao final que o bloqueio de verificação dupla não funciona com o JDK 1.4 e anterior (com os modelos de memória do JDK). A partir do JDK 1.5 e além, ele funciona, desde que o campo que contém a instância seja declarado volátil (como é o caso no exemplo vinculado pelo OP).
Shivan Dragon
4
Obrigado pelo conselho :) e sim, ele realmente me chama de estúpido (ocasionalmente insano) sempre que fica realmente zangado com o código. Não é tanto meu ego atrapalhar a aceitação de suas respostas, mas a maneira como ele tenta enfiá-lo na minha garganta e os nomes que ele usa para mim e meu código, mas essa é uma história diferente. No entanto, é bom saber que os livros que fornecem uma visão :)
Quillion
6
@ Quillion - pessoalmente, eu não aceitaria o apelido dele. Parece que você está ficando muito farto de tudo. Eu consideraria seriamente conversar com seu gerente sobre isso, possivelmente até o RH. A vida é muito curta para sofrer abuso de alguém.
precisa
2
@ Quillion - Ninguém deve tratá-lo assim. Eu não ligo para quem eles são. E lembre-se sempre de que todo mundo é substituível. Eu consideraria seriamente conversar primeiro com o Infestus, depois com seu gerente e depois com o RH. Se você não obtiver satisfação, siga em frente. Confie em mim, você encontrará outro grande grupo de pessoas.
Webdad3
11
Infestus está tendo uma reação emocional ao que ele vê como uma feiúra profunda. Talvez ele pudesse se beneficiar de alguém pedindo para ele se controlar.
Kevin cline 06/12/2013
22

A leitura de um livro não deve ser cega: o autor deve tentar convencê-lo dos méritos de sua abordagem à medida que a apresenta. É razoável que seu veterano o indique um livro explicando sua abordagem preferida, em vez de pedir a ele que o explique ele mesmo: embora ele deva explicar os benefícios de suas preferências sem depender do livro, é também uma duplicação de esforços que o autor do livro já fez.

Portanto, leia o livro, veja o que o autor do livro diz e se ele o confunde, ou você deseja confirmar sua compreensão ou não concorda, então converse com seu veterano sobre isso, mas agora você estará capaz de ter uma discussão mais produtiva.

Aidan Cully
fonte
Eu concordaria. Se o autor de um livro é incapaz de explicar os méritos da abordagem sobre a qual está falando, como alguém que lê o livro do autor poderá fazer isso, então uma das duas coisas deve ser verdadeira. isso existe e o leitor simplesmente não o entende, ou uma explicação não existe e o leitor deve tentar encontrar uma explicação para esse método. Como falamos sobre um tópico específico, em que existem apenas algumas maneiras válidas de fazê-lo, uma explicação certamente precisa existir. Em outras palavras, eu concordo com a sua resposta.
Ramhound
17

Existem três elementos-chave em qualquer relacionamento saudável. Comunicação, honestidade e confiança. Isso conta para todos os relacionamentos, até para os relacionamentos de trabalho. Você deve conversar com seu supervisor sobre essas preocupações.

Se você não entender as razões dele para advogar um determinado projeto, diga isso a ele . Diga a ele que você não leu o livro e que gostaria de entender por que a maneira dele de fazê-lo é melhor. A chave é que você deve estar tentando entender a maneira dele de fazer as coisas.

Eu acho que você também deve tratar essa pessoa com mais respeito. Na sua cabeça, você está chamando-o de nomes depreciativos e criticando sua abordagem do que você considera "aprendizado". Cuidado com isso. Por outro lado, você disse que ele chamou você estúpido. Isso não é legal, e você deve dizer a ele que não é legal chamar alguém de estúpido.

Ideias podem ser estúpidas. Todos cometemos erros e sentimos falta das coisas, até dos mais velhos. Quando há uma falha em um design, a melhor pergunta é: "Por que você está fazendo isso dessa maneira? Não ocorrerá na situação X, Y, Z? O design B não será melhor?"

Lembre-se de que você está trabalhando neste software com outras pessoas. Essa é uma habilidade difícil de aprender. Não importa que você não esteja escrevendo nada do zero, sempre há espaço para brilhar, tornando seu código o melhor código possível.

E "melhor" muitas vezes significa legível e compreensível . Nós programadores gastamos muito tempo lendo o código de outras pessoas. Se esse código é claro e legível, isso o torna realmente valioso. Uma das maneiras pelas quais aprendemos a escrever um ótimo código é lendo muitos códigos bons. Muitas vezes, você encontra códigos muito bons nos livros. Portanto, a leitura de um ou dois bons livros de programação provavelmente o tornará um programador melhor.

Gustav Bertram
fonte
Na verdade, penso em suas habilidades como piedosas e tenho respeito. No entanto, as críticas severas a qualquer coisa nova estão começando a me desmotivar de tentar coisas novas e seguir os livros, e sim, ele é muito vulgar.
Quillion
6
Novo nem sempre é bom, e velho nem sempre é ruim. Se ele critica uma ideia, exija saber o porquê. Sempre pergunte o porquê. "Porque o livro diz isso" não é bom o suficiente. Por outro lado, depois de ler o livro, ele provavelmente tem uma perspectiva muito mais ampla. Você também deve ampliar sua própria perspectiva, a ponto de justificar seu design por seus próprios méritos.
Gustav Bertram
2
Não pense em ninguém como piedoso. Você nem sempre pode confiar nele. Trate-o como um colega que tem mais experiência. Se você o trata como um deus, você está se vendendo a descoberto e nunca será respeitado.
Webdad3
7

Na empresa em que você trabalha, provavelmente é. É isso que eles exigem que você faça.

Esse engenheiro Infestus faz um trabalho muito ruim educando os desenvolvedores juniores dizendo a eles "isso está escrito no livro, e é por isso". Ele não é um pregador, ele é um engenheiro e deve ser capaz de decompô-lo e apresentar os conceitos para que os juniores possam aprender com sua experiência.

Gostaria de encorajá-lo a falar com desenvolvedores conhecedores da sua empresa, fazer perguntas sobre os prós e os contras de diferentes técnicas de programação etc. Isso, juntamente com a leitura de livros e blogs (eu recomendaria o Joel on Software - apenas no Google, é obrigatório) deve lhe dar uma melhor compreensão.

Michael Kruglos
fonte
4

IMHO, existem 2 aspectos aqui, com os quais você deve lidar separadamente:

  • O fato de o cara estar sendo um idiota, chamando você de nomes e coisas assim simplesmente porque ele pode (ele é mais velho, você não é, se um de vocês reclama do outro, ele obterá o benefício da dúvida) é simplesmente comportamento agressivo, e apenas ruim.

Tente não descer ao nível dele com isso. Não tente intimidar ele de volta ou "contar com ele" para o chefe ou algo assim. Faça o possível para ignorar esse aspecto do comportamento dele, tendo em mente que ele se torna muito extremo (isto é, se isso afeta sua produtividade e outras coisas), você deve fazer algo a respeito.

  • O fato de ele estar lhe dizendo que seu código é ruim (e como fazê-lo corretamente). Honestamente, pelo que você descreve, ignorando o tom do sujeito, esse aspecto do comportamento dele não é tão ruim assim. Você aprende as coisas muito mais rapidamente e as vê no contexto apropriado quando alguém mais experiente o corrige e diz não apenas o que você fez de errado, mas também como fazê-lo da maneira certa (em comparação com apenas aprender tudo sozinho) experiências pessoais de tentativa / erro e similares).

Muitas vezes, alguém corrigiu o que eu pensava inicialmente ser "meu código perfeito" e fiquei chateado porque o cara estava me dizendo o que fazer apenas para depois perceber que ele estava certo o tempo todo, minha versão era ruim, a dele era bom, e graças a Deus ele viu isso! :) Então eu aprendi a diminuir meus impulsos iniciais de "ei, você não me diz o que fazer, errado!" e, em vez disso, cada vez que alguém me corrige, primeiro, objetivamente, verifiquei novamente meu código, depois verifiquei o dele, e verifique se ele não está certo e sou eu quem está cometendo o erro. Se a culpa foi minha, agradeço a ele pela ajuda e verifique se realmente entendi como a solução dele funciona (em vez de apenas copiar / colar).

E, ei, às vezes eu acho que a correção oferecida foi de fato pior do que o que eu fiz inicialmente; nesse ponto, tento conversar sobre tudo isso com o outro cara. Honestamente, notei que nada ganha o respeito dos outros por você mais rápido do que quando eles veem que você pode aceitar ser corrigido quando cometeu um erro, mas, ao mesmo tempo, não tem medo de dizer que você é o único quem está certo quando pensa assim, dado que pode provar imediatamente que baseia sua afirmação em alguma pesquisa real, e não apenas no ego.

Nesse ponto, acho que você deve realmente tentar conversar com o cara sobre o que ele propõe e o que você propõe e assim por diante. Mostre a ele o que você pensa, como chegou a uma solução específica e por que você acha que é melhor que o dele (quando você pensa honestamente e objetivamente). Ou, se você descobrir que a proposta dele é melhor que a sua, diga-lhe isso e expresse sua gratidão pela ajuda. Isso pode reconstruir algumas pontes queimadas.

Shivan Dragon
fonte
11
Eu concordo absolutamente com você :) e eu tento ignorar o tom de voz dele e sempre tentando me menosprezar, já que acho que é o personagem dele. Mas o que mais me incomodou é que ele me disse que meu código está errado (o que é bom, eu não me importo) e, em vez de tentar me explicar as maneiras erradas, ele me daria um livro e me pedia para leia antes de tentar escrever mais códigos estúpidos. É isso que me faz questionar se os livros têm todas as respostas, já que na metade do tempo em que li o livro, não se aplicava perfeitamente ao cenário em questão.
Quillion
Bem, sim, entendo o que você quer dizer, mas tudo isso realmente depende do livro e de como ele o recomendou. ou seja, se ele diz coisas como "você fez mal, leia alguns livros de programação", isso é obviamente ruim, mas se ele disser "Olha, o Java 2nd edition dá um exemplo mais simples e melhor de como fazer Singletons, confira aqui o meu. safaribooksonline.com/book/programming/java/9780137150021/... ", então eu diria que é uma coisa útil para você (mais uma vez, deixando de lado a discussão sobre o tom da entrega)
Shivan Dragão
Eu nunca "ignoraria" esse comportamento. Haveria uma conversa com seu chefe ou um pulo para apenas conversar com ele, se eu já dissesse a ele que o xingamento não voaria.
Rig
3

Experimente por conta própria e aprenda tudo o que puder. Depois de ler livros suficientes, você descobrirá que existem vários livros sobre assuntos específicos e eles podem se contradizer. Tente o que você achar melhor e tente os dois se tiver tempo ou quiser comparar / contrastar.

Lidar com seu chefe é um assunto e uma abordagem totalmente diferentes. Se eu quisesse que alguém fizesse algo da maneira exata em um livro, eu diria a eles. Sou eu, porque não me associo aos leitores de mentes. Seu chefe cria esse hábito, basta perguntar se ele recomenda livros ou referências quando você obtém um novo projeto.

Faça o que fizer, não pare de trabalhar em novos projetos. Sei que é fácil para todos nós dar dicas de como lidar com essa situação e eles podem ou não funcionar, mas você é quem tem que viver com ela e sofrer a negatividade. Você vai melhorar, mas isso geralmente vem da redação de mais códigos sobre coisas novas, aprendendo com os sucessos e falhas.

JeffO
fonte
3

Seguir os livros às cegas é uma má ideia, mas há uma diferença entre seguir um livro exatamente e segui-lo às cegas .

Quando você está tentando entender as coisas de um livro, geralmente é apropriado segui-las exatamente no início, enquanto você percebe o que elas estão tentando ensinar. As probabilidades são de que você ainda não entenderá tudo quando terminar - é assim que as coisas costumam acontecer -, mas seguir o livro exatamente no início dará a você algo para experimentar, ao tentar entender suas perguntas. As probabilidades são novamente boas, pois você encontrará maneiras de discordar do conteúdo do livro, mas entenderá os problemas que o livro estava tentando resolver, para que, quando chegar a hora de escrever seu próprio código, você possa resolva-os do seu jeito (ou talvez do jeito deles, pelo menos em parte), em vez de deixar esses problemas para incomodá-lo mais tarde.

Outra coisa que não é inerentemente específica para Java, mas ainda assim é especialmente comum nessa comunidade. Acho que posso adivinhar de quais livros você está falando e eles formam uma parte importante do léxico da comunidade Java. Compreendê-los e as maneiras como descrevem as coisas ajudarão imensamente quando você precisar entender outro código Java que encontrar. Essa é uma habilidade valiosa por si só.

The Spooniest
fonte
3

Ler livros e posts do blog é muito útil na programação. Existem alguns livros que todos os desenvolvedores devem ler.

No entanto, os livros não são a única fonte para aprender diferentes conceitos e tecnologias de programação. Atualmente, o treinamento baseado em vídeo sob demanda está ficando muito popular. Você pode verificar o Pluralsight , que fornece treinamento de alta qualidade aos profissionais.

De fato, se você ler apenas livros, isso também não ajudará. Além de ler, há outra coisa que precisamos fazer também. Você pode encontrar mais detalhes aqui .

Sajad Deyargaroo
fonte
Treinamento baseado em vídeo, treinamento em sala de aula ou apenas leitura de material de origem. No final, todos compartilham uma coisa: você lendo (ou ouvindo) novo código e ouvindo / lendo uma explicação do motivo pelo qual essa abordagem foi adotada.
Ramhound
2

Você deve perguntar a ele o que há de errado com seu método. Se ele não conseguir responder com clareza, você pode ter certeza de que é apenas um cara comum que gosta de se sentir superior.

clima
fonte
11
Suas habilidades e os programas que ele escreve indicam claramente sua superioridade na programação. No entanto, a maioria das razões pelas quais ele faz algo de maneira específica está sempre ligada a livros de autores famosos. No entanto, não me preocupo com o que ele sente por mim, mas quero saber se os livros são realmente a melhor maneira de se tornar um bom programa e se devem ser confiáveis ​​como se uma pessoa religiosa confiasse na Bíblia.
Quillion
Você deve estar ciente das razões pelas quais escolheu uma abordagem em detrimento de outra. Indo para outra solução que você descobriu deve ser justificada pelas razões que você entende. Caso contrário, suas habilidades (do tipo sênior) não melhorarão. Você pode obter as idéias dos livros, mas as idéias são importantes, não onde ou por quem são apresentadas. Programar não é religião :).
clime
11
Sim, e não fique muito intimidado por ele. Parece que ele pode ser um programador muito bom, mas não tão bom em liderar e ensinar pessoas.
clime
@Quillion - A única maneira de se tornar um bom programador é fazendo isso muito, lendo livros (ou qualquer outra fonte), você é capaz de complementar o código realmente escrito com a leitura. Você já leu o livro em questão? Você precisa decidir se vale a pena ouvir o autor do código, um autor que afirma ter 20 anos em Java, ser uma boa pessoa para ouvir. Isso significa que há uma boa chance, ele conversou com os atuais desenvolvedores de Java, sobre certos tópicos. Se eu estivesse escrevendo um livro sobre Java, iria à fonte da minha pesquisa e usaria minha experiência para explicar o tópico.
Ramhound
@ Ramhound sim, eu tive que ler os livros que ele me deu. E sim, eu concordo com seus livros sobre certos tópicos. No entanto, os problemas que encontrei nos livros que ele recomendou são que eles retratam um mundo perfeito, onde todo o código é feito corretamente, e na outra metade do tempo eles se sentiam um pouco desatualizados. Mas sua constante enxurrada de livros de spam para mim, para ler e defender todos os seus argumentos com livros, em vez de tentar me explicar, me fez pensar que talvez os livros não sejam a melhor fonte. No entanto, parece que são, e eu os estudarei mais.
Quillion
2

A questão dos livros é que eles - principalmente - passam por revisões, que têm uma chance melhor de identificar más práticas e conceitos errôneos. Além disso, os "grandes nomes" são pessoas experientes que confiam em ser boas para ganhar dinheiro extra vendendo livros, portanto, há algumas garantias mínimas de qualidade sobre o que dizem.

Dito isto, ler livros, jornais e outras fontes é uma boa maneira de crescer como profissional, é claro, quando confirmado pela prática. Portanto, é bom que você leia esses livros (mesmo os recomendados pela Infestus). No entanto, os livros devem aumentar principalmente sua compreensão sobre o assunto, pois quase sempre haverá outras maneiras de resolver o mesmo problema.

Sobre sua abordagem "vá sozinho", o ponto é: você pode sustentar seu ponto de vista? Como você prova que sua solução é melhor que qualquer outra? Algumas vezes você pode criar soluções brilhantes por conta própria, mas, quando comparado a outras soluções conhecidas, deve poder argumentar a razão pela qual a sua é melhor, já que as outras têm a seu favor, pelo menos, os casos de uso. Então, seja criativo e atencioso, mas o mais importante, seja eficaz.

Se eu fosse, você leria esses livros. Isso o ajudará, dando-lhe mais argumentos, e, ao mesmo tempo, você pode achar que Infestus - talvez - está tomando esses livros erroneamente como argumentos, e ele ainda não foi visto porque ninguém sabe o conteúdo desses livros. Ou você pode achar que ele realmente

user3067411
fonte
1

Minha experiência é que, quando se preocupa com a programação de assuntos, a qualidade e a apresentação de informações com explicações adequadas nos livros é uma magnitude melhor do que na busca pelas mesmas informações de assuntos na Internet. Internet muitas vezes carece de explicação adequada, contexto e qualidade.

A quantidade dessas informações na internet é maior.

Portanto, minha estratégia geral é aprender com os livros para entender melhor e depois aprender com a internet para me expor a diferentes implementações e ampliar minha experiência (e frequentemente ver como não fazer coisas).

Pieter B
fonte
1

Pesquisaria os méritos de cada abordagem e chegaria a seu próprio julgamento. Se você acha que sua abordagem é melhor, discuta-a com a Infestus até que um de vocês convença o outro. Se você não conseguir chegar a um acordo, poderá pedir uma segunda opinião ou apenas aceitar a abordagem da Infestus, dependendo de quão forte você se sinta a respeito.

No caso de singletons, um argumento que você pode argumentar contra a abordagem enum é que enums não podem estender classes. Costumo escrever código assim:

public class DateSerializer extends AbstractSerializer<Date> {
  public static final DateSerializer SINGLETON = new DateSerializer();

  private DateSerializer() {}

  public byte[] serialize(Date date) { ... }
}

Isso não pode ser feito com enumerações. Como a abordagem enum não funciona em todos os casos, você poderia argumentar que, por uma questão de consistência, ela deve ser evitada mesmo quando não há necessidade de uma extendscláusula.

Alguns outros argumentos que poderiam ser feitos contra o uso de enumerações:

  • é um truque - ele está usando enums para algo para o qual não se destinavam
  • é confuso para leitores que nunca viram isso antes
Daniel Lubarov
fonte
Umm ... por que você implementaria um serializador de datas como um singleton? Se for apátrida, você esperaria que fosse barato instanciar, e ter várias instâncias não deveria ser uma grande preocupação. Se não apátrida é, então você tem que torná-lo sincronizado, e não há o potencial para se tornar um gargalo ...
Stephen C
@StephenC para classes sem estado, parece estranho permitir várias instâncias quando uma seria suficiente, e qual é a vantagem? Um singleton com estado que vem à mente é um analisador de packrat - você pode ter várias classes de singleton que estendem um AbstractParser. É verdade que requer sincronização se você estiver analisando em paralelo, mas é importante compartilhar o estado memorizado.
precisa saber é o seguinte
Pelo contrário, parece-me estranho que você se preocupe com singletons e com as complexidades que surgem deles, se não for necessário. Na minha opinião, a abordagem mais simples é criar, usar e jogar fora objetos "transformadores" ... exceto quando há uma forte razão / incentivo para reutilizá-los.
Stephen C
1

Confio muito nos livros como fonte de conhecimento - essas são bases excelentes e acho que a Infestus tem razão em que você deve consumir quantidades significativas de livros em seu tempo livre, pois elas realmente aceleram suas habilidades. Os livros não são a única fonte de informação que eu acho que você deveria consumir - participe do seu grupo de usuários local, receba os boletins de tecnologia relevantes entregues na sua caixa de entrada, leia os blogs.

No entanto, discordo da afirmação de que, porque está escrito de certa maneira em um livro, é assim que deve ser feito. Os livros Sim fornecem ótimos conselhos, e são escritos por especialistas e revisados ​​por especialistas, mas, tendo participado de um livro comparativamente simples, posso dizer que normalmente leva pelo menos dois anos para começar a escrever, editar e lançar um livro. . O ritmo da mudança na tecnologia é rápido e os conselhos de dois anos atrás podem não ser mais os conselhos corretos para hoje. Os princípios genéricos geralmente resistem ao teste do tempo, mas a otimização de uma atividade específica pode ser invalidada com um novo pedaço de hardware ou uma nova versão do software.

A sugestão de pedir ao Infestus que faça sugestões com você é excelente - vá embora, leia tudo e volte com um monte de perguntas bem pensadas que você já tentou responder / resolver por si mesmo, juntamente com suas evidências de apoio. método.

Havia perguntas sobre se, depois de cinco anos, por que você ainda era júnior. Para mim, a principal medida de saber se alguém é um júnior não é um ano de experiência, mas o quanto eles exigem alimentação com colher. Espero que um desenvolvedor de nível médio seja relativamente auto-suficiente, um consumidor atencioso de fontes de conhecimento que possam agir de acordo com ele e estendê-lo à sua situação. Eles também devem estar no estágio em que podem começar a ensinar os juniores, porque têm um entendimento firme de seu tópico, para que possam explicar as coisas claramente. A outra competência essencial é a confiança - se você fez o trabalho, leu o material e produziu algo decente, não tenha medo de defendê-lo em um tribunal de debate, pois um júnior exige validação, um desenvolvedor solicita consenso.

Steph Locke
fonte
1

Deixando de lado as maneiras no local de trabalho, deixando de lado a realidade de um papel de mentor que os desenvolvedores seniores têm, deixando de lado seu próprio desejo de explorar, deixando de lado comportamentos insultuosos e deixando de lado fetiches por livros ...

Os objetivos de uma revisão de código em uma equipe são 1) validar o código e 2) garantir que a pessoa que está escrevendo o código entenda o significado da melhoria do código. Não é o lugar para dizer "mude isso porque Martin Fowler disse isso no livro do GoF". No entanto, é o lugar para dizer "mude isso porque [breve explicação]; há mais detalhes discutindo isso no livro do GoF".

Se seu desenvolvedor sênior não está, pelo menos de maneira simples e sutil, fornecendo uma explicação para uma mudança e insistindo em usar a palavreada de "por causa de [livro]", ele está sendo um pouco espertinho e idiota. Como você lida com isso? Mencione-o em uma reunião de equipe, verbalmente, e peça a seus colegas de equipe que forneçam uma declaração ou duas explicando brevemente a vantagem ou necessidade da mudança, juntamente com essa referência útil ao livro. Não deixe de agradecer a ele pela referência do livro.

Encare isso, seu objetivo é apreciar a sugestão de mudança e não ser desmotivado por sua tarefa ou seu trabalho. Diz-lhe isso. "Eu apreciaria mais a sugestão de mudança se você pudesse descrever brevemente a vantagem ou a necessidade da mudança ao revisar meu código; pois estou descobrindo que as referências de seus livros são um pouco desmotivadoras".

Se ele continuar se recusando a fornecer uma explicação simples com as referências de seu livro, se você puder fornecer outro livro ou recurso de notoriedade igual ou maior no setor com uma opinião diferente e corresponder ao seu cenário, poderá adicionar seu próprio livro referência em seu comentário de revisão, considerando a retenção do código original. Faça isso o suficiente, ele pode recuar. Tenha muito cuidado para que o contra-argumento seja correto e significativamente mais importante; não há problema em deixar um desenvolvedor sênior estar errado e ainda assim conseguir, isso é algo que eu aprendi e tenho que aprender.

stimpy77
fonte
1

Eu diria que aprender a programar apenas com livros é impossível, mas eles são bons para você. É como o karatê - você não terá faixa preta apenas lendo sobre isso;) Eu acredito que, neste caso partucular, o Sr. Infestus estava se referindo a "Java Efetivo", de Joshua Bloch. É realmente um ótimo livro sobre desenvolvimento Java e você definitivamente deve lê-lo, se já não o tiver.

Gwozdziu
fonte