Postagens

Como mudar de casa pode te ajudar a migrar o sistema?

Imagem
Na vida, sempre chega aquele momento em que a casa fica apertada, os cômodos já não comportam as pessoas, a vazão dos corredores e halls diminuem... Ou simplesmente você mudou de vida. Juntou as escovas de dentes com alguém e chegou o momento de mudar de casa. Antes que você pergunte: Sim, este post é sobre tecnologia. http://static1.squarespace.com/static/59e8df17f09ca4b0341f35b0/59e8e981b1ffb6c44311e2be/5b8ce65cb8a045c95eb5b157/1537007637140/Moving+Day+3_0.jpg?format=1500w Recentemente me casei e estamos há quase um mês arrumando a mudança. A cabeça do desenvolvedor não desliga, está sempre compilando. E eu percebi alguns pontos de contato muito interessantes entre a mudança (de casa) e a migração de um sistema para uma nova linguagem. Quero compartilhar alguns insights sobre o assunto com você. O que define o Software? Na sua rua pode ser que muitas casas acendam a luz à noite. Pode ser que abaixo ou acima de você, outros apartamentos estejam construídos. Mas entre todas ...

Entregue mais de 300 tarefas no prazo utilizando PERT/CPM

Imagem
No post anterior descobrimos como a Matriz de Dependência pode nos ajudar no processo de planejamento das tarefas. Também vimos que ela gera insumos importantíssimos para o PERT/CPM. Mas que dupla é essa, afinal? [http://www.cemeai.icmc.usp.br/images/noticias/pde_grafos_pre/grafos.jpg] PERT/CPM são duas metodologias utilizadas na gestão de projetos. Comumente utilizada em projetos mais estáticos - como na área da construção civil, por exemplo - elas ajudam a gestão a identificar pontos de atenção e a gerenciar os recursos. Principalmente o recurso tempo. Preciso dizer que estou explicando bem por cima (e apenas a parte que nos é interessante) esta metodologia. Se você pesquisar mais - ou for aluno ou aluna de engenharia de produção - vai encontrar mais material falando sobre os cálculos possíveis de serem feitos à partir dos dados extraídos desse gráfico. Médias, desvios padrões... É aqui que as suas aulas de cálculo serão bem empregadas. As duas metodologias são muito parec...

Entregando no prazo com a Matriz de Dependência

Imagem
Você tem aquele backlog imenso. O P.O. já fez a priorização. Mas na verdade, ele priorizou apenas as features. Quando você olha o kanban mais de perto, percebe que há trocentas stories a serem feitas dentro de cada feature. E aí? Qual você começa primeiro? É sobre isso que vamos falar hoje. https://www.trace.com.br/sitenovo/wp-content/uploads/2018/08/productivity-780x448.png Matriz de dependência Umas das piores situações durante o desenvolvimento é você descobrir que aquela story que você acabou de desenvolver depende de uma outra que ainda não está pronta. É como se você tivesse construídoo décimo quarto andar de um prédio e só então descobrisse que não existe ainda o 13º. A matriz de dependência ajuda você a ter essas informações de maneira rápida e visual. Dentre os seus benefícios esta o auxílio no elenco das stories para a sprint. Ao invés de simplesmente selecionar o que cabe na sprint, a matriz te apoia a selecionar as stories de maneira mais inteligente, evitando que...

A arte de programar: Você acha que o dev é um artista?

Imagem
Em um dia desses, enquanto digitava códigos no ritmo da batida do heavy metal, comecei a pensar a respeito do meu trabalho. O que é o trabalho de programador? Quando se trabalha em empresas menores, você acaba acumulando funções. Você é o consultor , que não raramente, acaba sabendo mais do negócio do que o próprio cliente. O programador também é o analista . Afinal, quem melhor para descrever a automatização? A lista de personas que o programador assume durante os ciclos de desenvolvimento do software — quer sozinho, quer em grupo — é extensa. Contudo, hoje quero focar na parte artística. Sim! O programador é um artista. Bom, pra falar a verdade, talvez esse título seja pesado demais para alguns. Apesar disso, gostaria de justificar a minha afirmação. Você já viu um quadro o Kandiski? O movimento artístico chama-se abstracionismo. Se você não conhece, trata-se de um movimento que representa figuras abstratas. É aquele que é um pouco mais difícil de ser compreendido que o cub...

Records, memória e RTTI

Imagem
No artigo anterior eu falei um pouco sobre como os Records podem ser uma mão na roda. Mas e como a memória é gerenciada com ele? Como devo trabalhar com a Rtti? Grave bem essas perguntas! Gerenciamento de memória Um dos fatores que tornam os Records tão práticos é o fato de, ao saírem do seu escopo, são automaticamente liberados da memória. E ao se tornarem “tipos gerenciáveis” (por favor, reparem nas aspas), ficaram ainda mais poderosos. Barry Kelly fez um pequeno experimento para exemplificar este poder (clique aqui para abrir o site dele) . Um fato que me preocupou durante as pequisas que fiz, foram algumas afirmações que o gerenciamento de memória do record não era boa. Que ao ser passado por parâmetro, era feita uma “cópia do record na memória”. Isso me deixou bastante preocupado. Se eu utilizo um record como DTO, ao transitar por entre métodos (e quem pratica o clean code escreve bastante métodos), eu teria cópias e cópias de objetos pesados em memória. Mas a coisa não é...

Record, operadores e uma mão na roda!

Imagem
Record é uma das estruturas de dados mais simples, desde o pascal, que foi turbinada na Delphi language: Agora suporta propriedades, métodos e seu controle de visibilidade e… OPERATOR OVERLOADING! Vamos falar sobre Records Como eu já disse, são estruturas de dados bem simples. E com a vantagem de que é automaticamente destruída assim que se atingir o fim do escopo. O gerenciamento da memória utilizada também é rápida, uma vez que ela vai direto pro stack — que é bem mais rápida que a heap. As novidades que a Delphi Language introduziu nos records, além de expandir as possibilidades com esta estrutura, também possibilitou “resolver” um problema comum com os tipos inicializados à partir da stack. Neste setor da memória, as variáveis não são inicializadas. Portanto, você pode ter inteiros com valores aleatórios, variáveis de objeto apontando para um fragmento de memória qualquer e Records com o mesmo valor da última chamada (geralmente acontece quando o tipo de retorno da variáve...

Home Office funciona?

Imagem
Que a internet vem quebrando barreiras, todo mundo já sabe. Mas será que ela já quebrou as barreiras do escritório? Basta ver a quantidade de vagas disponíveis para perceber que a demanda por bons profissionais, na área de T.I., é grande. Ainda que cursos (universitários ou não) estejam cada vez mais acessíveis, as empresas estão ávidas por bons profissionais. Eu gosto de enfatizar o “bons”, porque para falar bem a verdade, existe sim uma certa disponibilidade. Mas poucos são os realmente bons. Qual o perfil do profissional? Já falei antes sobre as qualidades de um bom desenvolvedor. E além dos requisitos básicos de um desenvolvedor (o mínimo para você ser contratado), é preciso um pouco mais. O bom profissional é proativo, comunicativo, responsável e comprometido. Essa qualidades, no meu ponto de vista, são imprescindíveis para quem anseia por trabalhar Home Office. Em casa não haverá um patrão dizendo a todo momento o que você tem de fazer. Aliás, este comportamento não é ac...

DDD, o que [não] é?

Imagem
Uma noite dessas, assisti uma palestra sobre TDD. O palestrante não parava de falar, no entanto, sobre como DDD facilitava o controle da persistência dos dados. Como queria escrever um pequeno framework de persistência, não tive dúvidas: Comprei um livro e comecei a estudar. O que descobri foi interessantíssimo. DDD não tem nada a ver com isso. Pelo menos não principalmente. Talvez a melhor forma de entender o que é o Domain Driven Desing, é tentar colocá-lo numa estante de livros. Ao lado de que livro você colocaria o livro de DDD? Desing Patterns Não importa a linguagem, você pode implementar os padrões de projeto para resolver problemas cotidianos. Eles são soluções já testadas e amplamente utilizadas pela comunidade de desenvolvedores. Como o próprio nome diz, eles são padrões. Como se fossem uma forma inicial, da qual você pode derivar novas implementações. Nem todo builder, por exemplo, necessita de um director. O que revela algo importante: Os Design Patterns são padr...

O lugar da mulher na TI

Imagem
Margaret Hamilton ao lado do código fonte do programa que levou o homem à Lua. As discussões de gênero e o feminismo tem levantado debates que questionam o status quo. O efeito vai desde a conscientização de algumas mentes até a hermetificação de outras. Será que a área de TI, que se gaba de seu espírito vanguardista, de constante atualização, tem se atualizado também nas questões de gênero? É possível que não. Na busca por culpados, em primeiro lugar vem a própria sociedade. Esta reforça estereótipos machistas, escondidos sob o manto da “naturalidade”. Afinal quem nunca ouviu: “a mente da mulher não é tão lógica quanto a do homem”? São construções sociais como estas que tem feito com que apenas 16% das pessoas que trabalham com TI se declarem do sexo feminino. Isso em um universo numérico em que as mulheres representam mais de 50% da população nacional. Qual o motivo? Apesar da história da computação ter eternizado o nome de várias mulheres brilhantes, TI se apresenta como...

Builder, pra quê te quero?

Imagem
Que os Padrões de Projeto (GoF) são uma mão na roda, todo mundo sabe. Mas que nunca olhou para este ou aquele padrão e perguntou “Quando é que eu vou precisar desta bomba”? Minha proposta é te ajudar a responder esta pergunta (ou não). Hoje vamos começar pela padrão Builder. Na DB1 Global Software, empresa em que trabalho, estamos participando de um jogo chamado “mestre dos códigos”. Entre as tarefas deste jogo está o uso de alguns padrões de projeto e também de teste unitários. Então em pensei: por que não usar os dois? Faço essa pequena introdução pensando nas pessoas poderiam perguntar: mas por que você não usa framework para mockar os objetos? Oras, porque eu queria usar builders! Story A proposta era criar um componente onde o cliente pudesse informar colunas, tabelas, condições, junções e etc. Ao final do processo, o componente teria de ser capaz de gerar SQL de acordo com as informações inseridas. Indo um pouco além, me propus que este componente pudesse gerar SQL pa...

Como ser um programador profissional? (ou como deixar de ser o sobrinho)

Imagem
Nós desenvolvedores odiamos os “sobrinhos” não apenas porque eles destroem o mercado, cobrando mais barato pelo trabalho. Mas porque, geralmente, eles arrumam emprego e daí somos obrigados a dar manutenção no código deles. O que nos leva a seguinte pergunta: Você odeia o sobrinho, mas será que você não programa como um? so·bri·nho (latim sobrinus, -a, -um, primo direito) substantivo masculino Indivíduo que cobra baratinho para fazer aquele programinha ou sitezinho. Martin Fowler, em mais de um dos seus aforismos geniais, disse: “Qualquer idiota pode escrever código que um computador entenda (…)” Fazer código, juntar blocos, fazer as coisas funcionarem é, de modo geral, fácil. Mas nenhum profissional escreve um programa apenas para funcionar. Isto é o mínimo que se espera dele. Um profissional escreve um programa para dar lucro. E não importa qual é o seu modelo de negócio, você sempre passará mais tempo fazendo a manutenção do software do que o escrevendo de fato. E o tem...