DelphiDeveloper InterviewsInterviewNotícia

Como é ser desenvolvedor David Cornelius?

dcheroimage

Olá. Este artigo é parte de uma série em que falamos com desenvolvedores de software profissionais, perguntamos a eles como é escrever código para viver e talvez ganhemos alguns insights sobre a indústria de desenvolvimento de software ao longo do caminho.

Nosso convidado de hoje é o Delphi MVP e autor David Cornelius. David se descreve como “um programador completo”. Ele dirige um pequeno negócio de desenvolvimento de software em seu escritório doméstico e parece ter suas prioridades certas quando diz “Eu amo família, música, jogos de tabuleiro de estratégia e atividades ao ar livre”. Morando, como vive, a meio caminho entre o Oceano Pacífico e as montanhas Cascade, David diz que isso significa que ele tem uma ampla variedade de lugares para explorar – seja de motocicleta ou caminhando a partir de um acampamento.

Table of Contents

Oi David, obrigado por falar comigo hoje

Bem, é muito bom conhecê-lo, Ian !! 😁

david-cornelius
David, em sua pose de “teste para James Bond”

Qual (is) produto (s) da Embarcadero você usa a) mais b) regularmente?

a & b: Delphi XE, 10.4, 11. Todos os dias.

Como e / ou por que você se tornou um desenvolvedor?

Quando eu estava na escola primária, minha matéria favorita era matemática. Eu tenho uma calculadora programável de TI (Texas Instruments) e competiria com meu avô nos cálculos mais complexos que poderíamos fazer em seus limitados 32 passos.

A pequena escola que frequentei tinha um TRS-80 com um “drive” de fita para armazenamento, mas fiquei impaciente esperando que carregasse / salvasse e com suas muitas tentativas e erros, perdi o interesse. Mais tarde, porém, quando a escola montou seu primeiro laboratório de informática com três Apple IIs, passei todo o tempo disponível aprendendo sozinho o AppleSoft BASIC. Quando cheguei ao final do livro tutorial e percebi que um amigo meu estava escrevendo jogos que não poderiam ser feitos em BASIC sozinho, eu sabia que havia muito mais para aprender – eu estava viciado em programação àquela altura! Graduar-se em Ciência da Computação na faculdade foi o próximo passo óbvio e o resto, como dizem, é história.

Você acha que algum dia deixará de ser um desenvolvedor? Em caso afirmativo, o que viria a seguir?

Não – eu tenho muitas ideias para parar, mesmo se eu vender minha casa e viajar pelo país em um trailer, eu ainda estaria programando parte do tempo.

O que fez você começar a usar Delphi / C ++ Builder?

A faculdade me expôs a várias linguagens de programação diferentes. Estudei montagem em três processadores diferentes, gostei da estrutura do FORTRAN, fiquei entediado com COBOL e abandonei a classe, olhei para algumas linguagens de nicho como SNOBOL e aprendi C usando o Let’s C de Mark William . Mas a aula mais útil foi aquela que ensinou conceitos gerais de programação usando uma ferramenta barata que nos permitiu editar, compilar e depurar tudo em um IDE, um novo conceito em meados dos anos 80. Era Turbo Pascal.

Mais tarde, em meu primeiro trabalho de programação de longo prazo, tive a oportunidade de iniciar um aplicativo totalmente novo e poderia escolher qualquer ferramenta de programação que quisesse. Eu escolhi o Turbo Pascal, então na versão 4, porque eu já sabia como usá-lo, eu poderia ir para a montagem se eu precisasse (o que eu realmente fazia ocasionalmente), e estava começando a ficar popular – era o lugar lógico para iniciar.

Conforme o aplicativo cresceu ao longo dos anos, mudei a base de código para Borland Pascal, apoiei projetos auxiliares em outras linguagens de programação e até mesmo escrevi algumas coisas usando Borland Turbo C ++. Mas eu era mais produtivo com a linguagem Object Pascal – isso até que tentei fazer alguma programação no Windows 3.1 com a Object Windows Library (OWL). Quando Delphi foi lançado, eu abandonei alegremente o OWL em favor desta nova ferramenta de programação baseada em componentes. Mais uma vez, era o lugar lógico para começar – desta vez para criar aplicativos do Windows.

4973808
David, parecendo devidamente satisfeito

Se você pudesse dar algum conselho a um aluno que está considerando uma carreira como desenvolvedor de software, qual seria?

Faça a si mesmo estas perguntas:

  • Posso pensar logicamente e analisar problemas profundos?
  • Posso me concentrar em uma única tarefa por um período sustentado de tempo?
  • Gosto de desafios mentais e solução de problemas de lógica?
  • Eu gosto de aprender novas ideias e abraçar a tecnologia em mudança?
  • Posso sentar em frente ao computador por longos períodos de tempo?

Se você puder responder sim a todas (ou pelo menos a maioria) delas, há uma boa chance de você ter sucesso como desenvolvedor. Apreciar o processo de criação de software é realmente importante para uma carreira sustentável, então faça algumas aulas (tutoriais online gratuitos ou por meio de educação formal) o mais cedo possível para ter uma ideia de como é e, em seguida, avalie isso em relação a outros interesses.

Eu gosto muito de tocar música, mas percebi que não seria algo que eu quisesse estudar e passar de 8 a 10 horas por dia fazendo ou o amor seria substituído por trabalho enfadonho. Esse não foi o caso do desenvolvimento de software para mim. Você tem que se conhecer!

Tabs … ou espaços?

Estou com Frank Lauter ! [Espaços]

Qual foi o melhor dia que você já teve como desenvolvedor?

Ser capaz de resolver um problema ou adicionar um recurso que deixa um cliente realmente feliz é a melhor sensação, mas um dia que ficou gravado em minha mente como particularmente satisfatório foi algo apenas para mim. No início dos anos 90, a maioria dos PCs baseados em DOS não tinha botão de reinicialização, exigindo que o usuário desligasse, esperasse o HD parar de girar e ligasse novamente se um programa travasse. Eles também vinham com um único alto-falante embutido que às vezes travava se um programa travava na hora errada – exigindo o doloroso processo de parar / esperar / reiniciar para encerrar o irritante grito agudo. Isso aconteceu muitas vezes para mim, então eu escrevi um programa Turbo Pascal rápido que simplesmente desligou o alto-falante. Era um programa de uma linha, rodou perfeitamente na primeira vez, e eu o chamei de SHUTUP e coloquei no PATH para que eu pudesse digitá-lo a qualquer momento no prompt do DOS.

Qual é a pior coisa de ser um desenvolvedor?

Uma das coisas mais frustrantes de ser um desenvolvedor é encontrar um problema que você não consegue resolver e onde você perde horas ou mesmo dias tentando contorná-lo apenas para perceber que é um problema muito simples ou um bug que levanta sua cabeça feia para seu arranjo particular de hardware.

Qual é a dica de desenvolvimento mais legal que você conhece?

Apenas um? Existem tantos para escolher! Acho que a melhor dica que eu daria seria ajudar quem está no editor Delphi o dia todo e isso é aprender, usar e customizar os Live Templates . Pode levar um pouco de curva de aprendizado e prática para ficar bom e rápido, mas digitar e codificar rapidamente é um grande aumento de produtividade.

davic_desk

Trabalhar em casa, trabalhar em um escritório, trabalhar em um plano aberto / espaço compartilhado? O que você prefere e por quê? Você pode escolher?

Se eu trabalhasse para uma empresa que decidiu mudar para um plano aberto, eu iria pedir demissão. Não consigo imaginar que um desenvolvedor seja capaz de se concentrar por tempo suficiente para fazer qualquer coisa em um ambiente onde não haja paredes e todos possam ver / ouvir todos os outros.

Amo trabalhar em casa e ser meu próprio patrão. Os empregadores raramente entendem os benefícios de produtividade de fornecer uma mesa e cadeira confortáveis ​​ou obter um equipamento decente. Não existem duas pessoas exatamente iguais, mas a maioria das empresas ainda tenta encaixar todos na mesa de trabalho “padrão”.

Eu sou mais alto do que a média, portanto, tenho uma cadeira acima da média, construí minha mesa muito alta e uso elevadores de monitor para que minha postura fique ereta e não tenha que encolher os ombros ou olhar para o monitor – tudo o que causaria tensão no pescoço e nas costas.

Mas, ocasionalmente, trabalho no meu laptop em uma cafeteria ou parque, onde eu afasto tudo ao meu redor e me concentro em uma única tarefa por um curto período de tempo.

Conte-nos algo interessante que você acha que talvez não saibamos.

Tive 7 anos de aulas de piano no ensino fundamental e médio e adorei – fiquei bom o suficiente para vencer um pequeno concurso no ensino médio em um ano. Também toquei trompete, trompa, barítono e tuba no colégio em vários momentos (e cantei no coro). Ainda toco tuba quase todos os anos no Tuba Christmas em Portland , Oregon, e realmente gosto de minha mais nova aquisição, um baixo, que uso para acompanhar grupos de louvor em uma igreja local.

Existe um local da indústria de tecnologia que você gostaria de visitar?

Eu acho que se eu tivesse a chance de visitar a sede da Borland naquela época, teria sido legal, mas eu não tenho um desejo ardente de ver nada além de visitar lugares sobre os quais li para ter um contexto histórico .

Você já conheceu alguma figura famosa / bem conhecida da tecnologia? Quem foi? Como foi?

Como coordenador do ODUG desde 2000, tive o prazer de conhecer várias pessoas conhecidas na comunidade de programação Delphi, fazendo tours em grupos de usuários, promovendo novas versões do Delphi ou componentes de terceiros. Estes incluem (sem nenhuma ordem particular), John Kaster, David “I” Intersimone, Anders Ohlsson, Sarina DuPont, Jim McKeeth e Ray Konopka. A maioria das apresentações decorreu sem problemas, mas na única vez que David I veio a Portland, o auditório que estávamos usando mudou suas políticas sobre o uso de equipamento audiovisual sem o meu conhecimento, o que nos impediu de usar a tela suspensa e o projetor; tivemos que nos aglomerar ao redor de seu laptop para ver o que ele estava compartilhando – não foi bem e me senti mal por todos. Mudamos de local logo em seguida. [EUa primeira regra de apresentações da ANB – vai dar errado, sempre, e quanto mais você planeja, mais vai dar errado😂 ]

picture1-2
David é outro desenvolvedor com montanhas atrás dele – eu pensei que nós, desenvolvedores, deveríamos ter medo da luz do dia.  😉

Se você pudesse convencer alguém a considerar Delphi ou C ++ Builder, qual seria o seu método, como você o faria?

Eu ensinaria a eles construções gerais de programação usando pseudocódigo e, em seguida, os surpreenderia informando que acabaram de aprender Delphi!

Se você pudesse usar uma varinha mágica de “consertar a indústria de tecnologia”, o que mudaria?

Eu evitaria que as empresas de mídia social usassem dados pessoais para lucro e algoritmos misteriosos para controlar as postagens que você vê.

Qual produto de tecnologia você gostaria de ter inventado / projetado e por quê?

Facebook. Não porque eu deseje ser um zilionário, mas porque acho que a plataforma é uma ótima maneira de manter contato com a família e amigos, mas detesto o fato de a empresa lucrar sabendo tanto sobre mim e ajustando as postagens que estou mais provável de ver (consulte minha resposta “varinha mágica”).

Se você pudesse viver sua vida novamente, ainda se tornaria um desenvolvedor? Porque?

Provavelmente – eu realmente gosto disso. Mas eu considerei seriamente a arquitetura – acho que teria sido igualmente divertido, desafiador e com variedade suficiente para manter meu interesse por um longo tempo.

Quantos cafés você bebe por dia e é o suficiente?

Se por acaso houver um bule de café fresco em casa, bebo uma ou duas xícaras. Se não, geralmente estou bem. Eu raramente saio do meu caminho para buscar cafeína. De vez em quando, porém, há aquelas manhãs depois de uma noite em que a equação muda!

Você é um falcão noturno que codifica até tarde da noite, uma pessoa matutina que acorda cedo e começa a trabalhar ou mantém algum tipo de horário normal de expediente?

Eu costumava codificar o tempo todo até altas horas da noite, mas não tanto. Não só dormir é mais valioso para mim agora, mas também não posso me dar ao luxo de dormir até tarde; portanto, mudei minha programação mais cedo. Mas ainda sou lento – leva um tempo para acordar o suficiente para ser produtivo no teclado.

Em sua carreira, você já “puxou uma noite inteira” para lidar com algo que absolutamente precisava ser feito?

Sim, às vezes por causa de um prazo iminente, mas com mais frequência porque acredito na mentira, digo a mim mesmo que essa última coisa levará apenas mais alguns minutos. Na maioria das vezes, se eu deixar o problema para a manhã seguinte, posso resolvê-lo em um quarto do tempo!

Descreva algumas outras coisas que você fez em sua carreira que podem dar aos leitores uma ideia do que é um desenvolvedor.

A maior parte do que escrevi é usado por pessoas que não entendem a tecnologia subjacente. Isso requer a capacidade de entender solicitações vagas e transformá-las em requisitos, traduzir reclamações em relatórios de bug e prever ações do usuário que podem quebrar seu aplicativo e evitá-las de forma proativa. Trabalhar em um sistema de gerenciamento de professores que lançou um software educacional para alunos me ensinou imediatamente o quão importante é um software robusto e fácil de usar, especialmente quando fui colocado na sala com eles e senti sua dor quando encontraram problemas. Não há maior motivador do que seus usuários se virarem na cadeira, olharem para você e perguntarem o que eles devem fazer com aquela grande e longa mensagem de erro na tela!

picture2-2
David não está dentro daquela mochila.

Qual foi o seu dia de programação mais estressante de todos os tempos?

Em 2002, construí um protótipo de um aplicativo da web de day-trading em PHP para um empresário. Ele queria filmar um vídeo promocional para a TV tarde da noite para despertar o interesse das pessoas e se inscrever para continuar a financiar o projeto, mas estava adicionando solicitações de recursos mais rápido do que poderíamos realizá-las, deixando vários aspectos do site incompletos ou temporariamente difíceis -coded. Ele levou vários de nós que estavam trabalhando no projeto para Las Vegas, então contratou alguns modelos para apontar para a tela enquanto ele falava sobre este programa incrível que ele estava tentando vender. No último minuto, e sem consultar sua equipe técnica, ele saiu e comprou uma TV gigante para a demonstração – não um monitor ou projetor e tela, mas uma TV! Meu laptop não tinha a placa de vídeo ou os drivers gráficos certos para detectar a tela corretamente (dois de nós lutamos com ele por 30 minutos), então ficamos com uma resolução feia de 640 × 480 neste grande monitor. Tive de fazer várias mudanças de última hora, mover algumas coisas pela tela e ocultar outras enquanto a equipe de filmagem e os modelos esperavam. Eu estava fazendo essas mudanças enquanto estava sentado no chão contra a parede de uma sala de conferências com uma garota seminua sentada bem na minha frente, esperando sua vez de se levantar e desfilar na frente da tela!

Você faz orçamentos para trabalhar com clientes? Se o fizer, sem revelar nada que o incomode, que tipo de processo você usa?

Às vezes, quando os clientes exigem. Mas então eu estimo um preço muito mais alto do que eu acho que vai custar. Minha preferência é fornecer um orçamento e faturar por hora; em seguida, comunique-se e fature com frequência para que o cliente compreenda o progresso e o custo.

Como você impede que os clientes / gerentes / gerentes de programa ‘aumentem de recursos’?

Cobrar deles por isso. Sério, é simples assim. Explico a eles como os recursos que eles estão solicitando vão além do escopo originalmente solicitado e por que custarão mais. Cada coisa que faço vai para um item de linha na fatura para que eles vejam o custo de cada solicitação.

Descreva uma sessão típica de codificação para você. Como isso começou? Você faz pausas? Você tem algum ritual / hábito para acompanhá-lo?

Eu escolho um projeto e uma tarefa e me aprofundo. Às vezes, para novos projetos ou problemas, tenho que parar e desenhar um fluxograma ou listas de números; usar caneta / papel é bom para isso, pois ativa uma parte diferente do cérebro. Muitas vezes, construirei a interface do usuário primeiro, o que me dá uma visão mais clara de como a versão final se parecerá e funcionará – o que pode revelar considerações adicionais que devem ser codificadas. Outras vezes, como para correções de bugs, primeiro começarei a adicionar código de registro extra para que possa localizar a área do problema mais rapidamente.

Não tenho regras definidas para horários ou rituais – às vezes estou em um rolo e código direto por algumas horas, outras vezes, o problema é mais complexo e requer pausas frequentes para apenas parar e pensar sobre o problema. Isso varia tanto quanto meus projetos.

Você ouve música enquanto codifica? Se sim, você pode nos contar algumas faixas / artistas / performances?

Eu usei o Pandora para fazer streaming de música por um longo tempo e tenho alguns canais personalizados diferentes que variam de acordo com o meu humor, de eletrônico / trance a chill a techno / dubstep a Celtic. Alguns dos meus artistas favoritos incluem Autograf, Jes, Blackmill, Amethystium, Nordlight, Trifonic, Lindsey Stirling, Celtic Woman, The Glitch Mob, Krewella e Celldweller.

Você usa algum método ou técnica como Agile, Scrum, Kanban, TDD? Se sim, por quê? Se não, por quê?

Não escolhi um método e depois procurei uma ferramenta para implementá-lo, encontrei o Trello e gosto dele para gerenciamento de projetos, então descobri que o Trello é uma ferramenta Kanban de ponta. Então, eu acho que uso Kanban – vagamente, não propositalmente.

Você rastreia bugs? Se você fizer isso, o que você recomenda?

Eu tentei algumas ferramentas de rastreamento de bugs de código aberto, baseadas na web, e realmente não gostei de nenhuma delas. Depois que comecei a usar o Trello, implementei seu recurso de “etiqueta” para marcar “cartões” como “solicitações de recursos” ou “correções de bugs” e assim por diante.

A maioria dos projetos em que trabalho são pequenos – se eu tivesse uma grande equipe trabalhando em um projeto gigantesco, provavelmente faria as coisas de maneira bem diferente.

picture3-2

David e a adorável Sra. Cornelius, em Pacific City Oregon

O que um bom desenvolvedor de software faz?

Usa controle de origem! Existem tantos programadores que fazem cópias de seus códigos em outro diretório ou compactam os arquivos de origem periodicamente. Comecei com o JediVCS algumas décadas atrás e logo percebi os grandes benefícios de olhar para trás em minha história de mudanças. Mudei para sistemas de controle de origem mais recentes e agora uso o Git para TODOS os projetos em que trabalho.

O que um mau desenvolvedor de software faz?

Não formata nem comenta seu código. Código bagunçado e sem comentários não só é difícil de manter, mas torna quase impossível para outro desenvolvedor assumir o controle – a menos que a ferramenta de desenvolvimento tenha um formatador de código como o Delphi!

iPhone, Android, outro – e por quê?

Gosto da liberdade de escolha de configuração e aplicativos que os telefones Android oferecem – então, prefiro essa plataforma para meu uso pessoal. O único iPhone que tenho é um hand-me-down desativado que uso para testes. No entanto, tenho um iPad e gosto muito dele como tablet.

Para um desenvolvedor: PC vs Mac? Porque?

Pelo mesmo motivo que escolhi telefones Android, uso PCs desde o primeiro dia – liberdade para escolher ferramentas de hardware e software e configurá-los da maneira que eu quiser. Conheço o Windows e a linha de comando com todos os seus atalhos e colecionei muitos programas utilitários ao longo dos anos. Eles também custam muito menos e é bastante simples adicionar ou substituir um disco rígido ou placa de vídeo.

No entanto, adicionei um Mac Mini à minha coleção de hardware alguns anos atrás para que pudesse desenvolver para a plataforma iOS e ele começou a crescer em mim. À medida que os recursos de hardware aumentaram e se padronizaram e a necessidade de personalização diminuiu, a linha está ficando confusa – especialmente porque posso executar o Windows em cima do Mac (mas não o contrário).

Qual é a única coisa pela qual você gostaria de ser lembrado?

Que sou um homem honesto que prefere reduzir as taxas a enganar um cliente.

Qual é o melhor filme de desenvolvedor / hacker / tech / geek?

Eu realmente gostei muito da trilogia Matrix. Houve muitos outros bons filmes produzidos desde então, mas aquele ficou gravado na minha mente.

davidc_book

Você tem um livro, produto ou serviço que gostaria de mencionar?

Estou sempre procurando expandir meu conjunto de habilidades e uma das coisas mais difíceis de superar é se você estabeleceu um produto bom e sólido ou construiu uma ótima biblioteca de código apenas para perceber que os clientes e concorrentes mudaram para interfaces mais novas – ou pior ainda, outras plataformas! O livro que terminei de escrever recentemente, Fearless Cross-Platform Development with Delphi , aborda esse problema mostrando a esses desenvolvedores as nuances dos dispositivos móveis, como iniciar o desenvolvimento da web e maneiras de abraçar os serviços REST. Os aplicativos do mundo real são criados passo a passo e espero que removam as barreiras que impedem os desenvolvedores que se sentem presos a uma solução apenas para Windows. Se você precisa oferecer suporte a várias plataformas, este livro é um ótimo lugar para começar!

 

Devo ressaltar aqui que, na verdade, comprei a versão impressa do livro de David na pré-encomenda, embora me tenham oferecido cópias de revisão gratuitas. É um livro excelente e iremos revisá-lo em breve com David. – IanB ]

Você tem um site que as pessoas podem visitar? Em caso afirmativo, qual é?

Sim, corneliusconcepts.com para os negócios e corneliusconcepts.tech para meu blog.

Se você usa o Twitter, qual é o seu identificador no Twitter?

@delphidave

Qual é o seu método preferido de contato com clientes em potencial?

A página de contato em meu site: https://corneliusconcepts.com/contact_us


Obrigado por participar David, eu realmente aprecio isso.

Eu estarei falando com David novamente em uma entrevista onde discutiremos seu livro e suas motivações por trás de escrevê-lo.


Coding Boot Camp

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

IN THE ARTICLES