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.
Em nossa cadeira de entrevista hoje, temos o simplesmente maravilhoso Dalija Prasnikar. Dalija está sediada na cidade maravilhosamente histórica e pitoresca de Zageb, na Croácia. Você ouvirá mais em um momento sobre o histórico de desenvolvimento de Dalija, mas ela também é uma fotógrafa talentosa, bem como uma autora respeitada de alguns ótimos livros de codificação. Você pode dizer que ela é uma codificadora adequada – ela é a única até agora que retornou suas respostas usando o MarkDown !
Table of Contents
Dalija, obrigado por concordar em participar das entrevistas!
Obrigado 🙂
Qual seria o seu breve resumo no noticiário noturno sobre quem você é e o que faz?
Desenvolvedor de software, consultor, autor de livro, Embarcadero MVP. Falhas no software de outras pessoas e escrevendo o meu próprio desde ’85.
Qual (is) produto (s) da Embarcadero você usa a) mais b) regularmente?
Delphi, é claro.
Como e / ou por que você se tornou um desenvolvedor?
Quando era criança, queria ser astronauta. Eu estava realmente no espaço, astronomia, ciência … e qualquer coisa relacionada a eles. Quando eu tinha cerca de nove anos, a primeira série de ficção científica que me lembro de assistir foi a 7 de Blake . E meu personagem favorito lá era Kerr Avon. Um gênio da computação altamente inteligente e sarcástico. No início da série, ele disse “Quem controla o computador, controla a nave”, e este foi o momento crucial em que “Eu quero ser um astronauta” evoluiu para “Eu quero controlar os computadores”.
Claro, na vida real, ser um desenvolvedor e saber o que sei agora, controlar os computadores e a nave é realmente uma ilusão. Mais frequentemente, é o contrário. É também por isso que nunca confio totalmente em nada relacionado à tecnologia.
Você acha que algum dia deixará de ser um desenvolvedor? Em caso afirmativo, o que viria a seguir?
Eu provavelmente poderia ser um fazendeiro … mas seria um fazendeiro que escreve código como um hobby. [ Eu também! Devemos falar com o colega desenvolvedor Alister Christie – ele vive em um bloco de estilo de vida – IanB]
O que fez você começar a usar Delphi / C ++ Builder?
Aprendi turbo pascal no colégio e rapidamente se tornou minha língua favorita. Ele podia fazer tudo o que C podia fazer, e era muito mais rápido – não apenas para escrever código, mas também para compilar.
Comecei minha carreira como jornalista de TI na BYTE Croatia (licenciada da McGraw-Hill) e como editor da revista MIPS Computer. Com o surgimento da Internet e da publicação online nos anos 90, mudei para o desenvolvimento web. Eu estava usando Java e JavaScript antes de começar a usar Delphi. Vindo do Turbo Pascal, que também usei o tempo todo para escrever vários utilitários e geradores de páginas da web, o Delphi foi uma escolha natural para o desenvolvimento de aplicativos Windows.
No que você está trabalhando atualmente?
Como você sabe, já escrevi dois livros Delphi: Delphi Memory Management e Delphi Event-based and Asynchronous Programming.
Gosto de escrever livros. É uma oportunidade de compartilhar conhecimentos, mas também de aprender. Não importa o quanto você saiba sobre algum assunto, sempre há alguns cantos escuros que você precisa iluminar a fim de explicá-lo adequadamente aos outros.
Depois de escrever o segundo, foi bastante fácil passar para a quinta marcha, então estou escrevendo mais livros sobre Delphi. Não tenho outros detalhes específicos para compartilhar, ainda.
Mas sim, existem novos livros Delphi no horizonte.
Qual linguagem de programação você recomendaria aprender primeiro?
inglês 🙂
Se você pudesse dar algum conselho a um aluno que está considerando uma carreira como desenvolvedor de software, qual seria?
Comece a aprender lendo livros. Aprenda sobre conceitos e algoritmos primeiro. Os idiomas são secundários. Todos eles são limitados por sua implementação, e aprender conceitos por meio de uma linguagem geralmente leva a mal-entendidos. Como linguagens diferentes implementam os mesmos conceitos de maneiras diferentes, os padrões de codificação normalmente usados em uma linguagem não funcionam necessariamente bem em outra.
Não deixe que as regras governem você. Boas práticas e regras são mais diretrizes do que regras codificadas. Eles se destinam a ajudar os desenvolvedores a realizar tarefas comuns. No momento em que uma regra se torna um fardo, você deve parar de aplicá-la. No entanto, esta é uma faca de dois gumes, e as pessoas freqüentemente interpretam isso como uma permissão para quebrar as regras em todos os lugares, porque não entendem completamente o raciocínio por trás de uma regra específica. Além disso, com o tempo, as regras e práticas evoluem, por um motivo ou outro, e o que antes era uma boa prática pode não ser mais tão bom.
Código simples é melhor do que código inteligente. Se você não pode conseguir algo com um código simples, então – e somente então – você pode aplicar truques inteligentes. É importante anotar o que o código inteligente faz e por quê, porque você o esquecerá em breve. E, claro, explicar permite que outras pessoas entendam seu código com mais facilidade.
A experiência não o impedirá de escrever códigos idiotas e cometer erros bobos. A experiência ajuda você a identificar e reconhecer esses erros mais cedo ou mais tarde, e esse é o primeiro passo para corrigi-los.
Nunca pare de aprender.
Lema do desenvolvedor
Os desenvolvedores não são mestres Jedi. “Fazer. Ou não. Não há tentativa ”, não funciona. É “Se no início você não conseguir, tente, tente, tente, tente … tente, tente, tente novamente.”
Tabs … ou espaços?
Espaços.
Estilo de recuo
Allman para linguagens preparadas, GNU para Pascal. A diferença está na indentação do bloco, onde begin..end precisa de indentação adicional para uma separação mais limpa.
Qual foi o melhor dia que você já teve como desenvolvedor?
Houve muitos … é difícil escolher um.
Qual é a pior coisa de ser um desenvolvedor?
Você nunca para de codificar em sua cabeça.
Qual é a dica de desenvolvimento mais legal que você conhece?
Se você ficar preso, tome banho, ande, durma … faça qualquer coisa que te relaxe.
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?
Trabalho a partir de casa. Configuração mais confortável. Não perde tempo com deslocamento. Seu próprio banheiro. Você pode sobreviver à pandemia sem mudar seus hábitos.
Conte-nos algo interessante que você acha que talvez não saibamos.
A primeira versão do Turbo Pascal que usei na escola estava rodando em CP / M. Eu também estava na primeira geração de alunos do ensino médio que não tinham COBOL em seu currículo.
Se você pudesse usar uma varinha mágica de “consertar a indústria de tecnologia”, o que mudaria?
Eu criaria um byte-morcego maior! (Para quem não sabe do que estou falando, havia uma espécie de taco de beisebol de borracha nos anos 80 com o qual você podia bater no seu computador idiota sem quebrar nada.)
Se você pudesse convencer alguém a considerar Delphi ou C ++ Builder, qual seria o seu método, como você o faria?
O que eu sempre gostei no Turbo Pascal e, posteriormente, no Delphi, é o fato de que é uma linguagem bastante universal – não apenas em termos de ser adequada para o desenvolvimento de aplicações muito diferentes, mas também em termos de permitir que você programe em níveis muito diferentes de abstração .
Você pode usá-lo como uma ferramenta RAD, para prototipagem e desenvolvimento rápidos. Você pode escrever e usar estruturas de alta abstração, onde você pode conseguir coisas com apenas algumas linhas de código. E ainda assim você pode descer até o nível do sistema operacional e interagir diretamente com as APIs do sistema operacional. Na plataforma Windows, você pode ir ainda mais fundo e escrever o código assembly diretamente.
Eu realmente gosto dessa parte da montagem. Não o uso muito hoje em dia, mas nas raras ocasiões em que o faço, fico extremamente feliz que esteja lá.
Não tenho certeza se este seria exatamente um argumento muito convincente. Talvez isso seja uma relíquia do passado, quando a capacidade de ir para o nível de montagem era uma vantagem extrema, mas eu adoro essa flexibilidade.
Qual produto de tecnologia você gostaria de ter inventado / projetado e por quê?
Quando eu era criança, depois de assistir o 7 de Blake , achei que seria legal ter o computador deles, Zen, dentro do relógio, então eu tinha vários desenhos mostrando como seria aquele relógio. Isso conta? [ DEFINITIVAMENTE! – IanB, também sou um fã do Blakes 7 !!! ]
Se você pudesse viver sua vida novamente, ainda se tornaria um desenvolvedor? Porque?
sim. Controlando o navio …
Quantos cafés você bebe por dia e é o suficiente?
Bastante. Nunca é o suficiente.
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?
Sempre que a inspiração chegar!
Em sua carreira, você já “puxou a noite toda” para lidar com algo que absolutamente precisava ser feito?
sim. Mas não tantas vezes quanto quando estava publicando. Minha corrida mais longa durou cerca de 30 horas.
Descreva algumas outras coisas que você fez em sua carreira que podem dar aos leitores uma ideia do que é um desenvolvedor.
Eu também sou fotógrafo. Eu penso…🙂
Qual é a pergunta mais estúpida que você recebe (nenhuma dessas conta!)
Quanto tempo vai demorar?
Você faz orçamentos para trabalhar com clientes? Se o fizer, sem revelar nada que o incomode, que tipo de processo você usa?
Taxa por hora. As taxas fixas funcionam apenas para fazer a personalização de “modelos”, onde você tem um produto que pode ser personalizado e onde a personalização consiste em etapas muito específicas, conhecidas e previsíveis.
Como você impede que os clientes / gerentes / gerentes de programa ‘aumentem de recursos’?
Dizendo quanto tempo demoraria para terminar.
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?
Depende do que estou fazendo – se estou escrevendo um novo código, depurando ou escrevendo um livro. O tema mais comum é que eu pesquiso muito no Google e leio muita documentação.
Faço pausas ao escrever, porque muitas vezes você precisa parar e pensar antes de escrever algo. Uma pequena pausa lhe dá a chance de repensar e ter certeza de que não está indo na direção errada.
Por outro lado, a depuração não gosta de interrupções, especialmente quando você está rastreando algum Heisenbug indescritível. Freqüentemente, você precisa controlar grandes quantidades de lógica de código em sua cabeça, e qualquer distração ou quebra facilmente apagará tudo isso e você precisará começar tudo de novo.
Você ouve música enquanto codifica? Se sim, você pode nos contar algumas faixas / artistas / performances?
As vezes. Temas de filmes, pop e rock dos anos 80 … Quando meus filhos eram pequenos, e eu trabalhava e cuidava de babá ao mesmo tempo, isso incluía ouvir música do Age of Empires ou Settlers IV o dia todo.
Você usa algum método ou técnica como Agile, Scrum, Kanban, TDD? Se sim, por quê? Se não, por quê?
Resposta curta: sim. Depende do projeto.
Resposta longa: essa é uma pergunta meio tortuosa. [ Bem, manchado! 😈- IanB ]
Qualquer uma das técnicas mencionadas tem muitas variantes (ou, pelo menos, as pessoas as aplicam de forma livre). Dizer sim a qualquer uma das opções acima não significa que você segue um determinado processo à risca. E isso não significa que usar um em vez do outro seja melhor. Assim como as boas práticas de codificação não existem no vazio e seu objetivo principal é ajudá-lo a atingir o objetivo final, as práticas de gerenciamento de projeto e qualidade também fazem parte do mesmo processo. Se o processo se tornar seu próprio propósito, você perdeu a capacidade de atingir seu objetivo final: concluir um software funcional, de manutenção e de qualidade.
É por isso que odeio nomear as partes do processo, porque nunca está definido e se adapta aos requisitos do projeto e da equipe.
Você rastreia bugs? Se você fizer isso, o que você recomenda?
Não, eu os mato na hora. Às vezes, isso os transforma em insetos zumbis.
Um bom desenvolvedor de software:
Um desenvolvedor cego, caso contrário, eles fazem uma bagunça sangrenta.
Um mau desenvolvedor de software:
Eu ontem 🙂
iPhone, Android, outro – e por quê?
Sem telefones. Muita distração.
Para um desenvolvedor: PC vs Mac? Porque?
PC, porque Turbo Pascal e Delphi rodam em PCs. Hoje em dia, eu uso Mac para desenvolvimento em iOS e macOS, mas nunca me superou. Não estou dizendo que o Windows é perfeito – longe disso – mas estou mais acostumado com suas peculiaridades. Não consigo me acostumar com os do macOS.
Qual é a única coisa pela qual você gostaria de ser lembrado?
Meu chapéu! 😛
Qual é o melhor filme de desenvolvedor / hacker / tecnologia / geek?
Que tal o melhor livro do desenvolvedor? O Guia do Mochileiro das Galáxias .
Quando se trata de filmes, eu provavelmente diria De Volta para o Futuro e Guerra nas Estrelas: Uma Nova Esperança , mas as séries de ficção científica são as melhores. É difícil avaliá-los, porque cada um de que gosto é único: Blake’s 7 , Battlestar Galactica , Star Trek , Stargate …
Nenhum desenvolvedor deve ser visto sem: _____________________________
Um computador!
Se um filme fosse feito sobre sua vida, quem você gostaria que fosse você?
Angelina Jolie de 1995. 😛
Você tem um site que as pessoas podem visitar? Em caso afirmativo, qual é?
https://dalija.prasnikar.info/
Se você usa o Twitter, qual é o seu identificador no Twitter?
@ dalijap