Eu sou um idiota inútil, então quero sair do meu emprego: 10 perguntas para um desenvolvedor de software, um episódio piloto



Olá, Habr!

Lembra da história de Steve Jobs e Dennis Ritchie ? Sem nenhuma intenção de reacender os debates ou moralizar o assunto, vamos encarar a verdade: milhares de técnicos estelares vivem na sombra, enquanto suas próprias histórias estão escondidas em um armário empoeirado.

Nós, a equipe editorial da Habr, estamos empenhados em combater essa injustiça. A partir de agora, entrevistaremos regularmente pessoas que mantêm um perfil baixo na mídia e nas redes sociais. Portanto, se você tem algo a dizer sobre si mesmo, prepare-se.

Para ter uma idéia de como isso será, lideraremos o caminho. Clique abaixo para ver 10 perguntas gerais que perguntaremos a todos os hóspedes. Para o nosso episódio piloto, o primeiro convidado a responder às perguntas foi o fillpackart. (Este mês, tive várias sessões de entrevistas muito boas com ele, veja os artigos um, dois, três). Por favor, leia-os e, se decidir contar sua própria história de maneira semelhante, envie-me ou baragole uma mensagem.



Filipp Ranzhin, filho de um engenheiro de uma pequena cidade russa de Ivanovo. Ele começou a codificar em C ++ na universidade quando tinha 16 anos e depois aprendeu .NET. Atualmente, ele trabalha no cargo de engenheiro sênior de desenvolvimento de software em uma respeitável empresa estrangeira. Além das linguagens de programação comumente usadas, ele também é proficiente em F # e OCaml.

1. Conte-me sobre um recurso que você implantou que o deixa realmente orgulhoso.


- Eu não fiz nada que possa me deixar orgulhoso. Ao longo da minha vida, tenho lidado com problemas muito triviais. Por isso, tenho orgulho do que sou capaz, e não do que realizei.

Acho que ficaria orgulhoso se tivesse projetado um sistema inteligente de IA.

2. Agora, conte-me sobre sua pior foda.


- Uma vez eu passei o dia inteiro tentando fazer o OCaml rodar no Windows (não tente repetir isso, pessoal). Como não era uma atividade relacionada ao trabalho, na manhã seguinte tive que apresentar uma desculpa em uma reunião. Naquele momento, vi uma atribuição de bug que nem sequer levei tempo para analisar. E eu fico tipo: "Me dê algum bug, e eu o corrigirei em dois dias!" Menti na reunião que estava trabalhando nesse bug e que esperava lançar um PR em dois dias.

Acabou que, no entanto, eu tive que gastar três meses para consertá-lo.

O bug estava relacionado à interoperabilidade entre dois grandes sistemas. Pode ser reproduzido de forma consistente. Durante todos esses três meses, continuei apresentando várias sugestões e as verificando, repetindo várias vezes, até o ponto em que abandonei a construção de minha casa em Skyrim. Esses foram os piores três meses da minha vida.

Por fim, fechei-o como "Sem reprodução". Vim ao meu chefe e disse: "Sou um idiota inútil, por isso quero deixar meu emprego para aliviá-lo desse fardo". Mas ela me deu um grande aumento salarial.

3. Descreva seu local de trabalho: da cadeira e monitor do escritório, aos ambientes de desenvolvimento preferidos e utilitários favoritos.


- Trabalho com a família de sistemas operacionais Windows, porque uso a pilha .NET e porque o Windows tem uma interface de usuário melhor. Sento-me em uma mesa que fiz para mim mesma. É tão enorme que é capaz de acomodar meia dúzia de codificadores.

Meu DevBox não é ruim, mas possui uma falha substancial - tentei reduzir os custos e comprei um CPU AMD. Foi uma falha épica. Apesar do alto desempenho alegado, esse pedaço de merda executa meus testes cinco (!!!) vezes mais lento que um processador similar da Intel.

Atualmente, tenho apenas um monitor. Eu pretendo comprar mais dois para parecer um profissional. Meu IDE favorito é o Visual Studio 2017 combinado com o Resharper. Meu editor de texto favorito é o Visual Studio Code aprimorado com um zilhão de plug-ins. Baixá-los e assistir ao VSCode evoluir é um dos meus hobbies.

Por mais que eu goste do git, eu diria que prefiro o Visual Studio Team Services ao GitHub.

4. Com base em quais critérios você escolhe trabalhar? É a pilha, o produto, o ambiente de trabalho, o dinheiro?


- No momento, os principais fatores para mim são o salário e a capacidade de comprometer-me apenas com um terço do meu potencial. Acho que passei por um desgaste e não estou mais pronta para dar meu coração e alma aos negócios de alguém. Mesmo com a ameaça de ser demitido e perder o estilo de vida a que estou acostumado, ainda não vou me aprofundar no projeto. E digo isso como pai de "um filho e meio" de crianças, e isso é uma ameaça séria. Mas a repetibilidade e falta de sentido em tudo o que fiz anteriormente agora dói quase fisicamente.

Às vezes penso que, com essa abordagem, não tenho o direito moral de procurar um emprego. Minha justificativa é que não se pode ser moral ou imoral em relação a um sistema. A natureza abstrata das empresas me ajuda a me distanciar do pensamento de que posso prejudicar as pessoas da vida real; portanto, aceito empregos apenas de grandes empresas.

Ao mesmo tempo, fico envergonhado com o quanto ganho (pelos padrões da minha cidade) por uma solicitação de recebimento. Como se o status de um desenvolvedor altamente qualificado me desse uma vida dez vezes melhor do que um monte de outras pessoas que trabalham duro oito horas por dia para fazer algo realmente útil.

Às vezes acho que, se consegui superar um representante comercial em uma entrevista de emprego, então, até certo ponto, mereço tudo o que tenho. Isso me faz perder o contato com a realidade e começo a acreditar que é assim que deve ser.

Não sei como isso pode se relacionar, mas adoro codificar e, ao mesmo tempo, odeio trabalhar como desenvolvedor. Posso me animar dizendo que ainda não trabalhei em um projeto interessante, mas realmente não acredito nele. É difícil viver com isso.

5. O que você gostaria de melhorar na tecnologia e nos idiomas que está usando?


- É isso que eu gostaria de mudar:

  • Inferência de tipo e imutabilidade em tempo de compilação para texto datilografado e C #. Isso me daria a chance de criar um método que receba algo confiável e imutável, diferentemente do ReadonlyDictionary atualmente usado, que na verdade não é somente leitura (você pode passar um dicionário regular para o construtor, manter uma referência a ele e depois mudar facilmente isso).
  • Gostaria que os desenvolvedores de C # finalmente parassem de brincar com a compatibilidade com versões anteriores e com as estúpidas instruções de uso, que funcionam apenas em um arquivo de qualquer maneira, e para modernizar a linguagem de programação. Sério, em um idioma em que é uma prática comum escrever algo como IDictionnary <IMyStupidType, IMyStupidType2> Foo (Func <IMySupidType, int, bool, string> reallyStrangeCallback, não implementar aliases de tipos é uma decisão muito estranha.
  • Campos de apoio automatizados em C #, algum tipo de açúcar sintático sobre Func <T1, T2>.
  • Contratos de código prontos para uso em C # (por exemplo, em Roslyn) em vez de soluções externas que transformam meu IDE em uma bagunça lenta.
  • Uma alternativa de jsx para a linguagem F #. Se nenhum de vocês vai lançá-lo na próxima semana, então terei que atendê-lo.
  • Eu gostaria que a comunidade percebesse que os testes de unidade são lixo inútil, e os idiomas com digitação dinâmica (que não devem ser confundidos com a digitação fraca) são a maior falha na história da indústria.
  • Para tornar as arquiteturas de processador mais adequadas à abordagem funcional.
  • Para otimizar as recursões finais em JS / TS, para que eu pudesse congestionar minhas recursões em todos os lugares sem olhar para o tamanho da pilha. Está presente na especificação, mas os caras que estão trabalhando na v8 pareciam simplesmente ignorar a especificação da linguagem como algo sem importância quando se trata de desenvolver o código de tempo de execução.
  • Uma opção para digitação estática pronta para uso em JS, sem prejuízo do texto datilografado. Ao contrário dos criadores do texto datilografado, considero uma linguagem de programação independente com um design multiparadigma de ponta e poderoso.
  • Para que coisas como o WebAssembly estejam firmemente enraizadas nas melhores práticas e padrões de desenvolvimento de front-end.
  • Para ver clientes da Web significativamente aprimorados para o GitHub e similares. Idealmente, eu gostaria de poder editar o código de um projeto sério no meu navegador.
  • Mais convenções de compatibilidade. A vida seria muito mais fácil se o jvm pudesse interpretar e emitir um trecho de código no .NET CIL.

6. Onde é o melhor lugar para compartilhar experiências de trabalho - é faculdade, conferências, Habr? Em outro lugar além disso?


- Eu estudava em uma universidade, mas fui expulso várias vezes. Eu participei de conferências, e eu sou regular no Habr. Acho que não adquiri nada de verdadeira sabedoria de nenhuma dessas fontes. Talvez eu apenas encontre prazer em pensar assim.

Meu truque é ler livros e fazer amizade com outros desenvolvedores. Acredito que conversar com pessoas inteligentes que desenvolvem software tenha tido o efeito mais positivo em minhas habilidades.

7. Se você tivesse recursos ilimitados (tempo, dinheiro, instalações, RH), em qual projeto você trabalharia?


- Seria ótimo criar o simulador mais preciso (na medida do possível) da humanidade, a fim de testar rotas para a sociedade alcançar seu estado mais feliz. Seria geralmente interessante imitar o comportamento das pessoas sob várias circunstâncias.

8. Como você passa as horas de lazer? O que você faz além do seu trabalho?


- faço caminhadas na floresta e contemplo, às vezes tomando uma cerveja; Toco violão ocasionalmente e jogo videogame de tempos em tempos. Eu diria que meu hobby é pensar e sonhar.

Tenho vários projetos pessoais em que trabalho com meus amigos. Gosto de dar a eles análises de código passivo-agressivas de propósito (por exemplo, “você se importaria em sugerir uma razão para usar uma solução tão mal pensada?”). E observe como isso muda nosso relacionamento.

Às vezes, faço várias coisas de artes liberais, como dar entrevistas. Também costumo escrever um livro, mas nunca terminei.

9. Conte-nos sobre seus três livros favoritos - um aprendizado, um não-fictício e um fictício.


Aprendizagem - CLR via C # por Jeffrey Richter. Ele contém muito conhecimento sobre os meandros do tempo de execução do .NET, o que o torna um verdadeiro tesouro. Quem aprende este livro rotineiramente, será aprovado em qualquer entrevista para o trabalho de um desenvolvedor de .NET. Eu também destacaria as estruturas de dados puramente funcionais de Chris Okasaki. Embora não seja muito prático, este livro reconstituiu em mim a fé na programação, pois a implementação das estruturas de dados do autor provocou arrepios metafísicos na espinha.

Não ficção - não sei se o Code Complete se encaixa nessa categoria, mas gosto de relê-lo. O autor relata coisas inacreditavelmente óbvias, mas em todo projeto que eu estava trabalhando, ninguém parecia capaz de seguir esses princípios em um grau adequado.

Ficção - Uma tragédia americana de Theodore Dreiser. Eu nunca pensaria que um monstro digital pragmático, como eu, seria capaz de simpatizar com uma garota que foi largada por seu namorado e depois assassinada. Mas sim, sim, e isso significou muito para mim.

10. Se um sistema de IA de repente se tornasse consciente bem na sua frente, o que você diria?


- Eu o ofereceria para projetar um projeto de inteligência artificial e depois compararia os dois. Se o novo fosse superior, eu pediria para projetar um projeto de inteligência artificial, e assim por diante ...

Se um bot de IA fosse um codificador experiente, eu o usaria para criar uma prova confiável de que Golang é um beco sem saída da evolução da programação. Porque eu vejo tantas Guerras Sagradas sobre esse assunto, ainda não tenho orçamento para aprender a Golang em profundidade para construir um conjunto sólido de argumentos.

Bônus: pergunte a outro desenvolvedor o que quiser.


- Qual tecnologia foi a mais agradável para você aprender?

Source: https://habr.com/ru/post/pt436012/


All Articles