caminho para uma carreira microsoft
DESCRIPTION
Informações sobre o conteúdo de uma carreira Microsoft .NET. Dicas e recursos.TRANSCRIPT
UM CAMINHO PARA A CARREIRA MICROSOFT
DESCUBRA. VOCÊ VAI GOSTAR.
RON BANDEIRA, VISUAL SOLUTIONS (VSOL) PROGRAMADOR CHEFE E PROPRIETÁRIO
• Mora nos EUA a 29 anos, mas mudou-se para essa região a uns 5 anos atrás.
• Pessoalmente tem 15 anos que trabalha como Software Developer nos EUA.
• VSol (USA), atua a 12 anos no mercado Americano. Está baseada na região de Washington DC.
• Abriu a VSol (Brasil) esse ano aqui em Tubarão.
• Trabalha principalmente com... surpresa! Tecnologias ligadas a Microsoft .NET.
OBJETIVO
A QUALIDADE MELHOROU E A PRATICIDADE DA PLATAFORMA TAMBÉM.
Convido vocês a conhecerem um pouco mais do que a Microsoft tem preparado para seus developers.Acredito ser um ecossistema produtivo, rápido e muito divertido para desenvolvimento.
TERMO
Virtual Machine – um programa que permite aplicativos .NET e Java a rodarem em diferentes sistemas operacionais.
O Que é Java virtual machine? JRE, Java Runtime Enviroment.
O QUE É .NET VIRTUAL MACHINE?CLR, Common Language Runtime.
JAVA VS .NET, POR QUE .NET?
Termos
• Specialty stores – loja altamente especializada onde se encontra variedades do mesmo tipo de produto.
• One-stop-shop – uma loja generalizada onde encontra-se um pouco de tudo. Como se tem no postos de gasolina ou o Walmart.
• stack - um conjunto de libraries (DLL) que podem formar uma Framework: .NET, Java, etc.
JAVA VS .NET, POR QUE .NET? • Carro de Formula 1 bem calibrado
vs. um Porsche feito em fabrica.
• A Oracle é proprietária também.
• Lenta para alcançar? Java 8. Expressões Lambda, Pofiles Compactos, etc.
• Se usar servidores Windows lhe incomoda, esse caminho não é para você. Não vou fazer um argumento para usar Mono + Apache no Unix, mesmo que eu possa.
.NET REALMENTE COMO OPEN SOURCE? NÃO EXATAMENTE. MAIS ABERTA? SIM!
Termos
• Open Standard - são padrões disponíveis para livre acesso e implementação, que independem de royalties (patentes) e outras taxas, e sem discriminação de uso.
• Dependency Injection - Injeção de dependência, podemos configurar como novas instancias de objetos são compartilhadas por um programa. Conceito esta ligado a Inversion of Control (IoC). Muito confundido com Service Locator Pattern. Exemplos: Autofac, TinyIoC.
• Refactor – aplicações de “best practices” que promovem reuso de código, separação de conceitos (SoC) que melhoram mas não necessariamente quebra código dependente.
• Decoupling – baixo nível de acoplamento entre classes.
.NET REALMENTE COMO OPEN SOURCE? NÃO EXATAMENTE. MAIS ABERTA? SIM!
• Na verdade os fundamentos da tecnologia sempre foram open source. Por isso tivemos o Projeto Mono (UNIX and Linux).
• Em dezembro de 2000, Microsoft publicou o Common Language Infrastructure do .NET como um open standard.
.NET REALMENTE COMO OPEN SOURCE? NÃO EXATAMENTE. MAIS ABERTA? SIM!
PROJETOS DA NOVA FUNDAÇÃO .NET
VNEXT – “OPENNESS” EM PRATICA
• ASP.NET vNext
• As partes estão mais soltas: MVC, Web API, WebForms, SignalR, Katana, Desktop. Podemos remover os pedaços que não estaremos usando do stack.
• Roslyn
• Roslyn compila dinamicamente seu código e você trabalha nele.
• O compilador pode ser mudado por Dependency Injection.
• Ferramentas de refactoring usarão o NuGet para instalar Packages individuais com novas regras de refactoring.
• Tudo vai virar uma Nuget package!
VNEXT – “OPENNESS” EM PRATICA
• Apache Cordova para Mobile
ASP.NET VNEXT - O QUE ESTA VINDO AI!• O próximo release do ASP.NET (vNext)
roda no OS X e Linux.
• Integrando plenamente o Mono e Linux nos seus ambientes de build e matrix de testes.
• Estão ativamente trabalhando com a comunidade para fazer do Mono uma plataforma topo de linha para hosting ASP.NET.
• MVC 6
• OWIN – A nova definição de standards open source para criação de módulos para a Web (um interface).
• Katana
https://github.com/aspnet
CARACTERÍSTICAS DA PLATAFORMA E FERRAMENTAS
Termos
• Generics – List<Students> students; o type que vai ser usado é passado como um parâmetro para classes ou métodos.
• Interface Programming – programar contra um interface e não a implementação concreta dele.
• Addon – programa de auxilio funcional adicionado ao Visual Studio…
CARACTERÍSTICAS DA PLATAFORMA E FERRAMENTAS
• Generics + Interface Programming + Dependency Injection = Hot Pattern!
• ReSharper é um addon que lhe dar dicas de best practices e é uma grande ajuda para refactor seu código.
• TypeMock Isolator for true Unit Tests
• A Multi-language Runtime...
• Diversidade de línguas com uma formula mais simples de aplica-las. .NET Framework.
CARACTERÍSTICAS DA PLATAFORMA E FERRAMENTAS - 1
Termos
• Generics –
• Interface Programming –
• Dependency Injection –
• Refactor –
• Addon – No Visual Studio…
Common CLI Languages A#: CLI implementation of Ada. Boo: A statically typed CLI language, inspired by Python. C#: Most widely used CLI language, bearing similarities to Java, Object Pascal (
Delphi) and C++. Implementations provided by .NET Framework,Portable.NET and Mono.
C++/CLI: A version of C++ including extensions for using Common Language Runtime (CLR) objects. Implementation provided only by .NET Framework. Can produce either CLI-based managed code or mixed-mode code that mixes managed and native code. The compiler is provided by Microsoft.
Cobra: A CLI language with static and dynamic typing, design by contract and built-in unit testing.
Component Pascal: A CLI-compliant Oberon dialect. It is a strongly typed language in the heritage of Pascal and Modula-2 but with powerful object-oriented extensions.
Eiffel: Purely object-oriented language, focused on software quality, includes integrated design by contract and multiple inheritance. CLI compliant.
F#: A multi-paradigm CLI language supporting functional programming andimperative object-oriented programming disciplines. Variant of ML and is largely compatible with OCaml. The compiler is provided by Microsoft. The implementation provided by Microsoft officially targets both .NET and Mono.
IronPython: An open-source CLI implementation of Python, built on the Dynamic Language Runtime (DLR).
IronRuby: An open-source CLI implementation of Ruby, built on the Dynamic Language Runtime (DLR).
IronLisp: A CLI implementation of Lisp. Deprecated in favor of IronScheme. J#: A CLI-compliant implementation of Java. The compiler is provided by
Microsoft. J# has been discontinued. The last version shipped with Visual Studio 2005, and will be supported until 2015.
JScript .NET: A CLI implementation of ECMAScript version 3, compatible withJScript. Contains extensions for static typing. Deprecated in favor of Managed JScript.
L#: A CLI implementation of Lisp. Managed Extensions for C++: A version of C++ targeting the Common
Language Runtime (CLR). Deprecated in favor of C++/CLI. Managed JScript: A CLI implementation of JScript built on the Dynamic
Language Runtime (DLR). Conforms to ECMAScript version 3. Nemerle: A multi-paradigm language similar to C#, OCaml and Lisp. Oxygene: An Object Pascal-based CLI language. P#: A CLI implementation of Prolog. Phalanger: An implementation of PHP with extensions for ASP.NET Phrogram: A custom CLI language for beginners and intermediate users
produced by The Phrogram Company PowerBuilder: Can target CLI since version 11.1. Synergy DBL .NET: an object oriented CLI compliant implementation of DBL
and DIBOL produced by Synergex.[1] Team Developer: SQLWindows Application Language (SAL) since Team
Developer 6.0. Visual Basic .NET (VB.NET): A redesigned dialect of Visual Basic.
Implementations provided by .NET Framework and Mono. Windows PowerShell: An object-oriented command-line shell. PowerShell can
dynamically load .NET assemblies that were written in any CLI language. PowerShell itself uses a unique scripting syntax and uses curly-braces, similar to other C-based languages.
Other CLI languages Fantom - a language compiling to .NET and to the JVM F* - A dependently typed language based on F#. GrGen.NET - a CLI language for graph rewriting IronScheme - a R6RS-compliant Scheme implementation built on the DLR Lisp# Un-Armed Bear Common Lisp (IKVM.NET Portierung von Java)[2] Niecza - A CLI implementation of Perl 6.
DEVOPS E ALM
• DevOps – build uma vez e deploy em todos lugares
• DevOps Deployment Workbench Express
• http://vsardevops.codeplex.com/
• Application Lifecycle Management (ALM) - Gerenciamento de Ciclo de Vida de Aplicativos
TEAM FOUNDATION SERVER (TFS)O SYSTEM POR TRÁS DO MICROSOFT ALM.
• Gerencia
• Desenvolve
• Build
• Deployment ou Instalação
• Teste
NUGET
Termos
• Packages – modules que é um arquivo zip que contem outros arquivos (DLLs, configs, debug symbols, etc) que servem como dependência para seu aplicativo. Exemplo: log4net, jQuery, Json.NET, Bootstrap.
• Feed – um repositório local ou remoto que serve como fonte de armazenamento e distribuição das Packages.
NUGET
• Ferramenta de gerenciamento de dependências pela distribuição de Packages.
• Semelhante ao Maven ou Gradle para projetos Java.
• Public Feed – NuGet Gallery
• Internal Feed – instale-o na sua intranet
• Plena integração com o Visual Studio
A REVOLUÇÃO XAMARIN
Termos
UI – User Interface, interface de usuário, é o espaço onde a interação entre humanos e máquinas ocorre.
Native Code – código compilado para a língua específica da plataforma que ira executar o aplicativo.
Back-end Code – no enterprise, representa a camada da arquitetura que vem entre o banco de dados e a camada de apresentação (Presentation Layer). Abstração da lógica de negocio (business logic).
WYSIWYG – What You See Is What You Get.
XAML - Extensible Application Markup Language, (pronunciada "zammel"). Uma especificação XML da Microsoft para criar aplicativos. Usada em WYSIWYG designers e com o padrão MVVM.
A REVOLUÇÃO XAMARIN
• iOS + Android + Windows Phone in .NET com uma base de código.
• Xamarin Studio ou completa integração com o Visual Studio
A REVOLUÇÃO XAMARIN
• Novo Xamarin.Forms permite ainda mais re-uso de código. Agora na camada do UI.
• Só com C# ou C# + XAML (WYSIWYG).
A REVOLUÇÃO XAMARIN
• O seu código vai mais longe.
ESTUDO DE CASO (CASE STUDY)
• Recebe 95 milhões de page views por mês
• Processa 800 HTTP requests por segundo
• Faz tudo isso com 12 servidores Windows Web + 2 servidores MS SQL Server
HABILIDADES DE SOFTWARE DEVELOPER QUE AFETAM OS SALÁRIOS
1. http://www.payscale.com/research/BR/Job=Systems_Analyst/Salary2. http://www.payscale.com/research/BR/Job=Software_Engineer/Salary3. http://www.payscale.com/research/BR/Job=Sr._Software_Engineer_%2f_Developer_
%2f_Programmer/Salary
Systems Analyst Salary (Brazil)Software Engineer Salary (Brazil)Sr. Software Engineer / Developer / Programmer Salary (Brazil)
CERTIFICAÇÃO EM .NET?
• Fazer ou não? Você terá que saber todos os tópicos da certificação para poder atuar como um software developer. Certificação facilita sua carreira especialmente no início.
• Além de ficar bonito no currículo, para que serve uma certificação? Certificação vai lhe fazer um excelente programador? Eu creio que não. Mas lhe revelará a caixa de ferramentas e de lá terá as referências necessárias para executar o seu trabalho melhor e assim chegar a seus objetivos profissionais.
CERTIFICAÇÃO EM .NET?
• MCSD: Web Applications - Solutions Developer
• 3 exames: Programação em C#, MVC e Web Services
• MTA (Microsoft Technology Associate)
• 1 exame: .NET Fundamentals, Software Development Fundamentals or Web Development Fundamentals, HTML5 App Development Fundamentals.
RECURSOS PARA .NET SOFTWARE DEVELOPERS
• Blogs
• Channel 9
• http://channel9.msdn.com/
• Scott Hanselman
• http://www.hanselman.com/blog/
• Microsoft Blogs
• http://www.asp.net/community/microsoft-blogs
• Recursos de Aprendizagem
• Visual Studio Professional, Pluralsight 90 dias
• https://www.dreamspark.com/Student/Software-Catalog.aspx
• Pluralsight - A maior biblioteca de treinamento criativo e tecnológico do mundo
• http://www.pluralsight.com
• Ferramentas
• Visual Studio Express + Team Foundation Online
• http://www.visualstudio.com/
• Resharper
• http://www.jetbrains.com/resharper
FONTES DE INFORMAÇÕES
• What is NuGet? (for Java Developers)
• http://blog.sonatype.com/2012/02/what-is-nuget-for-java-developers/#.U-NxSvldV8E
• .NET Foundation
• http://www.dotnetfoundation.org/news.aspx
• Big improvements coming to the .NET framework with ASP.NET vNext
• http://www.itworld.com/development/424254/big-improvements-coming-net-framework-aspnet-vnext
• Java virtual machine
• http://en.wikipedia.org/wiki/Java_virtual_machine
• Common Language Runtime
• http://en.wikipedia.org/wiki/Common_Language_Runtime
• Your First Cup
• http://docs.oracle.com/javaee/6/firstcup/doc/gkhoy.html
FONTES DE INFORMAÇÕES • Why & When Use Java 8 Compact Profiles?
• http://vitalflux.com/why-when-use-java-8-compact-profiles/
• Java or .Net - Which is better for future & career?
• http://www.crazyengineers.com/threads/java-or-net-which-is-better-for-future-career.73827/
• Java version history
• http://en.wikipedia.org/wiki/Java_version_history
• Brick Wars: Java vs .Net
• http://ammonsonline.com/brick-wars-java-vs-net/
• Visual Studio tooling support for Apache Cordova
• http://msdn.microsoft.com/en-us/vstudio/dn722381
• An Overview of Project Katana
• http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
VISUAL SOLUTIONS (VSOL)
http://vsol.usRon Bandeira
Programador Chefe