A coisa mais poderosa para os desenvolvedores

O ABC do Desenvolvimento

Ben Rodri Blocked Unblock Seguir Seguindo 31 de dezembro Foto de Karl Magnuson em Unsplash

Dando um passo atrás

No início deste ano, deixei meu emprego confortável para ficar com minha família. Meu padrasto precisava de várias cirurgias e precisava de mim para levá-lo a muitos compromissos diferentes. Minha mãe também precisava ver muitos médicos. Acho que passei mais tempo em hospitais do que em minha casa nos últimos dois meses. Mas depois de um ano de 2018, tudo parece estar melhorando em 2019. Minha família está ficando mais forte com o passar dos dias.

No entanto, nesse período, pude dar um passo para trás e poder olhar para o meu trabalho a partir de uma visão panorâmica. Eu pude refletir sobre o que quero fazer daqui para frente. Eu aprendi muitas coisas ajudando minha família.

Por que eu entrei no CS

No meu terceiro ano de faculdade, fui confrontado com uma escolha: continuar com Química / Bioquímica ou mudar para a Ciência da Computação (e, eventualmente, aderindo à Matemática Pura) e fazer algo que eu realmente goste de fazer. Mas o que eu gostei exatamente?

Eu gostei de criar. Eu gostava de estar no ato de criar algo do nada. Parecia um tipo diferente de arte. Parecia algo que eu posso chamar de meu. Foi uma das poucas coisas que me levaram ao estado psicológico de "fluxo".

Lembre-se, isso foi durante um curso de Introdução à Ciência da Computação (em Python). Eu nunca tinha pensado em ciência da computação antes. Fiz uma breve tentativa de descobrir como os velhos jogos de pinball naqueles computadores antigos (e agora extintos) da Compaq funcionavam, mas nunca mais pensar sobre isso.

No ensino médio, enfrentei uma crise de identidade pessoal. Eu amava a fotografia, mas em todos os lugares que eu fui parecia que todo mundo estava definido em se tornar um médico ou um empresário ou algo nesse sentido. Praticamente todas as coisas que eu não estava interessado, mas estava com medo de que, se eu não fizesse nada disso, eu me tornaria um fracasso na vida. Eu queria tirar minha família da pobreza e parecia que a única maneira de fazer isso era me tornar um médico.

Enfrentando outra crise de identidade no meu segundo semestre do segundo ano de faculdade, já tendo declarado química como minha especial, comecei a folhear o catálogo de cursos quando deveria estar estudando para um curso de Química Orgânica.

A psicologia parecia interessante, especificamente neurociência (e é engraçado desde que eu li uma tonelada de artigos e livros sobre esses tópicos agora), mas depois eu vi Ciência da Computação. Eu li a descrição e pensei que parecia muito legal. Flashbacks de pinball e MySpace e temas do Tumblr passaram pela minha cabeça quando eu rapidamente me candidatei para participar do curso. Mas, não tendo a fé para se comprometer totalmente, acabei de fazer os cursos de Química típicos do próximo semestre, além do curso Intro to CS.

A primeira metade do semestre seguinte foi praticamente toda a minha dedicação ao curso Intro to CS. Eu praticamente ignorei todo o resto. Tudo o que me importava era tentar resolver problemas e tentar criar coisas novas.

Parecia estar de novo na fotografia, exceto que o editor de texto era minha câmera e cada arquivo ou módulo eram fotos individuais e o programa geral era o tema das fotos.

Eu sei que parece realmente extravagante e, possivelmente, ao contrário da maioria das experiências de outros fotógrafos, mas foi assim que me senti.

Lembro-me de um dos projetos foi criar um jogo de cartas com um baralho tradicional de cartas. O crédito extra era para torná-lo baseado em GUI. Como não tenho experiência em programação além de alterar tags de estilo em HTML e seletores em CSS, passei dias reais pesquisando como fazer isso funcionar. Eu voluntariamente perdi o sono só para aprender mais.

Meu projeto final foi criar um jogo, então eu fui com Snake, mas em vez do típico Snake que você encontraria em um desses Nokias antigos, eu fiz tudo com o design. Eu fiz o corpo da serpente fora de bolas de discoteca e bolas de discoteca de comida da cobra também. Eu gostaria de ter o código-fonte e as capturas de tela, porque na verdade era tão ruim assim, mas eu não me importei; Eu estava me divertindo muito.

“O que hackers e pintores têm em comum é que ambos são criadores.” – Paul Graham, Hackers and Painters

Eu tomei o mergulho e incomodou o chefe do departamento para me levar para os próximos cursos de ciência da computação de nível. No semestre seguinte (segundo semestre do terceiro ano) eu declarei o principal (e o semestre depois disso, eu adicionei o nível de Matemática também).

Depois da formatura

Há uma história inteira entre a minha primeira festa com CS e graduação, mas isso será guardado para outra ocasião, porque eu não estou nem no ponto em que estou explicando qual é a coisa mais empolgante para os desenvolvedores (o título do post).

Eu me formei depois que fui trabalhar, porque eu tinha concluído todos os requisitos no semestre de outono de 2015, mas meus amigos estavam se formando no semestre da primavera de 2016. Comecei a trabalhar em fevereiro de 2016.

Depois que comecei a trabalhar, perdi todo o contato com o que me fez amar a ciência da computação. Antes de continuar, deixe-me começar com o fato de que eu não estou de forma alguma atacando meu local de trabalho anterior. Eles me proporcionaram uma oportunidade incrível pela qual sou eternamente grato. Isso é mais do que eu me perdendo.

Eu mal tinha vencido uma batalha contra a depressão, mas algo ainda estava perdido. Eu senti como se fosse incapaz de criar mais. Eu fui através dos graus tão rapidamente (2 anos) por causa das finanças que eu pensei que não reter o suficiente para criar mais. Também achei que não tinha tempo suficiente para explorar o que queria fazer a curto e longo prazo. A ciência da computação é tão ampla que eu pude sentir o gosto de muitos subcampos diferentes, mas não tive tempo suficiente para escolher um caminho. Pelos próximos 2,5 anos, eu lutei com a letargia pensando que eu não era bom o suficiente para criar mais e que tudo o que eu faria seria apenas “programação de recursos”.

A programação de recursos é um termo que usei para descrever muito do trabalho de introdução que os desenvolvedores juniores fazem normalmente no primeiro emprego. Você programa recursos de pequeno a médio porte em uma base de código gigante que nunca chegou ao ponto de entender o que está acontecendo.

Traga de volta ao histórico recente

Eu havia me juntado a uma nova equipe em setembro de 2017, onde eu realmente deveria fazer algum trabalho no qual realmente gostava. Na minha equipe anterior, eu era um "mestre de consultas". Eu tinha trabalhado apenas com nossos bancos de dados internos e é sobre isso; Alguns Java, HTML, CSS aqui e ali, mas principalmente Oracle SQL e uma linguagem interna que faz interface com nosso banco de dados. Nesta nova equipe, eu estaria trabalhando com C ++, KDB, Lua e algumas outras tecnologias interessantes (além do Haskell, C ++ era minha linguagem favorita na faculdade). Isso também foi na época em que a saúde do meu padrasto estava quebrando, então eu tinha muito o que lidar em casa.

Mas, no entanto, eu estava tentando recapturar a faísca que eu tinha quando estava na faculdade. Foi muito bom voltar à programação em que eu queria estar. Na primeira semana de trabalho, criei um programa muito útil (embora em Python) para os nossos quants a partir do zero; algo que eu não tinha feito há algum tempo.

E eu estava derrubando projetos de esquerda e direita por mais alguns meses depois disso, até que começou a ficar mais difícil em casa. Meu padrasto trabalha na construção e ele precisou trocar a bateria do seu marcapasso e ficou sem roupa por mais de 30 anos por causa de um acidente quando tinha vinte e poucos anos. Ele foi incapaz de fazer qualquer coisa com a perna direita, que na verdade atrofiou a metade do tamanho de sua perna forte. Foi determinado que ele precisava de substituição total do quadril. Minha mãe não estava tão quente porque tinha problemas nas costas muito ruins. Isso também foi na época em que fui informado de que teria que ir para outra equipe, já que a equipe atual estava diminuindo.

Às vezes você tem que fazer o que é melhor para sua família. Se eu tivesse continuado trabalhando em tempo integral enquanto tentava ajudá-los, ele não teria feito sua cirurgia de maneira oportuna. Além disso, não conseguiríamos identificar todos os problemas subjacentes que ele teve para fazer a cirurgia.

Eu tomei a decisão de não ir para outra equipe e apenas deixar o trabalho para ajudar meus pais a se recuperarem e fazer o que precisarem de mim.

De julho a hoje

Eu tinha dinheiro suficiente economizado um pouquinho e consegui fazer um trabalho de contratação com a Lightning Capital, um fundo de hedge para ativos de blockchain. Eu sempre fui super interessado no Bitcoin e em todas as coisas que, embora não tenha criado nada, aprendi a investir em todas as classes de ativos enquanto estava no meu trabalho anterior. Eu também leio muito sobre o blockchain, já que é um espaço de primeira tecnologia.

Eu conheci o gerente do fundo de hedge através de um amigo. Ele estendeu a mão para mim porque eu estava impressionado com o conhecimento do espaço blockchain. Nós começamos a discutir algoritmos e eu disse a ele que eu tinha uma idéia para um robô comercial que ele pudesse gostar.

Eu não tinha criado algo assim antes. Comecei a me perguntar se mordi mais do que posso mastigar. Um bot completo de negociação? Eu tinha criado algumas coisas malucas em algumas das minhas aulas da faculdade, mas nada como um aplicativo de pilha completa do qual algum cliente dependia. Como eu seria capaz de fazer isso? Pouca experiência de frontend, pouca experiência em criação de APIs, pouca experiência em ciência de dados.

Pouco a pouco, claro.

Pouco a pouco, é uma brincadeira com Bird by Bird, de Anne Lamott. Ela explica uma história que seu filho teve um relatório de pássaro para fazer, mas esperou até o último minuto e estava pirando sobre como terminá-lo. Seu filho pergunta como eles poderiam fazê-lo e Lamott responde com "Bird by Bird".

Claro, no meu sentido, era mais parecido com bloco de código por bloco de código, mas pouco a pouco, parece mais legal.

Voltei a ole confiável, Python. Python é ótimo para prototipagem e também tem Numpy e Pandas, as bibliotecas de dados para ciência de dados.

Eu terminei uma versão protótipo que acabou de rodar na minha linha de comando e enviou sinais (o que comprar e vender) por e-mail em um mês acumulado de tempo. Eu rapidamente percebi que precisávamos de muito mais do que isso para um bot eficaz.

Comecei a filtrar dados da API para o Excel de formas / cálculos específicos para ele examinar; Comecei a manter um banco de dados (na memória) (SQLite); Eu até comecei a criar um painel de frontend. Isso tudo foi para uma versão 2 do bot. Era quase como ter um emprego em tempo integral de novo, mas não estava trabalhando em horário integral porque estava sempre em um hospital. Então, eu apenas progridei um pouco aqui e ali sempre que tive tempo e o atualizei de acordo.

A versão 2 do bot levou mais 2 meses para “terminar”. Eu coloco entre aspas porque não estava realmente terminado porque o frontend ainda não estava conectado (ainda não é) e havia muitos ajustes para ele e havia muitos problemas de desempenho (Python é conhecido por esta).

Então ele queria ver como meu algoritmo se sairia no passado. Em finanças, isso é chamado de backtesting ou o que eu gosto de chamar de “voltar no tempo e executar meu algoritmo no passado como se fosse hoje”. A essa altura, percebi o quanto estou conseguindo melhorar a programação. Eu ansiava por recuperar a bondade e a faísca da faculdade e acho que estou chegando lá.

O ABC do Desenvolvimento: Sempre Seja Criando ou Sempre Seja Codificado. Não importa se você não tem muita experiência. Faça o que você sabe e aprenda mais para melhorar ao longo do tempo. Se estivéssemos tentando ser perfeitos o tempo todo, nunca conseguiríamos fazer nada.

Esta é a única coisa que eu deveria ter feito e não fiz. Eu tinha tanto medo de ser perfeito ou de fazer “errado” por causa de pressões externas, seja na escola ou na indústria.

“Eu tendia a cuspir código que estava irremediavelmente quebrado, e gradualmente bati-lo em forma … Por um longo tempo eu me senti mal com isso, assim como uma vez eu me senti mal por não segurar meu lápis do jeito que eles me ensinaram na escola primária. Se eu tivesse olhado apenas para os outros fabricantes, pintores ou arquitetos, eu teria percebido que havia um nome para o que eu estava fazendo: esboçar. Até onde sei, a maneira como me ensinaram a programar na faculdade estava errada. Você deve descobrir programas enquanto os escreve, assim como escritores, pintores e arquitetos. ”- Paul Graham, Hackers and Painters

As duas primeiras iterações do meu codebase foram algo de filmes de terror, mas eu consegui bater muito disso na terceira iteração. Eu criei um módulo de simulações que é capaz de executar qualquer algoritmo que eu criei no passado. Depois de executar os algoritmos em tempos passados que o gerente de fundos de hedge me forneceu, ele os examinou e ficou realmente impressionado com os resultados.

De agora em diante, estou pensando em como usar conceitos de sistemas operacionais para fazer o bot rodar mais rápido; Eu também estou pensando em criar outro bot que use análise de sentimentos; Eu também estou criando uma apresentação usando o D3.js para apresentar as descobertas do primeiro bot. É tudo muito divertido e incrível.

Mas isso não é tudo

Mencionei anteriormente que também criei um painel (em React) que não foi concluído. Eu fui capaz de me ensinar sobre o desenvolvimento da web e desde então consegui criar minha própria landing page do zero e comecei um projeto de paixão que revelarei em uma data posterior que eu tenho vontade de fazer por quase 10 anos. Vou divulgar alguns dos projetos em que trabalhei mais tarde nesta semana.

O ponto é que, mesmo enquanto todos os problemas familiares estavam acontecendo, no pouco tempo que tive, consegui me esgueirar a tempo de estudar coisas novas, começar a criar de novo e dar um passo para trás e me redescobrir, por assim dizer. Eu sei que parece muito clichê, mas foi o que aconteceu.

Eu pude notar muitas das coisas que aprendi ao longo do caminho, então nas próximas semanas, eu vou lançar neuroticamente e esporadicamente muitas das minhas anotações em forma de blog para quem quiser ler sobre a jornada.

Descobrir o que eu quero fazer

Eu quero criar. Eu vou aprender tudo o que eu preciso aprender se envolver flexionar os músculos criativos e de resolução de problemas. Quero ajudar as pessoas que entram nesse campo para aprender e criar o que quiserem. Quero compartilhar as coisas que aprendo e as coisas que crio.

Mas qual é a coisa mais poderosa

Ah certo, o título deste post.

A coisa mais poderosa para os desenvolvedores é poder criar algo a partir do seu cérebro, seu coração e / ou sua alma; para poder ter uma ideia e executá-la e vê-la funcionar. Não precisa ser perfeito. Provavelmente nunca será porque haverá algo novo para adicionar ou algo para manutenção. Mas é empoderador levar seus ABCs (Always Be Creating e / ou Always Coding) e transformá-los em uma bela obra de arte.

Confira a história com um design extra no meu blog