O que fazer quando a codificação começa a parecer chata, como se tudo fosse mais a mesma coisa? [fechadas]


33

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.


10
Isso é realmente deprimente. Por que você quer ser gerente?

14
Infelizmente para você e, embora possa parecer duro, os gerentes precisam entender como se comunicar de maneira eficaz. O que você escreveu acima é extremamente obscuro e pouco compreensível. Se você está planejando uma mudança de carreira em gestão, eu trabalharia em suas habilidades de comunicação antes de qualquer outra coisa. Desculpe pela sua situação.
George

9
@ George: Eu acho (mas admito que não tenho certeza) que isso foi escrito por alguém que não fala / escreve inglês como primeira língua.
FrustratedWithFormsDesigner

2
Consulte Qual é o uso da metaprogramação para uma metáfora divertida sobre esse tópico (fazendo a mesma coisa todo).

2
@ George: claro, o inglês não é minha primeira língua. Começo a fazer algumas edições para melhorar meu inglês e explicar minha frustração com a codificação.
boos

Respostas:


50

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.


Meu primeiro interesse não é apenas em codificação, sou um alpinista esportivo, adoro ir ao teatro, adoro fazer viagens e conhecer novos lugares, 2/3 da cidade europeia todos os anos e 4000 km nas minhas férias de verão. esse não é o ponto. Eu pensei que atingi o ponto de não retorno sobre codificação. todo problema no meu trabalho não é tão difícil de lidar e não consigo mais desafios. Eu acho que a resposta certa é mudar de emprego e obter mais desafios em problemas mais complexos. na verdade, eu já estou em uma divisão de pesquisa e desenvolvimento.
vaos

@boos, tente clojure.org/Jobs
Job

2
+1 Qual a vantagem da codificação sem objetivo? É como continuar construindo um muro em vez de uma casa.
Mayank

+1 Comecei a codificar e continuei até agora (mais de 10 anos) apenas para criar jogos e ver as pessoas se divertirem. Estive em períodos muito difíceis em que comecei a entender que no final não sabia nada. Aprendi tudo desde o início naquele momento, porque ainda queria criar jogos para as pessoas.
Klaim

Isso certamente funcionou para mim. Recentemente, fiz um pequeno trabalho de desenvolvimento gratuito para a empresa de minha esposa e, embora o suporte ao software seja um pouco chato, reacendeu um prazer na codificação que não sinto há um tempo.
hermiod 25/05

21

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.


1
@Rnesis: eu amo resolver problemas, eu paro de amar codificação! este é o coração da minha "pergunta". O problema de todos os programas é sempre o mesmo, pesquise um material, solicite outro, se isso fizer isso, se outro, para outras coisas, conecte-se a um banco de dados, faça uma conexão com um serviço remoto, comunique-se com ele, volte para outro serviço, etc
vaias

1
@ boos - Obrigado pela resposta, adicionou um parágrafo para "se você gosta de resolver problemas".
Nicole

9

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 é

  • funcional - você escreve funções reunidas para criar funções maiores, resultando em um programa.
  • avaliação lenta - em vez de especificar passo a passo, o tempo de execução extrai os valores necessários conforme necessário. Isso significa que é muito comum lidar com listas infinitas em seus programas.
  • correspondência de padrões - em vez de ter estruturas if grandes, você lista os padrões de aparência dos parâmetros e o tempo de execução seleciona o padrão apropriado e executa o código correspondente.

Aqui está uma função de classificação completa:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

(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.


+1 É a mesma conclusão que chego depois de ler o OP. O PO precisa se afastar do procedimento. O mundo da programação é muito maior, ele só precisa sair e explorar! :)
Darknight

8

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.


1
+1 Sinto muita satisfação com a programação e acho que gosto por causa dos aspectos do design, mas admito que a falta de um aspecto visual na programação não me deixa completamente satisfeito. Eu também adoro fotografia e tento praticar outros tipos de design, como gráficos ou arquitetura.
Nicole

Tente a programação do jogo: D, é principalmente problemas visuais #
4655 Dominique McDonnell

7

Provavelmente você simplesmente não recebe desafios técnicos suficientes?

  • Experimente sistemas altamente distribuídos. Você pode codificar facilmente um sistema para coletar logs de 1000 computadores em um cluster, com precisão de microssegundos?
  • Tente em tempo real. Empacote todos os seus processos em uma rotação de um mecanismo.
  • Tente visão por computador ou processamento de imagem. Habilidades matemáticas, habilidades de fórmula para código, habilidades de otimização são úteis.
  • Tente AI. Veja como o computador da IBM reproduz o Jeopardy? Provavelmente, alguma sofisticação algorítmica está envolvida nessa área.

Etc. Claro, esteja pronto para ganhar inicialmente menos em um campo em que as coisas são desafiadoras para você, e não chatas.


4

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.


4

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.


toda a linguagem e todos os paradigmas e de uma maneira geral podem ser lembrados para uma "Máquina de Turing", seja qual for o aprendizado de uma nova linguagem, uma nova estrutura, todo o cálculo pode ser feito por uma máquina de turing, por isso não posso ficar mais empolgado com a codificação. adoro escrever código limpo e, às vezes, adoro escrever trechos de código realmente estranhos para brincar com meu colega, como uma espécie de pequena ofuscação.
vaos

1
+1 Eu também me sinto assim. Acho que meu desafio favorito pessoal não é tanto fazer algo novo, mas fazê-lo da melhor maneira possível. O melhor elogio que pude receber é: "Eu li o seu código e entendi perfeitamente". Adoro revisões de código em que ninguém pode pensar em nada para melhorar.
Michael K

@boos, se você gosta de teoria, existem milhares de tópicos em cs / math / physics para perder a cabeça.
Job

3

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ê?


3

Comece a jogar com microcontroladores. É a aplicação mais refrescante e emocionante do talento de programação que consigo imaginar.


2

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.


2

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.

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.

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.


Claro, eu sei que há muitas coisas desafiadoras por aqui :) Eu sou um pouco programador agora! o problema é que a complexidade da programação não me deixa feliz. Com toda a resposta que entendi, preciso estudar mais coisas acadêmicas para me sentir melhor. De qualquer forma, obrigado :)
vaias 23/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.