Início de Carreira em Programação

Quanto tempo leva para alguém estar apto ao primeiro emprego em programação? Poucos meses ou vários anos? Resposta curta: alguns anos. Software é mais parecido com Engenharia Ninguém espera que um engenheiro, médico ou advogado se forma em um curso livre de algumas horas. Muito menos contrataria um profissional atuante no mercado há meses. Software,… Continuar lendo Início de Carreira em Programação

publicado
Categorizado como Carreira

Https em localhost + https no docker + webpack

Precisei trabalhar com uma integração com iframes e login que envolvia o uso de cookies configurados como “SameSite=None; Secure”. Escrevi sobre isso neste outro artigo. Para trabalhar com esta abordagem era necessário um ambiente com https. E podem existir outras razões pelas quais você precise testar algo em ambiente local com https. Este artigo descreve… Continuar lendo Https em localhost + https no docker + webpack

publicado
Categorizado como Software

Ler

Aprendemos a escrever depois de aprender a ler. Programação ainda é uma das poucas disciplinas em que se insisti que o ideal é começar escrevendo, ao invés de começar lendo. Como professor de programação posso garantir que o ideal ao aprendizado e começar lendo e realizando pequenas modificações e de tempos em tempos, desenvolver desafios… Continuar lendo Ler

publicado
Categorizado como Carreira

Ser pai e programador no início da carreira

Ser um profissional de programação, engenheiro de software, arquiteto, developer, como quiser chamar, tem algumas características profissionais mais específicas, como: Exigir alto, diário e constante nível de trabalho mental; Comunicação frequentemente estruturada e muito uso diário de linguagem formal; Muita dedicação a estudos e projetos para se manter atualizado com novas tecnologias, métodos e frameworks;… Continuar lendo Ser pai e programador no início da carreira

publicado
Categorizado como Carreira

Testes Automatizados

Devo criar testes automatizados?Sim, testes automatizados são a única forma realmente segura de provarmos que nosso código funciona. É fantástico para manutenção, refatoração e especialmente para a experiência de trabalho do programador. Devo testar 100% do código?É algo que se deve ser perseguido sim, não como utopia, pois é possível sim alcançar 100% de cobertura… Continuar lendo Testes Automatizados

publicado
Categorizado como Software

Código, cliente e qualidade

Temos linguagens, tecnologias, padrões arquiteturais, processos, ferramentas. Temos incontáveis formas de entregar código em produção. Desde de um desenvolvimento dirigido à testes com integração contínua em ambiente distribuído até um arquivo modificado e que sobe para produção via FTP. No fim do dia, o que importa é código funcionando em produção, aceito pelo cliente e… Continuar lendo Código, cliente e qualidade

publicado
Categorizado como Carreira

Infraestrutura de Produção

Já subi aplicações para rodar em produção de diversas maneiras: FTP, servidor próprio (máquina virtual), PaaS e Serverless. Muito do que aprendi aqui foi mérito de outras pessoas que trabalhavam comigo e que implementaram as soluções que eu ajudei a nascer e manter. Segue neste texto alguns aprendizados sobre os benefícios e desvantagens de cada… Continuar lendo Infraestrutura de Produção

publicado
Categorizado como Software

Código in English or Português?

Certa vez elaborei uma argumentação detalhada sobre usarmos código em português em uma empresa que tinha um domínio jurídico bastante específico. Me arrependi! A ideia final era tentar preservar os padrões mais claros em inglês como “findBy“, “Factory“, etc. E no restante do código usar português para melhorar a legibilidade. Funcionou, o código está lá… Continuar lendo Código in English or Português?

publicado
Categorizado como Software

A posição política dos seus colegas importa?

Não de forma absoluta.Sim de forma relativa.Lidar com a diversidade de pensamentos é um PRIVILÉGIO entre pares. Explico. 3 Tipos de Relação Enxergo três formas de relação. Relação pai/filho (superior/subordinado); Relação irmão/irmão (colegas, pares, mais ou menos distantes); Relação filho/pai (subordinado/superior). Cada uma destas relações tem uma dinâmica própria de trabalho e de desafios. A… Continuar lendo A posição política dos seus colegas importa?

publicado
Categorizado como Carreira

Demitir

O pior momento da minha vida foi quando precisei demitir um time que liderava por conta de uma decisão entre os investidores e os sócios da empresa onde eu trabalhava. Eu amava e ainda amo aquelas pessoas. Trabalhar com elas foi a experiência profissional mais alegre e vibrante da minha vida. Até hoje me dói… Continuar lendo Demitir

publicado
Categorizado como Carreira

Scrum

Eu realmente gosto muito de Scrum, embora reconheça que é provável que eu nunca mais o utilize na minha vida profissional. Scrum é como a primeira namorada ou primeiro namorado 🥰. Você amou um dia, provavelmente vai lembrar dele para toda a vida, mas muito, muito provavelmente, não será pra sempre 💔. Explico melhor… Scrum,… Continuar lendo Scrum

publicado
Categorizado como Software

Vivenciar ciclos completos

Hoje eu tenho um sentimento estranho e razoavelmente preciso de que um projeto precisa de 9 meses para nascer. 🤰🏿 Tenho dois filhos. E devo dizer que sempre me impressiona quando lembro que levam 5 anos para uma criança cuidar do seu cocô sem nenhuma ajuda dos pais. 👶👶💩 Construir algo significativo leva tempo. E… Continuar lendo Vivenciar ciclos completos

publicado
Categorizado como Carreira

PHP

PHP é a linguagem de programação sobre a qual eu consegui construir o sustento financeiro da minha vida. É a linguagem com a qual é construí pelo menos 7 tecnologias que fizeram alguma diferença positiva na vida de alguém. Eu devo muito ao PHP. PHP é a melhor linguagem que existe? não. PHP é a… Continuar lendo PHP

publicado
Categorizado como Software

A fase da vida aos 20 anos

Ter 14 anos é diferente de ter 21.Programar aos 22 não é a mesma coisa que fazer isso aos 31.A vida humana é repleta de ciclos e fases. Aos 20 anos estamos pela primeira vez diante de uma liberdade real de escolher nosso destino. É uma fase de poder sonhar e ir em busca deste… Continuar lendo A fase da vida aos 20 anos

publicado
Categorizado como Carreira

Princípios universais sobre teste de software

https://www.thoughtworks.com/insights/blog/testing/seven-guiding-principles-testing

A autora, Gayathri Mohan, elenca princípios universais sobre testes na indústria do software. Ela é escritora do livro Full Stack Testing. Não é sobre técnicas e ferramentas, mas sobre uma maneira de pensar. Segue um breve resumo:

  • O usuário final é seu melhor amigo. Geralmente estamos focados em requisitos de negócio e implementações técnicas, alguém precisa sustentar as necessidades do ponto de vista do usuário final;
  • Testes no nível micro e macro. Os testes precisam ocorrer desde o nível pequeno, os testes unitários ou de integração até os macro testes funcionais;
  • Feedback o mais rápido possível. Quanto antes se descobre um erro melhor. Práticas como pirâmide de testes e execução de testes de integração na maquina de desenvolvimento vão ajudar a localizar algo que talvez somente surja em produção;
  • Feedback contínuo. Manter o processo de testagem ocorrendo com frequência é fundamental, e de novo, a pirâmide de testes é citada como forma de lidar com as questões de performance;
  • Quantifique qualidade. Ter métricas de medição tanto do número de bugs como sobre a própria base de código são úteis. Ela cita algumas no texto principal.
  • Comunicação e colaboração. O trabalho de garantia de qualidade exige conhecimento em áreas técnicas e de negócio. A comunicação pode ser feita através de cerimônias em processos tradicionais, mas bem documentada em artefatos multimídia;
  • Prevenção de erro é prioritária à detecção de erro: Falhas em software podem evoluir muito rapidamente para mudanças arquiteturais importantes não vistas antes pela equipe. Isso aumenta muito o custo do projeto.

Sobre CSS

Anotações e recursos sobre CSS. CSS é complexo, para estar profundo na matéria é importante entender os principais conceitos, as principais especificações oficiais, como está o suporte pelos navegadores de internet e ajuda ter uma perspectiva de futuro. Devo usar CSS 1, 2, 3 ou 4? Resposta curta: Use CSS 2.1 e módulos específicos estáveis… Continuar lendo Sobre CSS

publicado
Categorizado como Software

analisando a sugestão oficial para adicionar a linguagem de uma página web, e especialmente em dúvida sobre usar “pt-BR” ou “pt_BR”, descobri que o certo na verdade, hoje, é usar apenas “pt”.

A linguagem de uma página não é seu país, é sua língua. Quando analisamos na lista de variações possíveis de língua definidas aqui, fica claro que o “pt-BR” se refere à língua utlizada no Brasil ANTES do acordo ortográfico da língua portuguesa.

Repare no final em “used in Brazil until 2009”.

Com o novo acordo ortográfico, a língua escrita será quase sempre a língua portuguesa conforme acordo oficial:

Repare em “into effect until 2009”

Existem mais informações sobre como escolher a linguagem, mas no caso do Brasil me parece que é simplesmente “pt” mesmo porque não existem variações ortográficas oficiais estabelecidas, como um dialeto do Ceará ou de Florianópolis por exemplo. Diferente do que ocorre em países com dialetos realmente não inteligíveis entre si como a China ou Índia.

Uso de Web Fonts

Este artigo reúne algumas anotações sobre o uso de @font-face em sites para permitir o uso de fontes independentemente do usuário tê-las carregadas no sistema. Compreensão Geral A base das explicações sobre o uso de @font-face, e sempre um ótimo lugar para começar é a W3Schools. No link abaixo é explicado o básico sobre a… Continuar lendo Uso de Web Fonts

publicado
Categorizado como Software

Dados de Nascimentos e Mortes no Brasil

Aviso: Tutorial para programadores Atuo muito com dados pela Datapedia. Hoje descobri como acessar dados detalhados de nascimentos e mortes no Brasil. É um pouco confuso o acesso via Datasus, mas segue o passo a passo: Site para acesso aos arquivos Acesse o site do Datasus: http://datasus.saude.gov.br/ e na seção “Serviços ao Cidadão”, acesso o… Continuar lendo Dados de Nascimentos e Mortes no Brasil

publicado
Categorizado como Software

Heurísticas sobre software ágil (tradução)

Allen Holub publicou uma série de heurísticas sobre sua visão atualizada sobre o Manifesto Ágil. De forma geral, ele reforça e endossa o manifesto, ajustando a linguagem para um formato mais atual e adicionando alguns elementos próprios. Eu resolvi traduzir aqui as heurísticas porque elas reverberam com minha prática. E traduzir é uma forma de… Continuar lendo Heurísticas sobre software ágil (tradução)

publicado
Categorizado como Software

Sobre Domain Driven Design

Domain Driven Design prioriza o negócio, me estimula a criar um código com maior cobertura de testes e melhor divisão de responsabilidades. Este artigo apresenta anotações e conclusões da minha caminhada com DDD até aqui e estará em constante aperfeiçoamento: Executar DDD exige habilidade com testes unitários; Equilibrar performance e DDD É difícil; Disciplina para… Continuar lendo Sobre Domain Driven Design

publicado
Categorizado como Software

Sobre React, Preact, Flux e Hooks

​Programação reativa dominou o cenário front-end, mas não é sobre um motor de templates html mais eficiente, é sobre pensar o fluxo das aplicações de forma muito diferente, compreendendo melhor o tráfego de dados entre as interfaces. Neste artigo apresento minha revisão dos fundamentos que originaram o React e o Redux, com um olhar conceitual,… Continuar lendo Sobre React, Preact, Flux e Hooks

publicado
Categorizado como Software

Sobre culpar

Ninguém tem culpa pelo que está acontecendo com você agora, nem o atual presidente, nem o antigo, nem o dev, nem o PO, nem seu pai, nem sua mãe, nem mesmo você. Mas é claro que todas as suas relações te afetam e as ações das pessoas que te rodeiam geram efeitos em você. Acredito… Continuar lendo Sobre culpar

publicado
Categorizado como Carreira

Sobre escolher

Frequentemente sinto insegurança. Quando a vida chama para um novo momento, especialmente profissional, eu sinto dificuldade de encarar um novo caminho. Crio ilusões de fracasso total, imagino-me como incompetente, meu estômago afunda e no meu melhor pensamento, sou uma fraude. Talvez por sorte, falta de opção ou quiçá um tanto de coragem, sigo em frente,… Continuar lendo Sobre escolher

publicado
Categorizado como Carreira

Sobre menosprezar

Tenho encontrado pessoas incríveis na vida, programadores, empreendedores, designers, pessoas excepcionais. Muitas vezes tento diminuí-las com meus julgamentos para me oferecer uma sensação de superioridade. Imagino que todo o mérito de sucesso destas pessoas incríveis vem de suas origens familiares mais ricas, oportunidades de estudo, a escolha de não terem tido filhos ou terem casado… Continuar lendo Sobre menosprezar

publicado
Categorizado como Carreira

Sobre errar

Quando desenvolvo um software e alguém não gosta, é um erro? Quando uma tela projetada não funciona no Iphone, é um erro? Quando atraso dois dias uma estimativa, é um erro? Minha critica interna é dura, sinto-me mal nas situações acima. Mas é injusto esse peso, não é saudável. Todo desenvolvedor de software em algum… Continuar lendo Sobre errar

publicado
Categorizado como Carreira

Sobre API RD Station

Anotações sobre integração OAuth com API RDStation Marketing para simples envio de leads para o RD através de um software externo. Este artigo foi escrito em 17 de abril de 2020. As coisas podem ter mudado. Aqui está a documentação oficial. Tive dificuldades de compreender diversos elementos. Minha maior dificuldade foi compreender o fluxo de… Continuar lendo Sobre API RD Station

publicado
Categorizado como Software

Aprendizados Amazon MySQL Aurora

Este texto organiza alguns aprendizados no uso do serviço da Amazon Aurora MySQL que utilizo em produção em um projeto importante já há alguns anos. Por que escolher o Aurora MySQL? O projeto é uma plataforma com uma base de dados muito grande. Era importante que o custo de armazenamento fosse baixo e sem limite… Continuar lendo Aprendizados Amazon MySQL Aurora

publicado
Categorizado como Software

Aprendizados PHP com Heroku

Este texto contém alguns dos aprendizados que obtive ao usar o Heroku como plataforma de infraestrutura de um importante projeto em produção. São anotações soltas de pontos específicos sobre o uso da plataforma, possivelmente úteis para quem está avaliando essa opção e precisa de mais informações. Limite de 30 segundos https://devcenter.heroku.com/articles/http-routing#timeoutsTodas as requisições possuem um… Continuar lendo Aprendizados PHP com Heroku

publicado
Categorizado como Software

Sobre como dizer não (para programadores)

A relação entre programadores  e “chefes” é historicamente tensa, apesar de ser fundamental para que se construa um grande produto. Já é hora de abolir de vez qualquer comportamento que nos faça esquecer que ambos estão do mesmo lado. Sempre. E esta primeira discussão é sobre quando um programador precisa dizer não.

publicado
Categorizado como Carreira

Estimativas em Times Ágeis

Apresentação de slides sobre o uso de estimativas em times ágeis, com destaque para os conceitos de esforço e lead time.

publicado
Categorizado como Software

Padrão de Procedure para pré-calculo no Banco de Dados

Realizar cálculos na base de dados e enviá-los para outras tabelas é uma tarefa comum aqui na Meritt. Fazemos isso para que nossos sistema sejam rápidos no acesso aos dados. O problema desta abordagem é que frequentemente são necessários dados calculados para diversas combinações de filtros. Veja o Portal Ideb por exemplo, cada município tem… Continuar lendo Padrão de Procedure para pré-calculo no Banco de Dados

publicado
Categorizado como Software

14 padrões pedagógicos para o ensino de ciência da computação

Ensinar Ciência da Computação é difícil. Projetos interessantes são complexos e demoram para serem desenvolvidos, projetos iniciantes geralmente são chatos. Nesse contexto, o professor Joseph Bergin trabalhou no desenvolvimento de diversos padrões pedagógicos que podem ser utilizados para tornar o ensino de qualquer área da ciência da computação mais interessante tanto para o professor quanto… Continuar lendo 14 padrões pedagógicos para o ensino de ciência da computação

publicado
Categorizado como Ensino

Coisas estúpidas que alguns professores fazem

Me deparei hoje com a lista do professor Joseph Bergin sobre coisas estúpidas que alguns professores fazem durante o ensino. Quando comecei a leitura da lista a considerei óbvia, até encontrar algumas coisas que eu também tenho feito em minha experiência como facilitador do processo de aprendizado. Segue abaixo a tradução do que, segundo Joseph,… Continuar lendo Coisas estúpidas que alguns professores fazem

publicado
Categorizado como Ensino

Programação para adolescentes

Já tinha ouvido falar sobre o ensino de programação de computadores em escolas de ensino fundamental e médio ser uma preocupação importante para muitas pessoas. Uma destas pessoas é Emmanuel Schanzer, depois de trabalhar como desenvolvedor de software em algumas empresas trocou de carreira para virar professor de matemática em escolas públicas de Boston, EUA. Então,… Continuar lendo Programação para adolescentes

publicado
Categorizado como Ensino

Viera K. Proulx – Pesquisadora de Ensino de Orientação a Objetos

Comecei aprendendo Orientação a Objetos girando coordenadas de um quadrado. Não desmereço isso, de forma alguma. Porém, quanto mais estudo esta área mais descubro projetos com uma capacidade incrível de visão e confirmo minha crença de que a melhor forma de aprender é modelando e executando softwares que trabalhem as principais áreas de interesse humano.… Continuar lendo Viera K. Proulx – Pesquisadora de Ensino de Orientação a Objetos

publicado
Categorizado como Ensino

Colisão Pixel Perfect com Java

Para quem quiser estudar melhor a colisão PixelPerfect em Java, criei um exemplo que pode ser trabalhado e baixado aqui https://github.com/kaleucaminha/Colis-o-Pixel-Perfect-Java-e-javaPlay O exemplo utiliza como base o framework javaPlay. O javaPlay é enxuto, nacional e acompanha este livro. As classes de colisão PixelPerfect e o pacote javaExtras foram construídos por mim para o curso técnico em… Continuar lendo Colisão Pixel Perfect com Java

publicado
Categorizado como Software

Alan Kay e o ensino de computação

Há 1 ano tenho o privilégio e o desafio de tentar ensinar programação de computador para adolescentes. Neste pouco tempo pude perceber a quantidade infinita de conexões que a computação pode fazer com as disciplinas de matemática, física e biologia. As grandes dificuldades em se realizar estas conexões na minha percepção são 1) a alta… Continuar lendo Alan Kay e o ensino de computação

publicado
Categorizado como Ensino

Resumo: Diretrizes para o Ensino de Orientação a Objetos com Java

Este documento resume o artigo dos criadores do BlueJ que apresenta 8 diretrizes básicas para o projeto de qualquer curso de Orientação a Objetos com Java (com ou sem BlueJ). As Diretrizes são:1 – Comece por Objetos2 – Não inicie com uma tela em branco3 – Leia Código4 – Use programas grandes5 – Não iniciei… Continuar lendo Resumo: Diretrizes para o Ensino de Orientação a Objetos com Java

publicado
Categorizado como Ensino

Usabilidade: Web e fogões

Olá pessoal, este artigo reúne algumas observações sobre usabilidade que realizei hoje durante a troca da mangueira de gás do meu fogão. Apesar de ser uma brincadeira com a experiência do fogão, os conceitos que observei estão presentes nas modernas teorias de aprendizado e livros sobre usabilidade. Primeiro Conceito: Permita que os erros aconteçam Não… Continuar lendo Usabilidade: Web e fogões

publicado
Categorizado como Software

Princípios de Usabilidade na Web

Esta apresentação é uma abordagem simplificada com diversos exemplos do livro “Não me faça pensar” de Steve Krug. Ela pode ser utilizada para mostrar que usuários não leem websites, eles dão uma olhada, como passar por um painel a 140km por hora. A apresentação encerra ressaltando a importância da realização de testes de usuário simples… Continuar lendo Princípios de Usabilidade na Web

publicado
Categorizado como Software

Projeto Padrões Pedagógicos

O Projeto Padrões Pedagógicos reúne diversos educadores em torno da criação e aplicação de padrões pedagógicos com foco em cursos de Ciência da Computação. Abaixo segue uma tradução da página principal do projeto onde você encontrará links para publicações, contato e nomes dos envolvidos. Tenho interesse em continuar o trabalho de tradução e reunir pessoas… Continuar lendo Projeto Padrões Pedagógicos

publicado
Categorizado como Ensino

Referências para Criação de Layouts (de 2011)

As referências abaixo são indicadas aos profissionais que desejam aprender a desenvolver layouts para a internet conforme os padrões da W3C. Iniciando Para iniciar precisamos aprender 2 coisas, HTML e CSS. Estas duas tecnologias são lidas pelos navegadores de internet, de modo, que você não precisa de nada especial para utilizá-las além de um editor… Continuar lendo Referências para Criação de Layouts (de 2011)

publicado
Categorizado como Software