Comecei a programar aos 6 anos de idade em um Commodore 64. Agora tenho 28 anos e tenho que concluir 4 cursos do primeiro grau em Ciência da Computação.
Estou começando a me cansar de escrever código depois de todos esses anos. Eu fiz um curso de Ciência da Computação em linguagens teóricas de computador e 10 anos de codificação do sistema C no campo de segurança de rede e simplesmente não recebo nenhum estímulo ao escrever código.
Posso escrever código em C, C ++, Python ou em qualquer idioma que você quiser, mas não posso ficar empolgado com o que estou fazendo. Não sinto nenhum desafio. Escrevi código multiencadeado, proxy HTTPS MITM e um aplicativo WSGI sem a necessidade de nenhuma habilidade específica em algoritmos.
Eu sinto que todas essas coisas novas são iguais, com abstrações mais simples (ou mais) ou automação, mas tudo parece o mesmo para mim. Repetidamente. A linguagem computável é toda computável em Turing, portanto, a codificação é apenas uma replicação de um padrão semelhante nesse subconjunto de uma função parcial.
No meu trabalho diário, estou me sentindo entediado mesmo com a pesquisa de bugs, ou fazendo benchmarks no código, ou corrigindo o problema com a biblioteca X, Y, Z.
Eu sou uma pessoa muito curiosa. Eu sempre sou estimulado por alguma coisa. Mas não consigo nem quando olho para um ótimo código. Eu me sinto mais confortável em como as coisas funcionam.
Está na hora de avançar na minha carreira? Ou para obter coisas mais desafiadoras em Ciência da Computação? Talvez se formar em CS?
Comecei a ler meu primeiro livro sobre gerenciamento de projetos "Peopleware" e estou me interessando mais pelo ciclo de vida de desenvolvimento de software. O que você sugere fazer?
Talvez tentando entrar no Google, Microsoft ou Apple, como alguns amigos meus fizeram. Ou talvez uma carreira mais gerencial. Também tentei encontrar um bom livro sobre regras de comunicação e "personalidade das pessoas" para me preparar para a possibilidade de ingressar na administração.
Alguma sugestão?
PS: Eu tenho muito interesse, não estou deprimido :) Adoro montanha, trekking, tiro fotos e sou alpinista, adoro nadar e praticar esportes em geral, às vezes corro, na verdade eu sou ' estou lendo um livro sobre a história do meu país (Itália) do AC até hoje e adoro viagens (neste verão, fiz 4000Km para ver muito lugar na Espanha e subir nele, tudo em apenas 3 semanas, não um feriado, mas uma maratona , 24 km de trekking fizeram minha lesão de hérnia), eu amo teatro e vida em geral.
Obrigado a todos, pensar em todas as respostas me dá a oportunidade de tornar meu caminho mais claro.
Para um resumo, podemos generalizar sobre a resposta mais votada.
Antes de tudo, todas as pessoas votam na necessidade de tornar nosso trabalho um suporte para sua vida e não a única razão para permanecer na vida (esse não é o meu caso); portanto, se você apenas tiver razão de vida se trabalhar, será rápido para uma situação realmente depressiva. Como dizem as pessoas, Viena não está esperando por você :)
Após esse lembrete, as pessoas sugerem:
- aumentar a complexidade técnica Na verdade, estou trabalhando para aumentar o desafio e ficar menos entediado com isso.
- mude o campo de especialização para um campo não técnico, tentando se tornar um gerente ou fazer com que algum prestador de cuidados avance em campos não técnicos relacionados ao seu trabalho.
- mude o campo de especialização em outro tipo de desafio técnico, você é um programador de sistemas? tente ficar menos entediado desenvolvendo aplicativos para humanos, para que você possa se sentir mais confortável vendo pessoas usando seu software útil
- faça algum progresso em seu diploma de ciência da computação em seu caminho acadêmico
Para o meu propósito, a resposta certa é avançar na ciência da computação, para mim, acho que a programação não é a única maneira de obter ciência da computação e acho que posso me sentir melhor ao buscar outro caminho na ciência da computação diferente do prestador de serviços de engenharia de software.
Respostas:
Isso estava prestes a acontecer.
Se o seu principal interesse reside no código, ele o deixará louco, frustrado e deprimido de vez em quando, algum dia permanentemente.
Interesse-se em desenvolver produtos e divirta-se vendo as pessoas usá-los. Esse é o objetivo final de escrever o código, certo? O código é apenas uma ferramenta para fazer algo maior.
fonte
Vou responder sua pergunta com uma pergunta ...
O trabalho de um programador é codificar ou resolver problemas?
Você diz que está entediado porque escrever código parece algo que você já fez antes, como todo pedaço de código já foi feito antes.
Mas como você chegou à conclusão de que esse código é o código que deve ser escrito? A maioria dos problemas tem centenas de maneiras de resolvê-lo, mas existe apenas uma melhor maneira.
Se você realmente não encontra nenhum desafio, curiosidade ou interesse em encontrar soluções ou em solucionar problemas, você realmente deve mudar. Embora eu não tenha certeza de que isso seria gerenciamento de desenvolvimento de software. Eu não gostaria de trabalhar para um gerente de software que sentia tanta apatia por resolver problemas. Provavelmente deveria ser apenas uma indústria diferente, com um conjunto diferente de problemas.
Se você gosta de resolver problemas, mas não gosta de codificar, talvez não encontre problemas suficientes para resolver. Sempre que meu trabalho começa a parecer entediante, acredito que há um problema a ser resolvido. Por que estou fazendo um trabalho ocupado? Que solução posso encontrar para remover o trabalho ocupado do meu trabalho? Essa é a beleza da programação.
fonte
Parece-me que você fez muita programação processual e se cansou dela - o que eu entendo perfeitamente. A especificação passo a passo é a mesma em todas as linguagens processuais.
Como parece que você tem muitas atividades não relacionadas ao trabalho, sugiro que você aprenda alguns dos conceitos que não se assemelham ao que você sabe agora e - sim - há muitos, mas, para começar, recomendo Haskell, porque é
Aqui está uma função de classificação completa:
(Consulte http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding para obter uma explicação)
Se algo disso é novo para você, eu encorajo você a começar a se aventurar.
Boa sorte se divirta.
fonte
Computadores são consumidores chatos. Quando você codifica interações máquina a máquina o dia inteiro, elas reagem da mesma forma todas as vezes. É bom concluir o projeto, mas tedioso depois de um tempo. Isso realmente ajuda a quebrar a monotonia com algo que não está diretamente relacionado à máquina.
Encontrei inspiração tanto na fotografia quanto no estudo da experiência do usuário. Pense nisso, como é que a Apple consegue que milhares de pessoas se salivem para que a próxima coisa saia de Santa Clara quando outros fornecedores recebem uma resposta calorosa? Você acha mesmo que o Android teria uma resposta tão grande se a Apple não resistisse ao lançamento do iPhone na Verizon por tanto tempo? Vou lhe dar uma grande dica: não é necessariamente que esses produtos sejam tecnilogicamente avançados. Há um enorme componente psicológico na mania.
Compreender o design do produto e a experiência do usuário é algo que muitos de nós temos muito a aprender. O que faz alguém marcar? Como você projeta algo legal o suficiente para fazer as pessoas saírem da solução estabelecida? Como você cria seu próprio culto à tecnologia como a Apple (não que eu esteja aspirando a ser um líder de culto)? Todas essas são perguntas muito interessantes e estimulantes. Eles retornam ao desenvolvimento de software - mas agora seu foco é diferente.
fonte
Provavelmente você simplesmente não recebe desafios técnicos suficientes?
Etc. Claro, esteja pronto para ganhar inicialmente menos em um campo em que as coisas são desafiadoras para você, e não chatas.
fonte
Encontrei motivação ao mudar para um campo que não tem soluções "corretas", estou escrevendo ferramentas editoriais e meu trabalho é tão bom quanto os usuários acham útil. Conheço um monte de pessoas não técnicas e, juntos, estamos tentando criar maneiras de melhorar o software com o qual precisam trabalhar, encontro a interação humana e a necessidade de mudar constantemente as perspectivas completamente agradáveis e de repente a codificação não é tão tedioso mais.
Eu sei que não é para todos, porém, alguns lidam com a insegurança de não ter uma medida objetiva da qualidade do seu trabalho mais do que outros.
Mas é uma opção que pode valer a pena considerar.
fonte
Sim, às vezes sinto que, na realidade, alguém está escrevendo o mesmo tipo de código repetidamente. Mas não, ainda não estou entediada. Por que é que?
Porque basicamente gosto de descobrir novas formas de codificação e novas, concisas e elegantes formas de expressar algo no código. Há duas maneiras possíveis de fazer isso: aprender novas linguagens de programação ou aprender novas bibliotecas ou estruturas.
Aprender uma nova linguagem de programação ficou mais fácil para mim em cada linguagem que tentei. E depois de algum tempo, deixou de ser muito interessante. Porém, há cerca de um ou dois anos, finalmente cheguei à programação funcional, que como paradigma de programação é suficientemente diferente da OOP para ser um novo desafio. Eu sinto que isso realmente enriqueceu meus recursos de programação e me deu uma nova perspectiva da qual eu posso olhar para um problema de programação. Agora estou tentando descobrir diferentes paradigmas de programação, em vez de apenas linguagens de programação diferentes. Esse é um desafio maior.
Segundo, aprendendo uma nova biblioteca, estrutura ou API: como você disse corretamente, novas estruturas geralmente não resolvem novos problemas; eles apenas resolvem isso de uma maneira diferente, por exemplo, adicionando uma camada adicional de abstração. Talvez isso seja possível porque os computadores de hoje são mais poderosos que as máquinas anteriores; ou, talvez, porque, como um todo, estamos melhorando em escrever software.
Este último pedaço provavelmente precisa de explicações. Vou dar um exemplo: por muito tempo, enquanto praticava minhas habilidades de programação, nunca pensei muito na manutenção do código que estava escrevendo. Desde que comecei a programar um trabalho, minha perspectiva mudou. Escrever código de manutenção geralmente é muito importante em um ambiente corporativo, porque toda hora que você gasta em codificação custa dinheiro real, então uma corporação tentará manter o código existente, se possível, e as chances são de que você acabe passando por cima seu código para um sucessor.
Acho que escrever código sustentável é realmente um grande desafio. Isso geralmente significa que você não escreverá um código de montagem super inteligente e altamente otimizado (lembre-se de The Story of Mel - A Real Programmer , alguém? ;-) Em vez disso, é mais provável que você aproveite a abstração. Quanto mais próximo o código estiver de algumas regras comerciais e do domínio do problema, melhor. É aí que todas as novas bibliotecas entram. Se elas permitem que você escreva códigos de forma que sejam limpos, claros, concisos e fáceis de entender, isso é uma coisa boa.
Desculpe se esta resposta é um pouco longa. Tentei mostrar de onde vem minha motivação em programação ... e eu estaria interessado em saber se, em algum momento, você se sentiu da mesma maneira e se (e por que) sua motivação acabou saindo, de qualquer maneira.
fonte
Se você está cansado de escrever um código, se não o excita, se isso o aborrece, pode ser a hora de mudar. Você pode mudar para uma posição de gerenciamento e gerenciar e orientar outros codificadores com seus anos de experiência. Ou tente se mover lateralmente para a arquitetura do sistema, onde você poderia projetar e planejar sistemas e outras pessoas fariam a maior parte da implementação.
Ou você pode mudar de carreira completamente, para algo que não tem absolutamente nada a ver com computadores. Você já se perguntou qual seria o emprego dos seus sonhos, se alguém pudesse dar a você?
fonte
Comece a jogar com microcontroladores. É a aplicação mais refrescante e emocionante do talento de programação que consigo imaginar.
fonte
Parece que os pontos de partida de nossos antecedentes são semelhantes, pois começamos a programar por volta dos 6 anos em máquinas semelhantes e entramos e saímos da programação por vários motivos. Nenhum dos meus diplomas tem algo a ver com programação - eu tenho todos os diplomas de música - apesar de ter feito alguns cursos de ciências da computação em nível de pós-graduação.
Acho que você está certo ao observar que os programadores geralmente resolvem os mesmos problemas repetidamente e que o "novo" é todo baseado no "velho". Que você percebe esse fato é seu crédito; muitos desenvolvedores e empresários veem as novas tecnologias completamente desconectadas das antigas.
Portanto, resolver esse tipo de problema não é interessante para você. O que seria interessante? Você gosta de resolver problemas em geral? Talvez uma vida como desenvolvedor de software "comercial" não seja para você.
Sei que forneci mais perguntas do que respostas, mas espero que respondê-las forneça algumas dicas sobre a direção que você deve tomar.
fonte
Parece-me que você está preso. Você está em uma situação em que não quer entrar e não sabe como sair dela. Meu conselho é simples: faça algo diferente apenas por fazer algo diferente. Mesmo que não resolva o seu problema, provavelmente o deixará desconectado.
Não tome isso da maneira errada (essas são realizações decentes), mas essa dificilmente é uma lista abrangente de todos os problemas desafiadores e empolgantes da programação. Ainda existem muitos problemas desafiadores por aí para resolver. Os problemas mais desafiadores envolvem trabalhar em escala. Você escreveu um aplicativo WSGI, mas escreveu um que pode lidar com um bilhão de visualizações de página por dia? Você escreveu código multithread, mas você escreveu código multi-computer (com centenas de computadores)?
Em resumo, se você quiser tentar fazer algo não técnico, faça isso. Mas não faça isso porque sente que resolveu todos os problemas que precisam ser resolvidos, porque esse não é o caso.
fonte