Aula final do curso de programação orientada a objetos que ministrei no SENAI, utilizando como estratégia de ensino o desenvolvimento de jogos em 2D
Autor: Kaléu Puskas Diedrich Caminha
Avaliação da Metodologia de Isaias Camilo Boratti para o ensino de Programação Orientada a Objetos
Resumo da abordagem de ensino de programação orientada a objetos pelo professor Isaias Camilo, da Universidade Federal de Santa Catarina
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
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
Login em Iframe, Cookies, PHP, Https e SameSite
Recentemente precisei realizar uma integração entre um site e um software PHP onde o software seria exibido via Iframe dentro do site em WordPress. O adicional neste caso era a necessidade de o login no software funcionasse dentro do Iframe. E não funcionou. O PHP não consegue entender o login dentro de um Iframe? Não… Continuar lendo Login em Iframe, Cookies, PHP, Https e SameSite
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
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
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
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
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
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?
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?
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
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
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
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
Escolha de Linguagem de Programação
O PHP vai morrer, Ruby já era, Java é coisa de velho… 💀💀💀 Torcida contra sempre vai ter, mas no mercado as coisas não funcionam assim. Lembro como se fosse hoje que na minha primeira entrevista de emprego fiquei sabendo que o software principal da empresa era Cobol 🤷🏽. Não vejo motivo para uma preocupação… Continuar lendo Escolha de Linguagem de Programação
A posição política do dono ou dona da empresa importa?
A convivência é muito próxima Embora o mais importante no trabalho seja o alinhamento do que diz respeito ao trabalho em si, a convivência no dia a dia de uma pequena empresa com os donos ou donas é muito intensa. Frequentemente eles ou elas não tem nenhum mecanismo de controle ou filtro das suas decisões,… Continuar lendo A posição política do dono ou dona da empresa importa?
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
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
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.
Com o novo acordo ortográfico, a língua escrita será quase sempre a língua portuguesa conforme acordo oficial:
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
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
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)
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
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
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
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
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
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
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
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
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
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.
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.
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
Aprendizados com MySQL e gigabytes de dados
Seguem alguns aprendizados ao trabalhar com volumes de dezenas de Gigabytes com MySQL: Nota 1) Usar o NMOM para monitorar o computador durante a execução das consultas é uma boa forma de identificar se o gargalo está na memória RAM ou no IO do HD; Nota 2) Sobre os gargalos de banco de dados, existem… Continuar lendo Aprendizados com MySQL e gigabytes de dados
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
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
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
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
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
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
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
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
Mapeamento Entidade-Relacionamento para Tabelas
Este trabalho apresenta uma folha de resumo do mapeamento de 6 tipos de relacionamentos do modelo conceitual para tabelas de banco de dados relacionais.
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
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
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)