O androidPT completou 1 ano de existência.
Para comemorar, foi lançado o Concurso de Programação androidPT.
O regulamento - que inclui datas, regras e prémios - pode ser consultado na página oficial do concurso.
As submissões a concurso terão lugar de 8 a 15 de Setembro, pelo que recomendamos que comecem já a trabalhar.
Bom trabalho e boa sorte!
Em Fevereiro colocamos aqui um post com algumas questões de SQL que poderiam ser colocadas numa entrevista.
Vamos tornar a abordar o problema, com a seguinte tabela:
mysql> select * from e;
+-------+-------+
| nome | valor |
+-------+-------+
| josé | 20 |
| joão | 10 |
| rui | 5 |
| pedro | 3 |
| josé | 5 |
| pedro | 10 |
| luís | 25 |
+-------+-------+
7 rows in set (0.00 sec)
Algo que costuma ser feito já depois das queries é perguntar aos candidatos quais os tipos de dados das duas colunas.
Para efeitos deste post, vamos assumir uma base de dados MySQL com uma tabela definida da seguinte forma:
create table e (
nome varchar(50),
valor int
) ENGINE=InnoDB;
INSERT INTO e (nome, valor) VALUES
('josé', 20),
('joão', 10),
('rui', 5),
('pedro', 3),
('josé', 5),
('pedro', 10),
('luís', 25)
;
Vamos analisar as queries que propusemos no nosso post anterior.
mysql> select sum(valor) from e;
+------------+
| sum(valor) |
+------------+
| 78 |
+------------+
1 row in set (0.40 sec)
É das queries mais simples e quase todos os candidatos a escrevem correctamente.
mysql> select nome, sum(valor) from e group by nome;
+-------+------------+
| nome | sum(valor) |
+-------+------------+
| joão | 10 |
| josé | 25 |
| luís | 25 |
| pedro | 13 |
| rui | 5 |
+-------+------------+
5 rows in set (0.04 sec)
Quase todas as pessoas sabem como se faz, mas já se encontra alguns candidatos que trocam a ordem de algumas cláusulas, que se esquecem do group by, etc.
mysql> select nome from e group by nome having count(1) > 1;
+-------+
| nome |
+-------+
| josé |
| pedro |
+-------+
2 rows in set (0.00 sec)
Neste ponto sim, já começamos a perder muito boa gente.
mysql> select group_concat(distinct nome) from e;
+-----------------------------+
| group_concat(distinct nome) |
+-----------------------------+
| josé,joão,rui,pedro,luís |
+-----------------------------+
1 row in set (0.00 sec)
Tipicamente já só acerta estas queries quem tem experiência intensiva com bases de dados.
Faz sentido, porque é perfeitamente viável trabalhar com bases de dados sem usar extensivamente tudo o que elas nos oferecem.
Não será de facto por não saber algo deste género que um candidato ficará pelo caminho, mas são perguntas como esta que permitem ir discernindo o tipo de uso que a pessoa dá à base de dados.
Perguntas como esta e não só: perguntas sobre as perguntas.
Numa entrevista não declaramos a base de dados, apenas a desenhamos num quadro ou numa folha de papel.
Depois de termos abordado várias queries, aí sim, abordam-se outras temáticas:
Há sempre mais qualquer coisa que a conversa traz, como por exemplo o entrevistado sugerir que o tipo de dados do valor deveria ser um INT(3)...
Entre muitas outras coisas, a equipa de Quality Assurance do SAPO realiza testes com utilizadores.
Realizam-se sessões com todo o tipo de utilizador: com conhecimento técnico, sem conhecimento técnico, habituado a usar a plataforma/serviço em questão, sem qualquer experiência com a mesma, com dificuldades motoras, visuais, outras ou com nenhuma dificuldade de relevo, etc.
Há também vários tipos de testes que são realizados.
Há testes de exploração cognitiva, em que um utilizador tenta realizar tarefas que lhe são apresentadas e seguidamente responde a várias questões sobre a dificuldade das mesmas. No foto abaixo, a mira na qual o iPhone está centrado servia para o utilizador manter o terminal dentro do foco da máquina de filmar:
No caso da web, menos conhecidos talvez serão os testes realizados com equipamento de Eye Tracking.
No SAPO, temos equipamento que não obriga à utilização de capacetes ou outro material intrusivo, captando sozinho a direcção do olhar do utilizador.
O resultado são coisas como Heatmaps:
E caminhos percorridos com o olhar:
A parte mais difícil, contudo, consiste na interpretação destes dados e nas decisões que se lhes seguem.
Com estes testes a equipa fica com uma muito melhor percepção de vários aspectos: se determinadas tarefas são exequíveis por aquele grupo de utilizadores, se algumas das preocupações que a equipa tinha são deveras realistas, etc.
A equipa de QA do SAPO tem um blog sobre User Experience aqui.
Apesar de não termos descartado o conceito das SAPO Sessions e das SAPO Master Classes (estamos a preparar um plano de formações para o regresso após as férias), temos também levado a cabo algumas novas experiências.
Uma destas experiências são os SAPO Tutorials.
12 pessoas e um (ou mais) formador(es) entram numa sala e passam lá meio dia ou um dia inteiro.
Estas sessões são muito mais prácticas do que teóricas e dão azo a muitas mais questões e esclarecimento de dúvidas, dada a proximidade resultante do menor número de pessoas na sala.
Fizemos uma primeira experiência com Scrum e já se realizaram 5 sessões internas.
Vamos fazer mais experiências.
Falando do plano de formações que arrancará no final do ano, aceitam-se pedidos de temas a abordar.
Mark Murphy, fundador da CommonsWare e autor de vários livros de programação para Android (incluindo o The Busy Coders Guide to Advanced Android Development), esteve recentemente em Portugal.
Nesta visita, Mark conseguiu arranjar tempo para nos vir visitar ao SAPO e conversar (e jantar) com parte da nossa equipa de desenvolvimento para Android.
Obrigado, Mark!
Chegou o Verão.
Tiramos umas fotos, cá no SAPO.
UPDATE: A pedido de várias famílias, podem ver todas as fotos aqui.