Saltar para: Posts [1], Pesquisa [2]

SAPO developers blog

SAPO developers blog

SQL nas entrevistas

Julho 19, 2010

jac

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.

  • Descobrir quanto dinheiro emprestaste no total.

 

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.

  • Descobrir quanto é que cada pessoa te deve.

 

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.

  • Descobrir quais as pessoas a quem emprestaste dinheiro mais que uma vez.

 

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.

  • Seleccionar os nomes das pessoas a quem emprestaste dinheiro, numa só linha, separados por vírgula.

 

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:

  • que tipos de dados são aqueles?
  • que informação adicionarias à tabela para anotar quem já te tinha pago?
  • como efectuarias essa alteração sem que o sistema deixasse de funcionar temporariamente?
  • o que farias caso um dia as queries nesta tabela se tornassem demasiado lentas?
  • como criarias um índice nesta tabela?
  • etc.


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)...

Testes com utilizadores

Julho 14, 2010

jac

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:

 

Testes cognitivos ao SAPO Cinema para iPhone

 

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.

 

Tobii

 

O resultado são coisas como Heatmaps:

 

Heatmap de uma página

 

E caminhos percorridos com o olhar:

 

Caminho percorrido pelo 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.

Formações

Julho 12, 2010

jac

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.

 

Mesa de reuniões

 

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.

 

Scrum Board

 

Vamos fazer mais experiências.

 

Falando do plano de formações que arrancará no final do ano, aceitam-se pedidos de temas a abordar.

Mais sobre mim

Subscrever por e-mail

A subscrição é anónima e gera, no máximo, um e-mail por dia.

Arquivo

  1. 2012
  2. J
  3. F
  4. M
  5. A
  6. M
  7. J
  8. J
  9. A
  10. S
  11. O
  12. N
  13. D
  1. 2011
  2. J
  3. F
  4. M
  5. A
  6. M
  7. J
  8. J
  9. A
  10. S
  11. O
  12. N
  13. D
  1. 2010
  2. J
  3. F
  4. M
  5. A
  6. M
  7. J
  8. J
  9. A
  10. S
  11. O
  12. N
  13. D
  1. 2009
  2. J
  3. F
  4. M
  5. A
  6. M
  7. J
  8. J
  9. A
  10. S
  11. O
  12. N
  13. D