Microsoft

Microsoft compra o GitHub. E agora?

A segunda-feira começou com uma notícia que pode ter um grande impacto sob a comunidade de software global: a Microsoft comprou o GitHub em uma transação no valor de US$ 7,5 bilhões. Passado todo o frisson causado por essa notícia, chega a hora de fazermos uma análise mais lógica: quais serão os possíveis impactos para nós como desenvolvedores com relação a esta aquisição da Microsoft?

Antes de tudo: o que é o GitHub?

O GitHub é um dos mais populares serviços de hospedagem de código no mundo. Trata-se de um serviço baseado na web para hospedagem de código através do Git – uma ferramenta distribuída de controle de versão open source.

Aqui já entra um ponto que merece destaque e é fruto de confusão: o GitHub usa o Git por baixo dos panos para gerenciar os códigos que são enviados para ele. O GitHub não é o Git. Vários outros serviços oferecem serviços parecidos com o GitHub, sendo inclusive concorrentes entre si. Alguns destes serviços são o GitLab e o BitBucket. Todos estes são, assim como o GitHub, serviços web de hospedagem de código baseados no Git.

Git e GitHub - Controle de versão
Curso de Git e GitHub - Controle de versão
CONHEÇA O CURSO

Basicamente, o GitHub pode ser usado em sua versão web de duas formas: através de repositórios públicos ou através de repositórios privados (quando falamos sobre repositórios, estamos falando sobre “locais” onde o nosso código pode ser armazenado e compartilhado entre desenvolvedores de qualquer lugar do mundo). A precificação varia de acordo com a tabela abaixo:

PlanoPreçoInformações
GratuitoCriação de repositórios públicos de maneira ilimitada
DesenvolvedorUS$ 7/mês/desenvolvedorCriação de repositórios públicos e privados de maneira ilimitada
TimeUS$ 9/mês/desenvolvedorCriação de repositórios públicos e privados de maneira ilimitada, controle de acesso aos repositórios entre múltiplos usuários. Mínimo de 5 desenvolvedores no time.
Empresarial – hospedado no GitHubUS$ 21/mês/desenvolvedorCriação de repositórios públicos e privados de maneira ilimitada, suporte 24/5, tempo de SLA de até 8h úteis.
Empresarial – hospedado em infraestrutura própriasob consultaCriação de repositórios públicos e privados de maneira ilimitada, suporte 24/7, suporte a múltiplas organizações.

No caso de repositórios públicos, nenhuma taxa é cobrada: a hospedagem do código é completamente gratuita. Porém, repositórios públicos (e, consequentemente, o código contido neles) podem ter seu conteúdo visualizado por qualquer pessoa (mesmo aquelas que não possuem uma conta no GitHub). É nessa modalidade de repositório onde os projetos open source acabam sendo hospedados, justamente para que o código fique exposto para a comunidade sem problemas.

E é justamente para a comunidade open source que o GitHub tem mais significado. O GitHub é uma plataforma estável e robusta, com mais de 10 anos de estrada e mais de 28 milhões de desenvolvedores e empresas como usuários. Entre essas empresas, nós incluímos os gigantes atuais da tecnologia: Google/Alphabet, Facebook, Amazon, Apple, Canonical e até mesmo a própria Microsoft.

Toda essa comunidade confiou hospedar seu código no GitHub justamente devido a sua robusteza e estabilidade, além de o GitHub ser uma plataforma fortemente comprometida com o open source desde suas origens.

E vem a Microsoft e… Compra o GitHub!

A Microsoft aceitou os termos de compra e iniciou o processo de absorção do GitHub em 4 de junho de 2018. O valor da compra foi especulado em cerca de US$ 7,5 bi. O interessante é que esse processo de compra não ocorreu do nada. Rumores apontam que as conversas sobre uma possível compra do GitHub por parte da Microsoft existiam desde 2017. Porém, o acordo de compra só foi finalizado de fato agora em 2018.

E isso desagradou uma parte da comunidade de desenvolvedores…

Uma parte da comunidade de desenvolvedores se revoltou com essa operação. Muito dessa revolta se deve ao fato da antiga postura da Microsoft, principalmente na década de 90 e até os anos 2000.

De fato, nesse tempo, a Microsoft não era uma empresa que apreciava muito o open source de maneira geral. Na verdade, ela tinha uma postura completamente adversa, sendo uma grande defensora do software proprietário em geral e até ignorando a existência de soluções open source de grande qualidade. De fato, a comunidade open source em geral via na Microsoft um grande demônio que procurava destruir as iniciativas open source para obter o monopólio do mercado .

E isso, de fato, seria motivo mais do que suficiente para assustar a todos os desenvolvedores e empresas com seus projetos open source hospedados no GitHub.

Mas o fato da Microsoft ter comprado o GitHub não é motivo de pânico e medo!

Acredito que não há motivo de pânico, mesmo com toda a história, no fato de a Microsoft ter comprado o GitHub. E acredito que isso seja devido a uma pessoa em especial: Satya Nadella.

Satya Nadella é um indiano que foi nomeado CEO da Microsoft em 2014, no lugar de Steve Ballmer (especialmente famoso pelo vídeo “Developers, Developers, Developers!” e pelas apresentações um pouco… extravagantes). E essa mudança de comando na Microsoft provocou uma série de mudanças no mindset da companhia.

Satya Nadella provocou uma revolução na maneira como a Microsoft encara o desenvolvimento de software: Nadella tornou a Microsoft uma adepta e grande incentivadora do software livre e das comunidades de desenvolvimento, ao mesmo tempo que convergiu as estratégias da Microsoft para ferramentas baseadas em nuvem, inteligência artificial e machine learning (tirando um pouco de foco dos lendários produtos da Microsoft – Windows e Office).

Hoje podemos ver uma série de resultados originados a partir dessa mudança de comportamento no mercado:

  • A Microsoft, em pouco mais de 4 anos, já se tornou a maior contribuidora de software open source no mundo, disponibilizando mais de 4000 profissionais diretos para a colaboração de projetos open source;
  • A grande maioria dos produtos da Microsoft hoje é completamente open source: ferramentas como o .NET Framework (Core), Visual Studio Code, TypeScript e o Xamarin hoje estão disponíveis no próprio GitHub para toda a comunidade. Isso também tornou a comunidade ativa e como parte importante no que diz respeito à evolução destas e outras tecnologias open source da Microsoft – ou seja, a comunidade tem voz ativa no desenvolvimento destas ferramentas;
  • Atualmente, a Microsoft está entre as cinco maiores contribuidoras do… kernel do Linux! Isso era algo simplesmente inimaginável há pouco tempo atrás. Então provavelmente você está usando algum código open source da Microsoft agora, mesmo que não utilize nenhuma ferramenta da empresa de Redmond. Ah, inclusive, a Microsoft lançou recentemente sua própria distribuição Linux, o Azure Sphere OS.

Estes são só alguns dos pontos que mostram que, nos últimos 4 anos, a Microsoft realmente mudou completamente seu pensamento com relação ao open source. Eu, particularmente, acredito nessa mudança, mesmo porque ela já se mostrou muito sólida e sem volta. Não vejo mais motivos de a Microsoft querer “quebrar” a comunidade open source.

Muitas pessoas citam os casos da Nokia e do Skype para justificar o pensamento de que a Microsoft irá “estragar” o GitHub. Eu acho esse pensamento muito raso por alguns motivos:

  • O Skype (2011) e a Nokia (2013) foram adquiridos ainda na época do Steve Ballmer. A empresa, como mostrado anteriormente, tinha uma filosofia completamente difernete da atual;
  • Não dá para compararmos a Nokia e o Skype com o GitHub. São produtos completamente diferentes, voltados para públicos completamente direrentes e que serão geridos por divisões da Microsoft completamente diferentes. São casos, em minha opinião, muito heterogêneos para serem comparados com propriedade e seriedade.

Por que a Microsoft comprou o GitHub?

O motivo exato ainda não está muito claro nem para quem trabalha dentro da própria Microsoft… Mas eu arrisco um palpite: acredito que a Microsoft tenha dois objetivos principais: se aproximar mais ainda da comunidade de desenvolvedores estando à frente de uma ferramenta que está entre as mais populares para desenvolvedores de software e fornecer uma integração mais sólida e prática com sua plataforma de nuvem, o Azure.

Estes dois objetivos parecem fazer muito sentido… Hoje, empresas de tecnologia conseguem compreender o poder que a comunidade de desenvolvimento tem e, por isso, estas empresas sabem que é necessário estar o mais próximo possível dos desenvolvedores, que são uma peça-chave na área de computação. E também parece bem coerente querer oferecer uma integração maior com o Azure a partir do local onde uma boa parte do código de aplicações está hospedada.

Para mim, isso ficou mais nítido ainda no comunicado oficial da Microsoft, no qual ela afirma que o GitHub responderá à Microsoft Cloud e ao vice-presidente da área de AI da empresa.

A Microsoft vai mudar o GitHub?

A Microsoft deixa claro em seu post oficial sobre o assunto que não vai mudar absolutamente nada no GitHub. E uma eventual mudança nem teria sentido, nem em questões tecnológicas, como em questões de negócio. Essas mudanças seriam inviáveis justamente por causa do tempo de estrada, estabilidade e reputação do GitHub. Não estamos falando de uma empresa de 3 anos, estamos falando de uma empresa com mais de 10 anos de estrada. E não é nem um pouco viável alterar os trilhos de 10 anos de história sob nenhuma ótica.

Para mostrar e deixar isso claro à comunidade, a Microsoft já nomeou Nat Friedman como o novo CEO do GitHub. Friedman é um dos fundadores da Xamarin e sempre deixou claro seu apoio ao open source, trabalhando com projetos da comunidade desde 2009.

Friedman, em um post de boas-vindas à integração Microsoft + GitHub, como novo CEO do GitHub, já deixou bem claro alguns pontos que preocupavam a comunidade:

  • O GitHub continuará com o modelo atual de negócios, ou seja: ele continuará aberto a comunidade e proverá serviços adicionais através dos valores citados. O foco do GitHub continuará a ser o desenvolvedor e suas comunidades. Nada irá mudar nesse sentido;
  • O GitHub irá operar de maneira 100% independente da Microsoft, como se fosse de fato uma subsidiária (em um modelo muito parecido com o que acontece com o .NET através da .NET Foundation).

Com estas afirmações (e são afirmações que não tem o porquê de não serem cumpridas), não há o menor motivo para preocupação com relação ao GitHub.

E agora?

Agora não há muito o que fazer, a não ser aguardar. Eu particularmente vejo que tanto a Microsoft como o GitHub podem crescer com essa junção. E se Microsoft e GitHub saírem ganhando, todos nós saímos ganhando também no final. Acredito que seria muito mais complicado se a Google (com suas políticas de privacidade duvidosas), o Facebook (com toda a complicação da licença do React) ou a Oracle (com sua mentalidade ainda mais voltada a software proprietário – vide o que aconteceu com o Java) tivessem comprado o GitHub. Mas, se tratando da nova Microsoft, acredito que isso possa ser interessante.

É importante também notar que esse tipo de transação no mercado é mais que comum… Não podemos esquecer que o GitHub também era uma empresa, tanto é que cobrava por determinados serviços. Empresas de sucesso no mercado estão suscetíveis a serem compradas por empresas maiores. Faz parte do mecanismo como um todo, e isso não precisa ser necessariamente ruim. E, provavelmente, ainda veremos situações como essa acontecerem mais vezes.

Vamos aguardar…

Precisamos falar sobre o TypeScript

Ultimamente muita gente tem torcido o nariz para um novo superset do JavaScript. Sim, estamos falando do TypeScript.

O TypeScript é um caso interessante. Percebo ultimamente que, ou você o adora (o que é meu caso) ou você simplesmente o odeia. Parece não haver um consenso intermediário de maneira geral na comunidade. Por que será que isso acontece? Será que existem conceitos errôneos difundidos na comunidade sobre o TypeScript? Será que ainda há pontos cruciais a serem melhorados nele? Vamos discorrer sobre isso! 🙂

TypeScript - Primeiros Passos
Curso de TypeScript - Primeiros Passos
CONHEÇA O CURSO

É da Microsoft…

Acho que esse ponto talvez seja o mais complicado de se discutir. Muita gente simplesmente tem ódio do TypeScript simplesmente por ele ser da Microsoft. Em minha opinião, acho que é simplesmente perda de tempo deixar de utilizar alguma tecnologia por ela ser de alguma empresa específica. Acho que a qualidade técnica e a maneira como a companhia conduz a plataforma, além dos fatores externos (infraestrutura, contratos comerciais, etc.), deveriam ser os fatores cruciais para se decidir se determinado framework/linguagem/plataforma será adotada ou não. Porém, sabemos que por muitas vezes a paixão toma lugar da razão nesse tipo de tomada de decisão (eu comentei um pouco sobre esse tipo de cenário no artigo Não seja um profissional “intolerante”.

Eu concordo que a conduta que a Microsoft tinha há algum tempo não era a mais adequada com relação aos desenvolvedores. Mas também precisamos reconhecer que essa postura nos últimos anos mudou da água para o vinho! Em pouco mais de cinco anos, a Microsoft se tornou a maior contribuidora em software open source no GitHub. Duvida? Você pode comprovar através do próprio GitHub.

A Microsoft também se tornou uma das principais contribuidoras do kernel Linux. Ela ainda tem disponibilizado uma série de ferramentas que antes eram licenciadas (caso do Visual Studio e do Xamarin, por exemplo) de maneira completamente gratuita. As principais plataformas da Microsoft (o que inclui toda a plataforma do .NET Core e o próprio TypeScript) estão abertos no GitHub. Não há mais motivos para achar que a Microsoft “tem um plano maquiavélico/diabólico/capitalista de dominar a indústria de software” (embora esse acabe sendo um objetivo indireto de qualquer empresa no fim das contas).

A Microsoft mostra atualmente que já entendeu que ela precisa se tornar parte do mundo open source, além de já ter provado que sim, ela tem muita coisa interessante para a comunidade. Para mim, isso tudo reforça que essa mania de falar que o que é da Microsoft é ruim deveria já ter ficado no passado.

O TypeScript não quer substituir o JavaScript

Algumas pessoas que eu conheço têm pavor do TypeScript porque acham que ele vem para substituir o JavaScript, o que é um equívoco. O TypeScript nunca teve a intenção de substituir completamente o JavaScript. A própria documentação diz que ele é na verdade um superset do JavaScript. E o que isso quer dizer? Isso quer dizer que ele visa fornecer alguns recursos que o JavaScript não oferece por padrão. Entre esses recursos, temos por exemplo:

  • A oportunidade de termos tipos de dados mais definidos (tornando o JavaScript um pouco mais tipado);
  • Uma sintaxe e estrutura fortemente orientados à objetos (o TypeScript é fortemente influenciado pelo C# e F#), aproximando a experiência de desenvolvimento de linguagens tradicionalmente orientada a objetos como o C# e o Java;

Essas vantagens, por decorrência, trazem outras vantagens:

Por causa da existência de tipagem e também de uma sintaxe mais clara, as IDEs ganham a possibilidade de aprimorarem seus mecanismos de detecção de erros e de sintaxe em tempo de desenvolvimento. Isso quer dizer que, usando TypeScript, sua IDE poderá lhe avisar de alguma passagem de tipo incorreta ou mesmo sobre alguma sintaxe incorreta enquanto você ainda escreve o código. Ferramentas como o IntelliSense (conhecido por muitos como AutoComplete) também podem ser bem mais efetivas nesse cenário. Não quero dizer que, quando utilizamos JavaScript “convencional”, as IDEs não ofereçam esse tipo de suporte, mas o suporte das IDEs para o TypeScript é ou pelo menos tem a grande tendência de ser bem mais aprimorado;

Ainda temos, como decorrência do ponto anterior, a possibilidade de que o código escrito com TypeScript seja bem mais robusto, seguro e fácil para ser testado. Isso tudo, mais uma vez, graças aos conceitos de linguagens estáticas e tipadas que o TypeScript trouxe para o mundo das linguagens funcionais, na minha opinião, no nível certo. TypeScript não é JavaScript simplesmente tipado e estático, ele torna possível utilizar o melhor do mundo de linguagens de tipagem fraca e funcionais e do mundo de linguagens estáticas e de tipagem forte;

Aqui já é uma opinião bem mais pessoal, mas eu prefiro a sintaxe do TypeScript que a sintaxe do JavaScript, principalmente no que tange à orientação a objetos. Eu gosto das “regras de sintaxe” e a pseudo-tipagem que o TypeScript traz para o JavaScript. Ou você realmente acha que isso:

var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var Animal = (function () {
    function Animal(name) {
        this.name = name;
    }
    Animal.prototype.move = function (distanceInMeters) {
        if (distanceInMeters === void 0) { distanceInMeters = 0; }
        console.log(this.name + " moved " + distanceInMeters + "m.");
    };
    return Animal;
}());
var Snake = (function (_super) {
    __extends(Snake, _super);
    function Snake(name) {
        return _super.call(this, name) || this;
    }
    Snake.prototype.move = function (distanceInMeters) {
        if (distanceInMeters === void 0) { distanceInMeters = 5; }
        console.log("Slithering...");
        _super.prototype.move.call(this, distanceInMeters);
    };
    return Snake;
}(Animal));

… é mais claro que isso?

class Animal {
    constructor(public name: string) { }
    move(distanceInMeters: number = 0) {
        console.log(`${this.name} moved ${distanceInMeters}m.`);
    }
}

class Snake extends Animal {
    constructor(name: string) { super(name); }
    move(distanceInMeters = 5) {
        console.log("Slithering...");
        super.move(distanceInMeters);
    }
}

Agora, nada impede de você utilizar JavaScript “tradicional” em conjunto com o TypeScript, mesmo porque no final o TypeScript é transpilado para JavaScript! No final, tudo vira JavaScript… Veja que no exemplo acima mesmo isso ocorre quando utilizamos o tradicional console no meio do código TypeScript. Isso reforça que a idéia da Microsoft não é substituir o JavaScript, nem nunca vai ser! A idéia é podermos ter a possibilidade de utilizar um ferramental mais poderoso para produzir um código mais robusto e legível.

Agora terei um código muito verboso

Não há como negar isso. As características técnicas (tipagem, vocação para orientação à objetos, etc.) fazem naturalmente que o código TypeScript torne-se um pouco mais verboso e com menos vocação para o lado funcional, principalmente para quem vem de linguagens fracamente tipadas e/ou funcionais. Na verdade, no final, o TypeScript faz uma mistura entre os conceitos dos dois paradigmas (funcional e orientado a objeto) e dos dois sistemas de tipagem (fracamente tipado e fortemente tipado).

E aí, já viu: isso pode provocar tanto admiração como também raiva. Algumas pessoas podem gostar bastante dessa mistura (meu caso) ou outras podem simplesmente odiar (já que o TypeScript corre o sério risco de desagradar tanto os adeptos do paradigma funcional como também do paradigma orientado à objetos). Temos verbosidade no TypeScript sim, mas ainda sim temos aspectos funcionais também presentes.

O TypeScript ainda não consegue lidar bem com todas as bibliotecas JavaScript

Para que o TypeScript consiga “conversar” com as APIs de outras bibliotecas (por exemplo, o jQuery), ele precisa de um arquivo com a extensão **.d.ts*. Este arquivo, conhecido como TypeScript Type Definition, traz os mapeamentos necessários para que através do TypeScript você possa acessar e utilizar os métodos expostos por uma biblioteca externa, mesmo que esta não tenha sido escrita com o TypeScript. Esse arquivo acaba funcionando como uma ponte entre uma biblioteca externa e o TypeScript.

Aí reside o problema: nem todas as bibliotecas possuem esse arquivo que as prepara para serem consumidas por código TypeScript. As mais famosas bibliotecas já possuem este arquivo preparado, mas se você utiliza uma biblioteca um pouco menos conhecida ou possui uma biblioteca proprietária, ela pode não ser de cara compatível com um código TypeScript de maneira completa. Nesse caso, não há outro cenário: será necessário que você mesmo escreva este arquivo de definições ou abra mão do TypeScript. E isso, de fato, pode vir a ser um empecilho dependendo do projeto…

O TypeScript não é o salvador da pátria

alt

O TypeScript pode trazer algumas confusões com relação a sua utilização… Já que o código TypeScript no final é sempre transpilado para um código JavaScript “normal”, podemos dizer que todo código JavaScript também é código TypeScript! Isso é legal porque justamente conseguimos ainda ter as características legais do JavaScript com o poder do TypeScript.

Por isso mesmo que o TypeScript não visa substituir o JavaScript, e sim o complementar. Algumas pessoas têm comentado ultimamente, chegando ao (absurdo, na minha opinião) de dizer que hoje TypeScript é a linguagem de alto nível enquanto o JavaScript é o assembly.

É cedo demais para dizer isso; assim como, em minha opinião, nem sempre o TypeScript pode ser a melhor saída. Para se escolher se você deve usar TypeScript ou não, não se esqueça de levar em consideração a quebra de paradigmas que ele pode causar na equipe de desenvolvimento, bem como o suporte às bibliotecas que você pretende utilizar. E esses são somente dois pontos que devemos considerar… TypeScript não é uma bala de prata..

Afinal, devo utilizar TypeScript ou não?

Mais uma vez, essa é uma questão muito subjetiva, onde não temos o certo e o errado. Tudo vai depender da situação como um todo. Eu gosto da idéia do TypeScript e o utilizo sem problema nenhum: o sistema de tipagem, a sintaxe mais clara e a aliança com o JavaScript (afinal, ainda temos JavaScript como produto final) me agradam bastante. Mas você pode ter uma opinião diferente… No final, nenhum de nós vai estar 100% certo ou 100% errado, hehe.

Agora, eu não acho perda de tempo estudar TypeScript. Para mim, está claro que ele é algo que veio para ficar. Além de tudo, ele ainda está muito alinhado com o ECMA 6, tendo muitos recursos que o ECMA 6 propõe. E tem mais um tempo: alguns frameworks, como Angular e Ionic, estão adotando o TypeScript, assim como outros estão pelo menos oferecendo suporte a ele. Por essas e outras, o TypeScript veio para ficar.

Melhor para nós! Mais uma opção de ferramenta legal que podemos utilizar em nossos projetos. 🙂 Que a guerra dos frameworks/bibliotecas/supersets do JavaScript continue! o/

Você quer aprender TypeScript? Veja esse nosso incrível curso:

TypeScript - Primeiros Passos
Curso de TypeScript - Primeiros Passos
CONHEÇA O CURSO

Google na .NET Foundation? SQL Server para Linux? Visual Studio para MacOS? Saiba como foi o Connect()

A Microsoft realizou no dia 16 de novembro sua tradicional conferência anual, a Connect(). Trata-se de um evento muito importante não somente para os profissionais envolvidos com tecnologias Microsoft, mas sim de um evento que vem ganhando cada vez mais relevância para a comunidade com um todo desde a mudança do comportamento da Microsoft com relação às plataformas Open Source.

A Microsoft utiliza este evento também para apresentar quais são as grandes novidades para desenvolvedores de software e profissionais de infraestrutura. E podemos afirmar que as novidades apresentadas neste ano são simplesmente de deixar o queixo caído!

Se você não está por dentro das novidades, dê uma olhadinha neste post que fizemos para que você fique por dentro de tudo! 😉

C# (C Sharp) - Introdução ao ASP.NET Core
Curso de C# (C Sharp) - Introdução ao ASP.NET Core
CONHEÇA O CURSO

Google entra oficialmente para a .NET Foundation

Aí está algo que era inimaginável há pouco tempo… A Google entrou de forma oficial dentro da .NET Foundation.

Caso você não conheça, a .NET Foundation é o braço open source da Microsoft, responsável por gerenciar e suportar o .NET Framework dentro da comunidade. Ela foi criada desde o momento em que a Microsoft decidiu tornar todo o ecossistema .NET completamente gratuito e open source. Ela seria, fazendo um paralelo com outras plataformas, o equivalente à Apache Foundation ou à Eclipse Foundation.

Já que o Google decidiu se juntar à .NET Foundation, isso quer dizer que ele irá contribuir de maneira oficial e permanente com o desenvolvimento e evolução das tecnologias .NET. Já já teremos então códigos dos engenheiros da Google dentro dos repositórios .NET!

A cooperação Google e Microsoft já não é tão recente. O Angular2, por exemplo, foi escrito em TypeScript, que é um superset do JavaScript criado pela… Microsoft! Houve uma intensa interação entre os times da Google e da Microsoft no processo de criação do Angular2, interação essa que foi muito proveitosa segundo ambos os lados. Mas, a entrada da Google como membro oficial da .NET Foundation expande os horizontes para essa parceria.

Segundo a Google, a intenção de fazer parte da .NET Foundation é melhorar o suporte à aplicações .NET dentro de sua plataforma de computação em nuvem, a Google Cloud. Mas, será que mais coisas estão para surgir dessa parceria inusitada?

Microsoft entra para a Linux Foundation

Se a parceria anterior era inusitada, esta aqui era no mínimo completamente inimaginável anteriormente. Mas, aconteceu: a Microsoft entrou como membro oficial da Linux Foundation! Isso quer dizer que a Microsoft agora se compromete de maneira oficial a contribuir com o desenvolvimento e evolução dos sistemas baseados em Linux. E aí entram todas as distribuições que nós conhecemos ou não, como Ubuntu, Debian e por aí vai.

A Microsoft já adotava o tom de cooperação com sistemas baseados em Linux há algum tempo, cooperação esta que foi se intensificando com o lançamento de softwares para ambientes Linux. Porém, a entrada da Microsoft como membro oficial da Linux Foundation leva tudo a um patamar muito superior. E o melhor: a Linux Foundation já se manifestou de maneira completamente favorável e entusiasmada à entrada da Microsoft.

É cedo para afirmar o que pode acontecer com relação a este acontecimento. Mas, certamente o suporte ao .NET Framework dentro de ambientes não-Windows (suporte que já é muito bom na verdade) tende a melhorar de maneira exponencial. Há também uma grande tendência de começar a surgir soluções interoperáveis entre servidores baseados em Linux e servidores Windows, interoperabilidade essa que existe hoje em dia mas pode ser perfeitamente aperfeiçoada. Vamos aguardar…

Samsung passa a dar suporte oficial para o .NET Framework no Tizen

Outro ponto importantíssimo para o .NET Framework. A Microsoft anunciou uma parceria com a Samsung, o que irá permitir o desenvolvimento de aplicações .NET nativas para dispositivos baseados no Tizen!

O Tizen é um sistema operacional desenvolvido pela Samsung para smartphones, wearable devices e smart TVs. Se você, por exemplo, tem uma smart TV Samsung, a chance de ela estar rodando o Tizen internamente é bem grande.

Você pode estar pensando que o Tizen não é um sistema operacional lá muito famoso e que o impacto disso não é tão grande. Mas, nos permita discordar disso, rs. As smart TVs, por exemplo, estão se tornando cada vez mais populares. A Samsung é uma das líderes de mercado neste segmento. Isso é uma possibilidade e tanto para desenvolvedores .NET começarem a expandir os horizontes de suas aplicações com o mínimo de esforço de reescrita de código. Há também o fato de que é uma oportunidade muito legal para que melhorias no suporte do .NET Framework a dispositivos “menores” possa ser melhorado com base na experiência da implantação de aplicações dentro do Tizen. E ainda há outro ponto: se a Samsung conseguiu dar este suporte, por que outras plataformas mobile futuramente não podem dar suporte ao desenvolvimento .NET nativo? 😉

Se quiser saber mais sobre o anúncio oficial do time do Tizen com relação ao suporte ao .NET, é só clicar aqui

SQL Server para Linux

Pois é, agora podemos rodar o SQL Server no Linux!

Isso não é bem uma novidade… Faz algum tempo que a Microsoft já tinha comentado sobre essa possibilidade, tendo inclusive disponibilizado uma versão do SQL Server para Linux em um beta muito restrito. Porém, agora a versão do SQL Server para Linux (chamado por hora de SQL Server vNext) é pública e qualquer um pode experimentá-la. Ela está aqui.

Para que você fique mais empolgado, o SQL Server agora também é oficialmente suportado pelo Docker! Inclusive, já há imagens oficiais disponíveis no Docker Hub. É só baixar as imagens e começar a se divertir! o/

SQL Server - Desenvolvedor
Curso de SQL Server - Desenvolvedor
CONHEÇA O CURSO

Visual Studio for Mac

Outra novidade que era inimaginável há pouquíssimo tempo atrás… Agora a Microsoft disponibiliza uma versão do Visual Studio para… Mac! E sim, estamos falando de Visual Studio mesmo, aquele igualzinho ao do Windows, e não do Visual Studio Code. Agora será possível ter a experiência do Visual Studio for Windows dentro do MacOS de maneira nativa. Você pode obter o Visual Studio for Mac aqui.

Nós instalamos o Visual Studio for Mac e também testamos alguns de seus recursos. Confira nas imagens abaixo:

Assim que você baixa e monta o arquivo DMG, você cai nesta tela. Basta dar um duplo clique na seta gigante que o processo de instalação será iniciado.

Você receberá o tradicional aviso do MacOS sobre a origem do instalador. Não se preocupe, pode confiar e clicar no “Abrir” ou “Open”.

Como não poderia faltar, os tradicionais termos de licença, haha. Marque o checkbox para afirmar que você concorda com os termos de licença para continuar com o processo de instalação.

Nesta página, você poderá escolher os componentes adicionais a serem instalados junto com o Visual Studio. Perceba que, por estes componentes adicionais, estamos na verdade falando de um único framework: Xamarin! Isso mostra que a Microsoft está cada vez mais absorvendo e integrando o Xamarin (que foi recentemente adquirido pela Microsoft) como um integrante nativo do .NET Framework.

Aqui você pode definir o local de instalação padrão do Visual Studio. Se quiser alterá-lo, basta clicar no botão “+” (sim, o ícone deste botão não ficou muito legal, rs).

Logo depois é apresentado um pequeno review dos componentes a serem instalados.

E agora é esperar pacientemente a instalação. Se você marcou os componentes do Xamarin anteriormente, a instalação levará um tempinho bom. Isso ocorre porque o instalador irá baixar todos os componentes necessários para o desenvolvimento de aplicações Android e iOS, o que inclui todos os SDKs necessários.

Quando a instalação for concluída, você verá a tela abaixo:

Agora é hora de abrir o Visual Studio!

Muito igual ao do Windows, não? Haha

O Visual Studio for Mac na verdade traz um misto da interface para o Windows com a interface de ferramentas de desenvolvimento tradicionais para o MacOS, como o XCode. A intenção da Microsoft foi suavizar a curva de aprendizado da IDE tanto para desenvolvedores acostumados a desenvolver aplicações dentro da plataforma MacOS com o XCode como para desenvolvedores acostumados com o Visual Studio para Windows.

E já dá até para criar uma série de projetos!

Agora, não se esqueça de que esta é a primeira versão, além de ser um preview ainda. O Visual Studio for Mac ainda tem vários bugs, além de não suportar completamente todas as plataformas da maneira como você pode estar esperando (um exemplo é o desenvolvimento de aplicações ASP.NET Core: nesta versão, você ainda não vai ter a experiência igual a que você tem no Visual Studio para Windows, muito pelo contrário, haha). Mas só a possibilidade de podermos desenvolver aplicações multiplataforma nativas com o .NET Core utilizando IDEs também interoperáveis é fantástico! Ah, provavelmente já já deve ser lançada uma versão para Linux também! 😉

Outro ponto importante: não pense que agora o Visual Studio Code será inutilizado dentro do Mac. Eles são ferramentas diferentes. O Visual Studio Code é um editor de código, enquanto o Visual Studio for Mac é uma IDE propriamente dita. Ambos possuem suas respectivas utilidades. Há ainda o fato de o Visual Studio for Mac ainda não suportar legal o desenvolvimento de aplicações ASP.NET Core, sendo melhor desenvolvê-las no Visual Studio Code junto com o grupo DotNET CLI + Yeoman + Gulp + Bower ainda. Isso também quer dizer que, se você fez nosso curso de Introdução ao ASP.NET Core, você não perdeu o que foi aprendido, muito pelo contrário! o/

E agora!?

Agora só nos resta, como desenvolvedores, aproveitar todos os benefícios que estas novidades nos trará. E não são poucos os benefícios, heim? Rs

A Microsoft já suportava o desenvolvimento multiplataforma com o .NET Framework, mas, a tendência é que o framework agora seja cada vez mais refinado com estas novas parcerias. Há também a forte tendência de que o framework evolua cada vez mais para o campo dos dispositivos mobile, smart devices e wearable devices com a parceria com a Samsung e com a Google, o que certamente ampliará mais ainda as possibilidades para desenvolvedores .NET. A entrada na Linux Foundation certamente ajudará a Microsoft a construir um .NET Framework cada vez mais multiplataforma, além de fomentar o surgimento de aplicações e soluções Windows que se encaixam perfeitamente com soluções Linux, e vice-versa.

O futuro para os desenvolvedores .NET parece excelente, não? =)

(Ah, se você estiver curioso para ver como já é possível desenvolver aplicações .NET de maneira nativa em ambientes Linux e MacOS, você pode dar uma olhadinha no nosso curso de Introdução ao ASP.NET Core. E fique ligado: já já estaremos lançando o nosso curso de Docker! o/).

C# (C Sharp) - Introdução ao ASP.NET Core
Curso de C# (C Sharp) - Introdução ao ASP.NET Core
CONHEÇA O CURSO

Os caminhos das certificações Microsoft (parte 1)

Olá pessoal, tudo certinho?

Muitos alunos entram em contato conosco com dúvidas relacionadas à certificação. As dúvidas mais comuns são com relação a qual prova realizar, como é a prova e também quais as possíveis vantagens que um profissional certificado pode obter.

Neste primeiro de uma série de posts sobre certificações que faremos, vamos abordar estes aspectos sobre um dos grandes players neste segmento: a Microsoft.

C# (C Sharp) - Introdução ao ASP.NET Core
Curso de C# (C Sharp) - Introdução ao ASP.NET Core
CONHEÇA O CURSO

Áreas de conhecimento

A Microsoft divide as suas certificações em grandes áreas de conhecimento. Atualmente, as áreas existentes são:

  • Servers: área de conhecimento focada na parte de infraestrutura da Microsoft, contemplando Windows Server, SharePoint e até mesmo Azure;
  • Desktop: área de conhecimento focada em dispositivos Windows e mobilidade;
  • Applications: área de conhecimento focada em aplicações como Office, Office 365 e Dynamics CRM;
  • Database: área de conhecimento focada em bancos de dados e Business Intelligence com o SQL Server;
  • Developer: área de conhecimento voltada para desenvolvimento, abordando o .NET, Visual Studio e ferramentas de CI (Continuous Integration).

Neste post, levaremos mais em consideração a área Developer.

MCP? MTA? O que são essas siglas?

Antes de qualquer coisa, precisamos entender melhor algumas siglas que são famosas para certificados Microsoft. Nós temos duas siglas basicamente: MTA e MCP. É importante entendermos o significado de cada uma destas siglas para que possamos escolher até mesmo as provas que iremos prestar.

MTA é uma sigla para Microsoft Technology Associate. Este é um nível mais “iniciante” dentro da hierarquia das certificações Microsoft, sendo recomendado mais para estudantes e pessoas que estão em sua primeira experiência como profissionais de TI.

MCP é uma sigla para Microsoft Certified Professional. Essa já é uma certificação voltada para profissionais com experiência na respectiva área de conhecimento, além de ser mais reconhecida pelo mercado de trabalho.

Nada impede um estudante de uma faculdade fazer as provas voltadas ao programa dos MCPs, assim como nada impede um profissional que já tenha experiência de participar das provas relativas ao programa dos MTAs. Porém, são situações que não são muito comuns e devem ser evitadas.

Se um estudante de tecnologia fizer uma prova voltada para MCPs, ele poderá encontrar mais dificuldades que o esperado por ainda não ter uma bagagem de experiência que lhe dê mais suporte para a execução da prova. Da mesma maneira que, se um profissional que já tenha experiência fizer uma prova do programa dos MTAs, isso talvez não agregue tanto ao seu currículo. Portanto, aqui cabe uma auto-avaliação: se você julga que já tem uma experiência de mercado legal, caia de cara no programa dos MCPs.

Caso você não tenha tanta experiência ou ainda esteja em seu curso de graduação, considere fortemente realizar primeiramente as provas do programa para MTAs.

Certificações da área de conhecimento Developer

Vamos começar falando das certificações da área Developer, voltada para desenvolvedores de software.

Programa MTA (Microsoft Technology Associate)

No caso do programa para MTAs, surge a possibilidade de se realizar 3 provas de certificação:

  • Software Development Fundamentals (98-361): é a prova ideal para quem trabalha ou quer trabalhar com desenvolvimento de software, além de desejar seguir o programa MTA. Esta prova aborda questões básicas de desenvolvimento de software, como estruturas de decisão e de repetição e utilização de variáveis. Também são abordados o paradigma orientado a objetos, conceitos básicos de HTML, CSS e JavaScript e ainda conceitos de bancos de dados. Como pode ver, é de fato uma prova bem abrangente;

  • HTML 5 App Development Fundamentals (98-375): é uma prova específica para as principais tecnologias web (HTML 5, CSS 3 e JavaScript). Ela aborda conceitos básicos como utilização dos recursos do HTML 5 (canvas, tags específicas, semântica), utilização dos recursos do CSS 3 (CSSON, conceitos de layout, transições e transformações) e utilização de recursos do JavaScript (DOM, manipulação do DOM, jQuery, geolocalização, web sockets e até mesmo armazenamento com cache e local storage);

  • Software Testing Fundamentals (98-379): é uma prova específica para a área de teste de software. Essa prova está atualmente indisponível.

Veja que as provas do programa MTA, mesmo sendo em tese introdutórias, são muito abrangentes e extensas. Portanto, não se deixe enganar se for fazer uma prova do programa MTA! 😉

Para você ter o título de MTA, você não precisa realizar necessariamente as duas provas. A partir do momento que você conclui qualquer uma delas, você já passa a ser considerado um profissional MTA pela Microsoft. Porém, você ganha o título de MTA atrelado ao conteúdo da prova. Por exemplo, se você fizer o exame 98-361, você vira um profissional certificado Microsoft MTA: Software Development Fundamentals.

Caminhos - Microsoft MTA

Programa MCP (Microsoft Certified Professional)

O programa MCP já é um pouquinho mais complexo. Ele é dividido em duas vertentes: MCSA (Microsoft Certified Solutions Associate) e MCSD (Microsoft Certified Solutions Developer), sendo que a certificação MCSA está um nível abaixo da MCSD.

Para ambas as vertentes, você precisará completar um grupo de provas pré-determinado para que consiga obter o título correspondente. Agora, um ponto interessante: apesar de existirem os grupos de provas para que se consiga obter um determinado título, você não precisa realizar as provas em uma ordem pré-determinada. Para a Microsoft, a ordem em que você realizará as provas não é um fator importante, embora alguns grupos de provas sugiram uma sequência mais lógica.

Existe um outro ponto importante: a partir do momento em que você é aprovado na primeira prova do programa MCP, você já passa a ser reconhecido como um profissional MCP pela Microsoft. Agora, se quiser atingir os níveis acima do MCP, você precisará cumprir as provas previstas nos programas MCSA e MCSD.

O nível MCSA para desenvolvedores ainda pode se dividir em duas sub-trilhas: Web Applications e Universal Windows Platform. A primeira sub-trilha é focada em tecnologias Web, principalmente HTML5, CSS3, JavaScript e ASP.NET. Já a segunda sub-trilha é focada na plataforma universal do Windows e no desenvolvimento de aplicativos desktop com HTML5, CSS3 e JavaScript.

No caso da sub-trilha MCSA Web Applications, você precisará cumprir duas provas:

  • Programming in HTML5 with JavaScript and CSS3 (70-480): prova focada exclusivamente na base para qualquer aplicação web moderna: o HTML 5, o CSS 3 e o JavaScript. Os assuntos abordados na prova são muito similares à prova 98-375, porém, de uma maneira muito mais aprofundada tecnicamente falando;

  • Developing ASP.NET MVC Web Applications (70-486): é a prova da Microsoft para abordar o ASP.NET MVC 5. Apesar de o nome não deixar claro, uma dica: cai muita coisa sobre o Azure nesta prova também.

No caso da sub-trilha MCSA Universal Windows Platform, você também precisa cumprir duas provas:

  • Programming in C# (70-483): prova que aborda aspectos técnicos do C#. Nesta prova já caem conteúdos um pouco mais enroscados, como threading, tasks, reflection, aspectos avançados de orientação a objetos no C#, o namespace System.IO e até mesmo o LINQ;

  • Developing Mobile Apps (70-357): é uma prova recém-lançada pela Microsoft. Apesar do nome, ela na verdade foca na nova plataforma de desenvolvimento universal da Microsoft (Universal Windows Platform – UWP), o que engloba o próprio Windows, Windows Phone, Xbox e Surface.

Após você concluir alguma das subtrilhas MCSA, você estará apto a alcançar o título de MCSD.

Com relação ao MCSD, novamente nós temos mais seis sub-trilhas:

  • MCSD App Builder: é um título dado pela Microsoft quando esta reconhece que o profissional é capaz de criar aplicações web e/ou mobiles utilizando tecnologias modernas. Para atingir este nível, você precisará fazer ao menos uma das provas listadas abaixo. Ainda há um ponto importante a se ressaltar: você só pode obter o título de MCSD App Builder após obter o título de MCSA.
  1. Developing Microsoft Azure Solutions (70-532);
  2. Developing Microsoft Azure and Web Services (70-487);
  3. Developing Microsoft SharePoint Server 2013 Core Solutions (70-488);
  4. Developing Microsoft SharePoint Server 2013 Advanced Solutions (70-489);
  5. Universal Windows Platform – App Architecture and UX/UI (70-354);
  6. Universal Windows Platform – App Data, Services, and Coding Patterns (70-355);
  7. Administering Microsoft Visual Studio Team Foundation Server (70-496);
  8. Software Testing with Visual Studio (70-497);
  9. Delivering Continuous Value with Visual Studio Application Lifecycle Management (70-498).
  • MCSD Web Applications: o desenvolvedor que atinge esta certificação tem atestado pela Microsoft de que é capaz de desenvolver aplicações web com tecnologias modernas baseando-se no ASP.NET e no Azure. Esta é, naturalmente, a extensão da certificação MCSA Web Applications. Considerando que você já tenha o nível MCSA Web Applications, a única prova que você precisará prestar neste caso é a Developing Microsoft Azure and Web Services (70-487). Agora, um ponto importante: você não precisa necessariamente ter o nível MCSA para atingir este nível MCSD, como ocorre com a certificação MCSD App Builder. Isso quer dizer que você, além da prova 70-487, pode realizar também as provas Programming in HTML 5 with JavaScript and CSS 3 (70-480) e Developing ASP.NET MVC Web Applications (70-486). Se você passar por todas elas, você já é considerado um MCSD Web Applications e também um MCSA Web Applications, já que o MCSA exige as provas 70-480 e 70-486; provas também exigidas pelo MCSD com o acréscimo da prova 70-487. Existe mais um ponto legal para notarmos: quando você consegue o título de MCSD Web Applications, você também se torna automaticamente um MCSD App Builder. Isso ocorre porque, para você se tornar um MCSD Web Applications, você precisa fazer a prova 70-487, prova esta que conta também na lista de provas necessárias para a certificação MCSD App Builder;

  • MCSD SharePoint Applications: quando o desenvolvedor atinge esta certificação, a Microsoft atesta que o desenvolvedor é capaz de desenvolver aplicações e customizações dentro do SharePoint. Para você atingir esta certificação, você precisará cumprir as seguintes provas:

  1. Programming in HTML5 with JavaScript and CSS3 (70-480);
  2. Developing ASP.NET MVC Web Applications (70-486);
  3. Developing Microsoft SharePoint Server 2013 Core Solutions (70-488);
  4. Developing Microsoft SharePoint Server 2013 Advanced Solutions (70-489).
  • MCSD Application Lifecycle Management: esta linha de certificações é voltada para profissionais que lidam com o gerenciamento do ciclo de vida de aplicações. Esta trilha de certificações contempla as seguintes provas:
  1. Administering Microsoft Visual Studio Team Foundation Server (70-496);
  2. Software Testing with Visual Studio (70-497);
  3. Delivering Continuous Value with Visual Studio Application Lifecycle Management (70-498).
  • MCSD Azure Solutions Architect: linha de provas destinada a profissionais que utilizam a plataforma de nuvem Azure. Ela contempla as seguintes provas:
  1. Developing Microsoft Azure Solutions (70-532);
  2. Implementing Microsoft Azure Infrastructure Solutions (70-533);
  3. Architecting Microsoft Azure Solutions (70-534);
  • MCSD Universal Windows Platform: Este conjunto de provas visa atestar as habilidades do desenvolvedor com relação aos Windows Universal Apps. Esta trilha é composta pelas seguintes provas:
  1. Programming in C# (70-483);
  2. Universal Windows Platform – App Architecture and UX/UI (70-354);
  3. Universal Windows Platform – App Data, Services, and Coding Patterns (70-355).

O programa para MCPs com suas trilhas pode ser representado pela ilustração abaixo:

Caminhos - Microsoft MCP

Como você pode perceber, as trilhas contidas dentro do programa do MCP são um pouco mais complicadas de serem compreendidas no começo, já que existem muitas sub-trilhas. Porém, o grande ponto que você deve levar em conta ao escolher seguir uma determinada trilha é: “em que área quero me certificar?”. Quando você tiver de maneira clara e fixa este ponto em sua mente, a escolha de qual trilha ficará muito mais fácil. Por exemplo: se você quer se especializar no Azure, faz muito mais sentido você conseguir o título de MCP começando pela prova 70-532 e logo depois fazer as provas 70-533 e 70-534.

Por hora, é isso, rs. Temos muita coisa ainda para falar sobre as trilhas de certificações Microsoft. Nos próximos posts desta série, falaremos sobre a trilha da área de conhecimento Database. Também falaremos sobre preços para realização das provas, procedimentos de marcação para a realização das provas e também sobre como funcionam as provas de certificação da Microsoft. Se você tiver quaisquer dúvidas, não deixe de comentar aqui em baixo deste artigo! 😉

Até a próxima! o/

C# (C Sharp) - Introdução ao ASP.NET Core
Curso de C# (C Sharp) - Introdução ao ASP.NET Core
CONHEÇA O CURSO