Minha palestra no SQLSat 325

Recentemente apresentei a palestra acima no evento SQLSat 325. Esta foi a terceira vez que participei de um SQLSat (fui no SQLSat100 e SQLSat 127). Para um evento de comunidade posso dizer que a orgamização foi boa e que muita gente gostou da minha palestra.



Publicado em Evento, SQL | Com a tag , , , , , , | Deixar um comentário

DatabaseCast 49: Database’n’Hacking

 VitrineDatabaseCast49Olá, pessoal! Neste episódio do DatabaseCast Mauro Pichiliani (Twitter | Blog) e Wagner Crivelini (@wcrivelini) hackeiam o banco de dados com o pessoal do Hack’n’Cast Magnum (@mind_bend) e Ricardo Medeiros. Neste episódio, você vai saber quem se considera hacker ou não, quais são as diferentes atividades que podem ser encaradas como hacking, quem ama o VI, porque meninos desmontam carrinhos de controle remoto, o que foi o SQL Slammer e quem gosta de ajudar em cartórios.

Não deixe de nos incentivar digitando o seu comentário no final deste artigo, mandando um e-mail para  databasecast@gmail.com, seguindo o nosso twitter @databasecast, vendo informações de bastidores e as músicas do programa no nosso Tumblr e curtindo a nossa página no Facebook e no Google+.

Clique aqui para obter o endereço do feed RSS e assinar o DatabaseCast

Veja no gráfico abaixo a duração e os tempos aproximados de início e fim de cada bloco:

GraficoTamanhoDatabaseCastEpisodio49

Veja na tag cloud abaixo a contagem das palavras mais usadas nos emails, comentários e tweets do episódio anterior:

TagCloud_ep48

CAMISETAS E PRODUTOS DO DATABASECAST:

Camisa Data baseCast Sonho Fractal

 

Camiseta DatabaseCast Fluxo Matrix

Você pode comprar a camiseta com estampa fractal Fluxo Matrix e Sonho Fractal diretamente neste link.

Links do episódio:




Publicado em DatabaseCast, Podcast | Com a tag , , , , , , , , | Deixar um comentário

DatabaseCast 48: Dashboards

 

VitrineDatabaseCast48

Olá, pessoal! Neste episódio do DatabaseCast Mauro Pichiliani (Twitter | Blog) e Wagner Crivelini (@wcrivelini) ficam olhando para a tela junto com a convidada Viviane Ribeiro (@viviane_sql). Neste episódio, você vai saber como a interface de um BI pode ajudar os usuários, quais são os elementos visuais que mais confundem do que ajudam, como uma pizza pode não se redonda, quem gosta de visitar submarinos, como um triângulo pode dar muito dor de cabeça e mandar um olá para o cara que sempre pede para exportar para a planilha e imprimir o relatório.

Não deixe de nos incentivar digitando o seu comentário no final deste artigo, mandando um e-mail para  databasecast@gmail.com, seguindo o nosso twitter @databasecast, vendo informações de bastidores e as músicas do programa no nosso Tumblr e curtindo a nossa página no Facebook e no Google+.

Clique aqui para obter o endereço do feed RSS e assinar o DatabaseCast

Veja no gráfico abaixo a duração e os tempos aproximados de início e fim de cada bloco:GraficoTamanhoDatabaseCastEpisodio48

Veja na tag cloud abaixo a contagem das palavras mais usadas nos emails, comentários e tweets do episódio anterior:

TagCloud_ep47

CAMISETAS E PRODUTOS DO DATABASECAST:

Camisa Data baseCast Sonho Fractal

 

Camiseta DatabaseCast Fluxo Matrix

Você pode comprar a camiseta com estampa fractal Fluxo Matrix e Sonho Fractal diretamente neste link.

Links do episódio:




Publicado em DatabaseCast, Podcast | Com a tag , , , , , , | Deixar um comentário

Minha palestra no TDC 2014

Este ano (2014) fiz uma palestra na trilha NoSQL do evento TDC (The Developer’s Conference) edição São Paulo. Eu coloquei os slides no Slideshare, mas parece que os gifs animados não funcionam muito bem nesta plataforma. De quaquer maneira, espero que o que foi apresentado seja útil para os participantes e que eles se lembrem de algo mais do que o meu susto com a microfonia!

Como a apresentação foi realizada no palco Stadium é provável que a organização do evento disponibilize o vídeo futuramente. Quando isso acontecer eu divulgo o link aqui no blog.



Publicado em Apresentação, Evento, SQL | Com a tag , , , , , , , , , , | Deixar um comentário

Crítica do filme Transcendence

Figura1_Capa

Recentemente assisti ao filme Transcendence. Como já realizei algumas pesquisas em algumas das áreas abordadas neste filme, resolvi escrever este post com um ponto de vista técnico do que foi proposto na película.

Antes de começar a falar um pouco sobre pontos específicos já vou deixar avisado que o texto abaixo contém alguns spoilers leves sobre o enredo. Nada que possa prejudicar o entretenimento, mas que talvez possa revelar alguns detalhes da trama.

Para começar é interessante notar que o principal tema abordado, a transferência completa da mente para um computador, é algo relativamente comum na literatura cyberpunk e em diversas obras de ficção científica, tanto em livros, animes, filmes e jogos. Já até escrevi um pouco sobre isso neste post.

O primeiro ponto técnico que destaco do filme é o uso de processadores quânticos. Atualmente a maioria das pesquisas está caminhando para a direção de processadores baseados em tecnologias como a tomografia e outros. Até onde sei, as pesquisas mais recentes na área envolvem algo em torno de computadores quânticos com aproximadamente 10 qubits.

Sem contar que mesmo que existissem os processadores quânticos citados no filme é preciso novos algoritmos, linguagens de programação [PDF] e diversos outros elementos de software que ainda estão muito longe. Existem muitos trabalhos nesta área, mas acredito que mesmo se tivéssemos um processador como o que mostrado no filme ainda estamos muito longe de utilizar o software que temos hoje nele.

Sim, isso é como um processador quântico atual se parece

Sim, isso é como um processador quântico atual se parece

Outra área interessante relacionada ao que foi mostrado no filme é aquela que estudo a computação neuromórfica [PDF].  Muitos avanços para a compreensão de como o cérebro funciona foram apresentados pelos pesquisadores desta área que tem como objetivo construir um computador que funciona de forma semelhante a um cérebro. O estado da arte é algo como um computador que consegue simular 100 neurônios. Ou seja, ainda estamos um pouco longe dos bilhões de neurônios de um ser humano.

Outro aspecto interessante abordado na película foi o uso de tecnologias de BCI. Já realizei algumas pesquisas sobre isso (aqui, aqui e aqui) e já até escrevi um post neste blog sobre filmes com esta temática.  No Transcendence os pesquisadores empregam um BCI do tipo invasivo (aquele que requer cirurgia) e citam a capacidade de captação de todas as sinapses em tempo real, primeiro em um macaco e depois em um humano. Bem, atualmente as pesquisas de ponta considerando BCI invasivos conseguem ler aproximadamente uma  centena de neurônios e ainda estamos muito, muito longe de captar em tempo real todas as sinapses. O filme convenientemente não cita o fato que as conexões entre os neurônios estão constantemente sendo modificadas.

Esquema básico de um BCI invasivo

Esquema básico de um BCI invasivo

E mesmo que sejamos capazes de capturar todas as conexões do cérebro em tempo real nada é garantido, ou seja, os cientistas da atualidade ainda debatem se realmente seria possível replicar a sequência de disparos dos neurônios (a passagem de corrente elétrica entre os dentritos) como é feita em um ser vivo. Isso sem contar detalhes como seria a consciência, emoção, personalidade, senciência e a famosa autoconsciência citada diversas vezes no filme.

Figura4_IAPor fim, o filme possui um grande foco no desenvolvimento de uma IA (Inteligência Artificial). Este tópico vem ganhando muito destaque na mídia atualmente devido a eventos onde computadores conseguem ganhar de seres humanos em jogos de xadrez, perguntas e respostas e outros. Considerando a realidade, estamos fazendo muito progresso em relação à fidelidade da simulação de uma pessoa com uma IA, mas ainda estamos muito, muito longe de apresentar as características e funcionalidades da IA que foi apresentada no filme. De fato, os diálogos do filme falam muito sobre redes neurais e neurônios artificiais. Estas palavras causam efeito e impressionam, mas elas não consideradas são as melhores técnicas para o tipo de IA citada no filme.



Publicado em Programação | Com a tag , , , , , , , | Deixar um comentário

DatabaseCast 47: Certificação em banco de dados

VitrineDatabaseCast47Olá, pessoal! Neste episódio do DatabaseCast Mauro Pichiliani (Twitter | Blog) e Wagner Crivelini (@wcrivelini) comparam suas certificações com o convidado Ricardo Portilho (@rportilhoproni).

Neste episódio você vai saber como surgiram as certificações técnicas, quais seus propósitos, impactos e implicações na carreira de um profissional que trabalha com banco de dados. O programa também discute aspectos das provas, estudo, expiração e outros assuntos sem esquecer de mandar um alô para o colega Alex Zaballa.

Não deixe de nos incentivar digitando o seu comentário no final deste artigo, mandando um e-mail para  databasecast@gmail.com, seguindo o nosso twitter @databasecast, vendo informações de bastidores e as músicas do programa no nosso Tumblr e curtindo a nossa página no Facebook e no Google+.

Clique aqui para obter o endereço do feed RSS e assinar o DatabaseCast

 Veja no gráfico abaixo a duração e os tempos aproximados de início e fim de cada bloco:

GraficoTamanhoDatabaseCastEpisodio47Veja na tag cloud abaixo a contagem das palavras mais usadas nos emails, comentários e tweets do episódio anterior:

TagCloud_ep46CAMISETAS E PRODUTOS DO DATABASECAST:

Camisa Data baseCast Sonho Fractal

 

Camiseta DatabaseCast Fluxo Matrix

 

Você pode comprar a camiseta com estampa fractal Fluxo Matrix e Sonho Fractal diretamente neste link.

Livro Conversando sobre Banco de dados do Mauro Pichiliani (Impresso e PDF, EPUB e MOBI)

Curso online básico de MySQL

Curso online introdutório de lógica de programação

Links do episódio:




Publicado em DatabaseCast | Com a tag , , , , , , , , , , , , | Deixar um comentário

Qualquer um pode aprender a programar

Qualquer um pode aprender programarAprender a programar hoje em dia está cada vez mais acessível. Basta um dispositivo e a vontade de aprender. Neste post vou comentar um pouco sobre algumas novas abordagens que fornecem recursos para quem deseja aprender a programar independente de tecnologia, condição, pré-requisito ou situação do aprendiz.

Há algum tempo atrás lancei meu curso sobre lógica de programação e desde então venho pensando e escrevendo sobre este assunto. Não só isso: também procuro ir além e estudar novas técnicas e maneiras de como ensinar melhor programação para pessoas que estão tendo o primeiro contato com desenvolvimento.

Um dos fatos que notei é a falta de diferenciação em relação ao tipo e perfil do aluno  em praticamente todos os materiais e recursos para o aprendizado de programação. Ou seja, os materiais não levam em consideração alguns fatores de quem está aprendendo com o objetivo facilitar o aprendizado. Pensando nisso fiz uma conexão e lembrei-me de um personagem do filme Ratatouille.

Figura2_PostgerRatatouille

Sem dar spoilers, neste filme há um personagem que repete várias vezes o bordão “Qualquer um pode aprender a cozinhar” ou em inglês Anyone can cook. Foi interessante notar que, no contexto do filme, tal frase age de forma motivadora para alguns e levanta séries preocupações em outros.

Em particular, eu acredito que assim como qualquer um pode aprender a cozinhar qualquer pessoa pode aprender a programar se houverem recursos adequados e dedicação suficiente. Se esta pessoa vai se tornar um programador ruim, mediano ou bom já é outra história, mas pelo menos os conceitos básicos, algumas noções importantes e programas simples para comandar as máquinas e fazê-las obedecerem a nossa vontade podem ser aprendidos por qualquer um.

Mas, como disse no começo do texto, os recursos e materiais especiais para diferentes grupos de pessoas não são muito comuns. Por isso resolvi discutir algumas referências e exemplos interessantes de recursos produzidos por quem realmente acredita que há espaço para que qualquer um possa aprender a programar.

Programação para mulheres

Figura3_GarotaProgramando

Recentemente algumas abordagens foram apesentadas para ensinar programação especialmente para as meninas e mulheres. O que é interessante de notar é como a forma de abordar este assunto muda quando há foco em um gênero específico, em particular o fato dos materiais terem mais cores, imagens e recursos visuais que vão além do texto. Algo semelhante acontece com o conteúdo para aprendizado de programação voltado para crianças e livros específicos para o gênero feminino.

Já escrevi há algum tempo atrás sobre algumas possibilidades de como será a programação no futuro, e pelo que tenho visto, cada vez mais elementos didáticos, independente do gênero vão sendo inseridos não só aos recursos para aprendizado, mas também às ferramentas, ambiente de desenvolvimento e tecnologias utilizadas para programar.

Codificação do jeito difícil

Figura5_HardWayMuita gente pensa que para aprender a programar devemos seguir o caminho mais fácil. Bem, certamente este pensamento é adequado para maioria das pessoas, mas não todas.

Considerando que nem todos preferem seguir o caminho fácil, algumas abordagens se concentram em mostrar o conteúdo da forma difícil ou mesmo complexa para um público que prefere o aprendizado desta maneira. A série de livros Hard Way  é um exemplo disso e não deixa de ser um caminho diferenciado para o grupo de pessoas que não procuram apenas do básico quando estão aprendendo.

Portadores de necessidades especiais

Figura6_EmpowerQuando alguém observa um portador de necessidades especiais usando um computador talvez a última coisa que venha à mente é que ele esteja programando. Do ponto de vista de materiais, anda estamos engatinhando em recursos específicos para quem possui alguma condição física ou psicológica diferente da maioria.

Existem várias vantagens para o aprendizado de programação para quem se enquadra neste perfil. Além de desenvolver habilidades cognitivas e se preparar para uma profissão, existe a fator empoderamento  (empowerment). Este é um conceito complexo, mas vou simplificar dizendo que, no contexto de portadores de necessidades especiais, aprender a programar traz diversos benefícios psicológicos que podem fazer a diferença do ponto de vista social.

Existem bons exemplo de conteúdo específico para o aprendizado de programação voltado para quem possui necessidades especiais. Pesquisando um pouco descobri iniciativas interessantes como projetos para cegos aprenderem a programar assim como recursos para deficientes auditivos (aqui, aqui e aqui)

Outra ideia no mínimo diferente é a programação feita com os pés, algo que até certo ponto pode ser complementado e adaptado para auxiliar as pessoas que programam normalmente com as mãos.

Destaco também estas duas listas (aqui e aqui) de bons recursos e ferramentas com diversas tecnologias de acessibilidade úteis para o uso de computadores que podem auxiliam que está programando neste contexto.

Terceira idade

Figura7_TerceiraIdadeConforme vamos envelhecendo novas atividades vão sendo adaptadas para esta etapa da vida. Apesar de algumas barreiras existentes para a utilização de dispositivos e interfaces atuais, atualmente temos muitos recursos de acessibilidade voltados para a terceira idade. Também existem vários programas de treinamento e terapia ocupacional que incluem o uso de computadores.

Além disso, incluir a perspectiva de pessoas com idade avançada em aplicativos e sistemas pode trazer benefícios que possivelmente não seriam obtidos quando se tem uma equipe de desenvolvimento com idade média muito diferente dos seus usuários.

Entretanto, o uso de programação na terceira idade ainda engatinha (eu sei, piada ruim…). Procurando por referências encontrei alguns vídeos motivadores de projetos que se concentram mais no uso de aplicativos gerais do que na programação em si. Este é um primeiro passo significativo, mas gostaria de ver outras iniciativas voltadas para o aprendizado de programação para pessoas da terceira idade.

https://www.youtube.com/watch?v=bA_w9Zb3ZI8

https://www.youtube.com/watch?v=KE5yduWfPUM



Gatos, cachorros e afins

Figura8_GatProgrmador

Para finalizar destaco alguns contextos um tanto quando estranhos quando falamos sobre programação. Que tal a história do mendigo que não tinha onde morar e aprendeu a programar? Exemplos como esse mostram que a vontade de aprender supera muitas dificuldades.

Também há espaço para abordagens bem humoradas quando se fala em programação como o tutorial que ensina a programar em Javascript para gatos. Parece que ainda não criaram algo semelhante para cachorros, mas pelos menos eles podem ser divertir assistindo TV.

Publicado em Programação, Uncategorized | Com a tag , , , , , , , | Deixar um comentário

DatabaseCast 46: Log de banco de dados

VitrineDatabaseCast46Neste episódio do DatabaseCast Mauro Pichiliani (@pichiliani) e Wagner Crivelini (@wcrivelini) armazenam instruções no log com os convidados Ricardo Rezende (@ricarezende) e Fabiano Amorim (@mcflyamorim).

Neste episódio você vai saber o que é e como trabalhar com o log do bancos de dados, porque alguns DBAs são como mosquitos, quais são as opções para ler dados de logs, e o que são instruções SQL da ostentação e da maldade.

Não deixe de nos incentivar digitando o seu comentário no final deste artigo, mandando um e-mail para  databasecast@gmail.com, seguindo o nosso twitter @databasecast, vendo informações de bastidores e as músicas do programa no nosso Tumblr e curtindo a nossa página no Facebook.

Clique aqui para obter o endereço do feed RSS e assinar o DatabaseCast

Veja no gráfico abaixo a duração e os tempos aproximados de início e fim de cada bloco:

GraficoTamanhoDatabaseCastEpisodio46

Veja na tag cloud abaixo a contagem das palavras mais usadas nos emails, comentários e tweets do episódio anterior:

TagCloud_ep45

CAMISETAS E PRODUTOS DO DATABASECAST:

Camisa Data baseCast Sonho Fractal

Camiseta DatabaseCast Fluxo Matrix

Você pode comprar a camiseta com estampa fractal Fluxo Matrix e Sonho Fractal diretamente neste link.

Livro Conversando sobre Banco de dados do Mauro Pichiliani (Impresso e PDF, EPUB e MOBI)

Curso online básico de MySQL

Curso introdutório de lógica de programação

Links do episódio:

 




Publicado em DatabaseCast | Com a tag , , , , , , , , | Deixar um comentário

15 fatos sobre programação que você provavelmente não sabia

0_Capa

A tarefa de programar está se tornando cada vez mais comum, porém ainda existem muitos fatos que as pessoas não conhecem sobre programadores e a programação em si. Acompanhe comigo o conteúdo deste post que apresenta 15 fatos pouco conhecidos sobre a programação.

Assim como outras atividades intelectuais, a tarefa de programar e de como as pessoas aprendem a programar computadores é muito estudada. De fato, com cada vez mais pessoas aprendendo a programar, independente da linguagem, ferramenta ou plataforma utilizada, é natural que poucas pessoas realmente saibam de certos fatos importantes já bem conhecidos sobre programação e desenvolvimento de software.

Do ponto de vista acadêmico, as áreas de engenharia de software e educação apresentam diversos estudos muito interessantes obtidos por meio de experimentos cujos resultados são apresentados em teses de mestrado e doutorado ou papers da área. E com base nestes resultados que escolhi os fatos a serem citados neste post junto com as devidas referências. A propósito, se você leitor ficou com vontade de saber mais sobre cada um dos pontos discutidos aqui recomendo fortemente procurar a referência completa para mais informações.

Com base neste contexto, vou apresentar 15 fatos importantes e que, infelizmente, são pouco conhecidos por quem programa. Mas antes faço um aviso: estes fatos apresentam resultados de pesquisas experimentais e empíricas que possuem contextos específicos. O que quero dizer é que existe certa margem para discussão da aplicabilidade e generalização, porém conhecer o que já foi estudado e descoberto é importante e, no mínimo, pode instigar a discussão e o quão perto da realidade do leitor são estas informações.

1) Programadores demoram para pedir ajuda quando tem problemas

1_PedirAjuda

Este é um fato relacionado à maneira como as pessoas aprendem a programar, pois basicamente o ensino segue a linha de aprendizado da matemática: um pouco de teoria, um ou dois exemplos e muitos exercícios. Este formato leva os aprendizes a tentar muito nos exercícios e, muitas vezes, resolver tudo sozinhos sem pedir ajuda.

Esta atitude não é ruim e é até recomendada, porém é preciso saber até que ponto deve-se deixar de tentar e pedir alguma forma de ajuda.

Referência: Andrew Begel e Beth Simon. Novice software developers, all over again.  ICER ’08 Proceedings of the 4thinternational Workshop on Computing Education Research, 2008.

2) Programadores possuem uma tendência a reportar de forma incompleta seus problemas

2_Erro

Este fato é relacionado com pesquisas da área da psicologia. Os resultados indicam que quando uma pessoa tem algum problema ela não comunica todas as informações completas sobre os problemas, especialmente quando ela é o responsável de forma direta ou indireta.

Este resultado já foi comprovado experimentalmente com programadores e uma das principais justificativas é a seguinte: reportar de forma completa um problema é visto como sinal de fraqueza que pode levar a algum tipo de julgamento da habilidade e proficiência por quem está ouvindo o relato. Esta situação é muito mais comum quando se trata de um erro básico de principiante.

Referência: Shrauger, J.S. and T.M. Osberg. The Relative Accuracy of Self-Predictions and Judgments by Others in Psychological Assessment. Psychological Bulletin, 1981. 90(2): p. 322-351.

3) Programadores procuram outras formas de ajuda antes de falar com colegas de trabalho

3_StatckOverflow2O fato da comunicação com outras pessoas não assumir a prioridade quando um programador precisa de ajuda está relacionado novamente à sensação de julgamento que outras pessoas fazem ao saber da dificuldade.

Não obstante, sites como o StackOverflow e outros floresceram explorando este tipo de comportamento através da agregação da ajuda com diversos aspectos de comunidades para desenvolvedores.

Referência: LaToza, T.D., Venolia, G., and Deline. R. Maintaining Mental Models: A Study of Developer Work Habits. in Proc. ICSE. 2006: IEEE.

4) O progresso na programação pode ser classificado em quatro fases

4_Progresso4
A classificação do progresso de um programador é importante para auxiliar diversas métricas envolvidas no desenvolvimento de software, além de ajudar gerentes de projeto e outras pessoas a avaliar como anda o projeto como um todo.

Além disso, também é importante saber em qual fase de progresso o desenvolvedor está para, entre outras atitudes, oferecer algum tipo de ajuda para que ele não fique muito tempo emperrado em um local específico ao ponto de atrasar alguma entrega. Uma classificação interessante identificou (de forma automática) quatro possíveis estados de progresso:

a)    Programação complexa
b)    Fazendo progresso
c)    Progresso lento
d)    Emperrado (stuck)

Referência: Jason Carter,  Prasun Dewan. Design, Implementation, and Evaluation of an Approach for Determining When Programmers are Having Difficulty. ACM Group 2010.

5) Programadores encontram barreiras superáveis e insuperáveis

5_BArreira2 Este fato pode parecer óbvio, mas ele é muito importante de ser detectado, uma vez que uma barreira de programação pode levar a sérios problemas de prazo, moral da equipe e confiança.

Uma das principais dificuldades de se detectar barreiras e classifica-las está no fato que esta informação pode ser subjetiva. Ou seja, perguntar diretamente para o programador se ele está com alguma barreira superável ou insuperável já afeta o resultado, pois ele nem sempre pode ser sincero. Há também algumas implicações em termos de ego e moral apenas pelo fato de identificar este tipo de barreira na programação,

Referência: Andrew J. Ko et al. Six Learning Barriers in End-User Programming Systems. 2004 IEEE Symposium on Visual Languages – Human Centric Computing.

6) São 6 os tipos de barreiras relacionadas à programação

6_Barreira

Além da classificação de barreiras de programação em superáveis e insuperáveis há um estudo muito interessante que caracterizou cada uma das possíveis barreiras de programação.

Para ajudar a entender as barreiras os pesquisadores evidenciaram frases comuns em cada uma das classificações abaixo:

a) Design: “Eu não sei o que o computador deve fazer”.
b) Seleção: “Eu sei o que fazer, mas não sei o que usar”.
c) Coordenação: “Sei o que usar, mas não sei como combinar o que preciso”.
d) Uso: “Eu sei o que usar, mas não sei como usar”.
e) Compreensão: “Pensei que sabia usar X, mas ele não faz o que eu esperava”.
f) Informação: “Compreendo o que aconteceu, mas não consigo checar”.

Referência: Andrew J. Ko et al. Six Learning Barriers in End-User Programming Systems. 2004 IEEE Symposium on Visual Languages – Human Centric Computing.

7)  Programadores passam aproximadamente 30% do tempo navegando no código fonte
7_Navegando

Quem programa sabe que a maior parte do tempo é gasta dentro de uma ferramenta de edição de código fonte. Contudo, como o tempo é divido entre as tarefas de edição do texto representado pelo código fonte ainda não está claro do ponto de vista científico.

De acordo com um estudo muito importante, descobriu-se que aproximadamente 30% do tempo de trabalho de um programador não é gasto editando o texto (incluindo, alterando o excluindo), mas sim navegando entre diversos arquivos com códigos fontes. Esta navegação envolve pesquisa, observação, coleta de informações, memorização e outras atividades. Ou seja, dá para dizer que a programação é uma atividade cuja terça parte é apenas contemplativa.

Referência: Andrew J. Ko et al. An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks. Journal IEEE Transactions on Software Engineering archive Volume 32 Issue 12, December 2006 pp. 971-987.

8) Produtividade de programadores remotos é menor que a produtividade de programadores locais

8_FastEsta afirmação sobre produtividade é polêmica, especialmente quando se fala cada vez mais em home office, trabalho remoto e projetos globais de desenvolvimento de software. De qualquer maneira, existem evidências concretas baseadas em diversas métricas de software que, de fato, programadores remotos não produzem tanto quanto programadores que estão no mesmo local.

Faz sentido pensar desta maneira se analisarmos os outros fatos desta lista como, por exemplo, a preferência pela falta de comunicação com outras pessoas. De fato, a comunicação informal é um dos principais fatores que influenciaram o resultado desta pesquisa, pois pedir aquela dica no encontro durante uma pausa para o café é muito importante de acordo com que foi apurado.

Referência: Herbsleb, J.D., et al. Distance, dependencies, and delay in a global collaboration. In: Proceedings of the 2000 ACM Computer-Supported Cooperative Work conference.

9) A maioria dos programadores é masculina, branca e jovem
9_computer-programmer

Esta afirmação sobre a diversidade de programadores não veio exatamente de uma pesquisa acadêmica, mais sim de Adda Birnir que é a fundadora do site de recrutamento e seleção Skillcrush. Esta declaração foi apresentada no vídeo “Is CODE the most important language in the world?”.

Atualmente é muito comum destacar minorias na programação, espacialmente a baixa quantidade de mulheres. Contudo, como certos dados mostram este não é o único perfil que possui baixa representatividade na programação e isso pode ter uma implicação séria quando falamos em código de aplicações que precisam lidar de forma adequada com certos grupos de usuários.

Referência: declaração da Adda Birnir sobre diversidade de codificadores no vídeo “Is CODE the most important language in the world?”.

10) As principais mensagens de erro, erro em tempos de execução e erros de compilação e o tempo médio para resolvê-los

10_compile-time-error2

Mensagens de erro, problemas de tempo de execução e erros de compilação são muito específicos para cada linguagem. Para destacar alguns casos cito a tese de mestrado da pesquisadora Suzanne Marie Thompson, pois ela analisou uma grande quantidade de programadores Java em diversos cenários e coletou muitos dados interessantes sobre isso. As tabelas abaixo contam um pouco da história sobre erros e tempo médio para corrigi-los.

Apesar do estudo se concentrar em um contexto muito específico (aprendizado da linguagem Java) é possível fazer um paralelo com outros cenários e situações e comprovar que realmente boa parte dos erros mais comuns acontece em diferentes contextos.

TempoMedioResolverProblemasTabela 6.2. Erros mais frequentes (Java) e tempo médio de execução

TabelaErrosDeExecucaoTabela 6.12. Frequência de erros de execução em Java (runtime)

TabelaErrosCompilacao Tabela D.1 Principais erros de compilação (Java) e tempo médio para resolvê-los

Referência: Thompson, Suzanne Marie. An exploratory Study of Novice Programming Experiences and Erros. Tese de mestrado defendida em 2004 na inversidade de Victoria, Canadá.

11) A manutenção de software consome mais de 50% do esforço

11_legacy-code

A manutenção de um software envolve a manipulação de código legado, assunto que já abordei antes. Porém desta vez cito um estudo que fala sobre esforço e que mostra como resultado que a divisão não é igual entre a criação e manutenção.

No estudo que citou este valor de mais de 50% de esforço há uma ótima discussão sobre evolução do software no sentido da sua manutenção e das tarefas necessárias para tanto. Com certeza vale a pena dar uma olhada nesta referência antes de tomar aquela decisão sobre começar a desenvolver a solução do zero ou trabalhar com uma base de código existente.

Referência: Kemerer C.F. and Slaughter S. An Empirical Approach to Studying Software Evolution, IEEE Transactions on Software Engineering, 25(4), pp. 493-509, 1999.

12) A manutenção de software consome entre 40 e 90% dos custos

12_Sem título

Uma das principais regras de quem trabalha com negócios diz que é muito mais caro conseguir um cliente novo do que manter um cliente já existente. Contudo, de acordo com pesquisas da área de engenharia de software a realidade é um pouco diferente quando se fala de código: manter um código em funcionamento através de tarefas de manutenção pode chegar a custar até 90% de todos os custos do projeto.

Estas estatísticas são bem genéricas e foram obtidas em um contexto muito particular das 487 organizações estudadas nesta pesquisa, sem contar que a data do estudo é de 1980. Certamente existem diversos fatores a serem considerados, mas ao menos existe um ponto de partida para analisar cursos e discutir sobre este aspecto quando se fala de manutenção de software.

Referência: Lientz, B.; Swanson, E.B. Software maintenance management: a study of the maintenance of computer application software in 487 data processing organizations. Addison Wesley, 1980.

13) O trabalho de manutenção de software é dividido em 4 tarefas básicas

13_Sem título

Ainda falando sobre manutenção de código fonte, um estudo que influenciou muito a comunidade de engenharia de software classificou por meio da análise de resultados de questionários as principais práticas da manutenção de software. Quatro práticas foram identificadas:

a)    Melhoria: envolvem mudanças de funcionalidades
b)    Adaptativa: são mudanças no ambiente para adaptação a requisitos
c)    Corretiva: atividades para a correção de erros
d)    Preventiva: melhorias para evitar problemas futuros

A classificação das práticas de manutenção é muito importante para auxiliar medições, organizar e rastrear bugs, agrupar funcionalidades em novas versões e gerenciar o trabalho de programadores.

Referências: Lientz, B.; Swanson, E.B. Software maintenance management: a study of the maintenance of computer application software in 487 data processing organisations. Addison Wesley, 1980.

Lientz, B.; Swanson, E.B.; Tompkins, G.E. Characteristics of applications software maintenance, Communications of the ACM, Vol. 21, pp.466-471, 1978.

14) Custos da correção de defeitos após a implantação são 10x maiores do que na fase de construção e 100x maiores do que na fase de design
14_059.TRONSS.32_905

Este fato é um clássico da área e motivou a evolução dos processos tradicionais de desenvolvimento de software até chegarmos ao que temos hoje. O principal ponto aqui é a identificação de custos elevados quando não se dá a devida atenção à construção e design do software.

Referências: Barry W. Boehm: Software Process Management: Lessons Learned from History. ICSE 1987: 296-298.

15) Revisão de código pelos pares consegue descobrir até 60% dos defeitos

15_PairProgramming

A revisão de código feita por outas pessoas, seja na modalidade de pair programming ou não, é realmente efetiva. Existem diversos estudos sobre isso, mas um dos principais indica que até 60% dos defeitos podem ser descobertos (mas não necessariamente corrigidos) quando mais de uma pessoa revisa o código fonte.

Este estudo é relativamente antigo e pode-se dizer que ele é um dos principais influenciadores de técnicas envolvendo processos ágeis (Agile) e outras formas de desenvolver software cujo principal foco é nas atividades, etapas, organização e outras habilidades não tão técnicas quanto a programação.

Referência: Barry W. Boehm: Improving Software Productivity. IEEE Computer 20(9): 43-57, 1987.



Publicado em Programação | 16 comentários

DatabaseCast 45: Raspagem de dados

VitrineDatabaseCast45

Olá, pessoal! Neste episódio do DatabaseCast Mauro Pichiliani (@pichiliani) e Wagner Crivelini (@wcrivelini) raspam dados com o convidado João Batista Oliveira Neto (@netojoaobatista).

Neste episódio você vai saber o que é open data, descobrir como participar de um hackaton, se decepcionar com seu scanner, passar uma madrugada a base de café e energético, extrair dados de páginas HTML, Flash, PDF, vídeos e áudio e soltar um grito esquisito de satisfação quando conseguir obter os dados.

Não deixe de nos incentivar digitando o seu comentário no final deste artigo, mandando um e-mail para  databasecast@gmail.com, seguindo o nosso twitter @databasecast, vendo informações de bastidores e as músicas do programa no nosso Tumblr e curtindo a nossa página no Facebook.

Clique aqui para obter o endereço do feed RSS e assinar o DatabaseCast

Veja no gráfico abaixo a duração e os tempos aproximados de início e fim de cada bloco:

GraficoTamanhoDatabaseCastEpisodio45

Veja na tag cloud abaixo a contagem das palavras mais usadas nos emails, comentários e tweets do episódio anterior:

TagCloud_ep44

CAMISETAS E PRODUTOS DO DATABASECAST:

Camisa Data baseCast Sonho Fractal

 

Camiseta DatabaseCast Fluxo Matrix

Você pode comprar a camiseta com estampa fractal Fluxo Matrix e Sonho Fractal diretamente neste link.

Livro Conversando sobre Banco de dados do Mauro Pichiliani (Impresso e PDF, EPUB e MOBI)

Curso online básico de MySQL

Curso introdutório de lógica de programação

Links do episódio:




Publicado em DatabaseCast, Podcast | Com a tag , , , , , , , , | Deixar um comentário