Growth Hacking: pensando fora da caixa para acelerar sua empresa

O Growth Hacking é novo aqui no Brasil, mas já é muito comum fora do país. Ele é aplicado por grandes startups do Vale do Silício, o famoso pólo tecnológico nos Estados Unidos, referência mundial em inovação. Mas afinal, o que é o Growth Hacking?

A melhor maneira para entender o que é esta nova posição nas empresas é redefinir o que é um hacker. O termo sempre foi conhecido por estar relacionado a crimes virtuais. Ao contrário dessa crença, o hacker é aquele indivíduo com uma dedicação além do comum em busca do conhecimento. Aquele cara que não sossega enquanto não entender toda e qualquer parte do que se propôs. Cada mínimo detalhe. Seja sistemas, hardwares, ou neste caso especifico, vendas.

Neste contexto, o Growth (do inglês, crescimento) Hacker é um profissional cujo objetivo é fazer crescer o número de usuários de um produto ou serviço. Ou seja, através de uma metodologia testável e escalável, o Growth Hacker alavanca as métricas de conversão.

Growth Hacking x Marketing

Você deve estar se questionando se não estamos falando de um profissional de marketing, certo? Não, não estamos. Enquanto muitas pessoas consideram que o crescimento do número de usuários seja uma função de marketing, encontramos exemplos de produtos que aumentaram as vendas de outras formas.

Há muitas decisões responsáveis pelo crescimento do número de usuário de um determinado produto ou serviço. Por isso, o Growth Hacker tem um papel multifuncional englobando não apenas o marketing, mas o produto, as operações empresariais, finanças e até mesmo os recursos humanos.

A ideia é que a cada decisão que a sua empresa faça o Growth Hacker aborde a seguinte questão: Qual será o impacto desta escolha para o crescimento do seu negócio ou dos consumidores?

Você pode ser um Growth Hacker?

Você teria capacidade de assumir a responsabilidade pelo crescimento de uma unidade de negócios? O Growth Hacker tem como objetivo imediato conectar o seu mercado-alvo com o produto ou serviço do seu negócio. O profissional deve ter a criatividade para descobrir maneiras únicas de condução do crescimento, além de testar e evoluir as técnicas já comprovadas por outras empresas.

Um Growth Hacker também precisa ser disciplinado para seguir um processo de priorização de idéias, testando-as, além de ser analítico o suficiente para saber definir os mecanismos que apresentaram resultados positivos para serem mantidos, repetidos e escaláveis, visando o crescimento do negócio.

A característica essencial de um Growth hacker é a criatividade. Sua mente é a melhor ferramenta de trabalho. Este profissional vai além de estratégias de Adwords ou SEO para a distribuição da informação. Canais tradicionais de marketing, muitas vezes geram um alto custo por aquisição e baixo valor pelo tempo que duram, devido à alta saturação. Em uma época de usuários sociais, a estratégia de crescimento vem do ajuste de um produto ao mercado, elevando as escalas virais pela experiência do consumidor.

Algumas ferramentas utilizadas por um Growth Hacker

  1. Aquisições Virais: Através do compartilhamento de conteúdo dos usuários existentes para os novos;
  2. Aquisições Pagas: Com estratégias de SEM (search engine marketing), Links patrocinados (Google Adwords, Facebook Ads), anúncios na TV, celulares, rádios, marketing de afiliados, dentre outros;
  3. Marketing de Conteúdo (Content Marketing): Através de posts em blogs, infográficos e vídeos virais, aumentam a visibilidade da marca e o tráfego para o site, convertendo visitantes em consumidores;
  4. E-mail Marketing: Estratégia de relacionamento utilizada para conversão de novos consumidores e motivação para gastarem mais com o seu negócio;
  5. SEO (otimização em sites de buscas): Efetivamente utilizado para construir uma infraestrutura escalável aplicáveis a inúmeras páginas, ao invés da seleção tradicional de uma pequena quantidade de palavras-chave.

Em suma, o Growth Hacking é a interseção entre o marketing e o desenvolvimento do produto, fazendo mais com menos. As estratégias são articuladas desde o desenvolvimento do produto e, por isto, levando uma experiência mais agradável ao consumidor que, por sua vez, atrai novos usuários ao viralizá-la.

Agora que você já conheceu o cargo que tem feito a diferença no Vale do Silício é hora de começar a pensar a ser um ou ter um Growth Hacker na sua empresa!

Facebook Comments

Marketing de conteúdo e web semântica

Socializar. Compartilhar. Conversar. Interagir. Neste mundo cada vez mais conectado, o marketing conjuga estes verbos constantemente para criar uma relação de confiança e valor entre instituições e pessoas, disponibilizando conteúdo adequado e relevante a cada contexto imaginado.

Este conteúdo se apresenta na forma de recursos cada vez mais variados, em distintos formatos, e em diferentes contextos disponibilizados na web. Marketing de conteúdo busca flexibilidade para adicionar novos recursos, para mapear ligações e mudanças entre os recursos, para refletir os diferentes contextos do negócio, para garantir integração entre canais, para deixar os recursos com dados inteligentes – smart data, e para entender e medir o engajamento do cliente.

Web semântica, ou web de dados, promove a interoperabilidade semântica entre estes recursos com uma linguagem e regras gramaticais bem definidas, processável e compreensível tanto por humanos, como por agentes de software.

Um conteúdo relevante presente nos recursos, como textos sobre produto ou serviços, vídeo, imagens, infográficos, e-books, avaliações de clientes, informação técnica, entre outros, precisa, então, disponibilizar uma estrutura semântica para ser automaticamente localizado, reutilizável e adaptado aos diversos canais como redes sociais e e-mail marketing.

Inicialmente, três grandes passos podem ser adotados. O primeiro passo é a construção da taxonomia envolvida ao contexto no qual os recursos estão inseridos e, assim, compartilhar vocabulário expresso nos diversos canais. Ferramentas como Google Keyword Planner, Squirrly e Keywordtool.io podem auxiliar nesta construção.

Já o significado aparece em metadados ou em anotações semânticas. Os metadados devem ser inseridos nos próprios recursos que descrevem ou serem armazenados em repositórios, na forma de anotações. Anotação semântica identifica, formalmente, conceitos e relações entre conceitos presentes nos recursos Web. Por exemplo, em páginas HTML (Hyper Text Markup Language) é possível inserir metadados através de marcações não visíveis na exibição da página pelo navegador. Os padrões associados são RDFa (Resource Description Framework in atributes), microdata, JSON-LD (JavaScript Object Notation para Linked Data) e OWL (Web Ontology Language). Já para armazenamento, surge como exemplo o banco de dados virtuoso e a linguagem para consulta SPARQL.

Anotador e consumidores da anotação devem compartilhar o mesmo significado e interpretação. Para ist, deve ser providenciada a referência a um ou mais vocabulários controlados – acordos sobre os dados transportados para organizar os conceitos e promover o desenvolvimento de ferramentas que os representam.

O segundo passo é anotar semanticamente os recursos com vocabulários controlados.

O site Linked Open Vocabularies – LOV apresenta 563 vocabulários separados por categorias como biologia, pessoas e multimedia, e interações entre eles. Alguns vocabulários em destaque são Dcterms (DCMI Metadata Terms), Dce (Dublin Core Metadata element set), Foaf (Friend of a Friend), Skos (Simple Knowledge Organization System) e o Geo (WGS84 Geo Positioning). Google e Yahoo criaram o Schema.org, atualmente adotado por muitas empresas, entre elas, Microsoft, Pinterest, Yandex.

Motores de busca, ao utilizarem estes metadados proporcionam consultas mais precisas, envolvendo não somente palavras-chave (taxonomia), mas propriedades (metadados), como autor, formato, datas diversas e outros, e o propósito como o contexto no qual o recurso se insere, sua qualidade, suas condições de uso, suas estratégias de preservação, e assim por diante.

O grande exemplo é o Google, onde os dados estruturados são conhecidos como rich snippets e rich cards – associados ao vocabulário controlado schema.org. Mais de 200 fatores são considerados nas suas buscas visualizados em rich results – dados presentes nos rich cards – e knowledge graph cards – dados agregados de uma variedade de informações relevantes e confiáveis sobre entidades como pessoas, locais e organizações.

O terceiro passo é construir uma rede de dados com a ligação entre os diferentes recursos internos e externos de tal forma a enriquecer o conteúdo do recurso disponibilizado. Linked Data é o conjunto de boas práticas para publicar e conectar conjuntos de dados estruturados na Web. Seus princípios básicos são usar URIs como nomes para recursos; usar HTTP URIs de forma que as pessoas possam procurar por estes nomes; quando alguém procurar por uma URI, fornecer informações úteis, usando os padrões (RDF*, SPARQL); e incluir links para outras URIs para que as pessoas possam descobrir mais coisas sobre o conteúdo.

Entre as ações de marketing digital associadas ao marketing de conteúdo, destaca-se o SEO (Search Engine Optimization) para promover os recursos existentes no site perante os motores de busca, e o Digital Data Management para publicar, acompanhar e monitorar analiticamente os dados presentes nos recursos.

O resultado destes passos são páginas interpretadas automaticamente pelos agentes ou serviços web semânticos, principalmente, para criar uma experiência relevante para o usuário, para realizar uma comunicação com os assistentes pessoais ou com os motores de busca de tal forma que eles possam recomendar seu conteúdo em suas pesquisas. Enfim, para conjugar os verbos do mundo digital.

Por Regina Cantele para o iMasters

Facebook Comments

Analista de Desenvolvimento C# – Clear Sale – Barra Funda – SP

Superior completo em cursos relacionados a Tecnologia da Informação.
Desejável Pós Graduação.

Realizar análise e desenvolvimento de sistemas em .Net/C#. Atuar com o levantamento de novas funcionalidades e melhoria das funcionalidades para aplicações existentes.
Necessário vivência na função.
Necessário conhecimento em Asp.Net, C#, MVC, HTML5, Jquery, SQL (Preferencialmente MS SQL).
Desejável conhecimento em WebServices, SOA, XML, Json, WebAPI.

Salário entre R$5.000 a R$7.000 + benefícios (Assistência Médica, Assistência Odontológica, Vale Transporte, Vale Refeição, Auxílio Creche e PLR).

Horário: Segunda à Sexta-feira das 9:00 às 18:00.

Local: Barra Funda – SP (Próximo ao metro)

Acesse o link e cadastre-se https://goo.gl/UwJn3S

Facebook Comments

Comparativo CLT x PJ

Hoje em dia no mercado de TI (nem só TI, mas TI principalmente), existem várias maneiras de contratação, das quais as mais utilizadas são:

* CLT: Registrado com carteira de trabalho assinada, férias, etc
* PJ: Pessoa Jurídica, na qual o profissional tem que abrir uma empresa e vira um prestador de serviço.

Existem variações da CLT, como a tal de CLT Flex, na qual o funcionário é registrado por um valor menor e recebe o resto legalmente “por fora”. Outra variação é o registro CLT por um valor baixo e recebimento de participação nos lucros na empresa bimestralmente. No meu ponto de vista, estas variações são piadas de mal gosto e nem comento aqui, mas infelizmente essas são as saídas de muitos profissionais que estão ingressando no mercado de trabalho e tem que se “submeter” a tal modalidade.

Em síntese, um profissional registrado como CLT tem todos os direitos previstos na legislação brasileira, tais como: 13, férias, FGTS, etc. Porém ele paga uma alta carga tributária e o valor líquido que ele recebe é menor que o valor bruto, ou seja, o valor registrado em carteira. Um profissional registrado por 4500 reais, recebe aproximadamente 3600 ao final do mês, um desconto de quase mil reais!
Um profissional que presta serviço através de sua empresa (PJ), tem por características pagar menos impostos e ter menos benefícios, portanto, o valor líquido que ele pega em mãos, é muito maior, além disso, as empresas que contratam um profissional PJ, tem um custo muito menos para manter o “funcionário”, portanto, podem pagar mais pelo seu trabalho.

Colocando isso em números para podermos comparar as duas modalidades de contratação, vamos a um exemplo abaixo:

Profissional CLT registrado por 4500 reais.

Profissional PJ com o valor hora de 50 reais calculando um mês de 168 horas. (50 * 168 = 8400) – Este valor hora é de um programador Java Sênior, mas podem haver variações.

Para calcularmos o real salário do funcionário CLT, não basta somente verificar o valor que ele recebe líquido, temos que colocar todos os benefícios na equação, alguns exemplos são:

3600 – Valor líquido ao fim do mês
400 – INSS (este valor retorna algum dia na aposentadoria)
300 – 13 (valor do 13 dividido por 12)
300 – 14 (algumas empresas tem 14/Participação nos lucros, é a mesma conta que para o 13)
1000 – Plano de saúde executivo familiar (profissional + esposa + filhos – eu cotei o melhor plano da Amil)
250 – Ticket refeição
250 – Vale transporte

Os benefícios variam de empresa para empresa, então esta conta é bem pessoal, citado acima alguns exemplos comuns, baseado nestes exemplos, podemos dizer que o salario do profissional CLT é então:

3600 + 2500 = 6100

Agora, calculando o valor do profissional PJ, temos 50 * 168 = 8400.

Os valores do CLT e do PJ podem variar com adição de horas extras, mas NUNCA se deve levar em consideração este fator, visto que é algo que pode não existir.

Em cima do valor de 8400, o profissional PJ vai pagar aproximadamente 15% de impostos/escritório/etc, é um valor alto, mas a média é entre 10 a 15% mesmo, para fazermos estas contas, sempre devemos chutar alto.

Descontados os 15%, o PJ tem ao final do mês 7140 reais na mão. Agora veja que o PJ não tem NENHUM dos benefícios do CLT, então este valor dos benefícios deve ser descontado do PJ:
7140 – 2500(benefícios do CLT) = 4640

Agora destes 4640, desconta-se o salário líquido do CLT (3600), que vai dar uma diferença de 1040.

Concluindo:

Existem ‘N’ fatores que podem entrar nesta equação, o CLT pode ter mais ou menos benefícios, o PJ pode ter algum benefício também, porém em geral, O CLT tem que considerar que tem férias, licenças (maternidade, doença, seguro desemprego, etc)FGTS, etc.. enquanto o PJ não tem NADA disso, se ele quiser o benefício, vai ter que pagar de seu próprio bolso.

Outro fator que muitas pessoas consideram é a estabilidade do CLT. Para uma empresa mandar um profissional PJ “embora”, é muito mais prático e não tem custo algum, no máximo tem um contrato assinado que normalmente dá até este direito para a empresa, ai o PJ vai embora sem receber nada! Para mandar um CLT para a rua, é caro! Uma empresa sempre vai preferir mandar o PJ para a rua! Eu não levaria em consideração este fator na área de TI se você for um bom profissional (bom CV, falar inglês, etc), pois o mercado é aquecido e não faltam vagas.

O PJ normalmente não tem plano de carreira, o CLT costuma ter. Algumas empresas também pagam cursos para os profissionais CLT, e isso tem seu valor e tem que entrar na conta.

Por outro lado, o PJ pode trabalhar muito, fazer horas extras irreais, e recebera por isso, um CLT, esta limitado legalmente em seu numero de horas (40 horas mês).

Para abrir uma empresa para prestar serviço como PJ, você vai ter um custo, e para fechar a empresa vai ter um custo maior ainda, o CLT não tem custo algum (só o da foto 3×4 :-)).

Se um PJ falta do trabalho, o problema é dele, até com atestado médico, e não vai receber por isso, então ele não pode nem pensar em ficar doente! Se o CLT falta, com atestado, ele recebe normalmente, se fica doente, tem amparo legal!

Legalmente, uma empresa (PJ) deve gastar o lucro da empresa com A empresa, o que a maioria das pessoas faz é simplesmente pegar esse dinheiro e torrar com gastos pessoais, casas, carros, etc. Se a empresa cai em um pente fino da Receita Federal, irá pagar uma multa sobre tudo que não for comprovado como gasto da empresa PJ, ou seja, sobre TODA sua retirada! Tenho amigos que cairam nessa e demoraram mais que 5 anos para se “levantar” financeiramente.

Agora, se perguntarem qual minha preferencia, eu digo categoricamente: CLT.

O valor PJ tem que ser muito alto para justificar uma migração para o mesmo. Tem que dar dinheiro para pagar todos os benefícios do CLT e sobrar. As vezes as pessoas só olham o valor direto que o PJ rende e não olham os outros valores que o CLT propicia e caem em ilusões!

Ao analisar uma proposta, coloque TODOS os fatores na ponta do lápis e não tome uma decisão precipitada.

Texto do Juliano Marcos Martins para o site APInfo

Facebook Comments

Entendendo o modelo Multi-tenancy para clientes

No futuro, O modelo SaaS vai requerer tecnologias e arquiteturas especificamente desenhadas para operar em nuvem. Entretanto, essas novas arquiteturas e tecnologias vão aparecer a longo prazo, com modelos intermediários e transitórios surgindo no curto e médio prazo, fazendo a ponte entre os modelos computacionais existentes hoje e os futuros modelos em nuvem.

Atualmente, a maioria dos softwares existentes foi desenhada para operar nos data centers das empresas, sujeitos a contratos específicos de licença de uso. As próprias plataformas de aplicação como Java e .Net foram desenhadas para operarem no modelo on-premise.

Em um modelo SaaS em nuvem, as aplicações podem ser oferecidas como serviços a muitas organizações. Para os provedores desses serviços, é imprescindível que os recursos computacionais a serem oferecidos sejam o mais amplamente compartilhados.

Para os usuários, é fundamental que uma falha de um software na operação para um outro usuário não o afete. Além disso, cada usuário gostaria de adaptar, na medida do possível, a aplicação às suas características específicas.

Porém as arquiteturas de software atuais não atendem a esse novo cenário. É necessário um novo modelo arquitetônico de software, chamado de multitenancy ou multi-inquilino.

A proposta do modelo SaaS é ter uma aplicação atendendo aos múltiplos clientes, chamados de tenants ou inquilinos. Inquilinos não são usuários individuais, mas empresas clientes do software.

Uma arquitetura multi-inquilinos (em alguns casos, a literatura fala em multi-arrendatário, mas eu prefiro usar o termo multi-inquilino) é uma arquitetura essencial para um ambiente em nuvem, pois permite que múltiplos inquilinos (empresas/clientes) compartilhem os mesmos recursos físicos como um aplicativo ERP, mas permaneçam logicamente isolados.

Os modelos multi-inquilino são:

01 – Inquilino isolado: Neste modelo, cada inquilino tem seu próprio stack de tecnologia, não havendo compartilhamento de recursos. Na prática, embora o usuário sinta a experiência de multi-inquilino, pois a aplicação é oferecida a múltiplos clientes a partir do mesmo data center, este modelo não é multi-inquilino. É similar ao modelo tradicional de hosting (hospedagem), no qual cada usuário tem seu próprio conjunto de recursos computacionais e sua própria instância da aplicação. Para a uma oferta SaaS, este modelo carece de agilidade e de elasticidade, porque adicionar um novo inquilino requer o provisionamento de sua própria instância de hardware e de software. Também não permite economia de escala. Os provedores que comercializam softwares no modelo tradicional podem oferecer esta opção, sem alterar sua aplicação. Embora não seja verdadeiramente Computação em Nuvem, é um passo nessa direção, oferecendo como atrativo a facilidade de uma rápida oferta para SaaS.

02 – Multi-inquilino via hardware compartilhado (virtualização): Neste modelo, cada inquilino tem seu próprio stack de tecnologia, mas o hardware é alocado dinamicamente a partir de um pool de recursos, via mecanismos de virtualização. Bastante similar ao modelo anterior, mas permitindo elasticidade na camada do hardware. Elasticidade é fundamental ao modelo de Computação em Nuvem, que demanda mecanismos de alocação e liberação de recursos de forma dinâmica. Este modelo permite uma entrada rápida na Computação em Nuvem, principalmente por provedores de aplicações e de infraestrutura, porque não demanda redesenho da aplicação. Entretanto, apresenta limitações, pois a unidade de alocação e liberação de recursos é a maquina virtual onde aplicação vai operar.

03 – Multi-inquilino via container: Neste modelo, vários inquilinos são executados na mesma instância de um container de aplicação (um servidor de aplicações), mas cada inquilino está associado a uma instância separada do software de banco de dados. O ambiente de execução é compartilhado entre vários inquilinos, mas a plataforma de dados é a mesma. A premissa do modelo é que o isolamento do banco de dados garante integridade dos dados dos inquilinos, ao mesmo tempo em que o container de execução, por ser compartilhado, oferece as vantagens de elasticidade e de customização. Para garantir o isolamento dos inquilinos dentro de uma única instância do container ou servidor de aplicações, este deve ser desenhado com funcionalidade para gerenciar a alocação de recursos aos seus inquilinos.

04 – Multi-inquilino via todo o stack de software compartilhado: É uma evolução do modelo anterior, agora com todo o stack de software sendo compartilhado. Neste modelo, além do container da aplicação, também uma única instância do banco de dados é compartilhada por todos os inquilinos.

O modelo (02), multi-inquilino por compartilhamento de hardware, permite uma transição para SaaS com baixo custo e baixo impacto. A razão é simples: preservam os modelos de programação e tecnologia já conhecidos.

Os modelos (03) e (04) implementam um nível bem mais avançado de SaaS e provavelmente serão os modelos dominantes no longo prazo. Mas, atualmente, é implementado apenas por empresas de software que não possuem legado para sustentar e, portanto, podem romper com os modelos tradicionais, como por exemplo, a Salesforce.

Como são nativos ao modelo em nuvem, oferecem níveis elevados de flexibilidade e de elasticidade, mas ao custo de disrupção nos modelos atuais de programação.

Nos próximos anos, veremos um intenso debate sobre os prós e contras dos vários modelos de multi-inquilinos, mas no longo prazo os modelos (03) e (04) vão prevalecer.

Empresas de software que precisam suportar sua imensa base de clientes com sistemas legados estão optando por uma evolução gradual, adotando inicialmente o modelo (02), mas incentivando uma evolução posterior para os modelos (03) e (04), à medida que o mercado e as tecnologias disponíveis forem amadurecendo o suficiente para suportarem clientes corporativos de grande porte.

Texto de Cezar Taurion para o iMasters

Facebook Comments

Definição de Full-Stack Developer

Full stack web developer é um perfil de desenvolvedor que consegue trabalhar não somente com programação, pois compreende de forma razoável uma porção de outras tecnologias envolvidas em um sistema: banco de dados, infra-estrutura, sistema operacional, servidor web, CSS/HTML (conforme ilustração do @bvafaretto).

Estes profissionais conseguem solucionar uma grande gama de problemas deste “stack” todo e, quando precisam de ajuda, precisam de pouca instrução de um profissional especialista na referida tecnologia para conseguirem prosseguir. O conjunto todo é chamado de “stack”, pois se trata de uma “pilha” de tecnologias (pense nas tecnologias do servidor embaixo, e as do cliente em cima). Então “full-stack” é aquele desenvolvedor que lida com todas as camadas da pilha, e não só com uma parte delas.

Full Stack Web Developer

Ao contrário do que é pensado, não é preciso ser uma desenvolvedor experiente para considerar-se “full stack”. Isto pode ocorrer perfeitamente nos primeiros anos do profissional, basta o mesmo ter contato com estas diferentes tecnologias, o que normalmente ocorre em empresas menores (onde nem sempre há um profissional disponível para cada tecnologia) ou empresas que estimulam este tipo de situação (arrisco dizer que seja a maioria das que trabalham com alguma metodologia ágil).

 

Facebook Comments

Github: o novo curriculum do programador

Cada vez mais, conversando com amigos de empresas que buscam contratar programadores, uma coisa é consenso: em todas as entrevistas a pergunta “Você tem GitHub?” é cada vez mais frequente e unânime.

Mas por que tudo isso? Porque hoje, muitas empresas buscam avaliar o programador pelas suas realizações.

E isso é ótimo! Sabe por que? Porque o GitHub permite que você, mesmo sem experiência de mercado, possa mostrar a qualidade do código que produz. Sabe aquela velha queixa dos recém-formados que buscam uma colocação no mercado e as empresas pedem programadores com experiência prévia? Então isso pode estar com os dias contados.

Para quem não conhece, o GitHub é um repositório de códigos que funciona como um servidor de versões e que ainda é uma rede social de programadores. Sim, uma rede social na qual suas postagens são: programas! E você pode seguir projetos, clonar projetos para seu repositório local (seu HD) e fazer suas próprias modificações. E com isso, seu futuro avaliador em uma entrevista de emprego irá avaliá-lo, não pelo curriculum que você entregou, mas pelo seu histórico como programador.

Para você que ainda não criou sua conta no GitHub e está procurando um emprego, crie-a hoje! Não espere. E coloque todos os seus códigos lá, todos os seus projetos, mesmo os acadêmicos!

Mas e se aí você me perguntar: “pôxa Isidro, mas meus códigos estão muito ruins, devo colocá-los mesmo assim?”. Aí vou te responder: depende do quanto você quer convencer seu entrevistador. Se seu código não está lá aquelas maravilhas na sua visão, que tal “dar um tapa” nele, estudar melhor boas práticas, correr um pouco atrás de se atualizar em relação aos padrões de projetos, organizar seus pacotes, melhorar a legibilidade de seu código? Pronto para se mexer?

O que quero provocar em vocês, meus caros alunos é a necessidade de estarem antenados ao que o mercado tem notado e dado importância.

Conhecer uma ferramenta de controle de versões é fundamental para se trabalhar em equipe. O GitHub permite isso, além de uma série de outras integrações com outras ferramentas. E ainda mais é que você pode (e deve) mostrar todo seu potencial para a galera.

Se quiser saber mais, dá uma olhada nesses links aqui

http://www.github.com

https://help.github.com/ que vai te dar o step-by-step pra começar a trabalhar com ele.

Pense nisso! E #vamosprogramar!

Artigo do Professor Isidro para a Abraweb

Facebook Comments

Usando o Fetch API ao invés do jQuery.Ajax

Segundo o site buildwith o jQuery ainda é utilizado por cerca de 78.2% dos principais sites na internet. Sim. 78% dos sites ainda usam de alguma forma o icônico $.

Atualmente com seus aproximadamente 86K na versão 2.2.2, o jQuery possui uma série de recursos importantes para nosso dia-a-dia como desenvolvedores front-end. Com o passar do tempo os browsers foram se atualizando, e a cada dia vemos a não necessidade de adicionar o jQuery em nossos projetos.

Por incrível que possa parecer, muita gente ainda adiciona o jQuery inteiro no projeto simplesmente por causa do jQuery.ajax. Nesse post vamos conhecer a Fetch API, talvez este seja o motivo que você estava procurando para abandonar de vez o jQuery.

Segundo o site caniuse a Fetch API está presente em aproximadamente 55% dos navegadores do mundo. Isso significa que para utilizarmos em nossos projetos vamos precisar de um Polyfill. É só seguir as instruções de instalação descritas no repositório ou utilizar diretamente do cdnjs.

A Fetch API utiliza Promises. Se você nunca utilizou Promises no seu desenvolvimento, dê uma lida nesse ótimo artigo do Jake Archibald antes de continuar.

Utilização Básica

Se você estiver em uma versão de browser compatível ou estiver utilizando o polyfill o objeto window agora possui um método chamado fetch.

fetch('/some/url', { method: 'get' })  
   .then(function (response) { })
   .catch(function (err) { // Error });

A assinatura do método é fetch(request[, options]) onde request pode ser uma String ou uma instância da classe Request e options sendo um parâmetro opcional que quando declarado deve ser um Object contendo os seguintes parâmetros:

  • method
    • O método do request. GET, POST, etc.
  • headers
    • Headers que você deseja enviar no request.
  • body
  • mode
    • Modo do request. cors, no-cors ou same-origin.
  • credentials
    • Se o request deve incluir os cookies para o domínio atual. omit, same-origin ou include.
  • cache
    • O modo de cache. default, no-store, no-cache, force-cache ou only-if.
  • redirect
    • O modo de redirect. follow, error ou manual.
  • referrer
    • no-referer, client ou uma URL.

Todas as chamadas para o método fetch retornam uma Promise que são resolvidas com uma Response.

Utilizando a classe Request

Ao invés de usar uma String é possível passar uma instância da classe Request como o primeiro parâmetro do método fetch.

fetch(new Request('/users.json', {  
  method: 'POST', 
  mode: 'cors', 
  redirect: 'follow',
  headers: new Headers({
    'Content-Type': 'text/plain'
  })
})).then(function(response) { });

Com isso não é necessário passar o parâmetro options já que todas as opções presentes no objeto options são atributos da instância da classe Request.

Uma vez criada a instância de Request, todos seus parâmetros são read-only, ou seja, não podem ser modificados fora da construção da instância.

Um ponto importante sobre a instância da classe Request é que após ser criada ela só pode ser utilizada uma única vez pelo método fetch. Caso você queira refazer um determinado request utilizando as configurações de uma instância previamente criada basta utilizar o método clone presente na classe Request para efetuar uma nova chamada fetch.

Veja um exemplo abaixo:

var req = new Request('/users.json', {  
  method: 'POST', 
  mode: 'cors', 
  redirect: 'follow',
  headers: new Headers({
    'Content-Type': 'text/plain'
  })
});

var handleFailure = function () {  
  if (shouldRetry()) {
    fetch(req.clone()).then(handleSuccess);
  }
};

fetch(req).then(handleSuccess).catch(handleFailure)  

O objeto Response.

Toda Promise retornada pelo método fetch é resolvida com uma instância de Response – Abaixo vemos um exemplo onde fazemos um request para um arquivo JSON e transformamos o objeto Response em um JSON.

fetch('file.json')  
  .then(function (response) { 
    // Converte a resposta para um JSON
    return response.json();
  })
  .then(function(json) {
    console.log(json); 
  });

Além do método .json() uma instância de Response pode ser convertida para .text(), .blob(), .arrayBuffer() ou .formData(). A instância também possui atributos:

  • type
  • url
  • status
  • ok
  • statusText
  • headers

Como fazer um POST

É comum enviar dados para o backend utilizando POST ou PUT — Abaixo está um exemplo de como enviar dados para backend utilizando a Fetch API.

fetch('/post', {  
  method: 'post',
  body: JSON.stringify({
    email: '[email protected]',    
    password: '******'
  })
});

Upload de arquivos?

var input = document.querySelector('input[type="file"]')

var data = new FormData()  
data.append('file', input.files[0])

fetch('/upload', {  
  method: 'post',
  body: data
});

Not always a bed of roses. Sim, existem problemas funcionalidades não implementadas.

Como a Fetch API é relativamente nova, existem recursos presentes no XMLHttpRequest que ainda não foram incorporados na Fetch API. Muitos dos problemas já estão endereçados no repositório GitHub do projeto.

Não é possível cancelar um request.

Utilizando o jQuery.ajax é algo bem trivial.

var xhr = $.ajax({  
  type: "POST",
  url: "some.php",
  data: "name=John&location=Boston",
  success: function(msg){
    alert("Data Saved: " + msg);
  }
});

xhr.abort();  

Já existe uma discussão aberta no GitHub sobre qual deveria ser a melhor forma de fazer algo parecido com a Fetch API.

Não é possível acompanhar o progresso da requisição.

$.ajax({
  xhr: function() {
    var xhr = new window.XMLHttpRequest();
    xhr.upload.addEventListener("progress", ... );
  }
});

Existe a intenção de incluir a Stream API para que isso seja possível.

Finalizando

Talvez você não esteja disposto a abrir mão do jQuery no momento. Tudo bem. Não tem problema. Porém é interessante ver como os browsers estão se atualizando trazendo APIs simples que fornecem exatamente as mesmas algumas funcionalidades que o jQuery tem há algum tempo. Até mais.

Artigo do engenheiro de software do site VivaReal William Lepinski

Facebook Comments

Desenvolvedor C# Pleno – São Caetano do Sul

Empresa atuante na área de T.I deste 2001, especializada em Serviços de Desenvolvimento de Softwares, Desenvolvimento Mobile e Fábrica de Testes busca profissional para atuar em SÃO CAETANO DO SUL(ABC)

Perfil:
Experiência em análise e desenvolvimento de sistemas,utilizando as ferramentas C#, Asp.Net (Webforms e MVC), WebServices, APIs, Xml, Javascript, Bootstrap, Jquery, HTML 5, CSS, COM+, SQL Server, SCRUM

Perfil Inovador, Pró-Ativo, Que Gosta de Desafios, Apaixonado pelo que faz e que preza pela colaboração na criação de novas soluções.

Início imediato – Período indeterminado
Contratação PJ Valor Hora R$ 35,00

Enviar e-mail para: [email protected]

Facebook Comments

Vaga Analista Desenvolvedor BI – São Bernardo Campo

Necessários:
Experiência no desenvolvimento de análises, relatórios, painéis e indicadores, independentemente
da vertical de mercado, em projetos de BI.
Experiência na definição de estratégias de coleta e consolidação de dados, com foco na otimização da base crítica para elaboração de relatórios com alto desempenho e elevado grau de importância para o negócio do cliente, bem como na definição da solução técnica que atenda tal requisito.

Conhecimentos avançados no uso de ferramentas de BI Microsoft:
SQL Server RDBMS
SQL Server Integration Services
SQL Server Analysis Services
SQL Server Reporting Services
Power BI

Desejável:
Conhecimentos na plataforma .NET, preferencialmente C# .NET e ASP.NET MVC
Conhecimento na configuração e uso de Performance Point
Conhecimento na configuração e uso de Power View, Power Query, Power Maps e Power Pivot
Visual Basic for Applications (VBA)
Master Data Service

Empresa: Programmers Informatica

Enviar curriculo para o e-mail [email protected]

Facebook Comments

Vaga Programador Júnior – SP

O profissional atuará como recurso Avanade, podendo ser alocado em clientes de diferentes segmentos.

Requisitos:
– Formação superior concluída ou cursando penúltimo ou último ano (preferência cursos de Tecnologia)

– Necessário conhecimento em Desenvolvimento Web: HTML5 ou CSS3 ou Javascript
– Necessário experiência em Desenvolvimento de front-end, ASP.NET (WebForms) ou ASP.NET (MVC)

– Desejável conhecimento em AngularJS.

Disponibilidade para atuar em diferentes regiões de São Paulo e/ou Grande São Paulo.

Enviar curriculo para [email protected]

Facebook Comments

Vaga Analista Desenvolvedor .NET – Rio de Janeiro

Experiência em desenvolvimento, manutenção e análise de sistemas

Programação orientada a objetos, MVC e Design patterns

Conhecimento de algum framework de mapeamento de objeto relacional (ORM)

Experiência na análise de sistemas e de negócio

Conhecimento .Net Framework 4.0 ou superior

Desejável proficiência em Domain Driven Design (DDD)
Desejável proficiência em Test Driven Development (TDD)
Desejável proficiência em NHibernate
Desejável proficiência em métodos dos ágeis

Conhecimento na área de seguros e previdência ou mercado financeiro.
Capacidade de trabalhar em equipe, pró-atividade com foco em resultados

Local de trabalho: Centro – Rio de Janeiro

Enviar cv atualizado e com pretensão salarial para [email protected]

Facebook Comments

Vaga Desenvolvedor Mobile Pleno/Sênior – SP

Principais atividades: Fará parte da equipe de desenvolvimento de um software destinado a plataforma mobile (tablets e smartphone).

Local de trabalho: Zona Sul de SP – Próximo ao Shopping Morumbi

Pré-requisitos:
– Imprescindível: Experiencia anterior em desenvolvimento mobile (desejável apresentação de portfólio) e background de desenvolvedor (não apenas designer) em plataforma Microsoft .NET (desejável C#)
– Desejável: Xamarin, Cordova ou tecnologias similares, HTML5 e Bootstrap

Enviar currículo para [email protected] com assunto “Desenvolvedor Mobile”

Facebook Comments

Vaga Analista DBA SQL Server – Santo André

Experiência em ambientes heterogêneos e de alta complexibilidade.
Coordenar, controlar e acompanhar as atividades de administração do banco de dados (DBA), envolvendo a instalação, configuração, projeto físico e manutenção do banco de dados.
Vivência SR como DBA Oracle RAC e DBA SQL Server
Desejável conhecimento em ITIL
Ser capaz de fazer planos e migração de bancos de dados Oracle e SQL Server,
mover/otimizar/reestruturar objetos e qualquer atividade de database.
Propor planos de revisão, melhoria e otimização dos databases, das politicas de backup entre outros.

Disponibilidade para atuar em regime de plantão

Horário de Trabalho: 13:00hs às 22:00hs.
Disponibilidade para trabalhar em Santo André.

Contratação: CLT
Benefícios: Vale-transporte/Auxílio fretado ou Auxílio Combustível, vale-refeição, Assistência Médica Sulamérica, Convênio Odontológico, Seguro de vida, e Cartão Good Card.

Empresa: Everis

Enviar e-mail com currículo para [email protected]

Facebook Comments