Sou desenvolvedor agora há vários anos. Sou muito bom no que faço e posso "fazer o trabalho".
Mas há uma diferença entre "fazer o trabalho" e "fazer o trabalho corretamente". Vamos usar um exemplo.
Recentemente, desenvolvi um site a partir do zero. O site funciona bem e não tive problemas. Olhando através do código, pensei comigo mesmo que poderia ter feito melhor. Eu poderia ter diminuído minhas consultas MySQL. Eu poderia ter usado o MVC, tornando mais fácil estender (ele precisa ser estendido agora).
Decidi reescrever o projeto usando o CodeIgniter. Eu gosto da estrutura. Mas então fui desviado porque, para reduzir minhas consultas no MySQL, tive que aprender junções avançadas.
E esse é o problema. Sempre que faço um trabalho corretamente, estou em constante aprendizado. E tópicos como junções avançadas do MySQL levam tempo para aprender e, em seguida, tempo para implementar.
Eu não trabalho para uma empresa. Eu faço tudo sozinho. Então, eu imaginaria que, se estivesse trabalhando como desenvolvedor PHP para uma empresa, haveria equipes separadas lidando com o SQL.
Ser solo é difícil. E às vezes, embora meu conhecimento seja avançado, eu me pego fazendo perguntas, após perguntas. Provavelmente tenho muito orgulho do meu trabalho. Mas se eu tivesse que trabalhar para uma empresa que lida com projetos completos, poderia imaginar projetos demorando um pouco, porque precisaria aprender cada vez mais para satisfazer meu orgulho e garantir que estou fazendo as coisas "corretamente".
Eu pretendo conseguir um emprego depois do ano novo. Eu preciso da segurança do emprego. É por isso que estou fazendo essa pergunta.
Que conselho você pode dar em termos de auto-desenvolvimento e auto-aperfeiçoamento? Devo me preocupar menos? Ou talvez procure um emprego como desenvolvedor PHP quando não vou lidar com consultas SQL diretamente?
fonte
Respostas:
Conselho: Não tenha medo de aprender coisas novas - você deu um bom primeiro passo ao reconhecer que poderia fazer melhor e depois se esforçou para aprender como poderia fazer melhor. Sim, leva mais tempo no início, mas a recompensa geralmente vale a pena a longo prazo. Agora que você conhece o CodeIgniter, pode usá-lo para os próximos projetos futuros. Você pode colocá-lo em seu currículo. Agora que você conhece técnicas avançadas de SQL, seus futuros projetos serão beneficiados. Se você parar de aprender, ficará estagnado.
fonte
O que você está passando parece bastante normal para mim. É assim que trabalhamos em nosso ofício e melhoramos cada vez mais no que fazemos.
fonte
Bem dado acima, acho que faz sentido você se concentrar em melhorar sua capacidade de planejar com antecedência, estabelecer e priorizar a fila de trabalho, gerenciar seu tempo - coisas assim.
Realmente, isso parece ser a única coisa que falta na sua atitude. O que você chama de "desvio" é essencialmente outro trabalho ("aprender junções avançadas") que precisa ser planejado, priorizado e colocado em fila.
fonte
Ser um profissional nesse campo é esmagar-se constantemente contra sua própria inadequação. Faça de 8 a 5 de segunda a sexta-feira, talvez mais, se houver um prazo, tenha um bom fim de semana e volte mais na segunda-feira. Esse é o trabalho.
Criar software requer uma certa humildade. Se você é alguém que precisa estar certo e que precisa provar que já sabia tudo, talvez esse não seja o campo para você.
Não consigo entender não aprendendo algo todos os dias. Eu não acho que eu iria querer esse emprego.
fonte
Ser solo é difícil. Por outro lado, quando você trabalha com uma equipe de desenvolvedores, todo mundo está aprendendo um com o outro. Como parte da equipe, você adquirirá muito conhecimento trabalhando com outros desenvolvedores e com muito menos esforço do que quando tenta descobrir tudo sozinho.
Dito isto, como desenvolvedor, você precisa se comprometer a aprender constantemente. Seja lendo a documentação para novas estruturas ou livros sobre desenvolvimento, você deve fazer um esforço constante para manter seu conhecimento atualizado e crescente. No entanto, fazer parte de uma equipe pode esclarecer qual área você precisa aprender mais a qualquer momento.
Quanto ao seu ponto de vista sobre revisitar seu código antigo e reescrever: descobri que meu próprio código sempre representa o melhor do que eu sabia no momento em que o escrevi. Muitas vezes volto a algo que escrevi anos atrás e me bato na testa, quando vejo o quanto eu poderia ter feito melhor, considerando o que sei agora . Mas essa é a natureza da experiência, você a obtém depois de precisar ...
Por fim, ao desenvolver um aplicativo, você sempre precisa exercitar o bom senso comercial, para decidir quando é melhor cortar os cantos para terminar mais rapidamente e quando é necessário levar mais tempo para aprender algo novo que melhoraria o design e a qualidade. do aplicativo. Há um universo de coisas para aprender no mundo do software. Sem exercitar esse tipo de bom senso, você pode girar as rodas aprendendo, pensando, redesenhando, mas nunca fazendo nada.
fonte
Acho que suas preocupações são válidas, mas você não deve perder o sono por causa disso. É minha convicção que um ser tecnólogo vem com a seguinte bagagem:
No final, parece que você se importa com a criação de software de qualidade, algo que você não pode aprender . Saiba que você precisa diferenciar a construção de uma solução de alta qualidade com a construção de algo perfeito. Parece que você é como eu, e nunca será perfeito. Seria mais preocupante se você não sentisse que tinha a chance de melhorar a si mesmo e a seu trabalho.
É difícil ser especialista em todos os negócios (mestre de nenhum), mas você realmente precisa descobrir como identificar as coisas que são mais interessantes e úteis para você e se concentrar nelas. Descobrir a melhor forma de "terceirizar" outro trabalho para outras pessoas ou ferramentas .
fonte
Eu acho que você precisa se preocupar menos em "fazê-lo corretamente". Busque a perfeição, mas saiba que não é realmente possível projetar uma solução perfeita, ainda mais na primeira vez. O fato de você estar preocupado o suficiente para fazê-lo corretamente para fazer essa pergunta significa que você já está no caminho certo.
Quanto à sua frustração em aprender coisas novas, descobri que trabalhar em grupo e ser capaz de perguntar e discutir o problema com outros programadores eliminaram a dor de descobrir o que eu precisava aprender e o substituí pela alegria de descobrindo algo novo e aprendendo a aplicá-lo.
Adoro escrever software, mas às vezes há realmente dor no aprendizado real de algo novo, mas em descobrir exatamente o que você precisa aprender para conseguir o que quer fazer.
Pelo que entendi, estive em uma posição semelhante a você. Codificar algo sozinho pode ser frustrante e difícil às vezes, e gratificante e um pouco divertido em outras.
Faça exatamente o que planeja fazer, encontre um emprego em que fará parte de uma equipe (e faça o possível para garantir um emprego em algum lugar que não seja ruim). Trabalhar com outras pessoas que usam as mesmas tecnologias e projetam o mesmo software expandirá sua compreensão e aplicação dessas tecnologias e padrões de design quase da noite para o dia.
Quanto a saber como fazer algo certo na primeira vez, bem, como você saberia que havia uma maneira melhor, a menos que você já tivesse feito de certa maneira na primeira vez? A habilidade no design de software geralmente depende muito da experiência. Joel Spolsky é um gênio do software, mas se você ler muitos artigos dele, perceberá que eles resultam muito da experiência e da inteligência.
Quanto à parte SQL, como desenvolvedor .NET. Ainda não trabalho em qualquer lugar que tenha um desenvolvedor de banco de dados dedicado, todos escrevemos nosso próprio SQL, mas muitas vezes há desenvolvedores que são realmente bons em SQL e estão dispostos a ajudá-lo. com o material mais aprofundado.
Você parece um cara inteligente, não acho que deva ser tão duro consigo mesmo.
fonte
Isso é totalmente normal e não é algo com que você deva se preocupar muito. Você precisa aprender continuamente novas habilidades, mas também precisa aprender a priorizar e gerenciar seu tempo. Você também precisa evitar a armadilha de redesenvolvimento desnecessário.
O programador inexperiente geralmente é atraído para a armadilha de redesenvolvimento:
Há várias coisas erradas nessa lógica.
Nunca é demais contemplar e planejar uma reconstrução. Isso significa considerar como você deseja reescrever seu programa e tentar identificar os problemas que ocorrerá. Nesse caso, você identificaria as 'junções avançadas do SQL' necessárias agora e investigaria como elas funcionam e aprenderia sobre elas.
Se você acha que não teria identificado a lacuna avançada de conhecimento de junção por meio do planejamento (sem iniciar o desenvolvimento), precisará melhorar suas habilidades de planejamento. Tente pensar sobre qual parte do plano não foi detalhada o suficiente. Você deve entrar em todos os detalhes necessários até ter certeza de que todo o sistema é tecnicamente possível.
Essa abordagem permitirá que você aprenda com antecedência .
Finalmente, aprender no trabalho é uma parte normal da programação. No entanto, isso não significa que você inicia uma tarefa e percebe que precisa parar por uma semana para aprender, digamos, sobre HTML básico. Você pode parar por algumas horas para aprender algo, mas seu empregador está pagando apenas para você fazer o trabalho. Aprenda com eficiência - não leia a introdução e o histórico, apenas como ele funciona e como ele se encaixará no seu programa. Se você precisar parar de trabalhar por dias a fio para aprender como concluir uma parte do programa, estará fazendo errado.
fonte
Você pode pensar que aprender novas tecnologias e problemas consome muito tempo. Mas não entre em pânico. É normal. É parte de sua prática como programador aprender ... ou então estaríamos todos presos ao COBOL.
Profissionais freelancers ajustam suas comissões de acordo e períodos de aprendizado são, entre outras coisas, algo que deve ser levado em consideração nas estimativas de tempo. Na próxima vez que você decidir criar uma nova estrutura, planeje com tempo suficiente para aprendê-la.
fonte
Não, não existe, e acho que essa é a raiz do seu problema aqui. Parece-me que você está muito preocupado em fazer as coisas "corretamente" porque, como desenvolvedor individual, você não vê como os outros operam. Mas corretamente de acordo com quem? Quem é essa pessoa mágica que decide decretar que o que você está fazendo é "correto"? Tome 100 dos melhores programadores do mundo e garanto que não dois concordarão 100% em todos os tópicos de programação.
Em última análise, o que importa é se seus clientes estão felizes. Se os programas que você cria estão resolvendo os problemas que deveriam e fazendo de uma maneira econômica, você está fazendo corretamente. Não é mais inerentemente correto, por exemplo, usar o codeigniter do que usar sua própria estrutura. O corolário disso é que, se você produz um monte de porcaria, está fazendo algo errado, independentemente dos processos ou das "melhores práticas" seguidas.
Você está revisitando seu código e vendo maneiras de aprimorá-lo é uma parte normal do processo de desenvolvimento. Não é sinal de que você não está fazendo as coisas "corretamente". É um sinal de que você se dedica a aprender e melhorar. De tudo o que vejo na sua postagem, você não tem nenhum problema.
Agora vá chutar alguns * * *
fonte