e esse é o podcast Fronteiras da
engenharia de software o podcast para
refletir sobre o presente e o futuro da
nossa área este podcast tem o apoio da
zup innovation empresa que cria
tecnologia impulsiona o crescimento
exponencial da
o Olá ouvintes eu sou Adolfo Neto
professor da Universidade Tecnológica
Federal do Paraná e hoje a gente vai
começar a segunda temporada do podcast
Fronteiras da engenharia de software
Muito obrigado a todas EA todos que nos
escutam desde o primeiro episódio
Primeiro lugar eu dou as boas-vindas a
Ingrid Nunes e foi entrevistada por nós
o episódio 8 e agora é parte da nossa
equipe e vai atuar como apresentadora
junto comigo hoje tudo bem E aí pessoal
tudo bom tudo bem seja bem-vinda né e
agora a gente vai começar a falar sobre
o fronteiras é que é a gente já sabe que
é o podcast de divulgação Científica em
engenharia de software e a gente
conversa com nosso entrevistado sobre
questões fundamentais engenheiro de
sofre sobre os avanços da área e hoje a
gente está aqui com um convidado ilustre
o Fernando Castor professor da UFPE para
quem não sabe a Universidade Federal de
Pernambuco onde eu fiz meu mestrado lá
em Recife
o assunto da entrevista de hoje vai ser
compreensão de código Tudo bem com
acerto pode ser apresentado pelo pessoal
tá dando bom dia boa tarde boa noite
Qualquer que seja a hora aí estou muito
feliz tá aqui tô muito honrado com o
convite eu sou Fernanda Castor com a dor
falou sou professor lá da UFPE Já tem
alguns anos eu nunca sei se eu devo sair
falando de o que que eu fiz no passado
Qual é a minha história eu fiz graduação
na UFPE é muito tempo atrás antes da
Aurora dos tempos eu termino em 2001
durante a graduação eu trabalhei com
vocês o Paulo Borba depois eu fui para o
doutorado lá na Unicamp ou professora
cicília rubira hoje Passei um tempo lá
na USP o professor Fábio com E aí voltei
para Recife para ser professor primeiro
na USP e a Universidade Estadual de
Pernambuco e depois na
O que é hoje eu tô desde 2008 em 2008 a
vida atrás bem interessante seu
históricos Castor King já programou e
teve que entender código feito por
outros sabe que tem código que é bem
difícil de compreender seu olho ali não
entendi Às vezes você não entende o
próprio código que você escreveu anos
atrás olha ver variáveis funções métodos
com o nome estou com intuitivos ou
listas de parâmetros muito grandes que
fazem com que seja difícil entender e
utilizar a própria função método essa
noção de compreensão de código é meio
subjetiva né então existe uma definição
mais precisa sobre o que seja
compreensão de código rapaz é sim só que
tem uma pegadinha né porque quando você
tá tentando compreender um programa isso
é uma coisa que existe no vácuo então
quando você tá tentando entender um
programa
o meio para você alcançar um fim você
poderia dizer a compreensão de código na
inglês pessoal usa problema complemente
é é atividade de você examinar o
código-fonte de um programa os produtos
de movimento né é clipes Associados
outras coisas também documentação
elementos do processo dos movimentos
também para extrair informações que são
úteis para você realizar alguma
atividade relativa ao sistema pode ser
porque você quer rodar o sistema pode
ser porque você quer testar o sistema
Pode ser que seja porque você quer
modificar o sistema explicar o
funcionamento do sistema para outra
pessoa então para compreender um
programa você tem que saber para que
você quer compreender eu acho que é uma
questão chave que vai além da da
intuição do do óbvio que é compreensão
de prova grande do litoral
tô falando então essa definição a
questão da subjetividade é como é que eu
classifico o código que é difícil de
entender e não difícil de entender então
tem alguma precisão para classificar um
código que é fácil de entender o que que
é um código difícil de entender a
resposta curta não há resposta longa É
depende do contexto e pensa em contexto
aí da maneira mais Ampla que você quiser
pense na atividade que você quer
realizar o tentar entender o código
pense na pessoa é que tá lendo o que o
que é que ela sabe sobre aquela
linguagem sobre aquele sistema sobre
bibliotecas que sistema usa é claro que
se você pegar um trecho de código que
apenas um print provavelmente vai ser
forte de entender do mesmo jeito se você
pegar um trecho de código que vem da eo
CC da competição de código ofuscado em
linguagem que ser uma competição
Facebook
o risco então não te conhece não sei se
todos os testes é uma competição onde
objetivo vai escrever código quesito
difícil entender provavelmente vai ser
difícil para todo mundo nos extremos e
provavelmente tem nos absoluto sair
muito simples e fácil de entender sempre
muito complicado e difícil de entender
sempre só que quase tudo que você
realmente quer entender tá no meio do
caminho e aí é Totalmente Dependente de
contexto Ninja mas assim o código que é
difícil de entender ele pode ser difícil
por estar implementando algo complexo ou
também porque ele não foi bem escrito
então quando a gente fala que um código
é de difícil compreensão Pode ser que
seja em função em qualquer um desses
motivos ou só um deles assim deles e
como eu falei tentei um contexto mais
amplo né você tem
já terminou o gelado Fred Brooks né
complexidade é essencial e acidental
essencial é o que é intrínseco I ao
problema que está tentando resolver
então não tem solução fácil para
problema que é intrinsecamente difícil
mas também tem a complexidade acidental
isso é o modelo isso é o mundo ideal a
gente consegue se aparece as duas coisas
na prática quando a gente vai além de
complexidade algorítmica de coisas mais
formais assim as duas coisas se misturam
nunca fica muito claro para gente o que
é que é essencial na complexidade e o
que é que é acidental novamente casos
extremos a gente vê fácil casos que não
são extremos depende demais de quem lê é
de qual é o conhecimento que essa pessoa
tem antes né Depende do tá no olho do
Observador né Além disso tem uma questão
de preferências pessoais conferir o
objetivo é eu penso que eu falo disso
por exemplo não sei se vocês conhecem
comunidade de Cold Golf
eu não tenho muito engraçado é a ideia é
você escrever código mais curto possível
em termos de número de caracteres essa
medida o golfinho aí analogia meio meio
esticado eu acho porque no Golf e você
quer colocar a bola no buraco o menor
número de tacadas possível nesse caso
você quer resolver o problema com menor
número de caracteres possível do pessoal
que trabalha com isso código que eles
escrevem não é tão difícil de entender
assim é exatamente o que eles querem não
fica difícil de entender mas porque eles
querem curto Então tá sempre no olho do
Observador né É É claro para atividades
do dia a dia desenvolvimento tem certos
objetivos que a gente tem que atrapalha
um pouco se o código tá determinada
maneira Mas eu eu eu gosto de bater
nessa tecla assim depende muito de quem
tá vendo ele quais são seus objetivos
o Castor normalmente a gente diz que o
código que é difícil de entender acaba
por ser mais difícil de evoluir de dar
manutenção porque antes de mexer no
código desenvolvedor tem que entender
também quando você entende pouco código
Pode ser que os bugs acabam se acabem
sendo introduzidos com mais facilidade
Isso é apenas senso comum ou existem
evidências concretas científicas e
benefícios relacionados com o código que
tenha uma alta compreensão certo a essa
pergunta como um pouco ovo e galinha
assim desculpa Talvez seja só um pouco é
evasivo mas é que a coisa nunca é Preto
no Branco sabe nunca é desse jeito é bom
desse jeito é ruim desse jeito é fácil
desse jeito é difícil então para mim
isso é muito ovo e galinha porque como é
que a gente diz que código é fácil
difícil
um determinado contexto agora a vez tá
então a gente já sabe qual contexto está
fixo então como é que a gente vai dizer
que código é fácil difícil é entender a
gente vai pensar em maneiras de avaliar
isso e uma maneira de avaliar isso é
olhar por exemplo se uma pessoa que olha
código tem determinadas características
tem uma probabilidade maior de
introduzir bugs no programa ou de
adivinhar errado qual é a saída do
programa ou de explicar errado como
programa se comporta ou demora mais
tempo para poder determinar Qual é a
saída do programa então fica difícil de
de dizer se exatamente assim se uma
coisa leva a outra mora dito isso tem
estudos que mostram que certos padrões
de código em determinados contextos com
base determinadas maneiras de avaliar a
legibilidade parecem atrapalhar
legibilidade
o que você considera a pessoas com
pectus amplos de experiência certo e
também tem certos indícios que já foram
identificados para algum algumas
situações como por exemplo em certos
padrões de código que um estudo de
alguns anos atrás para olhar os sistemas
bastante populares e porque as meu Linux
o kit e alguns outros sistemas de
extinção linguagem ser e eles notaram
que certos padrões de código tendem a
ter quantidade de comentários muito
maiores associadas com eles do que
trecho de código que não tem aqueles
padrões ou tendem a tá mais Associados
com bugs aparecendo próximos do que
trecho de código que não tem aqueles
padrões certo então existe evidência de
que sim código que é certa as
características do código tendem a levar
a há maior propensão ao bugs o a
indícios de que talvez ele seja mais
difícil de entender
E aí
a cama se falando um pouquinho mais
sobre essa relação entre Difícil de
Entender Difícil de evoluir Isso é uma
relação de codependência assim é estão a
mesma coisa um depende do outro ou dá
para contar assim Ah tá isso aqui é só
difícil de evoluir umas não é difícil de
entender esse Versa
o bom é isso me lembra da época em que
trabalhava programação orientada a
aspectos eu sou um cara sem foco Então
já trabalhei com muitas coisas muito
diferentes é uma característica minha eu
não sou das pessoas fica 20 anos
trabalhando no mesmo problema eu admiro
muito quem consegue eu não consigo mas
isso me lembra muito da época que eu
trabalhava com aspectos é porque você
tinha muitos trabalhos que falavam sobre
facilidade de evolução sobre colocar o
código no lugar só e equalizar isso com
facilidade de evolução e eu não concordo
muito com essa visão eu acho que hoje a
maioria das pessoas não concorda mas na
época tem uma visão mais ingênua é
porque para você mudar um sistema para
você fazer o sistema evoluir você tem
duas coisas Duas atividades macro você
tem que realizar você tem que entender o
sistema eu tenho que saber como é que
ele tá lá e entendeu o impacto da sua
mudança E você tem que fazer
a dança de fato e tendo Essa visão
lanche para mim fica claro que certas
características do código são boas nos
dois casos certas características do
código são boas para um caso e não tão
boas para o outro sessão facilitam para
entender não facilitam tanto para mudar
então dois exemplos é nome bons nomes de
variáveis um bom nome de variável e bom
nome aí a gente pode passar um bom tempo
discutindo sobre ter muito trabalho
sobre isso inclusive sobre nome de
variável é um bom nome de variável ele é
bom nos dois casos ele ajuda a entender
mais facilmente quando você for mudar
você tem uma associação consegue
facilmente a inferir qual vai ser o
impacto daquilo por outro lado tem um
caso que é muito polêmico que é código
duplicado tão código duplicado um
exemplo que eu gosto muito porque por
exemplo tem artigo com aquele aquele
nome que eu não gosto mais em
o Code Crown is considered harmful seja
Clones de código considerados danosos
vamos dizer e também tem um artigo que é
code Crown is considered harmful
concerning your full então Clones de
código considerados danosos são isso é
considerado danoso também porque é
Clones de código código duplicado eles
têm uma característica que é boa para o
compreensão EA repetição a gente aprende
por repetição não é uma lenda isso é
estudado urgente nas áreas de educação e
Psicologia a gente aprende por repetição
e quando você vê código que a família a
E você já viu antes você vai entender
mais rápido é natural é humano por outro
lado na hora de modificar o código se
você tem código que é parecido na melhor
que é igual na melhor das hipóteses de
você vai ter que mudar em vários lugares
não
a bordas hipóteses você vai ter que
voltar a jogar em nosso código mais
atentamente igual tem detalhezinhos que
são diferentes e aí você vai se quebrar
a é um daqueles casos que você vai
entrar dos tem uma grande chance que
você introduzir um bug no seu programa
porque a familiar parece igual Mas não é
igual então assim às vezes está junto às
vezes não tá junto Pelo menos é assim
que eu vejo
é interessante e como é que a gente pode
escrever código de fácil compreensão
pessoal da da comunidade de
desenvolvedores né Tem aquelas práticas
que eles divulgam comento até tem
debates acalorados Clean code código
Limpo com práticas relativamente bem
exploradas e conhecidas como o drive que
é don't speak yourself dos repita Ops
keep it Simple matéria simples primeiro
lugar essas coisas elas têm algum valor
acadêmico a mais é uma coisa da
comunidade de desenvolvedores e se não
existem guias acadêmicos e podem ajudar
o desenvolvedor escrever código de fácil
compreensão sobre esse essas coisas têm
valor a cada difícil responder por causa
desse jeito mas assim algumas dessas
coisas tem algum vazamento mas ela
surgiram no contexto onde
e os desenvolvedores não é o tipo gente
tipo o seu blog tava usando o seu bom
senso para tentar identificar a
causalidade ali em coisas que foram
observadas na vida real ou tentando rir
com princípios de sua cabeça aqui olha
aqui faz sentido né porque se não for
assim vai ser nesse outro jeito esse
outro jeito parece ruim então assim essa
é a versão curta a resposta a versão
longa da resposta é como sempre é é mais
complicado que isso sobre o por exemplo
tem um princípio que ela não se repita
né isso vale para comentário para código
também eu já falei um pouco sobre isso
então tem muita nuance na história do
código duplicado certo mas por exemplo
lá que o que participou na mantenha
simples Aí eu pergunto a vocês eu
devolvo a pergunta o que que é simples
pessoal é curtas
E aí
é porque assim eu já vi os três que
código em raça que eu que são bem
curtinhos e eu não desejaria para o meu
pior inimigo a minha pior inimiga que
entender se aquilo que é curtinho e é o
inferno é se usar muita biblioteca é
simples porque tava utilizando o código
E aí depende Eu sei eu conheço a
biblioteca Eu sei tudo que ela faz eu
entendo todos os 20 parâmetros opcionais
que tem na função
ou senão usar é simples Eu vou ter que
fazer tudo do zero talvez não se você
não tá função de alta ordem geral
pessoal gosta muito hoje em dia né
pessoal java script não consegue
escrever cinco linhas de código sem ter
um callback no meio eles fazem Hello
outro com qual deck é vocês acham que
Isso facilita
e eu não sei tem gente que diz que sim
tem gente que não ou então pega um
exemplo assim que é mais Pacífico para
não acharem que eu tô avacalhando
pegando as coisas que não são Desculpa
eu ter mais batalhando mas pegando umas
coisas que não são é então meu
complicado acho que a objetos
programação orientada a objeto se tiver
objeto fica mais simples do que se tem
objeto objeto você vai ter desperte
dinâmico você faz uma chamada de método
dependendo do contexto e você não sabe
nem Qual é o método vai ser executado
você não sabe qual é o objeto a partir
do colo aquele metro vai ser chamado
e assim quando você começa a olhar para
isso o que simples aí o que é simples é
eu vou repetir isso muitas vezes Talvez
depende demais do contexto certo então
isso tudo é só para dizer
e eu acho esse conselho meio inútil
já sabe minha opinião pessoal é minha
opinião pessoal é claro que eu quero o
código simples mas um conselho que é tão
genérico não é útil para mim sabe você
precisa de mais é mais detalhe do que
isso E aí academia podia ajudar mas eu
admito que academia não parou para
avaliar esses princípios tanto quanto
parou para avaliar por exemplo algumas
práticas de programação Extrema e tem um
bocado de avaliação experimental então é
difícil dizer agora OK dito isso tudo Eu
não quero só falar mal porque a maioria
das coisas ali fazem todo sentido para
mim certo então só para deixar isso
claro eu peguei um exemplo que eu acho
que não é bom mas por exemplo inventar
código ainda tá código eu não consigo
ver desvantagem para ir só não sei que
você vai inventar com 50 espaços porque
aí o texto não cabe na tela e fica ruim
escolher nomes descritivos e não amigo
também
e vai discutir com com isso aí né agora
voltando Aí tem coisa tipo fazer uma
coisa só tem uma coisa só sabia assim
tem um monte de utilidade de seus
operacionais de um like se faz uma coisa
só e não necessariamente são programas
simplesinho certo assim você vai dizer
que eles não fazem uma coisa só sabe que
é muito sobre o Coach Na minha opinião
da da pior maneira possível tá é agora
Oi e aí tem outra coisa lá a história do
ifs else's você não usar if else I
Switch Case em vez disso cê polimorfismo
eu sei que tem um contexto para isso
certo mais assim então eu não motorizado
que os autores o pessoal que propõe está
dizendo que você sempre tem que usar
polimorfismo lugar de fiel que eu tô
subindo Mas mesmo que fosse só no
contexto que aquilo é sugerido tem gente
que acha que você não devia usar herança
Tu sabe o nome eu sei que você pode usar
linguagem orientada a objetos herança e
polimorfismo te desperte nome com
segurança vídeo já diz clipe e pai
também mas não acho
eu não sei eu já pensei eu já fui mais a
favor desse tipo de coisa hoje em dia eu
vejo tanto detalhe assim incomoda E aí
só para falar mais besteira que eu já
falo é só para deixar minha opinião para
eu acho que switch-case nem devia
existir nossa programação Eu também acho
que laço four conhecer nem devia existir
uma linguagem de programação agora por
outro lado acho que as pessoas também
deviam achar menos e mais atrás de
evidência não é Principalmente uma
pessoa da área acadêmica certo então eu
acho que tem muito achismo
E aí eu adoro sempre contigo que as
conversas são sempre super dinâmicas e
divertidas mas eu queria puxar um pouco
mais o gancho do tempo porque até onde
eu saio a ideia do que tempo é porque no
passado esse tinha muito essa ideia de
fazer código genérico que serve para
diferentes situações né então não tem
que implementar um negócio pensa no
futuro talvez eu tenho essa para
habilidade então daí tu vai fazer o
código né Cheio de parâmetros ou níveis
de direção com polimorfismo para deixar
um código mais flexível a situações mais
genéricas né mas só código mais abstrato
e daí a ideia só que quando deixa mais
abstratos eles deixa mais difícil de
entender então até a praticar justamente
faz o seu propósito não pensa no futuro
né e faz a coisa mais cinco
é a qual é a sua visão disso tem porque
se tu faz uma simples às vezes quando tu
vai evoluir o custo de refatorar para
depois ir para Natália usar coisa vai
sair mais caro Adonis Então qual é a tua
opinião você já respondeu para mim faz
todo sentido Não eu só vou fazer o mais
simples possível agora primeira vez que
eu vi isso muito tempo atrás quando tá
vendo perdendo sua programação extrema
ainda porque o Fábio que ele tá falando
na USP evangelizado todo mundo sobre
isso eu sou muito grato a ele por isso é
mas é quando eu vi pela primeira vez um
pouco mas tô sentindo o quê que eu vou
fazer mais genérico do que precisa pois
é mas o meu gerente quando eu vou
desenvolver código muita gente não vai
querer que eu perca tempo refatorando se
você não fizer agora depois vai ser
loucura para fralda eu arranjar um tempo
e me ser permitido é fazer arr
Bom dia do sistema porque vai chegar no
ponto vai deixar de ser uma refatoração
e vai ser uma hengenharia para ser mais
genérico para lidar com os casos que
estão por vir então aqui é uma coisa é o
ideal é ser simples mas a vida muitas
vezes não é simples sabe e você não pode
ser dogmático da um só só esse o ponto é
eu sou totalmente a favor de
simplicidade mas às vezes tem casos em
que você vai precisar de generalidade
que você consegue antecipar Você pode
achar pode mas você também pode acertar
muitas vezes e vai acertar isso é pedir
muito a sua experiência claro então
contexto bacana gostei muito da resposta
bom agora a gente vai puxar para outra
para outro lado né falar um pouco mais
linguagens de programação mais
específicas não tem desenvolvedores
dependem pais dizendo que a linguagem
e é muito mais fácil de entender do que
outras Neto escreve escreve Java e sem
linha SIM Quais são as empresas a aí a
pergunta é a linguagem de programação
escolhida tem algum impacto na
compreensão do código assim seu uso
ponteiros de Aço gerenciamento de
memória e muito mais complicado pode
perceber Qual é o impacto da linguagem
de programação na compreensão de pode tá
essa essa Tem várias coisas de ver a
cabeça aqui deixa eu organizar antes de
tudo respondesse a linguagem faz
diferença
É sim é fácil ver quantos olha por
exemplo extremo pega vai tentar escrever
código em White Space então linguagem
esotérica ou em mal balde que é outra
linguagem esotérica ou imbraim aquela
palavra em inglês que a gente não deve
dizer a palavra com f é que também é o
negócio dessa técnica São linguagens
feitas para produzir código que é
difícil de escrever e é muito difícil
escrever código nessa linguagem então
tem realmente sim a linguagem faz
diferença é agora lindo pegando pedaços
aí da da linguagem que da pergunta que
você fez é Ingrid você falou Dejavú aí
eu já falei muito mal de Java ao longo
da minha vida Java é uma linguagem hoje
em dia para muito mais em paz o por
diversas razões mas Java Talvez seja não
gosta mais programei até hoje eu tive
que ficar bem a fundo Java causa da é
para mim a iniciação científica é para
e eu lembro que quando eu vi o episódio
do Marcelo Maia que revoltadíssimo que
ele falou quando ele começou a trabalhar
com ela para o coração ele vem um artigo
lá do Paulo Borba eu era tal todo esse
artigo também foi na minha iniciação
científica mas enfim eu tive que dar
bastante Java por causa disso é e eu
também falava muito mal da linguagem
porque por que ele recolhe Java é um
saco é muito verborrágico você é tudo
muito explícito e hoje em dia eu acho
que já vi uma linguagem super legível
apesar disso tudo porque já vi é muito
uniforme porque já vem já Geralmente as
coisas estão explícitas Java ter um
padrão de qualificação que todo mundo
segue desde que a linguagem surgiu nós
foram escritos em Java foram 95 era Java
1.0.2 é muito eu sou muito velho foi
logo antes de entrar na graduação Então
já era aquele padrão de cor
bom e isso é uma coisa que facilita
demais a regularidade EA familiaridade
aquilo que a gente tinha falado sobre
repetição então eu não acho hoje em dia
que isso aí de Java e Python É verdade
pelo menos quando você olha para a
legibilidade tá então esse é é um
segundo ponto que me veio à cabeça aqui
para fazer no terceiro ponto aqui um dia
desses o Gustavo postou no Twitter O
pessoal Qual é aquela construção de
linguagem que quando vocês viram pela
primeira vez Vocês tiveram muita
dificuldade de entender aí eu fiz
questão de responder minha resposta foi
na hora Monteiro
é um termos para sempre assim eu lembro
que quando eu entrei na graduação eu já
programava um tempo usei eu fiz aqui os
melhores funções para o começo da
graduação não era uma pessoa muito
dedicada mas eu lembro que a cadeira de
programação lá eu tranquilo vai ser sei
tudo tudo tudo tranquilo a nossa bolsa e
nem para aula direito quando chegou na
parte de ponteiros meu irmão minha irmã
Oi foi sofrido foi bem sofrido é eu
lembro de ter estudar ponteiros nas
férias depois porque senão não ia
conseguir cursar cadeira de algoritmo
Mas enfim então certamente tem coisas
agora ainda para sua pergunta de maneira
mais direta certamente Tem coisas que
dificultam a vida para a maioria das
pessoas novamente depende muito de
contexto você pedir para o doubly olhar
um programa concorrente ele vai olhar e
vai tirar tudo de letra porque ele é uns
caras que mais entende disso no mundo
Glee para quem não conhece é professor
na Universidade Estadual de Nova York e
é o cara que sozinho implementou grande
parte da biblioteca de Java útil confio
então é um cara que entende bastante do
assunto para ele concorrência
paralelismo ele é um negócio que ele
come no café da manhã assim mas para os
seres humanos normais ridículos
limitados nas palavras de Raul Seixas
tem coisas que são difíceis chamaria das
pessoas conter os por exemplo é um caso
Um clássico né porque no ponteiro você
tem direção eles tem que pensar um nível
a mais esses dois ou três níveis a mais
você tem um plano de gerenciamento de
recursos que é difícil mesmo você não
tem ponteiro tanto que tem igual a gente
tem construções específicas para ajudar
em gerenciamento de recursos typically
finally tipo de fã de gol e alguns dizem
que dificulta mais do que ajuda é E além
disso poça você a pular fora do código
não é porque você tá você declarou lá se
o ponteiro bonitinho na sua língua no
seu programinha em C mas se aquele ponto
é um void ele pode apontar para qualquer
coisa que pode ter qualquer tamanho na
memória você não sabe onde ele tá no
pior caso ele vai tentar pular até fora
da área de memória do seu processo esse
seu Windows é velho o suficiente ele vai
conseguir então vai dar uma Uai então a
tela azul então conter os são caso
clássico use teve um trabalho é sobre o
negócio
é de confusão que vocês certamente
ouviram falar que são padrões de código
bem pequenininho é que tendem a deixar
devolvedor de confusos que quando esse
trabalho saiu um dos átomos que o os
autores lá quiser avaliar tinha a ver
com o uso de ponteiros O problema é que
ele eles não conseguiram identificar
isso como um átomo de confusão é um
candidato átomo eles não conseguir
identificados como átomos confusão
porque porque alternativa aquilo era tão
confusa quanto que também envolvia
ponteiros embora usado já maneiras
diferentes então é um negócio que é
confuso de qualquer jeito não sei que
você seja super outra aí para
especialista conheça a máquina bem que
ponteiros exigem isso de você Dependendo
você tá fazendo com eles claro né não
sempre né então é um exemplo mas tem
coisas que dificulta mais ainda o que
dificulta de maneira diferente
concorrência um concorrência é uma coisa
que lhe obriga a pensar
a concorrência na linguagem que tem
estado compartilhado porque senão eu vou
deixar o Adolfo revoltado né então
concorrência não igual a gente você tem
estado compartilhado entre Travis é uma
coisa que enlouquece sua cabeça porque
você tem que pensar não em uma execução
Mas eu vi várias execuções e várias
delas não estão na ordem das linhas do
seu programa Você pode ter uma linha que
vem depois de executada antes isso é
permitido negócio como Java por exemplo
e é muito divertido quando você mostra
isso para estudantes em sala de aula as
pessoas estão achando que você tá
enganando ela de alguma maneira assim
qual o truque só que não não é só só
Java mesmo é assim que funciona tá na
especificação então se você tivesse
ficado né E tem combinações que torna as
coisas muito mais difíceis também então
ponteiros Eu já falei a gente tá
chutando cachorro morto aqui mas se você
juntar ponteiros com tratamento de
exceções em linguagem como você mais
mais é sofrido é sofrido
e você pode ter momentos de diz alocação
de recursos que não estão escritos no
código então você aumenta esse problema
que já existe em ponteiros fora os
outros que tem Associados com ponteiro
então definitivamente tem coisas que só
mais difícil de entender do que outras
de forma geral não precisa um pouco
usadas por exemplo tem coisa que ele
fica interessante que ninguém usa mas
tem coisa que é difícil entender porque
é difícil entender mesmo complexo é
essencial né que a gente tava falando
hoje estou tem um artigo de scalabrini e
outros onde eles avaliaram o nível de
compreensão de código de acordo com
desenvolvedores e correlacionaram essa
medida dos desenvolvedores com 121
métricas de código e segundo os autores
do artigo não há correlação entre
nenhuma dessas métricas e a compreensão
de código eles argumentam né os autores
que deve haver alguma nova métrica
e por isso a sua opinião você acha que
isso acontece o que que você acha que
isso acontece bom ainda bem que você
perguntou porque que eu acho porque tudo
que eu tenho aí para oferecer é achismo
aquilo que ele disse que a gente devia
ter menos assim entender código é
difícil o fenômeno de compreensão de
código é um fenômeno que a gente não
entende completamente certo então teve
um artigo publicado recentemente agora
em que preparou se para fazer um traçar
um paralelo entre a atividade de
compreender código e coletando os sinais
do cérebro da pessoa não lembro qual foi
o tipo de exame foi aquele que não
precisa entrar no tubo que bota um
capacetinho assim vários sensores é que
você comparou entender código com duas
outras atividades atividades de leitura
do texto mesmo embaixo natural e
atividades de raciocínio espacial
Oi e esse estudo específico sem entrar
nos detalhes Até porque eu não sei onde
é tarde é percebeu-se que entender
código tinha mais para pessoas novatas
não experientes novatas contexto é esse
tem mais a ver com o raciocínio espacial
do que a leitura de texto e assim só
mexeu no isso para enfatizar o pouco a
gente sabe sobre vem tu sabe verdade é
essa então ir aí eu acho que esses
trabalhos focados em métricas não tenho
nada contra eles eu faço também achei
interessante agora eles pegam as
métricas porque elas são fáceis de pegar
entendeu pega médica estrutural de
código
e é fácil é fácil de explicar é fácil de
medir é fácil de colocar no modelo o
negócio é estão olhando as pessoas tão
olhando para Factory e claramente
impactam legibilidade Mas isso não quer
dizer que você consegue só medir isso
diretamente de maneira linear quadrático
que quer que seja é fácil pensar nisso
pega um trecho de código grande elas em
pequenos ela mas não não trivial
Manguinhos filho em tentação mas é muito
mais difícil de entender
um tempinho acho que pouca gente
discordaria que vai ser muito mais
difícil entender Claro não sei que o
código não tem nenhum tipo de
alinhamento né claro que ele faltou do
nível só é uma coisa mas se ele tiver
algum tipo de alinhamento só esse mais
difícil entender não tem dúvida sobre
isso agora isso quer dizer que tem
diferença entre dois e quatro espaços
Não sei talvez não seis espaços um
espaço é provavelmente você bota 30 e
fácil vai ser ruim porque já vai ficar
de um jeito você não consegue ver a Sua
percepção especie espacial do código
está prejudicada não é o motivo de você
tem tentação tá sendo sabotado pela sua
indentação no caso como esse mas se você
sai de um extremo assim não é só uma
questão de medir o quanto tem ali sabe é
outro outro caso eu tô falando em
tentação que isso é uma das métricas que
é levado em conta em trabalhos como esse
outro exemplo o número de parâmetros
o certo é sei lá faz diferença ter um
dois três quatro parâmetros muito sabe
não muito não o suficiente para medir eu
não suficiente para ter um impacto em
fenômenos extremamente observadores se
você tiver 40 parâmetros 20 Parando aqui
que seja todos foram obrigatórios
provavelmente vai ser difícil mas a
maioria das funções não tem 20
parâmetros obrigatórios a vida real não
é assim Elas costumam ter muito menos
que isso o que não quer dizer que não
pode ter esses dias tá mexendo muito com
bandas né biblioteca para computação
ciência de dados em paz item é fácil
achar função lá que tem 10 15 20
parâmetros só que geralmente eles são
opcionais e você raramente precisa Então
quando você precisa entender eles é
porque você sentir necessidade de fazer
a coisa de outro jeito aí você vai lá e
procura sabe é não é não é a mesma coisa
de vou
quer dizer dos parâmetros mais difícil
em 13 a mais que 24 mais difícil e
triste com essas métricas também não
capturando certo então esse é o meu
achismo sobre esse tipo de modelo não é
que tá errado motor desvalorizando eu
acho que é super legal esse tipo de
trabalho de verdade você não tem por
cento honesto agora o fenômeno é
complexo e as métricas simples
frequentemente não são suficientes para
capturá-lo é o que eu acho bom eu queria
saber um pouco mais sobre a secreção das
métricas porque a tu falou da questão
das métricas estruturais né então tem
várias das médicas para os capturam
qualidade do código do ponto de vista
estrutural a que é uma coisa diferente
de completação de código só que a gente
já falou né Pois é o polimorfismo e
deixar as vezes mas o código mais
quebrado né mas modularizado pode
dificultar a compreensão
é do que um código monolith não pode ser
mais fácil de entender então tu acha que
tem assim às vezes um código bem
modularizado pode ser mais difícil de
entender e por isso essas mechas
procuram qualidade em termos cultural
não não estão de acordo com as métricas
e a métrica né que é subjetiva
assegurada desenvolvedores captura
compreensão não sei eu acho que entendi
eu acho que Pelo que eu entendi tem a
ver com aquilo que a gente tinha
conversado anteriormente sobre a
diferença entre na hora de fazer
evolução você entender o código e você
de fato mudar o código e talvez eu não
tenho eu não tenho uma opinião forte
sobre isso é essas métricas mesmo para
medir a facilidade de modificar
e como toda métrica elas são rack haveis
na Às vezes a semente não capturam de
fato que você quer tipo intuitivamente
faz sentido mas quando você vai ver não
tanto me vem à cabeça aquela métrica de
falta de coesão e operações entre
operações é ela faz todo sentido mas eu
eu vou olhar o que ela as coisas que ela
ponta como é que são problemáticas
quando eu vou olhar não tá tranquilo tá
bem então eu não tenho opinião forte
sobre isso assim do ponto de vista de
métricas é novamente as métricas são
capturadas que tem a ver com estrutura
né frequentemente não soma geralmente
têm são essas porque são fáceis de
capturar né porque esse a métrica é
muito difícil de capturar geralmente não
vale tanto a pena né de de usar mas é é
isso que eu vejo
e não tem opinião forte sobre isso não
além do que eu já entendi entendi e
falando um pouco mais de pesquisa né Tem
vários trabalhos atualmente que minaram
né repositório de código e eles pegam
códigos eles constroem algum modelo de
aprendizado e com base nisso eles fazem
recomendação para os desenvolvedores e
um exemplo é quando se recomenda o nome
de método que é algo relacionado por
compressão Então se mera o corre né se
constrói modelo de aprendizado e com
base nisso se recomenda o nome do código
e uma discussão a respeito disso daqui
isso é fácil que a gente tem uma
suposição de que os nomes dos métodos de
onde está se construindo esse modelo de
aprendizado na são bons nomes ou seja o
código que eu tô aprendendo é um outro
Qual é a sua opinião a respeito disso
não faz mais sentido a gente fazer
recomendação com base em boas práticas
tô aprendendo com base em código
existente que não necessariamente é bom
eu tenho uma opinião sobre isso sim é
antes de qualquer coisa só para
disclaimer eu sou um pouquinho cético
quanto ao uso Há muitos dos usos que eu
vejo e aprendizagem de máquina no
contexto de engenharia de software eu
acho que tá na moda tem muito Lorraine
Fruit né Tem tem muito resumo muita
coisa que ninguém nunca parou para olhar
então é fácil postei um modelo e lá e
testar E aí resultado dito isso eu acho
interessante esse tipo de trabalho é e
eu acho que enquanto a gente não tiver
um conhecimento melhor sobre Que tipo de
nome de fato é mais fácil entender que
vai além dos achismos sabe a gente
entender como é que o nosso cérebro
processa isso como é que a gente conecta
informação se
e baixos dos programas enquanto a gente
não tiver um entendimento melhor sobre
isso minha opinião pessoal é que as
pessoas que desenvolvem o sistema em
particular esqui revisão código que
entra no sistema são as melhores
especialistas sobre isso para aquele
contexto específico elas sabem melhor
que funciona porque o projeto tá andando
porque o sistema está implantado tem
usuários sendo demovido daquele jeito
Isso quer dizer que é perfeito Claro que
não quer dizer que não dá para melhorar
provavelmente não tô aí para nós dá para
melhorar mas é o melhor que a gente tem
hoje eu acho essa é a minha sensação
inclusive fazendo um pouquinho de
autopromoção sem vergonha eu tenho eu
acredito muito que isso aí é algo que
pode estar integrado ao sistema de
revisão de código
é muito mais do que um sistema para
quando a pessoa está construindo o
sistema né E é porque ele sabe qual é
uma coisa que as pessoas já fazem e é
uma situação das pessoas já usam botas
então é mais uma coisinha que o seu bot
vai fazer e um tanto acredito nisso que
uma longe doutorado que Oriente que o
dela Oliveira orientado com a Fernanda
madeiral Lá Dá Cá th da Suécia está
trabalhando justamente Nesse contexto aí
a ideia dele é construir um assim o
objetivo que ele vislumbra assim de
médio a longo prazo é construir um
sistema capaz de automaticamente
melhorar a legibilidade de um programa
durante a revisão de código isso pode
ser através de estruturas que mudam isso
pode ser através de nomes melhores ou
mais aderentes a padrões de nomenclatura
já existentes de fazer um pouquinho mais
de
é tão sem vergonha a gente está
organizando um workshop é eu a Fernanda
é o Felipe Hebert da Universidade
Tecnológica chegar envolvendo o Rocco o
evento e o Simone está abrindo lá da
Universidade de Bolonha na Itália a
gente está organizando um workshop que é
sobre melhoria automática de
legibilidade de código lá em Julho
ciumento galera desculpa início de
agosto que a gente vai interesse no tema
por favor sumida vai ser não é se é
altamente sofrem dinheiro em então é um
tema que eu acho bem empolgante Fernando
você tem que trabalhar do recentemente
com compreensão de código em Swift
daquela linguagem criada pelo pessoal da
uma grande empresa americana vou fazer
propaganda gratuita mas é fácil
descobrir por que é importante estudar a
compreensão de código ensue você acha
que essa o fato dessa linguagem tem uma
mistura de paradigmas de programação
a dificultar a compreensão de programas
em Swift eu vou começar a responder meu
pelo final eu acho que a mistura por si
só
e não Ou pelo menos Não mais do que
outras linguagem já que todas as
linguagens usadas na prática hoje a
certo talvez você são muito paradigma
todas as usadas amplamente vamos dizer
Java Java script Python né são igual a
gente muitos paradigmas mas sobre Swift
fica assim eu tenho história você não é
porque eu comecei a estudar Swift quando
ela não tinha nem um ano de vida ainda
ela tinha sido anunciada tinha seis
meses porque eu tava envolvido num
projeto com essa grande empresa que não
deve ser nomeada então nessa época
quando apareceu Swift e você gostou
envolver nesse projeto até hoje
importante mencionar nesse clima é
quando Swift apareceu ela era assim meu
Deus do céu que coisa boa porque a
alternativa é objeto desse
e eu não sei se você já Mexeram com o
défice Mas se você tiver pensando o dia
que eu estou muito feliz eu não quero eu
tô fazendo sofrer um pouquinho o que não
né Então você vai lá e programa um
pouquinho e Object onde é que se é uma
linguagem e só para dar uma ideia ela
aceita por exemplo e assim eu sei que
muita gente gosta de aquele se tá tudo
bem gente gosta de sulfite que isso
também é você não todo fez não sei é
mais assim em objetivo se você sabe o
que acontece se você tentar fazer uma
referência chamar um método a partir de
uma variável guarda no quê que vocês
acham que acontece o método que faz uma
referência ou variável que chama não tá
chamando o método nome do Mc lá qualquer
o que Java seriam o ponto M (fecha
parêntese sendo que o é no
o Calma a gente sabe o que acontece o
Lucky Patcher reception aquela pointers
sim mas sim Gabi já que se também vai
dar um algo parecido com o Pointer
Exception não acontece nada zero deve
silencioso completamente Imagine como é
depurar um programa escrito numa
linguagem dessa
e não é pronto é esse é o exemplo que eu
costumo usar para dizer então quando
apareceu Swift o pessoal queria resolver
um monte de problema de Beatrice ainda
mantém compatibilidade eles fizeram
trabalho na minha opinião incrível nesse
sentido é uma linguagem super explícita
pensada para que os erros sejam óbvios
né Para que E além disso ao mesmo tempo
pegando várias lições de programação
funcional para que programador não
tivesse por exemplo que escrever tipo de
variável que está sendo inicializada lá
como literal você não precisa escrever o
tipo uma variável com a ser visualizada
como literal então assim é uma linguagem
que foi pensada para ser bem organizada
quando eu comecei a trabalhar pela
debilidade de código que não é uma coisa
faz tanto tempo assim suíte que me veio
à cabeça porque alguns dos primeiros
artigos que eu parei para ler sobre o
assunto é um focado na linguagem C
Oi e aí que eu pensei foi vai legal isso
aí pô convincente eu tô tá parece
realmente aqui Só atrapalha na
facilidade entender código conhecer e se
eu pegar duas linguagens que são muito
diferente de ser tipo wi-fi que já me
script como é que vai ser Pronto foi daí
que eu comecei então comecei a trabalhar
com Swift elegibilidade de código em si
pensando nisso e inclusive voltando a
esse tópico já tinha falado de átomo de
confusão esses pequenos pedaços de
código que você consegue verificar que
que causam confusão de fato para os
quais tem uma alternativa que é menos
confusa Se você pegar os que existem ser
e o catálogo deixaram de ser e foi
transpor para Swift a maioria não existe
o construção da linguagem então isso me
deixou muito curioso né Isso você for
trazer para java script quase todos
tomar uns with por construção não tem
então assim o meu interesse isso isso
tem a ver com isso não tanto por ela ser
muito paradigma não
e parece também porque você pode ir
olhar sobre vários pontos de vista né
ela você pode olhar para coisas que são
específicas é de cada paradigma sem ter
que sair da linguagem né então só é isso
aí o trabalho esse trabalho está falando
Ah esse House with developers and West
Não é esse é outra coisa eu soube Swift
que é assim como disse uma pessoa sem
foco mas por muitos anos eu trabalhei
que só tá meio de sessões uma coisa
prazer que eu tenho algum foco é em
tratamento de exceções e é uma coisa que
me interessou em isso esse foi e de cara
ela não tinha um mecanismo de tratamento
de erros não é o pessoal pessoa não pô
programação funcional devolve o que Pajé
bico aí tá de boa só que o valor a gente
pode devolver o tipo não devolve o valor
de projeto se liga o PC informação sinal
diria né Fabi tipo mesmo mas enfim
devolve um valor de um tipo algébrico a
isso
a unidade reclamou muito exibido na é
para acompanhar vai teve muito pedido
para ter algum mecanismo mais parecido
com tratamento de exceções E aí fizeram
umas coisas lá na linguagem que eu achei
que fica muito mais assim pois é
interessante porque Java é uma linguagem
muito criticada e de outras coisas já já
daquele cara pelo mundo todo por ter
exceções checadas é a única linguagem
popular e pensa antes e cada um Swift
Eles colocaram negócio que é um meio de
caminho eles não tem aquela parte que é
meio irritante dessa são checados quero
te dizer todos os tipos lá né que é um
pesadelo para evolução Não é porque eu
tava na graduação que eu tava
trabalhando na iniciação científica Eu
lembro que a gente tá olhava com
parceiro para Java e eu lembro que a
certa altura causa dos processamentos
que a gente faz aí para nós em Java eu
tive que acrescentar um exceção nova na
assinatura de um método fazer
processamento
oi oi sintática O problema é que é tipo
o sem classes diferentes que fazer o
processamento de norte da árvore
sintática e todos eles podiam estar lá
eu queria que sair atualizando uns em
lugares diferentes um tipo novo de
exceção é por isso que o pessoal reclama
de Java eu entendo Total nesse sentido
isso interessaram não já função pode
falar um erro isso vai estar indicado na
assinatura Mas a gente não disco é o
tipo para não ter esse problema tem sido
usadas mas essa eu achei que é um bom
compromisso assim na prática mas eu quis
ver como é que desenvolvedores usavam de
verdade tratamento de erros em código
Swift e assim como o tratamento de erros
e muitas outras linguagens é deprimente
é triste assim que pressa engolida para
todo lado assim como você pode colocar
um tratador genérico lá que se mente
Cala a boca do compilador aí o que mais
se usava não foi muito surpreendente não
mas é o
e eu falo de disso elegibilidade é de um
artigo vem publicou nuvem e um estudo
que a gente conseguiu depois que eu
nunca publiquei para falar a verdade
faltou energia minha mãe desse trabalho
de eu já tinha comentado a respeito de
revisão de código pode tu também tem um
trabalho sobre confusão revisões código
pode falar um pouco mais sobre esse
trabalho e qual a relação de errado com
relação à compressão de código Esse
trabalho é a origem foi o trabalho de
doutorado do fillipe Herbert né que hoje
tá na cidade tecnológica desenvolvem
é basicamente a gente resolveu estudar
revisão de código porque o Felipe se
interessou por isso eu sugeri na época
do outro lado dele ele se empolgou
ouriço pessoas em Foco não trabalhava
nada ligado a revisão de código mas eu
posto negócio interessante eu pessoal
usa de verdade né legal legal aí a gente
começou a estudar isso E aí o Felipe
enveredou por esse caminho porque a
gente queria em inicialmente pensar
sobre em termos de aprendizado
entendimento mesmo têm maneiras de
explicar melhor aquilo de falar mais
sobre aquele trabalho filosófico até
depois a gente trouxe isso para
compreensão de código meu trabalho mais
recente é não focar em revisões Mas aí o
Alexander lá no aniversário de genro ele
também que foi coorientador do Felipe é
pensou nisso não porque que ele vai te
falar sobre o entendimento a gente não
fala sobre o contrário disso né sobre
não entender a gente não tentar analisar
revisões de código não sobre o que é que
torna ela
é fácil de entender mas que torna mais
difícil de entender e aí a gente foi
olharem um monte de áreas diferentes e é
pegou material de Educação de novamente
a educação Psicologia para caracterizar
De que maneiras desenvolvedores Ester
não é confusão e confusão um sentido
amplo né não é só ficar meu Deus eu tô
desorientada oriental não é mais amplo
durante revisões de código nesse
processo a gente viu que muitas vezes o
problema tem a ver com código Zinho
mesmo assim a pessoa tá lá olhando e
caramba pessoa não entendeu direito
realmente o revisor não entendeu direito
o pet Ou acha que o pet está muito mais
obscuro do que precisava ser mais
complicado do que eu precisava seu menos
bem documentado o que precisava ser E aí
a partir daí foi que eu comecei a você
Oi gente nessa lá a gente quatro anos
três anos que eu comecei a me interessar
mais por compreensão de código porém foi
a partir de revisões de código porque
embora você quando você vai olhar
trabalho sobre revisão de código o
pessoalmente a revisão de código é
crítico é fundamental você acha muito
bug você acha vulnerabilidade você
transfere conhecimento Olha eu posso ser
um cético vai ter um monte de gente que
vai ouvir este podcast Chamas popular do
qual sou o vídeo regular importante
mencionar é mas que vai ver se pode quer
fazer e é isso mesmo revisão de código
isso mas assim Minha experiência que é
só minha tá é de que geralmente revisão
de código é para deixar o código mais
legível ou mais organizado ou mais
aderente a padrões geralmente é isso na
minha na Minha experiência é opinião a
experiência no que eu já vi
A grande maioria dos comentários é sobre
isso sabe no máximo o macho exagero mas
assim frequentemente também é porque
você fez isso Qual é o seu raciocínio
para ter que polido essa solução em
detrimento dessa outra ou por quê que é
você não usa essa solução aqui que
parece mais eficiente do que essa que
você usou o máximo vai até aí geralmente
tem a ver com questões ligadas a
compreensão seja o que a pessoa entendeu
o código seja o que a pessoa entendeu as
motivações de quem escreveu ocorre certo
então seria natural e nesse sentido
Fernando a gente está chegando ao final
da nossa entrevista e eu vou fazer para
você a pergunta que é pergunta
característica do nosso podcast para
você qual é a próxima fronteira da
engenharia de software Essa é sem dúvida
a pergunta mais difícil de se podcast
Sem dúvida é e eu vou cair no lugar
comum de dizer que eu não sei fazer para
se você não gosta de fazer previsões em
como acho que quase todas as pessoas que
foram entrevistadas fizeram até agora é
então assim eu não tenho previsão ainda
fazer agora eu acho que tem certas
coisas em particular relativas a como a
gente entende código que como a gente
realiza parada geral não são entender
código que a gente ainda não eu tenho
muito trabalho sobre fatores humanos em
engenharia de software mas eu acho que
tenho um lado aí de fatores humanos de
que tem a ver com transferência de
tecnologia com construir ferramentas que
tem mais a ver com como a gente pensa
com os vieses que nós temos que eu acho
que isso talvez esteja faltando um pouco
para Nós pensamos nós pesquisadores
pesquisadores na área de engenharia de
software Então eu queria ver mais isso
eu queria Pronto tem que ter um teve um
trabalho sobre isso que eu achei muito
legal no esqueci desse ano eu consigo
melhor vi
eu esqueci o nome do artigo mas tanto
trabalho que era sobre é um dos vieses
que o Daniel kahneman fala sobre naquele
livro dele é rápido e devagar em inglês
é sempre em festa do Sol que é o não sei
como é que em português em dois é
incluem efect né que quando a pessoa tem
que dar uma opinião sobre uma coisa e
ela antes houve uma outra opinião ela
atende dar uma opinião mais próxima
daquilo do que ela daí é normalmente
então achei muito legais eles
verificaram sobre eles fizeram isso no
contexto específico de compreensão e
código E aí eu quero esse descobriram
foi que a pessoa tem que dar opinião
a opinião é parecida com a nota que
aparecia lá antes sobre dificuldade é
porque o que aparecer no trecho de
código e essa é difícil esse é fácil e a
opinião da pessoa não realmente estava
muito fortemente relacionada com o nível
dificuldade que aparecia por outro lado
quando a gente olhava quando os
avaliadores a gente não fui eu que fiz
mas quando as pessoas que estudaram isso
paravam para olhar se o resultado dessa
pessoa ao estudar o código de uma
relação com essa nota naquela demorava
mais ou se ela previa incorretamente o
código faz não tinha então eu queria ver
mais isso aí mas não só os estudos
estudos são Super Interessante mas como
é que isso influencia os movimentos
software que grande parte do que a gente
faz bater nessa tecla de novo é achismo
a gente não sabe a gente quando eu
comecei estudar desde bilidade código o
que mais me interessou eu não quis
e pensam de código geral e no campo a
legibilidade do código especificamente a
coisa que me chamou atenção foi com
pouco a gente sabe sobre por exemplo 20
olha para construção de baixo
programação sobre o que que torna o
código mais fácil difícil de entender eu
achei que essa altura a gente ia ter
literatura ainda assim aí a gente nunca
consegui terminar de estudar literatura
de tanta coisa que ia ter e o que
bastante decepcionado com isso
Tá certo então eu queria eu queria mais
decidido e em particular levando em
conta os nossos vieses inconscientes e e
como eles impactam nossas atividades de
movimento do Sol é isso ótima resposta
eu vou deixar o link na descrição do
episódio Eu acho que o artigo que você
tá falando é demais is a powerful place
has shown in Cold comprehensibility
Matrix influences could understand
Exatamente esse e o vídeo é o melhor
vídeo com Vinícius incluindo que nos
Maravilha vou eu vou procurar esse vídeo
colocar também na descrição Muito
obrigado Fernando Foi um prazer
conversar com você e eu deixo a Palavra
Final para você para você falar sobre
como foi sua experiência aqui
entrevistado no fronteiras
a retórica de chance super honrado super
feliz não é todo dia que você tem a
oportunidade de ser entrevistado em um
programa que você ouve que você é fã tá
lá no meu filho quando chega eu vou vir
normalmente na mesma hora então fico
super um raio é o mesmo princípio que eu
sigo para congresso eu quero submeter
por lugares cujos papers Eu leio a
imagina ser entrevistado para o podcast
que eu ouço super um rabo super feliz
agradeço demais pela oportunidade de ver
que conversar com você isso e falar
sobre o trabalho também né que termina
sendo um trabalho em uma diversão
agradeço demais obrigada por todas as
suas contribuições bom então com isso a
gente acha mais um episódio do
engenharia de software hoje a gente
contou com o Fernando com as outras
pessoas da UFPA então muito obrigado
pela audiência de vocês que está nos
ouvindo
e até o próximo episódio tchau tchau
tchau
o Olá obrigado por escutar o Fronteiras
da engenharia de software nossa equipe é
formada por Adolfo Neto eu Fernandes
Fábio petrillo Gustavo Pinto Danilo
Monteiro Ingrid Nunes estamos no Twitter
e no Instagram como arroba fronteiras e
essa até o próximo episódio abraço
E aí