Como se tornar um desenvolvedor de software melhor
Como se tornar um desenvolvedor de software melhor
Como se tornar um desenvolvedor de software melhor Como se tornar um desenvolvedor de software melhor

Hoje eu gostaria de compartilhar algumas idéias sobre como os desenvolvedores de software podem melhorar suas habilidades profissionais e se tornarem melhores em seu trabalho. Os tópicos levantados aqui são universais e não específicos de qualquer pilha de tecnologia. A maioria deles nem é específica de TI. Estes são conselhos gerais sobre como desenvolver suas características pessoais, melhorar a colaboração com colegas e clientes e avançar em sua carreira como desenvolvedor de software. Hoje quero compartilhar com vocês algumas ideias sobre como os desenvolvedores de software podem melhorar suas habilidades profissionais e trabalhar melhor. Os tópicos apresentados aqui são genéricos e não específicos de qualquer pilha de tecnologia. A maioria deles nem é específica de TI neste momento. Estas são sugestões gerais sobre como desenvolver suas qualidades pessoais, como melhorar a colaboração com colegas e clientes e como avançar em sua carreira como desenvolvedor de software.
Algumas das coisas neste artigo são subjetivas e refletem minha experiência pessoal, enquanto outras foram adotadas e utilizadas com sucesso por outros. Algumas das coisas neste artigo são subjetivas e refletem minha experiência pessoal, enquanto outras coisas foram adotadas e utilizadas com sucesso por outros.
Entenda o processo de ponta a ponta Entenda o processo do começo ao fim
Muitos desenvolvedores pensam que o desenvolvimento de software envolve codificação e que todo o resto são apenas pessoas tentando ser irritantes e desperdiçando seu precioso tempo. Isto não pode estar mais longe da verdade. Antes de você codificar um software, ele passa por um processo de transformação de uma ideia vaga em uma solução cuidadosamente projetada e pronta para implementação. E depois de enviar suas alterações mais recentes para o Git, o software será testado, implantado, monitorado, analisado e aprimorado. A codificação é apenas uma das muitas etapas do processo. Muitos desenvolvedores pensam que o desenvolvimento de software envolve codificação e que todo o resto são pessoas desperdiçando seu precioso tempo. Isso não poderia estar mais longe da verdade. Antes de começar a escrever um código de software, ele passará por um processo de transformação de uma ideia vaga para uma solução cuidadosamente projetada, pronta para implementação. Depois de enviar as alterações mais recentes para o Git, o software será testado, implantado, monitorado, analisado e aprimorado. A codificação é apenas uma das muitas etapas do processo.
Então, por que isso acontece? Frequentemente, especialmente quando se trabalha em organizações maiores, diferentes fases dos projetos são tratadas por diferentes equipes ou mesmo departamentos. Tudo começa pelos analistas de negócio, que levantam os requisitos. Os requisitos são então entregues aos designers que produzem os modelos para os desenvolvedores. Os desenvolvedores codificam e entregam os resultados aos engenheiros de controle de qualidade. Se tudo estiver OK, o artefato é enviado às equipes de operações que o entregam aos usuários finais. departamentos, os seus representantes muitas vezes não compreendem realmente os objetivos dos outros e isso leva a mal-entendidos e até conflitos. Por que isso acontece? Muitas vezes, especialmente quando se trabalha em grandes organizações, diferentes fases de um projeto são tratadas por diferentes equipes ou mesmo departamentos. Tudo começa com um analista de negócios coletando requisitos. Os requisitos são então entregues aos designers que geram protótipos para os desenvolvedores. Os desenvolvedores escrevem o código e entregam os resultados aos engenheiros de controle de qualidade. Se tudo estiver OK, o artefato será enviado para a equipe de operações que o entregará ao usuário final. O processo é visto como um conjunto de etapas discretas sem qualquer feedback. Devido à falta de comunicação entre os departamentos, os seus representantes muitas vezes não compreendem verdadeiramente os objetivos dos outros, levando a mal-entendidos e até conflitos.
Freqüentemente, o processo de desenvolvimento de software é tratado como um conjunto de etapas discretas sem feedback.
Freqüentemente, o processo de desenvolvimento de software é visto como um conjunto de etapas discretas sem feedback.
Para muitas pessoas hoje em dia isso pode parecer exagerado. Com o surgimento das metodologias ágeis, mais empresas estão se afastando de uma abordagem tão rígida e adotando equipes menores, compostas por pessoas de especialidades mistas. Mas mesmo assim vemos que as pessoas não tentam realmente compreender o trabalho dos outros. Com que frequência você ficou irritado com seus designers porque eles querem que você implemente uma caixa de seleção personalizada que consome muito tempo? E vice-versa, recebeu críticas, porque esqueceu de usar a fonte correta. Para muitas pessoas hoje, isso pode parecer um exagero. Com o surgimento dos métodos ágeis, cada vez mais empresas estão a afastar-se desta abordagem rígida e a empregar pequenas equipas de profissionais mistos. Mas mesmo assim, vemos que as pessoas não entendem realmente o trabalho dos outros. Você fica constantemente irritado com seus designers porque eles querem que você implemente uma caixa de seleção personalizada que consome muito tempo? Ou vice-versa, você é criticado porque esqueceu de usar a fonte correta.
Muitas dessas diferenças podem ser superadas apenas prestando atenção ao trabalho dos outros. Sente-se com seu designer e explique-lhe que implementar uma caixa de seleção personalizada demora um pouco e que existe uma biblioteca que oferece uma caixa de seleção diferente e semelhante que você pode reutilizar. Em troca, aprenda o básico da tipografia e entenda por que escolher a fonte correta faz a diferença. Desenvolva as mesmas atitudes em relação a gerentes, analistas de negócios, engenheiros de controle de qualidade, especialistas de suporte e marketing. Citando T. Huxley: Estas diferenças podem ser superadas simplesmente prestando atenção ao trabalho dos outros. Sente-se com seu designer e explique a ele que a implementação de uma caixa de seleção personalizada demorará um pouco e que existe uma biblioteca que fornece outra caixa de seleção semelhante que você pode reutilizar. Em troca, aprenda o básico da tipografia e entenda por que escolher a fonte certa faz a diferença. Desenvolva a mesma atitude em relação a gerentes, analistas de negócios, engenheiros de controle de qualidade, especialistas de suporte e marketing. Citando T. Huxley:
Tente aprender algo sobre tudo e tudo sobre alguma coisa.Ao aprender algo com todos, você será capaz de antecipar suas necessidades, encurtar o ciclo de feedback e possibilitar entregas mais frequentes. Além disso, você ganhará muito amor e respeito de todos os outros. Ao aprender com cada indivíduo, você poderá antecipar suas necessidades, encurtar os ciclos de feedback e tornar as entregas mais frequentes. Além disso, você conquistará o amor e o respeito de muitas pessoas.
Entenda as necessidades do seu cliente Entenda as necessidades do seu cliente
Há uma coisa importante que você precisa entender sobre seus clientes: eles não entendem a maior parte do que você faz. Programação ágil, funcional ou bancos de dados não relacionais são magia negra para eles. Mesmo aqueles que acompanham de perto o seu trabalho e estão genuinamente interessados ainda estão no escuro. Isto tem algumas consequências. Há uma coisa importante que você precisa entender sobre seus clientes: eles não entendem a maior parte do que você está fazendo. Programação ágil, funcional ou bancos de dados não relacionais são magia negra para eles. Mesmo aqueles que acompanham o seu trabalho de perto e estão genuinamente interessados estão, em sua maioria, no escuro. Isto tem várias consequências.
A cara da maioria dos clientes quando conversam com desenvolvedores de software.
A expressão no rosto da maioria dos clientes ao conversar com desenvolvedores de software.
Contratar desenvolvedores de software para eles exige um certo grau de confiança. Muitas vezes as pessoas tendem a se sentir desconfortáveis por terem que pagar muito dinheiro por algo que não entendem. Lembra da última vez que você entrou em um serviço de conserto de automóveis desconhecido e não tinha certeza se poderia confiar nele para sua viagem? Bem, seus clientes têm o mesmo sentimento. Exceto que não há carro, há apenas um monte de conceitos abstratos e intangíveis que deveriam de alguma forma se materializar em produtos e receitas. Ao trabalhar com novos clientes, é importante conquistar sua confiança. Certifique-se de que eles entendem como você opera e visam entregar resultados em iterações menores, mas frequentes. Dessa forma, eles podem ver o andamento do seu trabalho, avaliar os resultados intermediários e dar feedback. Contratar desenvolvedores de software para eles exige um certo nível de confiança. Muitas vezes as pessoas se sentem desconfortáveis por ter que pagar muito dinheiro por algo que não entendem. Lembra-se da última vez que você entrou em uma empresa de serviços de conserto de automóveis desconhecida e não tinha certeza se poderia confiar no serviço que ela lhe fornecia? Seus clientes sentem o mesmo. Exceto que não existem carros, apenas um monte de conceitos abstratos e intangíveis que deveriam de alguma forma se materializar em produtos e receitas. Ao trabalhar com novos clientes, é importante ganhar sua confiança. Certifique-se de que eles entendem como você opera e visam entregar resultados em iterações menores, mas frequentes. Dessa forma, eles poderão ver seu trabalho em andamento, avaliar resultados intermediários e fornecer feedback.
Freqüentemente, os clientes tendem a apresentar suas próprias soluções em vez de compartilhar seus problemas. Como eles têm pouca ideia de suas capacidades, suas soluções são muitas vezes mal avaliadas e ambiciosas demais. Lembre-se da antiga (e talvez fictícia) citação de Henry Ford: Os clientes muitas vezes tendem a apresentar suas próprias soluções, em vez de compartilhar seus problemas. Como não compreendem as suas capacidades, as suas soluções são muitas vezes mal avaliadas, insuficientes ou excessivamente ambiciosas. Lembre-se desta famosa (talvez apócrifa) citação de Henry Ford:
Se eu tivesse perguntado às pessoas o que elas queriam, elas teriam dito cavalos mais rápidos.
Em vez de seguir o fluxo e implementar silenciosamente tudo o que o cliente deseja, às vezes é útil convidá-lo a dar um passo atrás e discutir o problema que ele queria resolver em primeiro lugar. Ao combinar seu conhecimento de domínio e sua experiência técnica, é provável que você chegue a uma solução melhor. Em vez de apenas seguir o fluxo e implementar silenciosamente tudo o que o cliente deseja, às vezes é útil convidá-lo a dar um passo atrás e discutir o problema que originalmente queria resolver. Ao combinar o conhecimento do domínio com seu conhecimento técnico, você poderá obter uma solução melhor.
Lembre-se que nem todo mundo gosta de ter suas ideias questionadas e essa tática exige que você tenha tato e inspire confiança aos olhos do cliente. Você também precisará sair da sua zona de conforto e mergulhar no negócio deles, para poder entender o problema e sugerir a melhor solução. Isso pode ser um desafio se você estiver trabalhando em setores complexos, como finanças ou saúde. Mas se você conseguir fazer isso uma vez, é provável que da próxima vez o cliente retorne com a mente mais aberta. Lembre-se, nem todo mundo gosta de ter suas ideias questionadas, e essa estratégia exige que você tenha tato e inspire confiança aos olhos de seus clientes. Você também precisa sair da zona de conforto e mergulhar no negócio deles para poder entender os problemas e encontrar as melhores soluções. Se você trabalha em um setor complexo como financeiro ou de saúde, isso pode ser um desafio. Mas se você conseguir fazer isso, o cliente poderá voltar com a mente mais aberta na próxima vez.
Escolha as ferramentas certas para o trabalho
Se tudo que você tem é um martelo, tudo parece um prego.
Freqüentemente, os desenvolvedores que aprendem apenas uma única tecnologia correm para aplicá-la a todos os problemas que encontram. Não é novidade que esse tipo de abordagem leva a resultados abaixo do ideal. Em vez disso, ao enfrentar um novo problema, faça uma pausa e pense se as ferramentas à sua disposição são realmente adequadas para este tipo de trabalho. Se você tiver dúvidas, investigue um pouco e faça uma lista de prováveis alternativas superiores. Para facilitar, compile uma lista de perguntas e avalie as diferentes opções, uma por uma. As perguntas podem ser diferentes para cada avaliação, mas podem seguir o caminho de:
Freqüentemente, os desenvolvedores que aprendem apenas uma tecnologia correm para aplicá-la a todos os problemas que encontram. Como esperado, esta abordagem leva a resultados abaixo do ideal. Em vez disso, quando estiver trabalhando em um novo problema, pare e pense se as ferramentas que você possui são realmente adequadas para o trabalho. Se tiver dúvidas, faça uma pesquisa e crie uma lista de alternativas que podem ser melhores. Para facilitar, escreva uma lista de perguntas e avalie as diferentes opções uma por uma. As perguntas podem ser diferentes para cada avaliação, mas podem ser assim:
-
Quais plataformas ou dispositivos ele deve suportar? Quais plataformas ou dispositivos ele deve suportar?
-
Quais são os requisitos não funcionais, como desempenho ou uso de memória? Quais são os requisitos não funcionais, como desempenho ou uso de memória?
-
Comprar uma licença é uma opção ou você precisa de algo gratuito ou de código aberto? Comprar uma licença é uma opção ou você precisa de algo gratuito ou de código aberto?
-
A solução fornece tudo o que você precisa imediatamente ou você mesmo precisará escrever algo? A solução fornece tudo o que você precisa imediatamente ou você mesmo precisará escrever algo?
-
Você tem alguma outra limitação, como políticas da empresa, considerações legais ou falta de especialistas em sua equipe? Você tem alguma outra limitação, como políticas da empresa, considerações legais ou falta de especialistas em sua equipe?
Responder a essas perguntas deve ajudá-lo a estruturar as opções em sua cabeça e restringi-las a uma lista restrita de candidatos. Responder a essas perguntas deve ajudá-lo a estruturar as opções em sua cabeça e restringi-las a uma lista restrita de candidatos.
Experimente com segurança Experimente com segurança
Então, o que acontece se nenhuma das coisas que você conhece for particularmente adequada ao seu caso e você quiser tentar algo novo? O fato de você não experimentar algo não significa automaticamente que esteja fora de questão. Significa apenas que você precisa considerar algumas coisas adicionais: Então, o que acontece se nada do que você conhece funciona particularmente bem para você e você deseja tentar algo novo? Só porque você não experimentou algo não significa que seja impossível. Significa apenas que você precisa considerar algumas coisas extras:
Você tem tempo suficiente para se preparar? Se o cronograma do projeto não for estressante, você poderá aprender o máximo possível antes de iniciar a implementação e fazer o resto ao longo do caminho. Ou pelo menos adote a abordagem “finja até conseguir” e convença o cliente de que você sabe o que está fazendo. Você tem tempo suficiente para se preparar? Se o cronograma do projeto não for estressante, você poderá aprender o máximo que puder antes de iniciar a implementação e aprender o resto ao longo do caminho. Ou pelo menos adote uma abordagem do tipo “finja até conseguir” e faça seus clientes acreditarem que você sabe o que está fazendo.
Identifique as coisas que você precisa testar primeiro. Adote a abordagem “falhe rápido” e identifique os itens cruciais que você precisa avaliar antes de concluir o experimento. Tem dúvidas sobre o desempenho de um sistema? Construa um protótipo mínimo e execute um teste de carga. Não tem certeza sobre uma biblioteca específica ou integração com um serviço externo? Implemente isso separadamente e depois construa o resto. Comece determinando o que precisa ser testado. Use uma abordagem de “falha rápida” para identificar os principais fatores que precisam ser avaliados antes do final do experimento. Tem dúvidas sobre o desempenho do seu sistema? Construa um protótipo mínimo e execute testes de carga. Não tem certeza sobre uma biblioteca específica ou integração com um serviço externo? Implemente isso individualmente e depois construa o resto.
Tenha em mente que seguir esse caminho ainda é arriscado tanto para você quanto para seu cliente, e eles precisam estar cientes dos riscos e dos benefícios potenciais. Afinal, uma investigação de duas semanas que pode economizar meses de trabalho no longo prazo parece um bom negócio. Mesmo que a experiência falhe, você perderá apenas duas semanas. Quanto mais confiança você tiver em seu cliente, maior será a probabilidade de ele concordar com algo assim. Lembre-se de que fazer isso é arriscado tanto para você quanto para seu cliente, e eles precisam estar cientes dos riscos e benefícios potenciais. Afinal, uma pesquisa de duas semanas poderia economizar meses de trabalho no longo prazo, o que parece um bom negócio. Mesmo que a experiência falhe, você perdeu apenas duas semanas. Quanto mais confiança você tiver em seus clientes, maior será a probabilidade de eles concordarem com algo assim.
Construa sobre os ombros de gigantes Fique sobre os ombros de gigantes
Reinventar a bicicleta muitas vezes leva a resultados estranhos. Reinventar a bicicleta muitas vezes leva a resultados estranhos.
O pessoal de TI geralmente tem duas características comuns: somos criativos e gostamos do nosso trabalho. Isso parece bom, mas traz um efeito colateral estranho: tendemos a encontrar nossas próprias soluções para problemas que já foram resolvidos antes. Portanto, sempre que nos deparamos com a escolha de usar uma estrutura, biblioteca ou serviço ou implementá-lo por conta própria, tendemos a escolher a última opção. E isso nos leva à jornada fútil de reinventar a roda. Algumas das crenças erradas comuns que levam a isso são: O pessoal de TI geralmente tem duas características em comum: somos criativos e gostamos do nosso trabalho. Isso pode parecer bom, mas traz um efeito colateral estranho: tendemos a encontrar nossas próprias soluções para problemas que já foram resolvidos antes. Portanto, quando nos deparamos com a escolha de utilizar um framework, biblioteca, serviço ou implementá-lo nós mesmos, tendemos a escolher esta última. Isso nos coloca em uma jornada inútil para reinventar a roda. Algumas crenças erradas comuns que levam a esse resultado são:Implementar algo sozinho é mais fácil do que aprender uma solução de terceiros. Embora este possa ser um motivo perfeitamente válido, é importante não simplificar demais a tarefa em questão. Muitas vezes, algo parece simples no começo, mas se torna muito mais difícil com o progresso. Eventualmente, você pode acabar gastando muito tempo lidando com bugs e casos extremos que alguém poderia ter resolvido para você. É mais fácil fazer isso sozinho do que aprender soluções de terceiros. Embora este possa ser um motivo perfeitamente válido, é importante não simplificar demais a tarefa em questão. Muitas vezes, as coisas parecem fáceis no início, mas tornam-se mais difíceis à medida que avançam. Você pode acabar gastando muito tempo lidando com bugs e casos extremos que outra pessoa poderia resolver para você.
Esta solução faz mais coisas do que eu preciso. A menos que haja razões específicas pelas quais isso seja ruim, como aumentar o tamanho do artefato resultante, adicionar vulnerabilidades potenciais ou desacelerar consideravelmente a construção, isso geralmente não é ruim. Você pode acabar precisando disso mais tarde. Por outro lado, adicionar uma biblioteca inteira para usar apenas uma função pode ser um exagero. Esta solução faz mais do que eu preciso. Geralmente, isso não é uma coisa ruim, a menos que haja um motivo específico para isso, como aumentar o tamanho dos artefatos produzidos, adicionar possíveis bugs ou desacelerar significativamente a construção. Você pode precisar disso mais tarde. Por outro lado, adicionar uma biblioteca inteira para usar apenas uma função pode ser um exagero.
Podemos fazer melhor. Embora existam alguns projetos de sucesso que começaram com estas palavras, normalmente não é esse o caso. Soluções de terceiros de qualidade são mantidas por equipes que possuem experiência e recursos dedicados à solução deste problema específico. Para competir com eles é preciso poder investir ainda mais. A maioria dos projetos não tem recursos nem necessidade para fazer isso. Podemos fazer melhor. Embora existam alguns projetos de sucesso que começam com essas palavras, geralmente não é esse o caso. Soluções de terceiros de alta qualidade são mantidas por equipes com experiência e recursos para resolver esse problema específico. Para competir com eles, você precisa investir mais. A maioria dos projetos não tem recursos nem necessidade para fazer isso.
A propriedade do código e a manutenção a longo prazo se tornarão um problema. Algumas pessoas temem que, se você optar por uma solução de terceiros, corre o risco de que o projeto em algum momento seja abandonado ou inutilizável por qualquer motivo. sobre se vale a pena o risco. A propriedade do código e a manutenção a longo prazo se tornarão um problema. Algumas pessoas temem que, se você optar por uma solução de terceiros, poderá abandonar ou não conseguir usar o projeto por um motivo ou outro em algum momento. O risco de aprisionamento do produto é real e você deve considerar uma possível estratégia de mitigação. Se este for um projeto de código aberto, é possível desenvolvê-lo e mantê-lo sozinho? Ou se for um projeto privado, quanto custará para substituí-lo? Com base nessas informações, você pode tomar uma decisão consciente se vale a pena correr o risco.
Aprenda através da reimplementação
Há outro lado desta história. Reimplementar algo você mesmo é, na verdade, uma ótima maneira de aprender. Embora escrever sua própria estrutura para um projeto de produção seja quase sempre uma má ideia, criá-la como um exercício de aprendizagem pode ser altamente valioso. Qual a melhor maneira de se familiarizar com os problemas que ele resolve, analisando os mesmos problemas. Não se aprofunde muito na toca do coelho, uma implementação simplificada e grosseira será suficiente para lhe dar uma compreensão da situação. Há outro lado desta história. Reimplementar suas próprias coisas é, na verdade, uma ótima maneira de aprender. Embora escrever sua própria estrutura para projetos de produção seja quase sempre uma má ideia, criá-la como um exercício de aprendizagem pode ser muito valioso. Qual a melhor maneira de se familiarizar com o problema que ele resolve, tentando resolver o mesmo problema? Sem se aprofundar muito, uma implementação aproximada e simplificada será suficiente para lhe dar uma ideia da situação.
Enquanto você está nisso, não hesite em espiar as fontes de projetos semelhantes. Estudar o código de projetos de código aberto permitirá que você se beneficie da experiência de desenvolvedores mais experientes. Enquanto estiver fazendo isso, não tenha vergonha de verificar fontes de projetos semelhantes. Estudar o código de um projeto de código aberto permite que você se beneficie da experiência de desenvolvedores experientes.
Trabalhe em como você trabalha Aprenda como você trabalha

Buscar melhorias não apenas nos aspectos tecnológicos, mas também nos metodológicos. Assim como um software adequadamente projetado e otimizado, um fluxo de trabalho bem estabelecido permitirá que você trabalhe com menos esforço e estresse e, ao mesmo tempo, produza melhores resultados. Estabelecer um processo de trabalho eficaz e eficiente não é uma tarefa fácil e existem inúmeros livros e materiais disponíveis sobre este tema. Mas, para começar, considere as seguintes áreas para melhorias: Esforçar-se por melhorias não só em termos de tecnologia, mas também em termos de métodos. Assim como um software adequadamente projetado e otimizado, um fluxo de trabalho sólido permitirá que você trabalhe com menos esforço e estresse e, ao mesmo tempo, produza melhores resultados. Estabelecer um fluxo de trabalho eficaz e eficiente não é uma tarefa fácil e existem muitos livros e materiais sobre o assunto. Mas primeiro, considere as seguintes áreas de melhoria:Metodologias de gerenciamento de equipes e projetos. Como a maioria de nós trabalha em equipe, é importante adotar um processo que melhore a colaboração e estabeleça um ritmo de trabalho comum para todos. O movimento ágil no desenvolvimento de software deu origem a uma série de metodologias amplamente adotadas, como Scrum ou Kanban. Eles ajudam a organizar a estrutura geral de trabalho, mas não cobrem tudo. Existem outras metodologias que ajudam você a fazer estimativas, priorizar problemas, melhorar a comunicação, etc. Você precisará identificar as áreas com as quais está enfrentando dificuldades e procurar as melhores práticas que ajudem a resolver suas dificuldades. Métodos de gerenciamento de equipes e projetos. Como a maioria de nós trabalha em equipe, é importante adotar processos que melhorem a colaboração e estabeleçam um ritmo de trabalho comum para todos. O movimento ágil no desenvolvimento de software deu origem a muitas metodologias amplamente adotadas, como Scrum ou Kanban. Ajudam a organizar a estrutura geral de trabalho, mas não cobrem tudo. Existem outras maneiras de ajudá-lo a realizar avaliações, priorizar problemas, melhorar a comunicação e muito mais. Você precisa identificar as áreas com as quais está enfrentando dificuldades e procurar as melhores práticas para ajudá-lo a resolvê-las.
Processos pessoais. Tal como uma orquestra, uma equipa eficaz deve ter o mesmo ritmo, mas isso não significa que todos devam trabalhar de forma idêntica. Cada pessoa tem suas preferências e deve trabalhar de uma forma que a torne mais produtiva. Por exemplo, muitas pessoas não gostam de ser incomodadas por horas durante a codificação, mas eu, pessoalmente, gosto de trabalhar em intervalos curtos de uma a duas horas com intervalos entre eles (uma versão menos rígida da técnica pomodoro). Também não gosto de trabalhar em casa para evitar distrações domésticas e prefiro trabalhar em um escritório ou café. Descubra o que funciona para você e cumpra-o, mas também certifique-se de que seus hábitos não criem problemas para outros membros da equipe. processo pessoal. Tal como uma orquestra, uma equipa eficaz deve ter o mesmo ritmo, mas isso não significa que todos tenham de trabalhar da mesma forma. Cada um tem suas próprias preferências e deve trabalhar de uma forma que as torne mais eficientes. Por exemplo, muitas pessoas não gostam de ser interrompidas por horas durante a codificação, mas eu pessoalmente gosto de trabalhar em pequenos períodos de 1 a 2 horas com intervalos entre eles (esta é uma versão menos rigorosa da Técnica Pomodoro). Também não gosto de trabalhar em casa para evitar distrações familiares, prefiro trabalhar em escritório ou cafeteria. Descubra o que funciona para você e persista, mas também certifique-se de que seus hábitos não causem problemas para outros membros da equipe.
Práticas de engenharia. Muitas práticas situam-se na fronteira entre tecnologia e metodologia e concentram-se na melhoria do processo de desenvolvimento real. Por exemplo, o desenvolvimento orientado a testes e o desenvolvimento orientado a comportamento ajudam a manter sua base de código bem estruturada e testada. As revisões de código ajudam a reduzir defeitos no código e também a disseminar o conhecimento na equipe. A integração e a entrega contínuas garantem um processo de implantação mais fácil e seguro. Use essas práticas em combinação com outras metodologias organizacionais para alcançar o máximo de resultados. Prática de Engenharia. Muitas práticas situam-se nos limites da tecnologia e dos métodos, concentrando-se na melhoria do processo de desenvolvimento real. Por exemplo, o desenvolvimento orientado a testes e o desenvolvimento orientado a comportamento ajudam a manter a base de código bem estruturada e testada. As revisões de código ajudam a reduzir defeitos no código e a espalhar o conhecimento entre a equipe. A integração e a entrega contínuas garantem um processo de implantação mais fácil e seguro. Use essas práticas em conjunto com outros métodos organizacionais para alcançar o máximo de resultados.
Lembre-se de que não existe um processo que funcione para todos, você precisa testá-lo em seu próprio ambiente. Além disso, certifique-se de compreender o processo completamente e implementá-lo corretamente. Procure aconselhamento de equipes que já passaram pelo processo e se beneficiem de sua experiência. Não negligencie os softwares e ferramentas materiais que o ajudarão a adotar um processo. fazer uma avaliação para saber se as coisas melhoraram. Tenha em mente que não existe um processo único e você precisará experimentar em seu próprio ambiente. Além disso, certifique-se de compreender totalmente o processo e implementá-lo corretamente. Procure aconselhamento de equipes que passaram por esse processo e se beneficiaram com sua experiência. Não negligencie software e ferramentas materiais que o ajudarão a adotar seu processo. Obtenha um verdadeiro quadro Kanban e uma plataforma moderna para entrega contínua. A adoção de novos processos exige esforço e pode até resultar em perdas de produtividade no curto prazo. Reserve um tempo e avalie se as coisas melhoraram.
Remover obstáculos Remover obstáculos
Uma coisa separada deve ser dita sobre como lidar com os obstáculos. É um erro comum negligenciar pequenos incômodos que podem não parecer importantes, mas que na verdade podem ter um efeito tóxico no seu trabalho. O seu designer de produto está sentado em uma sala ou prédio separado? Isso significa que é preciso um pouco mais de esforço para vir e conversar e algumas coisas não serão discutidas. É difícil escrever um novo teste? Então muitas coisas não serão testadas. Há mais uma coisa a dizer sobre como lidar com obstáculos. É um erro comum ignorar pequenos aborrecimentos que podem parecer sem importância, mas que na verdade podem ter um impacto negativo no seu trabalho. Os designers de seus produtos sentam-se em uma sala separada ou em um prédio? Isso significa que você precisa se esforçar mais para conversar com eles e algumas coisas não serão discutidas. É difícil fazer um novo exame? Então muitas coisas não serão testadas.Nenhuma destas coisas é particularmente perigosa por si só, mas tendem a acumular-se e a causar consequências graves. E o mais desagradável é que muitas vezes você não os percebe até que já seja tarde demais. Especialmente quando há sempre perigos mais sérios a enfrentar. Lembre-se da fábula sobre o sapo fervente e da noção de normalidade crescente. Nenhuma destas coisas é particularmente perigosa por si só, mas muitas vezes acumulam-se e causam consequências graves. A pior parte é que muitas vezes você não os percebe até que seja tarde demais. Especialmente quando há sempre perigos mais sérios com os quais lidar. Lembre-se da parábola do sapo fervente e do conceito de normalidade rastejante.
Fique vigilante e lute contra essas coisas pela raiz, antes que cheguem até você. Esteja vigilante e lute contra essas coisas antes que elas aconteçam com você.
Foco nos Fundamentos Foco nos Fundamentos
Conceitos fundamentais são os alicerces de sua carreira.
A TI é um setor extremamente acelerado. Toda semana novas ferramentas são lançadas no mercado. Já mencionei a infame síndrome da “fadiga do JavaScript” em meu post anterior. Muitos desenvolvedores ficaram estressados e se sentiram forçados a reavaliar sua pilha de tecnologia JS a cada novo projeto e isso os deixou malucos. Na verdade, estar sempre no limite pode ser um desafio, mas existem algumas ideias que podem tornar isso mais fácil. Esta é uma indústria em ritmo muito acelerado. Novas ferramentas são lançadas no mercado todas as semanas. Já mencionei a infame síndrome da “fadiga do JavaScript” em meu último artigo. Muitos desenvolvedores se sentem pressionados a reavaliar sua pilha JS a cada novo projeto, e isso os deixa loucos. Sim, é um desafio estar sempre no limite, mas existem algumas ideias para tornar isso mais fácil.
Em primeiro lugar, concentre-se nos fundamentos. Embora novas tecnologias apareçam com bastante frequência, novos conceitos fundamentais são muito mais raros. Ao aprender algo novo, certifique-se de compreender as ideias subjacentes que levam a essa implementação. Provavelmente, essas ideias também são usadas em outros projetos e, quando você encontrar algo semelhante, será mais fácil entendê-lo. De maneira semelhante, as ideias do Redux chegaram ao Angular, e o gerenciamento de estado reativo do Angular foi implementado para o React como MobX. Primeiro, concentre-se nos fundamentos. Embora novas tecnologias apareçam com frequência, raramente surgem novos conceitos fundamentais. Ao aprender algo novo, certifique-se de compreender as ideias básicas que levaram a essa implementação. Provavelmente, essas ideias também serão usadas em outros projetos, tornando mais fácil compreendê-las quando você encontrar algo semelhante. Por exemplo, as estruturas modernas de UI JavaScript são baseadas em componentes e, depois de entender como construir aplicativos orientados a componentes usando React, você poderá usar essa experiência ao trabalhar com Angular. Da mesma forma, a ideia do Redux também foi introduzida no Angular, que implementa gerenciamento de estado responsivo para React como MobX.
Reserve algum tempo para se familiarizar com os livros clássicos sobre os tópicos de padrões comuns no desenvolvimento de software, como “Enterprise Integration Patterns” de Gregor Hohpe e Bobby Woolf, os famosos “Design Patterns: Elements of Reusable Object-Oriented Software” do Gang of Four ou diferentes trabalhos de Martin Fowler. Embora algumas das coisas descritas nos livros possam estar desatualizadas, você pode usá-las para aprender como os padrões evoluíram até hoje. Passe algum tempo se familiarizando com livros clássicos sobre tópicos de padrões comuns no desenvolvimento de software, como Enterprise Integration Patterns, de Gregor Hohpe e Bobby Woolf, e o famoso livro Design Patterns: Elements of Reusable Object-Oriented Software, de Martin Fowler. Embora parte do conteúdo descrito no livro possa estar desatualizado, você pode usá-lo para entender como o padrão evoluiu até onde está hoje.
Em segundo lugar, não se apresse em aprender sobre todas as novidades que existem. Entendo que seja tentador acompanhar cada novidade que aparece no Hacker News, mas muitas dessas coisas são apenas ruído. Em vez disso, fique atento às coisas que já circulam na comunidade há algum tempo e que amadureceram além do entusiasmo das discussões iniciais. Não ceda ao FOMO. Se você prestar pelo menos um pouco de atenção ao que está acontecendo, nada importante passará despercebido. Em segundo lugar, não se apresse em aprender todas as coisas novas. Eu sei que é tentador acompanhar cada novidade que sai no Hacker News, mas muito disso é apenas barulho. Em vez disso, concentre-se em coisas que já existem na comunidade há algum tempo e que amadureceram com as discussões iniciais. Não ceda ao “controle social”. Se você pelo menos prestar atenção ao que está acontecendo, nada de importante passará despercebido.
Dicas de bônus Dicas de bônus

Já falamos muito neste artigo, mas há alguns outros pontos que gostaria de destacar antes de encerrarmos. Essas dicas estão mais focadas nas suas características pessoais do que nas profissionais, mas ainda acredito que elas têm um grande impacto na sua vida profissional. Abordamos muito neste artigo, mas antes de encerrar, gostaria de destacar alguns pontos adicionais. Esses conselhos são mais pessoais do que profissionais, mas ainda acredito que podem ter um grande impacto na sua vida profissional.### Compartilhe o conhecimento Compartilhe conhecimento Muitas vezes as pessoas pensam que acumular conhecimentos valiosos os tornará indispensáveis. Ter pessoas assim em sua equipe expõe você ao “fator ônibus” e pode colocá-lo em uma situação difícil se essa pessoa deixar o projeto. Se você é uma dessas pessoas, considere que além de torná-lo indispensável, sua expertise também o torna impossível de ser promovido e “não passível de férias”. Você pode perder outras oportunidades de carreira em sua organização porque está vinculado a essa função. Em vez disso, compartilhe o conhecimento com seus colegas, se possível delegue parte do seu trabalho a eles e use essa colaboração para construir coisas ainda maiores em cima do trabalho deles. Muitas vezes as pessoas acreditam que armazenar conhecimentos valiosos os tornará indispensáveis. Ter essa pessoa em sua equipe expõe você ao “fator ônibus” e pode deixá-lo em apuros se essa pessoa deixar o projeto. Se você é uma dessas pessoas, considere que além de torná-lo indispensável, suas competências profissionais também o tornarão inelegível para promoções e “incapaz de tirar folga”. Você pode perder outras oportunidades de carreira dentro da organização porque está preso a essa função. Em vez disso, compartilhe seu conhecimento com seus colegas, delegue-lhes partes de seu trabalho, se possível, e use essa colaboração para construir algo maior em cima do trabalho deles.
Não culpe a si mesmo ou aos outros
Lembro-me que há muito tempo tivemos um incidente em um projeto que ocorreu por engano meu. Conseguimos nos recuperar do incidente rapidamente e lembro-me do cliente me dizendo: Lembro que algo aconteceu conosco em um projeto há muito tempo e a culpa foi minha. Recuperamos do incidente muito rapidamente e lembro-me do cliente me dizendo:
Você não julga uma equipe pelo seu desempenho quando tudo corre conforme o planejado, mas pela forma como ela opera quando a merda bate no ventilador.
Não importa o quão bom você seja, às vezes as coisas dão errado e nesses momentos é importante ser capaz de manter a calma e lidar com a situação com dignidade e respeito mútuo. Depois que o fogo for apagado, não se concentre em encontrar o bode expiatório. Isso não o ajudará a evitar erros no futuro, mas espalhará o medo e a dúvida em toda a empresa. melhore seu sistema ou fluxo de trabalho para evitar esse problema no futuro. Não importa quão bom você seja, às vezes as coisas dão errado e, nessas situações, é importante manter a calma e lidar com a situação com dignidade e respeito mútuo. Quando o fogo estiver apagado, não se concentre em encontrar um bode expiatório. Isso não o ajudará a evitar erros no futuro, mas encherá toda a empresa de medo e dúvidas. Em vez disso, realize uma autópsia conjunta com todas as partes afetadas. Concentre-se no que causou o problema, descubra por que isso aconteceu e, em seguida, pense em maneiras de melhorar seu sistema ou fluxo de trabalho para evitar esse problema no futuro.
Não seja um idiota, não seja um idiota
A comunidade de desenvolvedores é uma coisa engraçada. Por um lado, vemos muitas pessoas motivadas e de mente aberta que contribuem para a comunidade trabalhando em projetos de código aberto, fazendo palestras em conferências ou escrevendo artigos. Por outro lado, encontramos pessoas que trollam novas ideias, desrespeitam os recém-chegados e demonstram comportamento rude com todos ao seu redor. Não seja uma dessas pessoas. Seja gentil e espalhe o amor. A comunidade de desenvolvedores é uma coisa engraçada. Por um lado, vemos muitas pessoas ativas e abertas contribuindo para a comunidade através de projetos de código aberto, falando em conferências ou escrevendo artigos. Por outro lado, também encontramos pessoas que torcem o nariz para novas ideias, desrespeitam os recém-chegados e se comportam de maneira rude com aqueles que os rodeiam. Não seja essa pessoa. Seja gentil com os outros e espalhe amor.
Muitos conselhos profissionais podem ser resumidos em apenas quatro palavras.
Concluindo Concluindo
O melhor do nosso trabalho é que ele não tem limite. Sempre há novos caminhos para viajar e dragões para matar. Quer você esteja apenas no início de sua jornada ou seja um profissional experiente, tenha isso em mente. Eles devem ajudá-lo a encontrar seu caminho e se tornar um desenvolvedor melhor a cada passo dado. O melhor do nosso trabalho é que não há limites. Sempre há novos caminhos a seguir, sempre novos dragões para matar. Quer você esteja apenas começando sua carreira ou seja um profissional experiente, tenha essas coisas em mente. Eles devem ajudá-lo a encontrar seu próprio caminho e a se tornar um desenvolvedor melhor em cada etapa do caminho.
Você tem conselhos diferentes para compartilhar com outras pessoas? Fique à vontade para postar nos comentários e iniciar uma discussão! Você tem alguma sugestão diferente que possa compartilhar com outras pessoas? Sinta-se à vontade para postá-los nos comentários e iniciar uma discussão!
Você está interessado em aprender desenvolvimento web ou melhorar ainda mais suas habilidades? Verifique devtrails.io para obter uma coleção de guias úteis para ajudá-lo a descobrir como lidar com o desenvolvimento web. Você está interessado em aprender desenvolvimento web ou melhorar ainda mais suas habilidades? Confira os devtrails. O conjunto de guias úteis do io para ajudá-lo a se orientar no desenvolvimento web.
Artigo de: https://medium.com/devtrailsio/how-to-become-a-better-software-developer-dd16072c974e
What to read next
Want more posts about Translation?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #Translation?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home