Jira: entenda como gerenciar e monitorar tarefas e projetos

O que é Jira?

Jira é uma família de softwares colaborativos para planejar, estruturar e monitorar projetos e tarefas.

Inicialmente, o Jira era uma ferramenta de rastreamento de bugs e itens, porém, hoje pode ser utilizado por equipes ágeis de qualquer segmento.

O Jira serve para gerenciar projetos de desenvolvimento de software, de recursos humanos, marketing, design, vendas, finanças, TI, entre muitos outros.

Isso significa que com o Jira você pode estabelecer metas para cada departamento e criar fluxos de trabalho automatizados, sem códigos, para alcançá-las, e ainda conectar todas as áreas do negócio para dar transparência aos resultados e manter todos os profissionais alinhados.

Também ajuda na distribuição homogênea de tarefas, na priorização de demandas e na previsão de contratempos para atuação preditiva.

Quem não está familiarizado com softwares de gestão de projetos ou busca usufruir do melhor dessas ferramentas pode contar com a base de conhecimento Jira, com dúvidas frequentes, tutoriais de utilização, dicas e boas práticas recomendadas, além da comunidade Jira, que compartilha muitas informações sobre os produtos.

Como funciona o Jira?

O conjunto de ferramentas Jira é composto pelo Jira Software, Jira Service Management, Jira Work Management e Jira Align.

Todos eles são baseados nas metodologias ágeis, portanto, é possível organizar as rotinas e objetivos do seu negócio em Scrum e Kanban, por exemplo, no modelo de arrastar e soltar.

Com isso, é possível visualizar os status de cada tarefa, monitorar prazos, conceder permissões, criar backlogs e acompanhar todas as métricas em relatórios.

Os softwares podem ser utilizados na nuvem ou instalados no seu próprio data center, exceto o Jira Work Management, que está disponível somente na nuvem.

Com exceção do Jira Align, todos os produtos da família Jira podem ser utilizados gratuitamente, com limitações de funcionalidades.

Mas, também possuem planos pagos com mais recursos abertos.

Por que usar o Jupyter Notebook para desenvolver com Python?

O que é o Jupyter Notebook?

O Jupyter Notebook é uma aplicação em código aberto que permite que você crie e compartilhe documentos com códigos, equações, visualizações e textos explicativos. Ele é especialmente usado para operações de física computacional e análises de grande volume de dados porque com ele você pode fazer anotações durante o processo, permitindo que você lembre o que fez e repita alguma operação quando necessário.

O Jupyter Notebook é um projeto derivado do projeto IPython e seu nome vem das principais linguagens de programação com suporte: Julia, Python e R. Além das vantagens para cálculos complexos, com o Jupyter Notebook, fica muito mais fácil manter o seu código organizado, limpo e em conformidade com as boas práticas da programação.

 Vantagens de usar o Jupyter Notebook

Tradicionalmente, os notebooks são usados para documentar pesquisas e assim facilitar a reprodução de seus resultados. Mas por que usar um notebook no lugar de um IDE ou um editor de texto tradicional?

A principal resposta para esta pergunta é que o Jupyter Notebook oferece um ambiente para exploração, colaboração e visualização. Uma outra vantagem é que ele é configurado em um ambiente de cluster, o que permite que você utilize os recursos do seu laptop e opere junto a um sistema complexo de dados online sem precisar baixar uma cópia local.

Principais recursos do Jupyter Notebook

Listamos aqui as principais vantagens do Jupyter Notebook, confira nossa lista:

  • Facilidade para criar protótipos de forma rápida
  • Execução e visualização da saída do código em cada célula.
  • Interface amigável.
  • Possibilidade de escrita de textos com Markdown.
  • Ótima ferramenta para exploração.
  • É possível atualizar o notebook (ou partes dele) com novos dados, executando novamente as células. Você também pode copiar a célula e executar a cópia novamente apenas se desejar manter um registro da tentativa anterior.
  • Facilita o fluxo de trabalho desde o teste das ideias até a primeira implementação do código.

O que é Ionic?

O Ionic é um Framework Open Source gratuito sobre a licença MIT para desenvolvimento de aplicações mobile híbridas.

Aplicações híbridas são aplicativos móveis construídos de maneira alternativa a aplicações nativa. São construídos, geralmente, utilizando HTML, CSS e JavaScript, desta maneira se tornaram extremamente populares, pois permite o desenvolvimento multiplataforma, utilizando o mesmo HTML para diferentes sistemas operacionais.

Aqui no Blog possuímos um artigo “App Nativo x App Híbrido: existe o melhor?” onde você pode conferir mais detalhes.

aso você não saiba o que é um Framework

O framework é um facilitador no desenvolvimento de diversas aplicações e, sem dúvida, sua utilização poupa tempo e custos para quem utiliza, pois de forma mais básica, é um conjunto de bibliotecas utilizadas para criar uma base onde as aplicações são construídas, um otimizador de recursos. Tem como principal objetivo resolver problemas recorrentes com uma abordagem mais genérica. Ele permite ao desenvolvedor focar nos “problemas” da aplicação, não na arquitetura e configurações.

Aqui no blog também possuímos um artigo sobre [“Para que serve um Framework”.](http://www.treinaweb.com.br/blog/para-que-serve-um-framework/ ““Para que serve um Framework”.”)

Sendo assim, o que é o Ionic?

Desenvolvido por Max Lynch, Ben Sperry e Adam Bradley da Drifty Co., sua primeira versão teve seu lançamento em 2013 e atualmente encontra-se na versão 4.

Como dito acima, é um Framework para criação de aplicações móveis e desktop de alto desempenho e qualidade, que utiliza as tecnologias web HTML, CSS e JavaScript.

Como diz em seu site, o Ionic ajuda as equipes a criarem e distribuírem belos aplicativos híbridos em várias plataformas, possuindo foco na experiência do usuário ou interação do usuário com o aplicativo (controles, interação, gestos, animações).

Projetado para funcionar e ser exibido em diferentes plataformas, possui um design limpo, simples e funcional, com componentes padrões, tipografia, paradigmas interativos e diversos templates.

Além disso, possui um cliente de linha de comando (CLI) para gerenciar todo projeto criado com o Ionic. O CLI é uma ferramenta que cria aplicativos Ionic de forma rápida e fornece vários comandos úteis para facilitar o desenvolvimento utilizando o Framework. Possui um servidor de desenvolvimento integrado, ferramentas de compilação e depuração, entre outros benefícios.

Para instalar o Ionic CLI basta clicar aqui.

Por que aprender Ionic?

Além da principal vantagem no desenvolvimento de aplicações híbridas, muitas outras vantagens podem ser listadas quando pensamos no Ionic, dentre elas:

  • Estabilidade na criação de aplicações híbridas: Apesar de utilizar HTML, CSS e JS para o desenvolvimento das aplicações, o Ionic entrega um produto altamente estável e com desempenho similar ao de aplicativos nativos;
  • Multiplataforma: Com o Ionic, podemos desenvolver um único código que seja executado em diferentes sistemas operacionais, diminuindo o tempo de desenvolvimento de novas aplicações.
  • Menor tempo de desenvolvimento: Por criar aplicações multiplataforma, o tempo no desenvolvimento dessa aplicação se torna algo vantajoso em relação às aplicações nativas, uma vez que todo código criado será reutilizado para qualquer sistema operacional móvel, diminuindo assim o tempo de desenvolvimento;
  • Menor custo: Uma vez que poupamos o tempo em seu desenvolvimento, estamos poupando os custos desta aplicação, fazendo com que, criar aplicações multiplataforma torne-se algo mais rentável e menos custoso;
  • Prototipação: Criar telas no Ionic é extremamente fácil, pois possui uma ferramenta para esta finalidade, o Ionic Creator, que é uma ferramenta de “arrasta e solta” para facilitar as ideias de criação de suas aplicações que pode ser acessada neste link;
  • Documentação: Além de possuir uma grande comunidade, a documentação do Ionic é bastante completa, entre outras.

O que é e para que serve o MongoDB?

O database funciona com muita eficiência em números gigantescos de informações. Veja abaixo, o que é e para que serve o MongoDB. O modelo de banco de dados com código aberto já é usado por empresas que trabalham com volumes imensos de informações, como a Google, o Facebook e até a Adobe.

Open source database

O MongoDB é um banco de dados orientado a documentos que possui código aberto (open source) e foi projetado para armazenar uma grande escala de dados, além de permitir que se trabalhe de forma eficiente com grandes volumes.

Ele é categorizado no banco de dados NoSQL (not only SQL) pois o armazenamento e a recuperação de dados no MongoDB não são feitas no formato de tabelas.

O banco de dados também fornece suporte oficial de driver para todas as linguagens populares como C, C ++, C # e .Net, Go, Java, Node.js, Perl, PHP, Python, Motor, Ruby, Scala, Swift, Mongoid. Assim, pode-se criar um aplicativo usando qualquer uma dessas linguagens.

Como funciona o MongoDB

O MongoDB é um servidor de banco de dados, onde as informações são armazenadas, mas o processo é mais fluido, independente, com os elementos tendo identificações únicas. Resumindo, o ambiente fornece um servidor que se pode iniciar e, em seguida, criar vários bancos de dados usando o MongoDB.

Os itens não são relacionados, obrigatoriamente, e sua hierarquia é totalmente flexível. Por conta de seu banco de dados NoSQL, as informações são armazenadas nas coleções e documentos. As coleções são subpartes do banco geral, independentes.

As vantagens e desvantagens do mongoDB

Vantagens

O MongoDB contém coleções, assim como o banco de dados MySQL contém tabelas. A sua vantagem é a permissão para criar vários bancos de dados e várias coleções dentro do principal.

Na coleção, estão documentos que contêm os dados que vamos armazenar no banco do MongoDB, e uma única coleção pode conter vários documentos. Não existe esquema de tipo, isso significa que não é necessário que um documento seja semelhante ao outro.

Nos documentos, pode-se armazenar dados aninhados. Essa conexão de dados permite criar relações complexas entre eles e armazená-los no mesmo documento, o que torna o trabalho e a busca mais eficientes em comparação com o SQL. Além disso, podemos citar:

  • Não precisa projetar o esquema do banco de dados ao trabalhar com o mongoDB;
  • Fornece grande flexibilidade para os campos nos documentos;
  • Trabalha com dados heterogêneos;
  • Não requer nenhuma adição ou injeção de SQL;
  • Facilmente integrável com o Big Data Hadoop (com diversas versões open source).

Desvantagens

  • Utiliza muita memória para armazenar e estocar dados;
  • Limite de 16 MB de dados para armazenar nos documentos;
  • Limite para aninhar dados nos arquivos BSON em até 100 níveis.

Implementando serviços com AngularJS

O que é o AngularJS

O AngularJS é um framework open-source de desenvolvimento front-end que possibilita o desenvolvimento de aplicações web, com foco em simplificar tanto a codificação quanto o processo de teste. Além disso, é possível integrá-lo com bibliotecas famosas como o Bootstrap, D3.js e o Apache Cordova (ou PhoneGap), ajudando a acelerar esse tipo de codificação como nunca antes tivemos.

O AngularJS também permite aos desenvolvedores web fazer uso da linguagem de marcação HTML para definir associações de dados, validações, além de response handlers para lidar com as ações do usuário em um formato declarativo que também contribui para essa mesma aceleração. Com tudo isso em conjunto, a maior consequência é, de longe, o crescimento e enriquecimento das aplicações cada vez mais ricas em funcionalidades e recursos.

Saber como arquitetar apropriadamente suas aplicações AngularJS há medida que elas crescem é algo tão importante quanto definir um bom modelo em um ciclo de vida de um software para linguagens como Java, C# ou quaisquer outros modelos server side de hoje.

Neste artigo, trataremos de expor algumas formas de bem arquitetar e construir serviços no AngularJS que, por sua vez, endereçam as mais usadas e importantes camadas de uma aplicação desse tipo: autenticação, mensageria, logging, acesso a dados, além da camada de acesso às regras da lógica de negócio que é requisito obrigatório para qualquer aplicação que tenha um nível de complexidade moderado. Além disso, veremos também rapidamente como integrar serviços externos do próprio framework com bibliotecas de terceiros dentro de suas aplicações de tal forma que o AngularJS possa tomar vantagem das mesmas com pouco esforço, enquanto você analisa detalhadamente a forma como o framework realiza tais integrações.

A necessidade de serviços

Em tempos onde muito se discute acerca do MVC no lado front-end, bem como das responsabilidades desse padrão no client side, inúmeras vertentes da comunidade de desenvolvimento front-end, muitas vezes em contraversão às que apoiam e suportam o lado back-end, dizem que a utilização de camadas que fornecem acesso direto a serviços é algo totalmente desnecessário e que foge às responsabilidades da mesma, devendo ser amparadas, portanto, pelas camadas que atuam no servidor da arquitetura. Para entender a contrapartida dessa discussão, é necessário que antes respondamos a algumas questões inerentes a tal dúvida: Por que serviços são realmente necessários no front-end? Como eles apoiam a sua aplicação? Quais são suas responsabilidades na aplicação de uma forma geral?

A primeira sentença a ser analisada diz que “os serviços são a base de tudo”. Isto é, eles fornecem funcionalidades de forma transversal, solicitam e manipulam dados, se integram com outros serviços externos, e incorporam lógica de negócio, tudo isso de uma forma tão simples quanto um objeto JSON possa parecer (que é inclusive o tipo de dado mais usado para representá-los).

A necessidade de boas práticas

Quando uma equipe de desenvolvimento se depara com um projeto novo, uma das primeiras e mais importantes ações é escolher um framework para facilitar a produtividade do projeto como um todo. Aliado a essa escolha, o arquiteto ou alguém com mais experiência terá o desafio de entender como o mesmo funciona e, mais importante que isso, como aplicar as boas práticas de programação a este framework.

As boas práticas são como guias que nos ajudam a entender o melhor jeito de usar aquele framework, assim como estruturar a sua aplicação de forma a deixá-la manutenível, testável e reusável.

O desenvolvimento utilizando módulos leva em consideração a unidade na aplicação como um todo. Isso quer dizer que cada componente deve ter sempre uma única e específica responsabilidade, caso contrário teremos uma discrepância na implementação e o modelo tenderá a se tornar cada vez mais complexo de manter.

Desenhando serviços

Antes de iniciarmos a implementação de fato dos nossos serviços, é preciso que o leitor tenha em mente algumas regras essenciais para a criação correta dos mesmos. Vejamos:

· Antes de iniciar qualquer serviço, tome um tempo pensando sobre ele. Quais serão as suas funcionalidades (faça uma lista delas, no papel mesmo, se achar melhor)? Como criarei este(s) serviço(s) de modo que eu possa facilmente modificá-lo(s) no futuro, mantendo-o(s) sempre testável(eis) e manutenível(eis)?

· Meça duas vezes, corte apenas uma. Isso serve para te ensinar a não se apressar quando for criar serviços e/ou quaisquer implementações. Às vezes é melhor perder um bom tempo planejando direito o que você vai desenvolver, em vez de atropelar o desenvolvimento ágil e precisar refazer no futuro.

· Foque no desenvolvedor, e não em você mesmo. Isso quer dizer que, quando construir um serviço, pense em quem irá usá-lo. Muitas vezes esquecemos dessa premissa por não estarmos lidando com algo que será acessado diretamente por um usuário, pois tudo será abstraído pela “figura do desenvolvedor”. Coloque-se no lugar dele, e pergunte-se se, sendo você o desenvolvedor consumidor, você entenderia o serviço que criou e disponibilizou.

· Faça apenas o que o nome do seu serviço manda fazer. Essa prática já é muito comum entre codificadores para nomes de métodos, por exemplo. Se o seu método se chama cadastrarCliente(), adivinhe qual deve ser a única coisa que ele faz? O mesmo vale para os serviços.

· Mantenha o mais usável possível. Isso quer dizer que, se o seu serviço foi criado por alguma ferramenta de CRUD, por exemplo, que automaticamente gerou métodos de add(), remover(), alterar() e pesquisar(), mas no seu serviço só será usado o método de pesquisa, então remova os demais. Deixe-o simples e direto.

· Documente a sua interface de serviço. Isso será útil não só para outros desenvolvedores que venham a encarar o seu código no futuro, mas principalmente para você mesmo. Afinal, você não é obrigado a decorar tudo o que codifica. Existem inúmeras ferramentas que te ajudam nisso: JSDoc, YUIDoc, Ext Doc, ou algum plugin que a sua IDE disponibilize e que você se sinta à vontade para usar.

O que é, como funciona e quais as vantagens

Isso significa que com o Node.js é possível criar aplicações Javascript para rodar como uma aplicação standalone em uma máquina, não dependendo de um browser para a execução, como estamos acostumados.

Apesar de recente, o Node.js já é utilizado por grandes empresas no mercado de tecnologia, como Netflix, Uber e LinkedIn.

O principal motivo de sua adoção é a sua alta capacidade de escala. Além disso, sua arquitetura, flexibilidade e baixo custo, o tornam uma boa escolha para implementação de Microsserviços e componentes da arquitetura Serverless. Inclusive, os principais fornecedores de produtos e serviços Cloud já têm suporte para desenvolvimento de soluções escaláveis utilizando o Node.js.

Neste artigo, vamos trazer a história, características e vantagens que tornam o Node.js uma tecnologia única.

O surgimento do Node.js

Apesar do Javascript ter mais de 20 anos, o seu uso server-side é bem recente.

A linguagem Javascript foi criada em 1995, e se tornou a linguagem padrão dos browsers e consequentemente da Web para o desenvolvimento client-side.

Desde então, houveram diversas tentativas de implementar sua execução server-side. Todas elas fracassaram, devido à sua performance ser extremamente baixa comparado com as linguagens existentes no mercado, como o PHP ou Java.

Porém, com a rápida evolução da Web nos últimos anos, a linguagem Javascript e seus motores de execução passaram por diversas melhorias, tornando viável sua execução com outros propósitos além da manipulação de páginas HTML.

Com essa nova fase no uso do Javascript, aplicações server-side passaram a ser implementadas, e em 2009 foi criado o primeiro ambiente de execução Javascript com este propósito: O Node.js.

Características

A principal característica que diferencia o Node.JS de outras tecnologias, como PHP, Java, C#, é o fato de sua execução ser single-thread. Ou seja, apenas uma thread é responsável por executar o código Javascript da aplicação, enquanto que nas outras linguagens a execução é multi-thread.

Mas o que isso significa na prática?

Em um servidor web utilizando linguagens tradicionais, para cada requisição recebida é criada uma nova thread para tratá-la. A cada requisição, serão demandados recursos computacionais (memória RAM, por exemplo) para a criação dessa nova thread. Uma vez que esses recursos são limitados, as threads não serão criadas infinitamente, e quando esse limite for atingido, as novas requisições terão que esperar a liberação desses recursos alocados para serem tratadas.

No modelo Node.js, apenas uma thread é responsável por tratar as requisições. Essa thread é chamada de Event Loop, e leva esse nome pois cada requisição é tratada como um evento. O Event Loop fica em execução esperando novos eventos para tratar, e para cada requisição, um novo evento é criado.

Apesar de ser single-threaded, é possível tratar requisições concorrentes em um servidor Node.js. Enquanto o servidor tradicional utiliza o sistema multi-thread para tratar requisições concorrentes, o Node.js consegue o mesmo efeito através de chamadas de E/S (entrada e saída) não-bloqueantes. Isso significa que as operações de entrada e saída (ex: acesso a banco de dados e leitura de arquivos do sistema) são assíncronas e não bloqueiam a thread. Diferentemente dos servidores tradicionais, a thread não fica esperando que essas operações sejam concluídas para continuar sua execução.

No servidor Node.js, o Event Loop é a única thread que trata as requisições, enquanto que no modelo tradicional uma nova thread é criada para cada requisição. Enquanto o Event Loop delega uma operação de E/S para uma thread do sistema de forma assíncrona e continua tratando as outras requisições que aparecerem em sua pilha de eventos, as threads do modelo tradicional esperam a conclusão das operações de E/S, consumindo recursos computacionais durante todo esse período de espera.

Apesar do Node.js ser single-threaded, sua arquitetura possibilita um número maior de requisições concorrentes sejam tratadas em comparação com o modelo tradicional, que é limitado devido ao alto consumo computacional pela criação e manutenção de threads a cada requisição.

Vantagens de uso do Node.js

Flexibilidade

O NPM (Node Package Manager) é o gerenciador de pacotes do Node.js e também é o maior repositório de softwares do mundo. Isso faz do Node.js uma plataforma com potencial para ser utilizada em qualquer situação. O pacote mais conhecido se chama Express.js e é um framework completo para desenvolvimento de aplicações Web.

Leveza

Criar um ambiente Node.js e subir uma aplicação é uma tarefa que não exige muitos recursos computacionais em comparação com outras tecnologias mais tradicionais. Se utilizado em conjunto com ferramentas como o Docker, o ganho na velocidade de deploy e replicação de máquinas pode ser muito significativo e em ambientes escaláveis isso significa menos custo e mais eficiência.

Tanto sua leveza quanto flexibilidade fazem do Node.JS uma tecnologia indicada para a implementação de serviços e componentes de arquiteturas como a de microsserviços e serverless. Além disso, conta com suporte das principais empresas de produtos e serviços Cloud do mercado, como a AWS, Google Cloud e Microsoft Azure que oferecem na maioria de seus produtos suporte nativo ao Node.JS.

Produtividade da equipe

Maior repositório do mundo: O NPM fornece pacotes de código reusáveis e provavelmente aquela integração que você precisa fazer com outro sistema ou banco de dados já está implementado e disponível gratuitamente para instalar via NPM.

Mesma linguagem no frontend e backend: Javascript é a linguagem padrão para desenvolvimento web client-side. Empresas de desenvolvimento Web contam como esse know-how como um ponto de partida importante para iniciar o uso do Node.js. Além disso, esse fator pode representar ganhos de reutilização de código e criação de equipes multidisciplinares, com melhor aproveitamento de recursos.

Ambiente de inovação: Possibilidade de deploys e iterações mais rápidas, e resolução de problemas On the Fly. Isso também permite a criação de soluções próprias e inovadoras, como fez o Uber criando produtos em Node.js para resolver alguns de seus problemas.

Entenda aqui por que usar o Axure para criar protótipos

O Axure é um programa feito para criar protótipos para outros aplicativos e websites. Usada por designers, analistas e arquitetos da informação, essa é uma ótima ferramenta de testes para avaliar a eficiência dos sistemas em construção.
Em outras palavras: esse recurso tecnológico levanta os pontos fortes e os fracos de uma interface ao simular os efeitos — positivos e negativos — da experiência do usuário (UX). Então, quer entender como ela funciona? Acompanhe este post e confira dicas incríveis de como usar o Axure para criar protótipos!

A importância dos protótipos

A criação de protótipos representa uma importante especialização de TI. Isso porque ela ajuda a testar a experiência dos usuários (UX) em sites, produtos ou aplicativos em desenvolvimento.
Esses esboços virtuais variam conforme a fidelidade. Quanto mais baixa for a semelhança do molde ao que será a ferramenta real, mais essa nova resposta de informática estará sujeita a mudanças no futuro.
Contudo, acontece exatamente o contrário com os chamados protótipos de alta-fidelidade.
Nesse caso, é viável ter uma prévia do layout das funcionalidades desse novo instrumento digital e de alguns detalhes da operação. Para sites e aplicações, por exemplo, os protótipos de alta-fidelidade já têm seus links com as interações delineadas.
Veja, abaixo, alguns dos benefícios desses arquétipos:

  • falhas de usabilidade do sistema são corrigidas;
  • aumenta a adequação do aplicativo às necessidades do usuário;
  • a qualidade do projeto é aprimorada;
  • há mais facilidade na manutenção;
  • é possível reduzir os esforços essenciais à construção do software.

Vantagens de protótipos navegáveis em HTML

Ao criar um protótipo navegável em HTML (Hypertext Markup Language ou Linguagem de Marcação de Hipertexto), testar um maior número de situações é simples. O Axure é um programa desse tipo, e se destaca tanto pela facilidade relativa do seu uso como pela riqueza do seu design.
Por meio dele, você consegue experimentar o que acontece quando navega de uma página para outra, além das interações com o layout, e avaliar a qualidade das animações, entre outras hipóteses de verificação.

Desse modo, os desenvolvedores podem focar a energia para aquilo que mais interessa: atender às necessidades dos usuários finais.

O que é o Slack?

Em tempos de aumento do trabalho remoto, muitos se depararam com novas ferramentas que facilitam (e muito) o trabalho em equipe à distância. Uma delas é, sem dúvida, o Slack. Ainda não sabe o que é o Slack? 

O Slack é uma ferramentas de colaboração com diversas funcionalidades, de compartilhamento de arquivos online à organização de reuniões por videoconferência e que permite a conexão com equipes remotas por meio de canais de bate-papo em tempo real.

O Slack facilita a gestão de projetos ao reunir em apenas uma plataforma as variadas necessidades de diferentes tipos de profissionais e equipes. O programa pode ser usado no computador e também possui versões mobile (tanto para dispositivos que rodam com iOS ou Android). 

Além das diversas funcionalidades, outro destaque do Slack é a experiência do usuário: suas semelhanças com uma rede social e a facilidade de uso (com a possibilidade de arrastar e soltar arquivos para compartilhamento, por exemplo) são um dos pontos fortes destacados pelos seus usuários ao redor do mundo. 

A ferramenta também se integra a soluções de terceiros, permitindo que as equipes possam fazer muito mais com o software, como realizar pesquisas e enquetes nos canais do Slack ou postar e-mails diretamente em um feed de notícias.

Prós do Slack: 

  • Integração com vários aplicativos de gerenciamento de projetos, como o Wrike e o Trello.
  • Usuários podem criar canais de comunicação por equipe, por projeto etc.
  • Canais públicos permitem que os colegas vejam o que outras equipes estão fazendo.

Entretanto, apesar do amplo reconhecimento dos usuários, o Slack não é a única ferramenta do tipo disponível no mercado. Para equipes remotas que trabalho com sessões de brainstorming ou colaboram editando documentos em tempo real, o Slack pode não ser a ferramenta certa.

Contras do Slack:

  • O excesso de canais de chat pode ser prejudicial à produtividade. 
  • Falta de funções mais robustas, como um lugar central para armazenar sprints, relatórios e roteiros de projeto e a possibilidade de visualizar o progresso do projeto em relação às tarefas, orçamentos etc.

O .NET é uma tecnologia ultrapassada?

Historicamente, houve vários casos em que as tecnologias se tornaram obsoletas. Não esquecidos, mas enterrados no passado e apenas grampeados no painel da história como exemplos do desenvolvimento de linguagens de programação.

Em alguns casos, existem tecnologias com mais de 50 anos que ainda mantêm uma base de fãs leal. Veja o Cobol, por exemplo – uma linguagem de programação inventada em 1959 que desempenhou um papel no Apollo Moon Landing e ainda hoje é usada por instituições administrativas e governamentais, apesar de sua idade.

Por outro lado, algumas plataformas de longa data sobrevivem por meio da evolução. Seus criadores abraçam a mudança e amadurecem para ajudar essas linguagens a desempenhar papéis significativos no desenvolvimento dos produtos digitais de hoje. Um exemplo brilhante da capacidade da tecnologia de transcender o tempo é o .NET .

A história do .NET e avançar para a interoperabilidade

Quando a Microsoft lançou o .NET, seu objetivo era se tornar a plataforma mais usada no mercado, oferecendo aos codificadores um melhor ambiente de desenvolvimento. Essa era a atitude naquela época. Embora eles tivessem investido quantias excessivas de dinheiro e desenvolvido a tecnologia em um mastodonte – havia um problema.

Ao usar o .NET, você ficava preso a um ambiente exclusivo da Microsoft. Além disso, os custos envolvidos com o desenvolvimento dessa tecnologia são elevados. Então, por que alguém usaria .NET, afinal? E depois…

.NET Core e Xamarin foram lançados.

Pela primeira vez, o .NET tornou-se uma tecnologia de plataforma cruzada de código aberto – permitindo a opção MSIL para várias linguagens de programação, como C, C#, VB.NET, F# . Isso abriu caminho para o significado de interoperabilidade, independentemente de qual das linguagens de programação mencionadas foi usada – todas elas podem ser compiladas em uma linguagem comum.

Novas adições, várias vantagens

Com o surgimento da IoT e dos dispositivos conectados, a ideia de usar apenas um programa de desenvolvimento está ultrapassada. Como os dispositivos precisam ser flexíveis e ter a capacidade de se conectar a qualquer tipo de sistema operacional, seria quase impossível usar apenas uma única tecnologia.

É exatamente por isso que o .NET é uma plataforma tão boa. Por meio de seus lançamentos mais recentes, ele agora pode atender a vários propósitos de desenvolvimento, como aplicativos de desktop, web, móveis e de console – tornando-se uma escolha popular para start-ups e grandes empresas.

Para adoçar o negócio, as tecnologias de código aberto significam grande suporte e grandes comunidades que estão lá para fornecer tutoriais úteis, dicas e conselhos sempre que você precisar. Por meio desses recursos, a curva de aprendizado pode ser encurtada.

Em termos de vantagens, vale destacar que o .NET é altamente personalizável. Graças à disponibilidade de bibliotecas e estruturas integradas existentes e à capacidade de adicionar novas, a criação de um produto digital usando .NET reduz o tempo de lançamento e os custos de desenvolvimento.

Como o .NET é uma ferramenta de desenvolvimento completa, ele pode ser usado para trabalhar tanto no front quanto no back-end de produtos digitais, se necessário. Ainda mais, o .NET possui bibliotecas de cache extremamente robustas e fáceis de usar. Você também pode usar o Visual Studio para escrever seu código, que atua como um IDE sólido – dando a você acesso ao melhor ambiente para depuração do lado do servidor.

Em termos de segurança, o .NET possui bibliotecas nativas para isso, além da possibilidade de integrar seus próprios sistemas, tornando-o altamente seguro. Além disso, se o código for fechado e compilado, mesmo que termine em mãos erradas, isso não representaria nenhum risco significativo à segurança de sua empresa.

.NET e sua busca para superar desafios

Vale a pena mencionar que, além de tudo que descrevi anteriormente, o .NET é uma plataforma de desenvolvimento mais antiga com anos de experiência. Apesar de sua idade, conseguiu se tornar uma estrutura madura e robusta com a adição de .NET Core e Xamarin. Nos últimos anos, essas plataformas passaram por diversas atualizações (com mais planejadas), o que as tornou mais rápidas, confiáveis, fáceis de usar e acima de tudo – mais flexíveis e seguras.

A integração do .NET em suas funções de negócios pode ajudá-lo a superar vários desafios. Um deles é a segurança – o que deveria ser uma prioridade para todas as empresas. Depois, seria a opção de transcrever o código legado. Como muitos produtos da Web mais antigos disponíveis foram escritos em ASP e ASP.NET, os desenvolvedores podem encontrar loops e reviravoltas que não entendem. Graças às atualizações mais recentes do .NET, agora você pode transcrever o código herdado para C# ou F#, tornando-o mais fácil de ler e entender.

Além disso, o .NET agora facilita a manutenção e a implementação de novos recursos. Por se tratar de uma tecnologia de plataforma aberta com uma grande biblioteca e comunidade disponível, possibilitar um Desenvolvimento Rápido de Aplicações é mais do que factível.

O .NET foi projetado para plataformas que planejam expandir e é flexível o suficiente para ser adaptado para infraestruturas de escala corporativa. Por meio do .NET, você pode desenvolver aplicativos cross-native para iOS e Android usando Xamarin e desenvolver soluções de IoT, AI, Machine Learning e Big Data.

Então, o .NET é uma tecnologia ultrapassada? De jeito nenhum.

Por que a tecnologia Blockchain deve figurar em seus planos

O que é o blockchain?

A tecnologia Blockchain torna as transações seguras por meio de sua exigência de que uma comunidade de clientes confiáveis ​​aprove cada bloco antes de ser adicionado à cadeia. Com efeito, fornece segurança hermética. Trabalhar com essa tecnologia emergente requer um conhecimento profundo de segurança, criptografia e bancos de dados.

Isso é algo que você precisa?

Se você pode fazer seu projeto usando tecnologias de banco de dados tradicionais como Oracle, SQL Server, Mysql e Postgre, você não precisa pular no trem blockchain.  Você deve se fazer as seguintes perguntas antes pensando em usar a tecnologia blockchain:

  1. Você precisa de um banco de dados distribuído ou um banco de dados relacional tradicional poderia funcionar bem? Se uma solução tradicional está faltando, então você pode considerar uma blockchain.
  2. Você pode contar com uma comunidade para validar as transações? A tecnologia Blockchain requer a validação de cada bloco por uma comunidade de usuários.
  3. Falta confiança? A natureza da tecnologia blockchain não requer confiança entre as partes. Isso significa que um usuário não pode alterar um bloco sozinho porque a comunidade precisa validar cada bloco adicionado à cadeia. Com efeito, uma vez validado um bloco, não pode ser alterado.
  4. Necessita de uma entidade para validar cada transação? O blockchain funciona por meio da descentralização: não há porteiro central. Isso significa que cada transação é autorizada e validada e protegida em um bloco.
  5. Sua transação é complexa? Os bancos de dados distribuídos em blockchain são adaptados às necessidades de transações complexas quando, por exemplo, uma transação depende de outra.
  6. Você pode definir regras ditando como as transações serão conduzidas? Blockchains devem incluir regras de restrição porque funcionam em um contexto onde a confiança está ausente entre cada nó da rede.

Então, a tecnologia blockchain é algo que você precisa para o seu projeto?

As cinco primeiras perguntas são verdadeiras condições necessárias para justificar o uso do blockchain . Portanto, você não deve usá-lo se:—Um banco de dados relacional tradicional serviria.—Você não tem uma comunidade para validar cada transação.—A confiança está presente entre as partes.—Você precisa de um gatekeeper central.—Você não precisa necessidade de gerenciar transações complexas.