Artigos

mar
08

Mulheres na carreira de TI

Conforme já falamos em artigo anterior sobre a evasão de mulheres na área de TI, as mulheres encontram muitas dificuldades para se destacar na área, e isso é um problema mundial, sem distinção entre países ricos e pobres.

E as dificuldades começam já na faculdade, quando há poucas mulheres nos cursos da área. Mas há grandes exemplos no mercado de trabalho, de mulheres vencedoras, que passaram por cima de preconceitos, tabús, e avançaram com sucesso. Esse é o exemplo da Simone, que hoje lidera uma equipe de TI na organização onde trabalha e faz questão de nos mostrar que a determinação pode levar alguém muito longe.

Veja a entrevista que fizemos com ela, que gentilmente cedeu um pouco de seu precioso tempo para compartilhar de sua vitoriosa experiência na carreira de TI:

- Como você iniciou na área de TI? O que a levou a escolher essa área?

Simone: Desde criança já explorava alguns livros de programação, me encantava como o computador funcionava, você copiava algumas linhas de programa, executava, ele pedia a sua data de nascimento e exibia o seu signo. Ele acertava! Era mágico!

Entrei em um colégio técnico em Processamento de Dados em 1994 e logo no primeiro dia de aula o professor falou “Se algum de vocês não gosta de problemas, pode sair por aquela porta  porque é isso que vocês vão ter se trabalharem com informática”. (mais…)

Quer saber como o maior buscador da internet funciona? O Google lançou na última sexta-feira uma página mostrando os bastidores do mecanismo de pesquisa, incluindo informações sobre a indexação das mais de 30 trilhões de páginas da web, o intenso combate ao spam e o algoritmo responsável por exibir os resultados mais relevantes para o usuário, que leva em consideração mais de 200 características.

Na página “How Search Works”, é possível descobrir, por exemplo, que o índice de páginas do Google possui mais de 100 milhões de gigabytes, ou 100 petabytes. Parece até pouco para um serviço que precisa indexar trilhões de páginas, mas essas informações estão armazenadas em memória RAM. É por isso que o algoritmo consegue pesquisar todo o índice e retornar os resultados em apenas um oitavo de segundo.

Google explica como o Google funciona

O Google também fez questão de destacar o combate ao spam. Um gráfico mensal mostra que, só em junho de 2011, mais de 100 mil ações foram tomadas manualmente para remover do índice sites invadidos que passaram a disseminar spam. Essas ações são gerenciadas por uma equipe de combate manual ao spam, que fica localizada em diversos escritórios ao redor do mundo – há profissionais na Índia, na Irlanda, no Japão e na China. (mais…)

Curso de Fundamentos de Arquitetura de Software

A arquitetura de software de um sistema consiste na definição dos componentes de software, suas propriedades externas, e seus relacionamentos com outros softwares. O termo também se refere à documentação da arquitetura de software do sistema. A documentação da arquitetura do software facilita: a comunicação entre os stakeholders, registra as decisões iniciais acerca do projeto de alto-nível, e permite o reuso do projeto dos componentes e padrões entre projetos.

Introdução

O campo da ciência da computação tem lidado com problemas associados, como a complexidade da informação, desde sua criação. Os primeiros problemas de complexidade foram resolvidos pelos desenvolvedores através da escolha da estrutura de dados, do desenvolvimento de algoritmos e pela aplicação de conceitos de separação de escopos. Embora o termo arquitetura de software seja relativamente novo na indústria, os princípios fundamentais deste campo vêm sendo aplicados esporadicamente pela engenharia de software desde o início dos anos 80. As primeiras tentativas de capturar e explicar a arquitetura de software do sistema foram imprecisas e desorganizadas – freqüentemente caracterizadas por um conjunto de diagramas. Durante o decorrer da década de 90 houve um esforço concentrado para definir e codificar os aspectos fundamentais desta disciplina. Inicialmente um conjunto de padrões de projeto, estilo, melhores práticas, descrição de linguagens, e lógica formal foram desenvolvidas durante este período. (mais…)

Evolução do PC para nuvem pessoal levará a dispositivos ativados por sensores

De acordo com o Gartner, a vida digital dos consumidores mudou do PC para a nuvem pessoal, e esse movimento levará a um novo tipo de interação entre as pessoas e seus serviços conectados.

Os consumidores vão usar e interagir com múltiplos aparelhos conectados e ativados por sensores, conduzidos por aplicações e serviços que criam ecossistemas conscientes, independentes de plataformas ou sistemas operacionais. “A computação consciente aprimora o dispositivo conectado e os serviços de nuvem pessoal, permitindo uma atividade de integração perfeita, ligada a aparelhos “invisíveis” e ativados por sensores, otimizados para um determinado conjunto de funções. Os dados e informações podem ser vinculados a outros serviços, pelos ecossistemas, plataformas e sistemas operacionais maiores”, afirmou Elia San Miguel, analista do Gartner.

A computação consciente é uma evolução natural de um mundo conduzido não por dispositivos, mas por coleções de aplicativos e serviços que se ampliam por meio de múltiplas plataformas e existem fora de telas conectadas, como telefones, tablets, PCs e TVs.

Como resultado, as aplicações são completamente cientes de ação e inação, não precisam ser ligadas/desligadas e fornecem uma maior quantidade de informações relevantes que podem, eventualmente, levar a uma mudança comportamental. Isso é algo impossível em aplicações ou dispositivos autossuficientes. Os consumidores não precisam adotar ou se comprometer totalmente com uma plataforma ou serviço. Podem adotá-los por meio de interação em longo prazo e compras feitas por funções, realizadas por tarefas de curto prazo.

Uma das experiências da computação consciente é que os dispositivos que levam o conhecimento caem em um chamado ‘espaço invisível’. Definimos como uma combinação de aparelhos e serviços unidos para formar uma experiência que não se consegue perceber no dia a dia. Na prática, os consumidores esquecerão que carregam o aparelho, que ele está desgastado ou usado até que precisem interagir com os mesmos para controlar ou obter um retorno, em termos de dados ou de informação”, disse a analista do Gartner.

Os dispositivos invisíveis e conscientes, que vão desde relógios de pulso e porta-chaves a termostatos e sapatos, são o equivalente digital de uma propriedade subdesenvolvida que pode se tornar extraordinariamente valiosa para o usuário, quando ligada aos serviços apropriados para ampliar o seu uso. Apesar de as ideias por trás dos atuais dispositivos conscientes estarem presentes há mais de uma década, a tecnologia “para vestir”, como a dos relógios inteligentes, na maioria das vezes, não ganha força junto ao consumidor. Isso acontece devido a altos custos, baixo valor percebido, ênfase na tecnologia sobre a forma e a necessidade de existirem como produtos autossuficientes e serviços que não podem se ligar a um ecossistema/plataforma maior.

Os serviços e ecossistemas de nuvem pessoal são o centro da experiência do consumidor digital. Combinados com conexões cada vez mais onipresentes, os aparelhos conscientes oferecem novas oportunidades de conduzir à adoção de novos dispositivos, ao aumento serviços de nuvem pessoal e a agir como um ponto de inflexão para a adoção da plataforma do consumidor. Na medida em que os novos aparelhos digitais ficam menores, conectam-se a aplicações de automação residencial e de aptidão pessoal e aumentam a funcionalidade do usuário, teremos um crescimento do uso de múltiplos dispositivos nos lares”, afirmou Elia San Miguel.

Encontrar profissionais qualificados para alguns setores em TI não é uma tarefa fácil, dizem recrutadores entrevistados pela INFO. Além disso, após a contratação dos funcionários, os especialistas afirmam que é importante mantê-los motivados e atualizados.

Atualmente, é muito forte a busca por profissionais qualificados de TI em quase todos os níveis e funções, de programador a gerente de projetos. Isso também inclui os profissionais que permanecem na empresa somente durante a realização de um projeto”, diz André Assef, sócio-diretor da Desix, empresa especializada no recrutamento e seleção de profissionais de TI.

Na maioria das vezes, o motivo do desligamento de um funcionário não está relacionado ao salário ou falta de habilidade, diz Assef. “Muitos colaboradores saem da empresa por causa do ambiente de trabalho ser ruim ou pela falta de perspectiva de crescimento profissional”, comenta.

Dinheiro não é tudo que o funcionário precisa. O colaborador precisa ter qualidade de vida”, diz Nancy Bastos, diretora de recursos humanos da Aon, empresa de gerenciamento de riscos, consultoria e corretagem.

Segundo Nancy, uma equipe motivada produz mais e permanece durante um período mais longo na empresa. Já a companhia retém estes profissionais que assimilaram sua cultura e experiência da função, especialmente em uma época de escassez de pessoas bem qualificadas.

Veja 7 dicas para motivar e reter os talentos de TI

Os diretores também indicam os principais fatores para reter um profissional na empresa. Veja abaixo:

  1. Perspectiva de crescimento – “Os funcionários engajados buscam a ascensão profissional e melhores salários. Quando atuam como gestores, eles podem comandar outras pessoas com o objetivo de obter o sucesso profissional de uma equipe inteira”, diz Assef. O diretor afirma que, muitas vezes, a possibilidade de crescimento profissional é o fator decisivo na aceitação de uma proposta de emprego.
  2. Plano de cargos e salários – Usado para padronizar a promoção e a progressão interna dos cargos na empresa. Isso evita a insatisfação dos profissionais, ajuda a eliminar distorções que causam desequilíbrios e atribui valores a cada setor da companhia.
  3. Ambiente de trabalho agradável – Esta é uma das principais reclamações dos funcionários em relação ao emprego anterior durante os processos seletivos. “A falta de entendimento com o gestor, colegas de trabalho e cultura organizacional da companhia refletem diretamente no tempo de permanência de um colaborador na empresa”, diz o diretor. (mais…)

Para fazer um conteúdo valer, ele precisa ser útil – e utilidade não é um conceito tão simples de construir.

Utilidade está ligada à necessidade. Para entender os anseios de informação de um público, não basta imaginá-lo indo às compras em um mercado, por exemplo. É uma visão simplista que na maioria das vezes nos faz dar com os burros n’água. ‘Eu preciso, procuro, acho e pronto’ – não é assim.

Necessidade de informação é o encaixe perfeito entre quem a anseia, por que a informação é procurada e o que com ela se deseja fazer.

Entender esta combinação nos permite dar um passo adiante na gestão de conteúdo: produzo com conhecimento de causa e acerto no alvo com pouca margem de erro.

A utilidade do conteúdo

Vamos estudar, então, cada peça do quebra-cabeça:

Quem quer a informação

Vá além de recortes habituais como idade, sexo e formação acadêmica. Na necessidade da informação, o foco essencial deve ser a profundidade com que o visitante de um site deseja uma informação.

Há o superficial, o que deseja a informação básica e o que quer o ‘pacote’ completo, com todo o detalhamento possível.

O pulo do gato não é conseguir atender todos estes, mas suar para conseguir entender qual entre os três é o mais constante.

Se você descobrir que o perfil ‘pesquisador’ é o mais usual, então o conceito de utilidade de conteúdo em seu site deve se sofisticar. Neste caso, informação útil é informação com todos os ‘opcionais’ possíveis.

A necessidade de informação é superficial? Então entenda que seu visitante deseja mais ‘pílulas’ de informação que conteúdo aprofundado. Mais assuntos, temas variados, uso de outros formatos que não texto são ferramentas que devem ser utilizadas para tornar seu conteúdo mais útil.

Por que a informação é desejada

Prazer ou obrigação? Urgência ou todo o tempo do mundo? Conhecer o porquê de seu visitante querer uma informação muda a estratégia que você irá desenvolver para trabalhá-la.

Se boa parte do público vai ao seu portal em busca de conteúdo que irá apoiá-lo no trabalho, objetividade deve ser o conceito ‘âncora’ a guiar o trabalho de utilidade da informação. Como não há tempo para o consumo, então o sucesso está em dar exatamente o que se quer.

Se não há tensão envolvida no acesso ao seu conteúdo, então a persuasão é seu instrumento. Aproveite que o visitante está aberto a receber mais informações do que ele mesmo se propôs a consumir quando entrou no portal e envolva-o com outras informações.

Para que é a informação

Seu visitante pode precisar de apenas uma informação e nada mais – e, neste caso, não adianta apresentar detalhamento ou informações semelhantes. Ele começará e terminará a visita pelo que está procurando.

Por isso, pense em cada informação como se em seu site só houvesse ela. Você iria elaborá-la com um capricho que, naturalmente, não iria despender em um site com milhares de páginas, não é?

Pois cada vez mais teremos este desafio: visitantes que acessam, via buscadores, um conteúdo específico. Seu site, para ele, é aquela informação. Sua marca cada vez mais será cada página separadamente. Um desafio e tanto.

Contudo, um usuário pode ter o objetivo de juntar a informação que procura a outras para construir conhecimento. Neste caso, você deve servir de ‘agulha’, ajudando o visitante a criar uma ‘tapeçaria’ com informações que ele deseja costurar para criar algo mais consistente. Neste caso, informação é alimento para criar conhecimento. Quanto mais, melhor.

Criar e gerir conteúdo depende muito de conhecer quem está do outro lado. Trabalhar por intuição é gasto de tempo e dinheiro.

Será que seguimos esta lógica à risca?

Texto por Bruno Rodrigues

Um dos princípios fundamentais do desenvolvimento Agile é que o teste é uma responsabilidade comum. Todo mundo na equipe deverá descobrir o que testar e testar o produto. Em essência, toda a equipe é co-proprietária de todos os testes.

No entanto, alguns tipos de testes, especialmente os testes funcionais, são difíceis de ser compartilhados. Ao contrário dos testes unitários, que são conceituados e implementados por desenvolvedores, os testes funcionais são geralmente implementados por desenvolvedores, mas conceituados por outra pessoa (podendo ser engenheiros de produto, QA, BA, testadores, ou outros papéis. Pelo bem da sanidade, vou me referir a esse grupo como QA). Essa dinâmica força uma transferência, o que torna difícil de realmente compartilhar de testes.

Uma maneira de lidar com essa questão é exigir que todos os membros de uma equipe Agile possa tanto conceituar quanto implementar testes funcionais. Em outras palavras, certifique-se de que cada membro da equipe possa codar. Apesar de possível, essa abordagem elimina todo um grupo de profissionais de QA que são ótimos para entender o que testar e encontrar bugs, mas não estão interessados em escrever código. Isso não é o ideal.

Uma maneira melhor é o QA e os devs unirem forças e escreverem testes juntos. Essa colaboração poderia funcionar como a técnica de “teste ping-pong”, comum no pareamento TDD. Ao usar essa técnica, um desenvolvedor escreve um teste de falha e seu par escreve o código de passagem. Não seria ótimo se houvesse uma maneira de fazer algo semelhante com um pareamento QA/Dev?

Felizmente, existem ferramentas disponíveis que tornam esse tipo de colaboração possível. Vou me concentrar em duas: Test Manager e Twist.

Os competidores

Microsoft Test Manager

A Microsoft lançou o Test Manager como parte do Visual Studio 2010. Ele permite que você defina casos de teste e organize-os. Cada caso de teste é um conjunto de passos, e eles podem ser compartilhados (o que significa que um passo pode ser reutilizado em diferentes casos de teste). Eles podem ser automatizados usando Coded UI Tests, que são escritos em C# e podem ser executados contra um navegador.

Twist

O Twist é uma ferramenta da ThoughtWorks Studios. Ele também permite que você defina casos de teste, organize seus testes, e automatize os passos dentro de um caso de teste usando Sahi ou Selenium. Você interage com o Twist por meio de uma versão personalizada do Eclipse, e os testes são automatizados em Java.

A comparação

Sei que essas duas ferramentas são muito mais do que apenas a criação de testes, mas estou basicamente interessado em saber como elas solucionam o problema da colaboração. Para entender isso, precisamos considerar como cada ferramenta facilita “passar o bastão” entre QA e desenvolvedores. Correndo o risco de simplificação excessiva, deve ser fácil fazer algo assim:

  • QA escreve um teste e entrega o teclado ao Dev
  • O Dev escreve o código para implementar o teste
  • Ambas as partes executam o teste e se certificam de que ele passa
  • Dev entrega o teclado de volta para QA
  • Enxágue e repita a operação para melhores resultados

Com a solução da Microsoft, os QAs deverão trabalhar em um ambiente (Test Manager), enquanto os devs estarão em outro (Visual Studio). Esse fato por si só torna a colaboração que eu descrevi acima relativamente envolvida e desnecessariamente complicada:

No Visual Studio:

Visual Studio

No Text Manager:

Text Manager

Por outro lado, o Twist permite que ambas as partes coexistam no mesmo ambiente, e transferir um teste escrito para implementação é literalmente tão simples quanto selecioná-lo e pressionar e Ctrl + Clique. O Twist cria automaticamente (ou reutiliza) uma classe conteiner Java com uma função nomeada com o mesmo nome que a etapa de teste:

Twist

O ponto principal

Mesmo correndo o risco de dizer o óbvio, vou afirmar que apenas uma dessas ferramentas torna mais fácil colaborar, e ela não é o Test Manager. Para ser honesto, isso é bastante decepcionante, pois o Test Manager se integra muito bem no desenvolvimento do ecossistema da Microsoft e ele teria sido bom de usar.

***

Texto original disponível em http://tatiyants.com/agile-testing-dev-qa-collaboration/

dez
26
Posted by Redação TargetTrust at 5:13 pm

Já abordei em outro artigo, no Jornal Java, sobre a imutabilidade de Strings ser um fator que não participa da orientação a objetos. Neste artigo, iremos abordar um pouco mais essa característica. Quais são os benefícios dessa imutabilidade, por que nós usamos, e em quais cenários devem ser usados.

Estamos partindo do pressuposto de que todos já sabem o que é String pool e conhecem a diferença entre String e StringBuffer, e StringBuffer e StringBuilder. Caso queiram que fale mais sobre esses assuntos, basta colocarem nos comentários que providenciarei.

Pode haver várias respostas para o fato de Strings serem imutáveis, e algumas apenas os designers da classe String poderiam nos responder, porém, duas respostas fazem sentido. (mais…)

set
13
Posted by Redação TargetTrust at 3:10 pm

A versão 5.5 do PHP virá com uma API voltada para permitir que administradores e desenvolvedores armazenem senhas de forma segura. Com a ajuda dela, os desenvolvedores serão capazes de usar apenas uma linha de código para gerar um hash com salt de uma senha usando bcrypt, aumentando a segurança.

$hash = password_hash($password, PASSWORD_DEFAULT);

Um salt não é necessário; ele será autogerado pela API caso não esteja presente e adicionado com um componente aleatório da senha. A verificação da senha é igualmente fácil:
password_verify($password, $hash);
Caso os hashes gerados caiam em mãos erradas, os criminosos são conseguirão reconstruir o texto correspondente das senhas sem um esforço considerável, já que as senhas originais são bastante longas. O método hash Bcrypt é um dos que são mais intensivos computacionalmente e requerem muita memória, tornando difícil quebrá-lo mesmo com GPUs. Um sistema com oito núcleos de CPU pode gerar cerca de cinco mil hashes por segundo, e um GPU atual pode entregar resultados semelhantes. Em comparação, fazer hashes com SHA1 deve gerar números na ordem de dezenas de milhões.

Com os salts, o uso de rainbow tables também é limitado. Caso os usuários queiram, podem não apenas especificar seu próprio salt na chamada a função hash, mas também ajudar a complexidade (custo) do método bcrypt, ou mudar o método de hash completamente. Essa informação é armazenada com o hash da senha. (mais…)

set
12

Discursos sobre PHP estão por toda parte, e eles vêm até mesmo de caras inteligentes. Quando Jeff Atwood escreveu outro sobre o PHP, isso me fez pensar sobre as partes boas dessa linguagem.

Curso de PHP em Porto Alegre

O maior problema desses discursos é que eles vêm de pessoas presas no passado do PHP. Ou eles não se importam ou não querem admitir que o PHP realmente evoluiu em um ritmo muito rápido, tanto no nível da linguagem, como no nível da comunidade. Na verdade, ele evolui muito mais rápido do que qualquer outra linguagem ou plataforma web. Nem sempre tem sido o caso, mas os últimos 5 anos têm sido uma jornada incrível para o PHP. (mais…)