Latest news

Machine Learning: aprender de forma autónoma

Com o movimento de transformação digital, o ramo de Machine Learning foi ganhando cada vez mais tração. Primeiramente assente numa teoria que advogava que os computadores poderiam aprender a efetuar tarefas específicas e a reconhecer padrões, o desafio colocado era simples: verificar se os computadores poderiam aprender com os dados.

Machine Learning proporciona aos sistemas a possibilidade de aprender e melhorar com a experiência, sem necessidade de haver uma programação específica para esse efeito. O foco é no desenvolvimento de programas que utilizem os dados disponíveis e consigam aprender por si. Os modelos matemáticos são construídos e alimentados com – potencialmente – grandes volumes de dados. Os algoritmos aprendem a identificar padrões e a retirar insights que são aplicados quando se processa nova informação. Este termo surgiu em 1959, quando o pioneiro Arthur Samuel definiu Machine Learning como a capacidade de um computador aprender sem ser explicitamente programado para o fazer.

Este processo de aprendizagem começa com processamento de dados, tentando identificar padrões. O objetivo principal é de permitir que os computadores aprendam autonomamente sem assistência humana, usando esse conhecimento para tomar decisões em concordância com o que foi “aprendido”. Embora os algoritmos de machine learning tenham estado presentes durante muito tempo, a aplicação destes cálculos matemáticos a Big Data, cada vez com maior fluidez, é um desenvolvimento mais recente. No entanto, de acordo com relatórios da indústria, o que se considera hoje em dia ser um crescimento tão exponencial nesta área, daqui a 50 anos será apenas visto como “baby steps”. É esperado que este ramo de IA cresça de forma muito acelerada nos próximos tempos.

Exemplos de Machine Learning

O interesse recorrente nesta prática é devido a alguns fatores que também tornaram o data mining e a análise Bayesiana extremamente populares. O crescimento no volume e variedade de dados disponíveis, o processo computacional que é mais barato e mais poderoso, e o armazenamento com um custo mais reduzido representam alguns dos atrativos deste ramo.

Alguns exemplos da aplicação de machine learning em algumas empresas incluem veículos de condução autónoma; recomendações de plataformas online como Amazon e Netflix com base no comportamento dos utilizadores; sistemas de reconhecimento de voz como a SIRI e Cortana; a plataforma Paypal assente em algoritmos de machine learning para combater a fraude, analisando grandes quantidades de dados do cliente e avaliando o risco; o modelo da Uber que utiliza algoritmos para determinar hora de chegada e determinar localizações de  partida; mecanismos de deteção de SPAM na conta de e-mail; reconhecimento facial que ocorre em plataformas como o Facebook.a

Indústrias apostam em Machine Learning

A maioria das indústrias com grandes quantidades de dados já reconheceu o potencial desta tecnologia. A possibilidade de extração de insights permite às empresas obter uma vantagem competitiva e trabalhar de forma mais eficiente.

Serviços Financeiros

Tanto os bancos como as demais entidades financeiras estão a usar machine learning com dois propósitos: retirar insights valiosos dos dados e prevenir a fraude. Os insights identificam oportunidades de investimento adequadas aos perfis dos clientes, e no campo da fraude, são identificados clientes de alto-risco.

Para além disso, com esta tecnologia também se consegue influir o nível de satisfação do cliente. Recorrendo à análise da atividade do utilizador, as smart machines conseguem prever um possível fecho de conta antes dele ocorrer, por exemplo.

Saúde

As entidades de saúde podem capitalizar na junção entre IoT e análise de dados, para desenvolver melhores soluções para os pacientes. O aparecimento de wearables permite a aquisição de dados relativos à saúde dos pacientes, que por sua vez permite aos profissionais de saúde detetarem padrões relevantes ou situações de risco. Esta tecnologia permite, por isso, melhorar o diagnóstico e o tratamento.

Retalho

Hoje em dia é bastante notório o impato das smart machines na experiência do utilizador. O resultado é um serviço altamente personalizado que inclui recomendações baseadas no histórico de compra ou atividade online; melhoria no serviço de apoio ao cliente e sistemas de entregas, em que as máquinas decifram o significado dos emails dos utilizadores e notas de entregas de forma a priorizar tarefas e garantir a satisfação do cliente; rastrear mudanças de preços, identificando padrões nas flutuações de preços, permitindo estabelecer os mesmos de acordo com a procura. A capacidade de reunir dados, analisar e utilizar os mesmos para personalizar uma experiência de compra (ou implementar uma campanha de marketing) é o futuro da indústria de retalho, por exemplo.

Transporte

Analisar dados para identificar padrões e tendências é chave para a indústria de transporte, uma vez que o aumento de lucro é sintomático de rotas mais eficientes e da previsão de potenciais problemas. A análise de dados e os aspetos modelares de machine learning são ferramentas importantes para empresas de entregas e de transportes públicos poderem aumentar os seus dividendos.

As aplicações de machine learning permitem às empresas automatizar a análise e a interpretação das interações do negócio, retirando insights valiosos que permitem personalizar produtos e serviços, em última instância.  Esta aposta na transformação digital irá certamente traduzir-se num investimento que se revelará uma decisão lucrativa para o negócio.

A Xpand IT tem um portefólio de serviços completo na área de Machine Learning. Se pretender saber como pode colocar Machine Learning ao serviço do seu negócio e obter um verdadeiro valor acrescentado, nós ajudamos. Quer saber de que forma podemos ajudar o seu negócio? Entre em contato connosco aqui e retire o máximo proveito desta tecnologia!

Sílvia RaposoMachine Learning: aprender de forma autónoma
read more

Apache Superset Open Source BI: a quase alternativa a Tableau

O que é o Apache Superset?

O Apache Superset é uma aplicação de Business Intelligence com uma interface minimalista, com visualizações interessantes e que permite a criação e partilha de dashboards.

É uma aplicação simples, que não envolve a necessidade de grandes conhecimentos de programação, permitindo ao utilizador explorar, filtrar e agrupar os dados de forma simples e rápida. E a melhor parte é ser open-source.

O que é que o Apache Superset oferece?

O Apache Superset permite explorar de forma complexa cada visualização ao permitir detalhar cada gráfico/métrica e facilmente filtrar e agrupar os dados, permitindo a construção de dashboards com elevado valor para o utilizador.

Outro atrativo nesta aplicação é o editor SQL/IDE com querying interativa.

Em relação à segurança, o Superset permite definir uma lista de utilizadores, de funções default (associadas aos grupos de utilizadores) e permite visualizar estatísticas de utilizadores, fornecendo controlo total. Permite ainda definir permissões de base, assim como permissões para aceder a certas visualizações ou menus, fornecendo também logs de todas as ações.

Visualmente, o Superset apresenta um interface muito minimalista e bem organizado. Já em termos de facilidade de uso, embora não esteja ao nível do Tableau, o Superset pode ser uma alternativa para a elaboração de dashboards por utilizadores com algum conhecimento de SQL.

Ao nível das funcionalidades e da complexidade que permite colocar nas visualizações, existe um grande hiato para ferramentas como o Tableau.

Suporte de bases de dados

O Apache Superset suporta a maioria das bases de dados SQL, através de Python ORM (SQL ALchemy). Assim é possível aceder a MySQL, Postgres, Oracle, MS SQL Server, MariaDB, Sybase, Redshift entre outros, através da SQLAchemy (mais informação aqui).

O Superset funciona também com Druid (por exemplo, o Airbnb usa Superset com Druid 0.8x), embora não tenha todas as features avançadas disponíveis.

SQL-LAB

Esta feature é definitivamente um plus. O SQL-Lab permite selecionar a base de dados, schema e tabela (que já tenham sido carregadas previamente), e fazer querying interativa, pré-visualizar os dados e também guardar o histórico das queries (como é possível observar abaixo).

SQL Lab

Tem uma camada semântica que permite calcular campos e métricas (por exemplo rácios, ou qualquer coisa que possa ser expressada através de linguagem SQL):

SQL Lab

Histórico de queries

Histórico de queries
Histórico de queries

Também tem disponíveis módulos de Python (algumas macros), dentro do SQL, via Jinja.

O lado menos positivo é que não é possível adicionar ou fazer query de várias tabelas ao mesmo tempo. A solução é fazer uma view que funciona como uma camada lógica que abstrai a query de SQL e dessa forma funciona como uma tabela virtual. A limitação é que existirá sempre uma query a correr em cima de outra query da visualização, pelo que poderão existir issues de performance.

Construir um dashboard

Para criar um dashboard, o Superset funciona da seguinte forma: existem as sources, onde constam todas as bases de dados e tabelas; as slices são as páginas com os gráficos, e por fim os dashboards que são compostos por conjuntos de slices.  Cada slice pode estar associada a um ou mais dashboards.

superset dashboard

Quanto às visualizações, tem à disposição diferentes tipos de gráficos tais como histogramas, box plots, heatmaps ou line charts.

Para editar os gráficos, o processo é simples: do lado esquerdo temos as propriedades disponíveis para cada visualização.

Embora seja flexível na maioria dos campos, o Superset força alguma standardização como é o caso dos schemas de cores.

superset dashboard

Cada visualização permite filtros, através de wildcards.

superset dashboard

O Superset também permite partilhar a visualização, exportar os dados para .JSON ou .CSV e também permite observar a query exata que está a ser realizada em cada visualização.

superset dashboard

Segurança

O Superset tem integração com os principais backends de autenticação (database, OpenID, LDAP, OAuth, REMOTE_USER, …)

Em termos de privilégios, como referido acima, esta aplicação providencia roles default como sejam o Admin (acesso total), Alpha, Gamma, Sql_lab e Public.

É possível estabelecer permissões para cada usuário, restringir o acesso a apenas um subset de fontes de dados, menus, views, métricas específicas e outras ações. Posto isto é relativamente fácil definir que tipo de permissões e/ou acesso a dados que é dado a cada pessoa.

Utilização do Superset

Atualmente, o Superset está a ser usado pelo Airbnb, Twitter, GfK Data Lab, Yahoo!, Udemy e outros. Segundo a página do GitHub o Superset já foi testado em grandes ambientes com centenas de utilizadores. O ambiente de produção do Airbnb corre com Kubernetes e serve mais de 600 utilizadores ativos que visualizam mais de 100 mil gráficos por dia.

Superset Vs Tableau

Tableau

Superset

  • Permite fazer join entre tabelas partindo da mesma DB ou com diferentes DBs.
  • Não permite fazer query/join de múltiplas tabelas. É necessário fazer view by view, o que acarreta ter várias queries o que afeta a performance.
  • Permite customizar os dashboards ao detalhe, com legendas, filtros, etiquetas, etc.
  • As customizações são restritas por tipo de visualização (embora seja possível criar templates de CSS)
  • A aprendizagem inicial é fácil e os utilizadores não precisam de conhecer SQL. A plataforma permite fazer tarefas mais complexas e flexíveis, existindo uma segunda curva de aprendizagem para os utilizadores que querem tirar o máximo partido do Tableau.
  • A aprendizagem não é difícil mas exige que os utilizadores tenham conhecimentos de SQL.
  • Pago
  • Grátis e Open-source

Vantagens principais do Superset

  • Business Intelligence sem necessitar de código (fácil de usar para que não é programador, basta saber o básico de SQL);
  • Setup é fácil e rápido;
  • Fornece um “SQL-Lab” que permite querying interativo;
  • Uma camada semântica que permite enriquecer o dashboard com rácios e outras métricas (baseadas em SQL);
  • Visualização interativa fácil e apelativa, permitindo a exploração de dados;
  • Providencia uma análise de dados simplista, mas que satisfaz as necessidades de clientes mais pequenos ou com menor volume de dados.

Desvantagens do Superset

  • A aplicação não suporta bases de dados NoSQL até ao momento;
  • Tem ainda uma base limitada de apoio, embora a comunidade de utilizadores esteja a crescer;
  • Por vezes o SQL-Lab bloqueia quando se faz queries em grandes quantidades de dados;
  • Não permite fazer visualizações complexas, limitando-se a uma utilização e exploração de dados mais básica.

Susana Santos

Data Scientist, Xpand IT

Susana SantosApache Superset Open Source BI: a quase alternativa a Tableau
read more

As melhores práticas para a gestão de pedidos de serviço

Gestão de pedidos de serviço

O que são pedidos de serviço?

As equipas de TI recebem uma larga variedade de pedidos dos seus clientes, incluindo acesso a aplicações, melhoramentos de software, upgrades de computadores ou novos smartphones, por exemplo. Este tipo de pedidos é classificado segundo a ITIL como “Pedidos de Serviço” e identifica o inerente processo de gestão como “Resolução de Pedidos”. Muitos dos pedidos de serviço são recorrentes, portanto e para obter a máxima eficiência, devem ser definidos processos e procedimentos que sejam repetíveis.

Resolução de pedidos – o que é?

Resolução de pedidos é o processo gerido pela equipa de Service Desk que consiste em resolver um pedido de um cliente. A sua missão consiste em responder ao pedido com o maior e mais elevado nível de qualidade de suporte. Numa organização onde um elevado número de pedidos de serviço têm de ser geridos, é recomendado efetuar a sua gestão numa corrente de trabalho totalmente independente e que possibilite gravar e manusear estes registos de forma separada.

Quais são os 4 processos de TI fundamentais?

  1. Gestão de pedidos de serviço – um pedido formal de um utilizador para algo que necessita de ser providenciado
  2. Gestão de incidentes – uma interrupção não planeada de um serviço de TI ou uma redução da qualidade do mesmo – exemplo: “website em baixo”
  3. Resolução de problemas – eliminar incidentes recorrentes e minimizar incidentes que não podem ser prevenidos – exemplo: “O problema da aplicação de reporting está a ocorrer novamente”
  4. Gestão da mudança – metódo standardizado para controlar mudanças ao sistema de TI para minimizar o impacto nos serviços – exemplo: “O upgrade da base de dados está agora terminado”

Priorização na gestão de pedidos de serviço

Para as equipas de TI nas organizações, os pedidos de serviços excedem muitas vezes a capacidade em termos de tempo e recursos. As equipas de serviços de TI em empresas de grande dimensão, respondem constantemente a pedidos de negócio e muitas vezes “entram em modo”: responder primeiro aos clientes que mais reinvindicam essa atenção. No entanto, os clientes reclamam que é difícil trabalhar com o TI, que este não responde e que leva demasiado tempo a fechar os pedidos de que necessitam para trabalhar. A gestão de pedidos de serviço torna todo este processo bastante mais simples, na medida em que dota as pessoas de uma capacidade “self-service”, fornece respostas com base em sugestões de uma  “knowledge base” e agiliza todo o processo de resolução de pedidos entregando assim, um serviço ótimo. À luz de todas estas questões, existem algumas coisas que as equipas de serviços de IT devem priorizar.

Top 5 de priorizações para entregar um serviço de TI ótimo

  1. Cliente primeiro – as equipas de “service desk” podem várias vezes ser conduzidas pela oferta em detrimento da procura. Está a criar um catálogo de pedidos de serviço com funcionalidades “self-service”, porque acha que é algo bom, ou está a trabalhar diretamente com os seus clientes na satisfação das suas maiores necessidades? Muitas organizações criaram um portal de catálogo de pedidos de serviços que resultou numa utilização baixíssima. Aprenda com os erros de outros e crie algo baseado na procura e não na oferta.
  2. Foco em pedidos “populares” – as equipas de “service desk” tanto podem começar de forma ampla e superficial ou estreita e profunda. Perceba o que vai servir melhor a sua organização e os seus clientes. É uma prática comum, começar com um sub-conjunto de oferta de serviços “populares” e escalar a partir daí com base na sua utilização e feedback. Tente não sobrecarregar em demasia a equipa numa fase inicial e lembre-se de que um lançamento falhado fará com que seja mais difícil fazer com que os clientes voltem para uma 2ª tentativa.
  3. Integre o conhecimento – os clientes procuram por respostas. Forneça-lhes portanto acesso facilitado à “knowledge base” e redirecione tickets com artigos pesquisáveis. Entregar uma experiência self-service que os seus colaboradores adorem, é o primeiro passo para que todo o processo seja facilitado e para que estes voltem a perguntar e encontrar respostas.
  4. Centralize o portal “self-service – os clientes procuram sempre um local único quando procuram ajuda, por isso, mesmo que desenolva o mais poderoso sistema de “self-service”, ele será inútil se os clientes não o encontrarem facilmente. Deve procurar caminhar sempre no sentido da centralização e procurar aumentar o valor fornecido aos clientes quando estes utilizam o catálogo de serviços.
  5. Alavanque a automação – fornecer uma gestão de pedidos de serviço altamente funcional e centrada no conhecimento é um excelente primeiro passo, mas é necessário encontrar formas para que a equipa de TI possa entregar ainda mais valor aos seus clientes com uma experiência self-service. O poder para ser efetivo aqui, encontra-se na automação. Quando conseguir incorporar a automação nas suas funcionalidades de “service desk”, estará a reduzir a carga de trabalho global da sua equipa de TI ao retirar as tarefas mais comuns e repetitivas.

O processo de gestão de pedidos de serviço

Embora possam existir algumas variações na forma como um pedido de serviço é resolvido, é importante focar-se em como pode alavancar a standardização e melhorar a qualidade e eficiência global do serviço. O esquema abaixo representa um processo simples de resolução de pedido de serviço, baseado nas recomendações ITIL e que pode ser usado como um ponto de partida para adaptar processos existentes ou definir novos.

O processo de resolução de pedidos de serviço em resumo:

  1. Um clientes solicita apoio através do seu catálogo de serviços ou via e-mail.
  2. A equipa de “service desk” analisa o pedido em consonância com o processo de qualificação e aprovação.
  3. Um membro da equipa de “service desk” trabalha para resolver o pedido, ou reencaminha o pedido para alguém que o possa fechar.
  4. Após a resolução do pedido, o “service desk” fecha o ticket. O membro da equipa consulta o cliente para assegurar-se de que o pedido deste foi devidamente resolvido.

8 dicas a considerar quando define requisitos de serviço

  1. Comece pelos items mais frequentemente solicitados e escolha aqueles que mais rápida e facilmente são resolvidos. Isto permitir-lhe-á entregar valor imediato aos seus clientes e permitirá que a equipa de “service desk” possa aprender à medida que constrói fases futuras do catálogo de pedidos de serviço.
  2. Documente todos requisitos dos pedidos de serviço (data do pedido, processo de aprovação, procedimentos de resolução, equipa de resolução, “donos” do processo, SLA’s, reporting, etc.) antes de os adicionar ao seu catálogo. Isto possibilitará à equipa de TI, gerir melhor os vários requisitos dos pedidos ao longo do tempo. Este passo é bastante importante para pedidos mais complexos que irão evoluir de futuro.
  3. Capture os dados necessários apra iniciar processos de pedidos, mas não sobrecarregue o seu cliente com demasiadas questões.
  4. Standardize o processo de aprovação sempre que possível. Por exemplo, todos os pedidos para novos monitores são considerados pré-aprovados e todos os pedidos de software carecem de aprovação por parte do superior do cliente.
  5. Reveja o processo e procedimentos de resolução de um pedido para identificar quais as equipas de suporte que são responsáveis pela resposta e se existe algum requisito específico.
  6. Identifique que conhecimento deve ser disponibilizado na “knowledge base” quando é libertada uma oferta de pedidos. O objetivo global do “self-service” é dar aos seus clientes aquilo que querem mais rapidamente e redirecionar pedidos sempre que possível. Desta forma poderá responder a questões através de um simples FAQ, incluindo este conhecimento como parte do plano quando criar uma oferta de pedidos de serviço.
  7. Reveja os Service Level Agreements (SLA’s) para garantir que tem as métricas corretas e as notificações devidamente definidas, permitindo que os pedidos sejam resolvidos num período de tempo viável.
  8. Identifique que reporting é necessário para que possa gerir devidamente todo o ciclo de vida de um pedido de serviço e o respetivo catálogo a longo prazo.

Gestão de pedidos de serviço com Jira Service Desk

O Jira Service Desk está no cerne da abordagem tecnológica da Atlassian à gestão de pedidos de serviço em TI (ou IT Service Management – ITSM). Construído com base na plataforma Jira, o Jira Service Desk é projetado de base para equipas de TI e é a a solução de Service Desk mais colaborativa que existe no mercado. Então, porque usar o Jira Service Desk para gerir pedidos de serviço?

Deixamos que seja um cliente de referência da Xpand IT, o Pestana Hotel Group, a dar-lhe essa resposta, através do testemunho dado no evento Atlassian Jam Sessions, levado a cabo em junho de 2018. Assista ao vídeo:

Quer conhecer melhor o Jira Service Desk?

Temos a iniciativa ideal para si. Se quer conhecer melhor todas as potencialidades desta plataforma de referência para gestão de pedidos de serviço, assista ao Webinar gratuito que a Xpand IT levará a cabo no próximo dia 27 de setembro. Vamos mostrar-lhe de que forma pode criar ou melhorar toda a gestão de service desk na sua empresa. Garanta já a sua slot!

INSCRIÇÃO GRATUITA

Este conteúdo é baseado num artigo publicado no Blog Atlassian – Best Practies for Service Request Management. A Xpand IT é parceira exclusiva Atlassian em Portugal, tendo atingido o estatuto Atlassian Platinum Solution Partner.

Ana PaneiroAs melhores práticas para a gestão de pedidos de serviço
read more

Pledge 1%: O apoio à Associação Crescerbem com Jira Software

A Associação Crescerbem é uma Instituição Particular de Solidariedade Social, fundada em 2011, e que tem como principal objetivo apoiar famílias de crianças que se encontram hospitalizadas e que demonstrem carência económica. A associação iniciou a sua atividade no Hospital Dona Estefânia, em Lisboa, junto ao qual mantem a sua sede, tendo, entretanto, alargado o apoio ao Hospital de Santa Maria e ao Hospital Beatriz Ângelo.

A missão da Crescerbem passa, precisamente, por capacitar as famílias de uma forma personalizada, atendendo às necessidades específicas de cada caso, tornando-as mais autónomas e independentes. Desta forma, o acompanhamento não acontece apenas durante o internamento, mas também no período que se segue após a alta médica.

Com o apoio domiciliário que a associação começou a garantir, outras necessidades foram sendo identificadas – para além do acompanhamento hospitalar – e, a partir desse momento, nasceram inúmeros projetos paralelos, como a dispensa solidária (cabazes de alimentos fornecidos às famílias), a lavandaria ou, ainda, a farmácia solidária (que fornece os medicamentos necesssários).

Apesar do número de famílias apoiadas e da quantidade de processos existentes, a informação ainda se encontrava toda offline. Ou seja, era impossível aceder à informação necessária sem estar fisicamente na sede da associação. Os voluntários passavam horas a procurar processos e a atualizá-los, o que resultava numa enorme falta de visibilidade sobre o estado atual de cada apoio. Informatizar toda esta informação era, por isso, extremamente necessário. No entanto, existia um problema: a falta de meios financeiros para apostar em soluções tecnológicas que conseguissem pôr fim a este problema.

Foi nesta fase que a Donate IT – uma comunidade de voluntários que trabalha em tecnologias da informação – entrou em cena, através de Sofia Neto, voluntária da comunidade e Collaboration & Development Solutions Lead da Xpand IT. Sofia conseguiu aliar o trabalho da Donate IT ao movimento Pledge 1% – movimento ao qual a Xpand IT aderiu no ano de 2017, comprometendo-se a doar, anualmente, 1% de lucro e 1% de produto a instituições de solidariedade social. De forma totalmente pro bono, a Xpand IT disponibilizou Jira Software à Crescerbem (incluindo a implementação e o suporte), cumprindo tanto a visão da Donate IT – ajudar os outros a ajudar – como a do Pledge 1%.

Este projeto, para além de ser extremamente importante na informatização de toda a documentação da Crescerbem, prova que o Jira Software tem muito mais funcionalidades do que a gestão de software. Na prática, pode ser adaptado a qualquer realidade.

Na associação, cada família corresponde àquilo que é um issue no Jira. Quando se inicia um novo apoio com uma nova família cria-se um novo issue e escolhe-se o tipo family. Neste caso, cada issue tem a informação completa que caracteriza cada família: quando se iniciou o apoio, quantos filhos existem, qual a naturalidade da família ou o contacto dos pais, são algumas das informações presentes.

Aparece tudo organizado em diferentes tabs, para que seja mais fácil a consulta e edição da informação de cada família e todas as iniciativas são consideradas subtasks: um apoio domiciliário ou a medicação entregue. Passou, então, a existir um registo de tudo aquilo que é realizado e todos podem aceder a essa informação em qualquer local.

A próxima release já está a ser preparada pela Xpand IT e terá dois objetivos: o primeiro é introduzir o Confluence, de forma a facilitar ainda mais a partilha de informação sobre as tarefas a realizar ou as famílias com processos abertos; e o segundo é incluir o Xporter na oferta, para que a associação consiga exportar facilmente um relatório, por exemplo, para poder apresentá-lo sempre com a melhor formatação.

Com este software temos a possibilidade de informatizar todos os processos sociais e isto significa que, com apenas um clique, conseguimos ter acesso a toda a informação referente às famílias. Qual a importância desta mudança? Vamos ter mais tempo. Tempo para avançar com a expansão para outros hospitais, tempo para ajudar mais famílias, e tempo para avançar com a ideia de um negócio social, que tornará a Crescerbem autosustentável

Isabel Ramos - Co-fundadora, Crescerbem
Ana PaneiroPledge 1%: O apoio à Associação Crescerbem com Jira Software
read more

DevOps não é Dev & Ops – O que eu não sabia acerca de DevOps

Já há muito tempo que ouço falar de DevOps, mas estava profundamente convencida que era demasiado “techy” para mim. Eu pensava que DevOps era sobre Continuous Integration, Automação, e uns tipos fantásticos que se auto-intutulavam de DevOps e que sabiam quer de desenvolvimento de software quer de gestão de sistemas.

Agora, entendo que estava completamente enganada… DevOps não é igual a Dev & Ops a trabalharem juntas, mas antes a uma organização inteira a trabalhar em conjunto, a colaborar, mas colaborar à séria.

Claro que necessitamos de Automação, claro que necessitamos de soluções para Continous Integration, mas não só.

Numa cultura DevOps, devemos seguir estes princípios:

  • “Know the Flow” (Conheça o seu fluxo) = perceber como é que algo vai de “por fazer” a “feito”.
  • Trabalhar de forma aberta e visível = em vez de trabalhar em equipas isoladas, que apenas se preocupam com o SEU trabalho, toda organização trabalha em conjunto para atingir um propósito.
  • Aprender todos os dias & melhorar = Não perca tempo, se algo precisa de ser melhorado, melhore. Aprenda com as falhas e dissemine o conhecimento por toda a organização.

Mas como podemos transformar uma organização inteira? Em baixo, partilho alguns exemplos práticos:

  • Torne o seu trabalho visível para todos, não se preocupe sobre o que é que os outros vão pensar das suas falhas e sucessos.
  • Mude o “mindset”, deixe-me partilhar esta história que uma vez ouvi..

JFK, antigo presidente dos EUA, em visita à NASA, viu um empregado de limpeza e perguntou-lhe: “O que está a fazer?”. Ele esperava uma resposta, como: “Estou a limpar o chão”, mas antes, o empregado de limpeza respondeu: “ Estou a ajudar o homem a chegar à lua”.

  • Adicione o propósito às suas “user stories”, não desenvolva algo para fazer outra coisa, mas porque o que vai desenvolver vai gerar valor, como por exemplo, aumentar a satisfação do cliente em 80%.
  • Colabore, colabore e colabore um pouco mais… Nenhum homem é uma ilha, portanto não trabalhe como estando numa.

As ferramentas não são o mais importante, mas com certeza que ajudam. As sapatilhas de corrida, não fazem de si um corredor, mas vão de facto ajudar a correr melhor.

Se se encontra à procura de ferramentas que o possam ajudar a compreender o fluxo de trabalho, tornam o trabalho da sua organização visível e ajudam a colaborar melhor como equipa, espreite o Jira, que permite às equipas capturar e organizar o trabalho e o mais importante de tudo, colaborar.

Sofia Neto

Collaboration & Development Solutions Manager, Xpand IT

Sílvia RaposoDevOps não é Dev & Ops – O que eu não sabia acerca de DevOps
read more

Xpand IT Recebe Prémio Atlassian Philantropy Partner do Ano 2018

Barcelona, 4 de setembro de 2018  – “São momentos como estes que nos relembram de que o compromisso de dar de volta à comunidade pode, realmente, fazer a diferença e tornar o mundo num sítio melhor”. Foram estas as palavras de Pedro Gonçalves, Co-fundador da Xpand IT, após ter recebido o prémio Philantropy Partner do Ano 2018, em nome da Xpand IT, no Atlassian Summit 2018.

A Xpand IT foi uma das primeiras empresas portuguesas a aderir ao movimento Pledge 1% e foi a primeira empresa portuguesa a doar 1% de lucro e 1% de produto a organizações de solidariedade social. Ao longo de todo o ano de 2017, a Xpand IT envolveu-se profundamente no movimento filantrópico, desenvolvendo inúmeras iniciativas com o intuito de dar de volta à comunidade.

“A Atlassian está bastante contente por poder reconhecer e homenagear a Xpand IT com o prémio Parceiro do Ano 2018”, disse Martin Musierowicz, Head of Global Channels da Atlassian. “Os nossos Solutions Partners são fundamentais para o sucesso dos nossos clientes, e ficamos entuasiasmados por podermos destacar alguns dos nossos parceiros, que estão a superar as expetativas no suporte e implementação de serviços Atlassian”.

A Xpand IT pretende, agora, aumentar a fasquia, e as missões para 2019 são a disseminação do movimento Pledge 1% e a multiplicação do número de iniciativas levadas a cabo, com o intuito de ajudar quem precisa – mantendo sempre o foco em melhorar os processos colaborativos nas organizações apoiadas, através de ferramentas Atlassian.

A Atlassian é uma das maiores empresas de tecnologia do mundo, e é a empresa responsável por produtos como o Jira, Jira Service Desk, Bitbucket ou o Confluence. A sua missão passa por ajudar as equipas a desvendar o seu verdadeiro potencial. A Xpand IT atua como único Solutions Partner em Portugal, tendo já atingido o nível máximo de parceria – Platinum – com um impressionante número de projetos implementados com recurso a produtos Atlassian.

Para Sofia Neto, Collaboration & Development Solutions Lead da Xpand IT, marcar presença no Atlassian Summit, para além de ser uma excelente oportunidade para conhecer novas pessoas e partilhar experiências, é também um forte reconhecimento do trabalho realizado: “Temos a oportunidade de participar em eventos exclusivos como este e a experiência vai muito para além do “tradicional”. Este é o segundo ano consecutivo que a Xpand IT é distinguida  pela Atlassian, desta vez pelo reconhecimento do nosso compromisso para com o movimento corporativo filantrópico Pledge 1%, e isso é algo que nos deixa extremamente orgulhosos e que nos incentiva a ir mais longe. Isto é, sem dúvida, um grande exemplo daquilo que significa ser um Xpander.”

Equipa Xpand IT recebe das mãos do co-fundador da Atlassian, Mike Cannon-Brookes, o prémio Philanthropy Partner no Atlassian Summit 2018, em Barcelona.
Sílvia RaposoXpand IT Recebe Prémio Atlassian Philantropy Partner do Ano 2018
read more

Aplicar ‘Product Thinking’ a UX

A vida é curta demais para construir algo que ninguém quer.

- Ash Maurya in “Running Lean: Iterate from Plan A to a Plan that Works”

UX/UI na Xpand IT

A Xpand IT tem investido nos últimos anos na oferta de serviços UX/UI, o que resultou num crescimento significativo do nosso portfólio HCI (Human Computer Interaction) em software aplicacional B2B e B2C e aplicações móveis em clientes portugueses e estrangeiros.

Os nossos interfaces e design de experiência de utilização, desde sempre baseados no conceito de Design Centrado no Utilizador, estão presentes em praticamente todos os setores de atividade: retalho, banca, telecomunicações, seguros, saúde, transportes, e-commerce, mobilidade, utilidade pública, entre outros.

Estamos preparados para os próximos desafios da experiência de utilização em produtos digitais – por exemplo, propomos e desenhamos cada vez mais CUI (Conversational User Interfaces) – mas deparamo-nos ainda com vestígios de uma mentalidade não totalmente alinhada para o pensamento de produto digital, mais preocupada em desfilar uma enorme quantidade de requisitos funcionais, por vezes totalmente desadequados das necessidades do utilizador final do produto.

A experiência de imediatismo oferecida, sobretudo, pelas aplicações de social media, está a transformar as nossas expetativas em relação à forma como queremos utilizar produtos e serviços digitais. Enquanto UX designers, sentimos necessidade de analisar o ecossistema completo que as marcas e os utilizadores compartilham, para definir como o negócio ainda pode ser relevante num mundo onde o imediatismo é rei.

O Design Centrado no Utilizador – com a sua mentalidade de trazer os utilizadores para o processo de design – existe para reduzir as lacunas entre quem cria um produto e quem o está a usar.

A equipa de UX da Xpand IT está focada em encontrar essas lacunas, preveni-las e eliminá-las.

Pensar o produto

Na sua abordagem tradicional, o design de UX/UI tem-se concentrado nas funcionalidades de um produto digital: qual o aspeto do interface (UI) e como os utilizadores interagem com ele (UX).

No entanto, um conjunto de funcionalidades é apenas uma pequena, frágil, parte de um produto: são algumas das muitas soluções possíveis para o problema que o produto tenta resolver.

Não é que as funcionalidades não sejam importantes, mas geralmente são secundárias em relação ao motivo pelo qual as pessoas usam um produto. Essa razão é simples: o utilizador usa o produto para resolver um problema específico do mundo real.

Na prática, isso significa que temos de compreender o produto primeiro. Uma funcionalidade pode (ou não) ser uma parte útil de um produto, mas sem o produto, essa funcionalidade poderá ser desperdiçada.

Por exemplo, a app da Uber é frequentemente usada como uma boa referência de design de experiência do utilizador: uma das funcionalidades que cria mais empatia é a contagem regressiva que informa o tempo que resta até à chegada do carro, o que certamente é conveniente e está relacionado com o objetivo da aplicação. Mas o que torna a Uber tão atraente é a capacidade de obter rápida e facilmente um transporte na sua área a qualquer hora. Mesmo que a funcionalidade de contagem regressiva não existisse, a aplicação ainda seria útil. Por outras palavras, a Uber foi pensada tendo em mente o objetivo do produto, não os recursos que o acompanham.

A aplicação de Product Thinking à experiência do utilizador tem tido uma adesão global pelos UX designers e ganhou dimensão quando profissionais de reputação internacional – como o alemão Nikkel Blaase – a trouxeram para uma esfera mais alargada de divulgação pública. A propósito, esta talk poderá ser um bom ponto de partida para aprofundar o tema.

Definir o produto

De um modo geral, as empresas tendem a assumir que quantas mais funcionalidades houver, mais utilidade terá o produto. Que quanto mais abrangente for o público-alvo, mais pessoas irão utilizá-lo. Que quanto mais cenários de uso forem mapeados, mais ele estará presente na vida das pessoas.

O que não é necessariamente verdade: o que não faltam por aí são produtos com toneladas de funcionalidades que não são usados por ninguém.

Um erro muito comum é começar imediatamente por desenhar algum tipo de interface.

Mas, se o problema do utilizador não está ainda identificado, porque é que se está já a pensar em funcionalidades e interfaces?

É justamente neste ponto que muitos produtos digitais falham: quando tentam resolver um problema que não existe.

Entender a fundo o problema, quem é o utilizador e de que forma o produto irá resolver esse problema, precisa de vir antes da solução que será encontrada para o resolver.

No entanto, o processo de criação de produtos digitais tem tendência a ser um pouco caótico: dentro de uma empresa são diversos os departamentos, áreas e negócios que têm opiniões diferentes sobre aquilo que o produto deve ser, para quem deve ser desenhado e, principalmente, que funcionalidades deve conter.

Deve-se, por isso, realizar uma reflexão profunda para definir com clareza o âmbito e os requisitos de um produto digital:

  • Porque estamos a investir neste produto? Qual a oportunidade de negócio em criar este produto? Que dados e estatísticas comprovam que o produto é viável?
  • O que é o produto? Qual a sua principal funcionalidade? Como se destaca da concorrência?
  • Para quem se vai criar o produto? Qual o perfil do utilizador típico? Que comportamentos ou necessidades específicas desse utilizador devem ser tidos em conta?
  • Onde e quando o produto será usado? A que horas e com que frequência? Em casa, no trânsito, no trabalho? É um produto de uso constante ou algo para usar uma vez só?
  • Como queremos que as pessoas usem o produto? O que queremos que as pessoas sintam ao utilizá-lo? Que problemas queremos resolver?

Encontrar a resposta correta a estas perguntas constitui a estratégia básica da definição de um produto e provoca alinhamento entre as várias áreas de negócio das empresas. Este processo, quando bem conduzido e auxiliado por designers UX, traz enormes vantagens:

  • Construir funcionalidades e interfaces corretas para o utilizador.
  • Entender a experiência como um todo, não apenas a camada visual e de interação que o utilizador verá.
  • Garantir que o produto resolve problemas reais dos utilizadores.
  • Mitigar o risco de construir algo que ninguém queira usar, ou que não dure por muito tempo.

Conclusão

Quando este tipo de pensamento sobre o produto faz parte do processo desde o início, os designers UX podem fazer as perguntas certas, comunicar com mais eficiência e sugerir as funcionalidades mais adequadas.

É fácil ficar atolado em funcionalidades infinitas e ignorar algumas das partes importantes do processo de design.

Evite as potenciais armadilhas de se concentrar apenas nas funcionalidades, em vez da usabilidade do produto, tornando o pensamento do produto parte do processo de design UX da aplicação móvel ou web. Não há nada de errado com as funcionalidades, mas elas não devem tornar-se mais importantes do que o objetivo real do produto.

Tenha isso em mente e o resultado final será um produto digital criado, testado e personalizado para o público-alvo definido, com maiores probabilidades de se tornar indispensável e tornar a vida dos utilizadores mais fácil.

Carlos Neves

Senior Ux & UI Consultant, Xpand IT

Carlos NevesAplicar ‘Product Thinking’ a UX
read more

Kotlin e um futuro (ainda mais) brilhante

Imaginem um mundo muito estranho chamado “A JVM”.

(A partir deste momento, o melhor é ler com a voz de David Attenborough).

No início, existia uma única criatura. O seu nome era Java. A Java era divertida, nova, simples, poderosa… mas a Java não era suficiente. Outras espécies surgiram, tais como: Ceylon, Groovy, Scala, Clojure, Frege, Kotlin. Até a Java evoluiu com o tempo! Mas porquê tantas espécies? – é uma questão que vos pode surgir. Será que o Criador falhou na sua própria criação? Estariam os outros deuses (os programadores) descontentes? Talvez não estivessem felizes o suficiente… Quem sabe?

Então… Este é o caso de Kotlin.

Mas chega de analogias a A Vida na Terra. Ainda assim, podem continuar a ler com a voz do David Attenborough, todos sabemos o quão incrível é.

Ainda assim, a questão que se coloca é: mas porquê outra linguagem de programação para JVM? A isso não posso responder, porque não sei. No entanto, acredito ter alguns argumentos que possam ajudar a explicar porque é que Kotlin é um espécimen muito forte.

A Evolução de Kotlin

Embora pareça, a linguagem Kotlin não é totalmente nova. A sua primeira aparição aconteceu no dia 8 de novembro de 2010 e, desde então, tem amadurecido com o tempo, tal como um bom Whiskey.

A adoção desta linguagem tem aumentado significativamente ao longo dos últimos meses, impulsionada pela referência em grandes eventos, como o Spring Framework 5.0 ou o Google I/O 2017, no qual a Google anunciou o seu apoio oficial a Kotlin para a plataforma de Android. 2017 foi também o ano da primeira KotlinConf, na qual ficou claro que as potencialidades de Kotlin vão muito para além do mundo Android.

É curioso ver o número de questões relacionadas com Kotlin a aumentar no StackOverflow, depois do anúncio feito pela Google e pelo facto de agora aparecer no TIOBE Index.

Quanto aos projetos open source no GitHub – segundo o GitHut 2.0 – num ranking de 50, Kotlin pontua da seguinte forma:

  • 16º lugar para project stars, num total de 0.480%;
  • 17º lugar para issues, com um total de 0.489%;
  • 23º lugar nos pull requests, perfazendo um total de 0.351%;
  • 19º lugar para pushes, totalizando 0.424%.

Verifica-se que o crescimento, no geral, é bastante positivo.

Interoperabilidade com Java

Kotlin destaca-se em relação a outras linguagens de programação principalmente pela sua abilidade de interoperar de forma simples com Java no runtime JVM.

Esta linguagem tem também possibilidade de compilação para Java Bytecode e adiciona praticamente zero overhead, sendo possível compilar para versões 6, 7, 8 e 9 de Java Bytecode e, ao mesmo tempo, tentar extrair vantagens das características de cada versão. Um bom exemplo do poder de Kotlin é o suporte que dá às expressões Lambda, mesmo quando compiladas para Java Bytecode 6.

Tooling

Kotlin foi desenvolvida pela empresa JetBrains, que acabou por torná-la numa linguagem first-class citizen no IntelliJ IDE, Android Studio e CLion. Inclui features como refactoring, geração de código, code completion, compilação para bytecode e sneak-peeking ao bytecode on the fly, e, até mesmo, um conversor de Java para Kotlin. Tudo ao vosso dispor.

O compilador (kotlinc) tem um modo REPL que pode ser utilizado para testar facilmente alguns snippets de Kotlin the forma interactiva.

Targets Multiplataforma

Utilizando Kotlin é possível compilar para JVM, Javascript e LLVM.

Vou reformular a frase para que percebam o meu ponto:

“Programar em Kotlin e obter o código server-side para distribuir em JBoss, partilhar código referente à camada de lógica aplicacional com a aplicação Android, e, ainda, com a webapp JS/HTML. Oh! E não vamos esquecer aquele device de IoT, vamos partilhar algum código com ele também. Como assim? Também partilhar a lógica com a aplicação iOS? Claro, porque não!”

Kotlin/ Native tiram partido de LLVM de forma a facilitar o suporte de forma nativa de um vasto número de plataformas como Windows, Linux, OSX, iOS, Android e WebAssembly.

Kotlin para JavaScript permite a transpilação de Kotlin para linguagem JavaScript, tornando possível, por exemplo, a criação de web apps de React.

Um ótimo showcase destas características é a aplicação da KotlinConf 2017, que foi inteiramente implementada com recurso a Kotlin, desde o backend, ao frontend e aplicações móveis.

Aceitar Kotlin como uma equipa

Começar a utilizar Kotlin não tem de ser uma decisão arriscada! Por natureza, Kotlin funciona incrivelmente bem com o código Java existente e é até possível ter código Kotlin e Java no mesmo projeto. Desenvolver novas características em Kotlin num projeto existente pode ser uma excelente abordagem para proceder à adoção com um risco mínimo, já que não existe a necessidade de começar tudo de novo por causa de uma nova linguagem ou tecnologia.

Utilizar Kotlin tornou-se numa realidade diária para os Android developers. A maioria dos GDEs (Google Developer Experts) defende e utiliza Kotlin diariamente e pode ser encontrada bastante informação sobre esta linguagem na documentação oficial de Android.

Para os developers fora do universo mobile, por exemplo, os backend developers, Kotlin apresenta-se, não só como uma forma de alcançar os padrões standard de atuais linguagens de programação na JVM, mas também como um substituto para a linguagem Java na sua totalidade. Projetos como o TornadoFX, Ktor, Spring, entre muitos outros, oferecem as bases necessáras para que a linguagem Kotlin possa triunfar fora do domínio mobile. E uma vez que Kotlin é praticamente 100% interoperável com Java, os programadores podem continuar a utilizar as mesmas frameworks às quais já estão habituados mas com a felicidade que a sintaxe de Kotlin oferece!

As abordagens mais comuns para a adoção de Kotlin são:

  • Reescrever os testes de unidade Java com Kotlin. Muitos concordam que esta é uma ótima abordagem para começar a mexer em Kotlin, sem colocar em risco o código que vai para produção. Kotlin oferece alguns truques que permitem tornar os unit-tests mais legíveis e compactos.
  • Quando projetar novas características, em vez de utilizar Java, recorra a Kotlin!
  • Se o projeto em que está a trabalhar se deve a um refactor, aplique Kotlin à nova versão reescrita do código base.
  • Entregue-se totalmente a Kotlin e deixe para trás os dias tristes dizendo adeus a Java!

Linguagem Kotlin

Esta linguagem, em si, é maravilhosa. Kotlin é uma linguagem fortemente tipada, e que tem como principais objetivos ser concisa e legível.

Esta tenta também resolver um dos principais objetivos no mundo Java: NullPointerException. Torna a nulabilidade parte do sistema e força os developers a pensarem explicitamente sobre os seus impactos.

Outro aspeto que torna Kotlin uma linguagem extraordinária é o facto de permitir que os autores possam transportar as melhores carateríticas de outras linguagens para Kotlin. Para nomear algumas:

  • Extension Functions
  • Destructuring declarations
  • High Order Functions
  • Type Inference
  • Functional Facilities (map, filter, flatmap, etc)
  • Custom DSLs
  • Named parameters
  • Pattern Matching
  • Operator Overload

Sintaxe de Kotlin

Aqui ficam alguns trechos de código Kotlin. Um pequeno sneak peek. Estes tentam mostrar quão simples é a linguagem Kotlin, quando comparada a Java.

Java Kotlin

// Class definition

class Person {

private String name;

private int age;

public String getName(){

return name;
}

public int getAge(){
return this.age;
}

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String greet(){
return “Hi ” + this.name + “, how are you doing?”;
}
}

// Class definition

class Person(val name:String, val age:Int) {

public fun greet():String {

return “Hi $name, how are you doing?”

}

}

// A Typical unsafe Java Singleton

public class Singleton {

private static Singleton instance = null;

private String someProperty = “SOME_SINGLETON”;

private Singleton() {

}

public static Singleton getInstance() {

if (instance == null) {

instance = new Singleton();

}

return instance;

}

public String getSomeProperty() {

return someProperty;

}

public String appendSomethingToProperty(String something) {

return someProperty + something;

}

}

// A simple Kotlin Singleton

object Singleton {

val someProperty:String = “SOME_SINGLETON”

fun appendSomethingToProperty(something:String) = someProperty + something

}

O que se segue?

Se, através deste texto, consegui influenciar-vos a testar Kotlin, aqui ficam alguns locais onde podem experimentar e que servem como apoio:

  • Kotlin koans são uma série de pequenos desafios online e são uma ótima forma de começar a explorar a superfície desta linguagem;
  • Kotlinlang.org;
  • Kotlin for Android Developers é um livro de Antonio Leiva, e é uma excelente fonte de informação tanto sobre Kotlin como sobre Android em geral;
  • Kotlin in Action é outro livro, de Dimitry Jemerov e Svetlana Isakova, muito bom para que os Java developers possam crescer na linguagem Kotlin;
  • Kotlin for Java Developers é uma webtalk de Venkat Subramanian, e é um ótimo primer para Kotlin;
  • Kotlin Puzzlers de Anton Keks é uma viagem aos aspetos não tão fáceis de Kotlin.

João Gonçalves

Mobile Consultant, Xpand IT

João GonçalvesKotlin e um futuro (ainda mais) brilhante
read more

eXperience Agile 2018: Saiba o que pode esperar deste evento totalmente dedicado a práticas Agile

O evento eXperience Agile 2018 – antigo Scrum Day – é um evento que tem como objetivo promover o debate sobre práticas Agile, bem como fomentar o networking e a partilha de insights entre profissionais da área das TI. Sob o mote Improving Through People, este ano o eXperience Agile pretende difundir a ideia de que as práticas Agile melhoram o ambiente de trabalho e ajudam as organizações a crescer através da confiança que depositam no talento dos seus colaboradores e na abertura que existe para que estes possam partilhar o seu feedback.

Ana PaneiroeXperience Agile 2018: Saiba o que pode esperar deste evento totalmente dedicado a práticas Agile
read more

Os 8 melhores livros sobre DevOps e Agile

DevOps é uma cultura. É a cultura cujo ADN é constituído pela colaboração, pela comunicação entre equipas e pela agilidade no desenvolvimento de software. É, portanto, a cultura que permite uma simbiose perfeita entre o trabalho dos Devs e o trabalho das equipas de Operações.

Ana PaneiroOs 8 melhores livros sobre DevOps e Agile
read more