Sou o desenvolvedor líder de uma pequena empresa, trabalhando com C # e ASP.Net. Nossa equipe é pequena, 2-3 pessoas, sem muita experiência em desenvolvimento e design. Não tenho a oportunidade de aprender com mais desenvolvedores seniores, não há ninguém na minha equipe para me orientar e me ajudar a escolher as melhores abordagens, pois eu mesmo cuido da maioria dos projetos.
Como posso melhorar minhas habilidades de desenvolvimento de software enquanto trabalho em projetos reais, na ausência de desenvolvedores mais experientes?
Respostas:
Existem muitas fontes para aprender, além de colegas mais experientes: livros, blogs de desenvolvedores hábeis, Stack Exchange, palestras / conferências etc. A revisão de códigos também é crucial e o CodeReview.SE é um recurso precioso.
Vamos ver como isso poderia funcionar em um exemplo.
Exemplo
Você está lendo uma postagem no blog que menciona um termo "ETL". Você não sabe o significado disso, mas, a partir deste artigo, você entende vagamente que é um tipo de processo ou fluxo de trabalho que move dados de um suporte de dados para outro.
Você acessa a Wikipedia e outros recursos e obtém uma visão mais precisa da coisa. Ainda não está muito claro quando seria útil usar um ETL. Afinal, parece muito mais fácil escrever uma consulta SQL que fará todo o trabalho, em vez de gastar muito tempo criando um ETL real.
Para responder a essas perguntas, você pede emprestado um livro sobre os ETLs da sua biblioteca local. Ele explica que alguns processos de extração, transformação e carregamento não são facilmente executáveis com uma simples consulta SQL: não apenas a fase de extração pode lidar com vários suportes de dados diversos, não apenas um banco de dados relacional, mas também a etapa de transformação pode ser muito complicada para validando / normalizando os dados e mapeando-os.
Agora você tem uma visão clara do que é um ETL, como usá-lo e, especialmente, quando você precisa de um ETL e quando não é uma ferramenta apropriada. Enquanto isso, você implementou um pequeno ETL como um projeto pessoal. Este projeto permite que você descubra alguns pontos que não são claros o suficiente para você e não são cobertos por um livro. Como esses pontos são bastante abstratos e não estão relacionados ao código-fonte, você posta uma pergunta no Programmers.SE .
Quando você tem a oportunidade de criar um em sua empresa, você começa a criá-lo. Você tem alguns problemas. Alguns estão relacionados ao código; você posta perguntas no Stack Overflow . Outros estão relacionados ao banco de dados; você faz as perguntas no DBA.SE .
Finalmente, há uma conferência realizada por um desenvolvedor altamente habilidoso sobre como otimizar ETLs. Você participa dessa conferência e fornece dicas preciosas sobre os aprimoramentos que você pode fazer para o seu projeto.
Você também começa a seguir o blog de um desenvolvedor que trabalhava em ETLs diferentes há anos. É interessante ver as diferentes abordagens e, através deste blog, você aprende sobre o ECCD; você está interessado, por isso empresta o The Data Warehouse ETL Toolkit de Ralph Kimball, o livro que fala em detalhes sobre o processo "extrair, limpar, conformar e entregar". O mesmo blog também menciona muitos aplicativos destinados a criar ETLs sem habilidades de programação. Isso é particularmente útil para o ETL que você fez para sua empresa, pois seu chefe, que não é técnico, pede constantemente que você faça algumas pequenas alterações no que você fez.
Descobrindo coisas
IMHO, a parte difícil, quando você não tem um mentor ou um colega mais experiente, é descobrir coisas e, com a descoberta, quero dizer passar do estado "eu nunca ouvi falar sobre isso" para "eu ouviu falar, mas não sabe muito bem o que é ".
Se alguém revisar meu código e disser que eu realmente deveria começar a usar algumas convenções de estilo, com um pouco de curiosidade, posso descobrir que, na programação, existem diferentes estilos de escrever código, que você deve seguir um estilo para uma determinada linguagem e base de código, e que muitos idiomas têm ferramentas para impor um estilo (como StyleCop para C #).
Se ninguém me fala sobre o estilo, como eu saberia que isso existe?
É aí que recursos como blogs ou Stack Exchange são úteis. A Wikipedia não ajudaria (a menos que você gaste dias acessando páginas aleatórias sobre programação), e os livros raramente falam sobre essas coisas.
O mesmo se aplica a padrões e práticas ou coisas menos relacionadas ao código. Por exemplo, eu dificilmente imagino algum desenvolvedor acordando de manhã dizendo a si mesmo que ele deve aprender algo sobre o ITIL enquanto nunca se interessou pelo ITIL antes.
Depois de descobrir um novo termo, é muito fácil aprender sobre ele. Se você deu um novo termo "contratos de código" e é desenvolvedor de C #, pode facilmente encontrar informações suficientes no MSDN (ou, melhor, no livro de Jon Skeet).
A curiosidade ajuda
Quando trabalho com estagiários, sempre percebo que os melhores são aqueles que ficaram curiosos fora de suas palestras. Eles podem saber que existe uma coisa chamada programação funcional, mesmo que nenhum de seus professores nunca a tenha mencionado e, embora não conheçam nenhuma linguagem funcional, ainda conseguem explicar em termos gerais o que é FP e como é diferente de outras. paradigmas. Eles podem conhecer o Agile, o Unicode ou o modelo de confiança parcial / sandbox, apenas porque estavam lendo blogs e usando o Stack Exchange, em vez de simplesmente assistir às palestras.
Mesmo quando não têm um mentor, ainda aprendem todas as coisas que não são ditas na faculdade.
fonte
Estou em uma situação semelhante: somos uma equipe pequena e nosso trabalho principal de produto de desenvolvimento é basicamente alterações incrementais em uma base de código com alguns anos de idade.
Algumas técnicas que estou usando para me manter atualizado e aprimorar minhas habilidades.
No trabalho:
Fora do trabalho:
Descobri que trabalhar com minhas habilidades fora do dia-a-dia é fundamental. A liberdade de experimentar, cometer erros e buscar interesses me mantém envolvido em TI. Se eu tivesse apenas meus projetos no trabalho e precisasse limitar meu aprendizado ao que era imediatamente útil, eu me esgotaria rapidamente.
E não se esqueça de visitar o SO ou Programmers.SE com frequência.
fonte
As respostas aqui provavelmente serão de grande ajuda, mas eu gostaria de enfatizar algo: nada pode substituir o trabalho com alguém melhor que você (por definições arbitrárias e pessoais, de melhor) por 8 horas por dia, 5 dias por semana. Isso é certo.
Se você é o tipo de desenvolvedor que sempre quer melhorar, sempre quer aprender, terá que ir para uma empresa diferente eventualmente. Isso é inevitável e deve ser planejado.
Quando você encontrar a empresa certa para você, descobrirá que pode continuar crescendo dentro dela, do que crescer fora dela.
fonte
O desenvolvimento de software é um esporte de equipe. Como um esporte, para jogar em um nível muito alto, você precisa estar e competir contra outros que fazem o mesmo. Procure oportunidades para se movimentar.
Lembre-se de que a prática se torna permanente; portanto, se você não está constantemente trabalhando em busca de melhores técnicas e conhecimentos, se trabalha isolado, sem nenhum crítico ou modelo, pode descobrir que suas habilidades não aumentam.
Em todo o mundo, as coisas estão ficando mais competitivas; portanto, espere que seu nicho seja temporário e prepare-se para o tipo de oportunidade que atenda aos seus critérios de satisfação no trabalho, enquanto, ao mesmo tempo, leva você para fora da sua zona de conforto para trabalhar com uma equipe superior.
fonte
Antes de receber qualquer sugestão, devo dizer que estava em uma posição muito semelhante há pouco mais de um ano.
Se você está realizando os projetos, mas sente que há muito espaço para melhorar, isso é uma coisa boa.
Em uma ocasião, eu não tinha capacidade técnica e confiança para concluir o projeto. Muitas vezes, comprava um livro, lia um blog bastante técnico e me encontrava "fora da minha profundidade". Acho que o maior problema para mim foi o fato de não ter exposição a nenhum aplicativo corporativo de grande porte. Muitas vezes eu faria algo bem, mas não teria ninguém ao meu lado para validar o que fiz.
Isso foi desmotivador e desafiador, então eu vejo de onde você é. Como resolvi esse problema? Saí de uma empresa e entrei para uma casa de desenvolvimento de software bem estabelecida, o que me ajudou a ganhar muita experiência no ano passado.
A menos que você queira sair da empresa, sugiro livros que foram escritos pelos pioneiros da nossa indústria. Eu começaria com The Pragmatic Programmer, de Andrew Hunt. O livro contém toneladas de analogias úteis que são muito fáceis de lembrar. Os primeiros capítulos deste livro me incentivaram a escolher uma linguagem de programação muito diferente daquela que usamos no trabalho. Comecei a ler literatura não técnica - agora acredito que ler romances e ficção científica me tornará um programador melhor. Escrever ensaios não está longe de escrever código limpo. Alguns escritores são bons e outros ruins. Este livro me fez preocupar com o que escrevo. Uma das analogias é chamada "Windows quebrado". Você deixa um carro abandonado na rua por dias e nada acontece. Depois de quebrar uma única janela, o carro provavelmente será destruído no dia seguinte. Código não é diferente. Se você vir um código quebrado ou mal escrito, corrija-o imediatamente, não o deixe apenas porque mais cedo ou mais tarde ele voltará a "assombrá-lo". Depois de começar a ler este livro, você encontrará dezenas de analogias semelhantes que farão você pensar sobre o código de uma maneira diferente.
Eu sugeriria que você seguisse para o Código Limpo de Robert C. Martin. Este livro é mais prático, pois obriga a ler códigos ruins e bons (limpos). O autor usa exemplos de código de um dos projetos de código aberto. Você diz que não há ninguém para guiá-lo. Há uma oportunidade perfeita para examinar o código de outra pessoa, compará-lo com o seu e ver como você pode melhorá-lo. Para mim, ler este livro foi como acompanhar alguém que trabalha em um projeto. O livro também enfatiza fortemente a coisa mais fácil e difícil - separação de preocupações. O autor perguntou aos pioneiros de nossa indústria o que eles consideram um código "limpo". Depois de ler as respostas, você poderá compará-las com sua própria opinião sobre o que é o código limpo.
Por fim, você já pensou em trabalhar em projetos de código aberto? Você estará colaborando com outros desenvolvedores, provavelmente mais experientes, que poderão revisar seu código e direcioná-lo na direção certa.
Como eu disse na minha resposta original, isso não acontecerá durante a noite. Faço isso há alguns anos e quase todos os dias descubro que estou fazendo errado.
Boa sorte!
fonte
Pratique a solução de problemas. Leia e trabalhe para entender o código de outras pessoas (o github é um ótimo recurso para isso) e envie melhorias para ele. Realizar trabalhos de consultoria pode realmente ajudá-lo a ampliar seu conjunto de habilidades.
fonte