Microsoft Azure is an open, flexible, enterprise-grade cloud computing platform. Ask us anything about cloud computing!
1st May 2018, 6:00 pm
This AMA is over!Thank the host
Message from the host 💬
Thanks everyone for participating in today's AMA! There were a lot of terrific questions and I hope you found value in our replies. It is an exciting time to be a developer and the cloud is an amazing frontier to explore. On behalf of our team, I want to share we are all passionate about empowering you to have the best possible experience with the cloud. We are all open to answer questions, receive feedback and suggestions and help out where and when we can. Thank you for your time and don't hesitate to reach out as you have questions in the future.
Azure Advocates on Twitter: @azureAdvocates
Find a Cloud Developer Advocate near you: Advocates
Our pleasure! I wish I could share more about Blockchain but it's not my area of expertise. I am curious though (am I allowed to answer an AMA with a question of my own?) ... what is the need behind making Blockchain accessible to average developers? In other words, if I take any random developer at any company, what problem is it I put them on that requires they use Blockchain to solve it?
Yes, desktop development is very much alive. I see people working with desktop applications all of the time. However, I do believe ultimately what we call "mobile" will gain capabilities to replace what was traditionally "desktop" and what used to be the tower sitting under our desk will be replaced by compute power in the cloud. That used to seem so unrealistic but as WiFi and cellular network coverage evolves and spreads, I imagine we'll start to find our experiences are no longer about what platform or device but more about what is the back end service that drives it and which interface do we want to use to experience it. Personally I'm a fan of eventually sitting in a cafe wearing augmented reality glasses typing on air.
Everyone will have different reasons. I was at a crossroads in my career a few years back and put together a personal mission statement to help guide my path. I chose "Empowering developers to be their best." Microsoft's mission is to "empower every person and every organization on the planet to achieve more." That resonated with me and was a major reason I felt it would be the right choice. A few things come to mind about working with Microsoft:
- It's an organization devoted to giving and hosts events focused around employee's giving not just money, but time and expertise, to communities
- I believe Microsoft is innovating every day and is a place where you can literally ride the wave of new technology advancements
- The employees are caring, supportive, diverse, intelligent, and fun
- There are great benefits
- The teams I work with are all focused on collaborating to be productive, not competing to be active
The best part about working at Microsoft is that I literally get paid to pursue my personal mission statement and do what I've loved my entire life which is write code. The worse part is probably having to fill out expense reports, but those are a necessity wherever you go.
The past year at Microsoft has been an interesting experience to say the least. For most of my career I've been a consume of their tools and services. Now I get to see the process behind it all and meet the folks that are driving that innovation. That alone for me has been really excited to see.
I'm also very blessed to be a part of the team I'm on right now. It's a huge motivator for me to work with people that are really sharp, genuinely care about helping developers build great products, and are all around just great people to be around.
Just like any other company though, Microsoft isn't without its faults. The company is huge, there are tons of teams. You'll see that everyone doesn't always have the same goals or priorities, so you have to be able to navigate those scenarios. On top of that, my team is primarily remote which comes with its own set of challenges.
I think we're in an interesting position today because had made huge changes; many of them before I joined. Trying to prove to folks that we are listening and we are trying to be better can be challenging. This particularly true when trying to combat the stigmas of the past.
Developers should consider working at Microsoft because the things that were mentioned above, and also because they are interested in solving a lot of interesting problems. Because it's such a large company, it's likely there's at least one problem that a developer would find and love solving here. It's also telling that a lot of the employees stay for many years here, 10-20+ years long. My favorite thing is the ability be to remote. While not every team is set up for it, it's nice to have a work environment that works for me, and done well to where I don't feel in a vacuum. My least favorite thing is filling out forms/surveys/reports, a necessary evil, it's probably a personal problem :)
In terms of an editor, I'm either in Visual Studio or VS Code. Sometimes I use Pycharm but not very often.
I use VS Code as much as possible. It's lightweight, fast, works on any platform, and supports all of the development paths I use from Angular/TypeScript to .NET Core/Docker. Although I carry a Microsoft Surface Book, you'd be surprised how many on the team use Mac for their primary development machine. I'll probably try it sometime, but I'm a fan of touch/using the pen and I like having two buttons. Obviously Docker itself is not a "Microsoft product" but one supported, nor is Angular as a framework. I'm also just as comfortable using Chrome as I am Edge. I spend quite a bit of time on a Linux command line and use languages like Go on occasion.
I use VS Code and have been even before joining Microsoft. Prior to that I used Atom and Sublime as editors.
My daily driver for a machine is a MacBook Pro (non-touch bar) and I write in .NET Core and node.js. I do also have a Surface Book Pro for when I need to get into some legacy code or want to look at the latest and greatest features of Visual Studio.
If I were to start a new project - VS Code and shape it into the editor you need it to be with all of the extensions that are there. Regardless of the language, you'll find something that will make the experience better.
Azure gives me everything I need from a cloud experience and global coverage. I really enjoy Cosmos DB and Azure Functions for backend development. However, using containers for API development and middle tier services, you can use any cloud that supports Docker Swarm or Kubernetes if you need that type of scale for your app.
I used Atom before Microsoft, but when working with .NET I use Visual Studio a lot - the tooling is perfect for me there. I was converted to VS Code when I joined Microsoft. I still use Atom for a few other things (I don't want to abandon my Add-on setup I worked so hard on!), but mostly personal projects. I primarily use a Surface Book (Work computer), MacBook Pro and a PC I built myself that runs Windows 10. I'll most likely start a personal project on my PC, and continue on my MacBook if I want to work on it somewhere else, like a coffee shop.
As a beginner developer I would know that Azure supports multiple programming languages (take a look at https://docs.microsoft.com/azure/?WT.mc_id=dotnetama-hashnode-jeliknes) including SDKs across the board. Obviously as someone on the .NET team, there is great .NET support as well. Visual Studio Code is free to get started with and contains lots of extensions that make it easy to integrate with Azure. It makes it very easy to deploy web apps. You also have access to an interactive web portal to explore features and functions but can drop to a command-line interface as you become more familiar and want to take advantage of more advanced scenarios.
Ah.. I think it's pretty easy for beginners and more experienced developers alike to get lost in the sea of things to know about. Azure itself is a huge collection of features and services that solve different types of problems.
As a beginner I think it's important that you understand the problem you're trying to solve first and what are the constraints you're working with. Then if the cloud is a good option for solving your problem, definitely take a look at Azure or reach out to one of us via social media.
If you're building web applications, Azure App Service is a great place to start for hosting your applications in the cloud https://docs.microsoft.com/en-us/azure/app-service/?WT.mc_id=dotnetama-hashnode-cephilli.
If you're interesting in containers, Azure Container instances is also another interesting option to explore for getting up and running quickly https://docs.microsoft.com/en-us/azure/container-instances/?WT.mc_id=dotnetama-hashnode-cephilli.
Specifically for Python and Django, we support running web apps using our App Service offering => https://docs.microsoft.com/en-us/azure/app-service/app-service-web-get-started-python?WT.mc_id=dotnetama-hashnode-cephilli.
Our machine learning studio supports using python https://docs.microsoft.com/en-us/azure/machine-learning/studio/execute-python-scripts?WT.mc_id=dotnetama-hashnode-cephilli.
Also, our Azure CLI is written using Python, which I think is pretty cool https://github.com/Azure/azure-cli
There is great support for Python. Checkout the Azure for Python Developers docs - https://docs.microsoft.com/python/azure/?view=azure-python&WT.mc_id=hasnode-twitter-shboyer
It's really easy to get subjective with an answer, because we are all biased based on what we work with. I'm passionate about many of the Azure services and feel they have a phenomenal developer experience, great documentation and samples and give me what I need to build solutions. Having said that, there are literally hundreds of services and I've built expertise in only a handful. I would break down the specific areas you want to address in the cloud and look at things like: how easy it is to set up? What is the projected cost? How much coverage do I need and is provided (i.e. is there geographic replication, automated backups, and do the service level agreements meet my needs). That can help with determining what the best fit is for you. Things I personally think make cloud development amazing: Azure Functions, Azure Logic Apps, Azure Event Grid, Azure Cosmos DB, Azure Web Apps and Azure for Containers whether it's Azure Container Instances, Azure Container Registry, and/or Azure Container Service for Kubernetes.
I think there's a lot of ways to answer this question. There's the "What do I need to become a developer" in general question and "How do I get started developing in .NET" question. I'm gonna attempt to quickly answer the latter (from my perspective of course).
- Figure out what type of application do you want to build. With .NET you can write Native Mobile apps for iOS or Android, web applications, desktop applications, videos, etc.
- Check out our docs at https://docs.microsoft.com/en-us/dotnet/?WT.mc_id=dotnetama-hashnode-cephilli
- Read code! This one is probably more generic across languages, but I always believe reading code is just as important as writing code. I regularly video Github to see what everyone else is up to.
- Get familiar with the tools. Visual Studio today is still the go to tool for most .NET developers. Find out everyone else is doing for debugging, app designs, etc
- Get involved in your local .NET community. There's nothing more valuable than getting community support.
A lot of the skills required are like any other platform or language (conditions, decision making, etc), but with .NET you have a few additional options that will require separate skills:
This is just a very short list of possibilities:
In my experience, as someone who works mostly with C# with ASP.NET the skills that came in handy for me were:
- Understanding generics
- How object oriented programming applies to .NET
- Making good use of implicit variables
- General understanding of the ASP.NET web page lifecycle
- How to work with data in a .NET application (preventing sql injection with parameters, when a stored procedure would be better than building the query or statement, how to map application objects to data)
It starts with submitting for a position. You can find available positions online at https://careers.microsoft.com - if you know someone on a team you are interested in you can always reach out for more background. Each team has different hiring practices but you will find a lot of employees are involved to look at everything from culture and personality to technology, desire, and goals. It's a multi-step process but fortunately at least for me it was thoroughly explained to me what to expect from the teams I interviewed with. If you don't succeed at first, don't give up! Many of us had multiple interviews before finding the right fit and joining.
My process started with finding a Tweet by one of the first Cloud Developer Advocate Lead and applying like @Jeremy Likness said. My profile matched the job position perfectly but I applied for other jobs before and this job actually interested me more than those I applied previously.
My best bet? Follow Microsoft-ie on Twitter, check the job listings and apply.
Lots of jobs require relocation but it all depends on the teams. Don't let that stop you from applying. Personally, I still live in Montreal, QC, Canada and there's no plan to relocate yet. 😁
In the .NET/Azure space you have a few options for implementing the CQRS pattern.
Specifically for Azure, I'd suggest taking a look at our Event Hub service https://docs.microsoft.com/en-us/azure/event-hubs/. This is somewhat similar to Kafka plus it's a hosted Azure service. It alows you to do capture, retention, and replay of event stream data.
It also supports AMQP 1.0, which means any AMQP 1.0 compliant library or client can leverage the service.
We have several documents that discuss the pattern and sample implementations.
This is also a personal favorite article that talks about its implementation serverless with Azure Cosmos DB: https://firstname.lastname@example.org/serverless-cqrs-in-azure-p1-e0f2c423f071
Hope those help you get started!
I have a prototype with Event Hubs for accepting Commands, Functions (one per Command) that apply the Commands to an Aggregate Root, then Events routed via Event Grid to Functions - one per Aggregate type, that processes any and all Events that might be raised by that specific Aggregate type.
At the moment, one Function per Aggregate type is the only way I can think of to work around cold starts leading to Functions per Event type processing Events out of order for Projections etc.
Lots of reading to do - cheers!
Very carefully? LOL. I'm not on the team that would be pushing a new feature, but as you see new features on board you can probably guess based on announcements. Features come in through a set of stages, typically starting with a private preview that allows a smaller group to weigh in and test and provide feedback, before going into public previews and finally general availability. In fact there's a few features in preview right now: https://azure.microsoft.com/services/preview/?WT.mc_id=dotnetama-hashnode-jeliknes and you can sign up to be a part of the process.
F# is a really interesting language. I actually just started to learn F# myself. We also lived streamed fSharpConf a few weeks ago https://channel9.msdn.com/Events/FSharp-Events/fsharpConf-2018?WT.mc_id=dotnetama-hashnode-cephilli.
You can definitely expect to see more content from us on those topics. Also, as we get more feedback from the community we'll know what everyone is interested in and can start tailoring content towards that.
There is a dedicated team with many passionate people behind it. I believe it was even the language behind QSharp used for authoring Quantum computing. I'm not sure how to define "enough love" but I know it's a popular language. What support do you feel is lacking? Microsoft was heavily involved with/supportive of the latest conference: http://fsharpconf.com/ and our employees are actively on the foundation.
@Jeremy Likness Traditionally F# templates in Visual Studio have been behind the C# templates, or in some cases, non existent. It's also only recently that F# documentation has been reorganised; previously it has felt like a community effort sponsored by Microsoft, rather than an officially supported language.
F# is certainly not promoted as an equal partner to C#. Although it has to be said, F# examples for Azure Functions are quite comprehensive - but there is no Visual Studio 2017 template for them, unlike C# ;-)
There's definitely an active user community around F#- it just seems that Microsoft are missing out on an opportunity to promote an alternative to say, Scala.
Programming is amazing when you realize the power it gives you to conceive of a solution and then by writing magic symbols, make it real. I would say never lose the passion of watching you program execute and celebrating, "I did it!" and never be afraid to tackle newer, more complex challenges. Too many programmers master a single language and platform and get stuck when the technology passes them by. If you have a passion for learning and focus on learning how to program, rather than just how to program "x language", you'll do great. It's like going up the down escalator: stand still and you fall behind, but keep adapting and you'll continue to achieve new levels.
Oh, wait, it's supposed to be just one thing. "What you do is like magic."
YOLO!!! I'm kidding.. maybe.
I've always told my students to find something they care about and try to create a solution around that. If you care about something you're more likely to stick with it. For example, maybe you like cars or sports or gardening. Try to creating small programs around those ideas. As you learn more about programming, trying adding more features and continue to challenge yourself to go further.
.NET is a widely used platform. It is mature so there is a large body of knowledge available, it's been used in production so there is a body of best practices available, and it is very popular with both small start-up companies and multi-billion dollar global corporations. That means there is a lot of potential for both learning and employment. Every platform and language has its pros and cons and I think you can take anyone who likes "x" and hear compelling arguments against "y" so you have to find out what clicks for you. As a beginner, my advice is to be involved. Don't just learn from books or courses or bootcamps or university - those are all great options - but network and go to code camps, meetups, and conferences. Network with other developers and learn where they work, how they like it, what they do and how they learned. Find new topics you can build projects against and go talk about them. Learning by doing I believe is extremely important if you are interested in a development career.
There are MANY reasons I can think of but here are my top 3:
- .NET Core is Cross platform: write .NET where you like it and with the tools you love
- Languages: C# has a lot of support, but are you interested in a functional approach? Check out F#!
- Open Source: about 50% of contributions to Core are from the community, you have the opportunity to alter the future of the technology
For beginning devs who want to learn, I'd say start small. There's SO MUCH information out there so it can be very overwhelming on learning where to start. When it comes to learning .NET, If you're an instant gratification person (like me) I'd say start here
I have had a great time learning Go and working with containers, so that stack is intriguing to me - I think I would be "all-in" Linux and Go. Ironically, Linux was one of the first platforms I wrote code on because it had such a superior networking experience on the Internet in the early 90s, but because the businesses I worked for were Microsoft environments that's where I built most of my experience and knowledge. I love what I do on the .NET Platform but if I were to have a second option it'd be a Linux/Go/Docker path for me.
I see the capabilities and use cases continuing to grow. They are in production for many companies and there are cases where organizations have found tremendous benefits from management, scale, resiliency to cost reduction. I believe the tooling will continue to improve, the debug and logging experience will be enhanced, and the development lifecycle tightening as serverless adoption grows. What intrigues me is the ideas of a serverless aftermarket where components will be available to grab and plug into your application ecosystem to solve common problems. We're already seeing some of that with public repos and templates. I look at serverless beyond just functions, though, and consider things like orchestration with logic apps and even databases with Azure SQL and Azure Cosmos DB. The idea is that you will be able to build rich, enterprise scale applications without having to work with virtual machines, configure clusters directly or deal with setting up geo-replication yourself. All of these building blocks are provided as an out-of-the-box component for you.
We have a lot of very large customers using serverless. Container technology is the latest to be leveraging it, such as Azure Container Instances where you can start a container fast without having to know or manage the VMs. Functions, Databases and more will start to operate on a serverless platform as the cloud grows.
10-20 years is a lifetime in this space. Less than 5 years ago the terms "serverless" and "microservices" were either non-existent or just emerging as terms. The growth to date has shown existing companies moving there and new companies starting in the cloud. Hardware continues to get smaller, so I think that it'll will just get smaller, faster and better.
Technology moves so fast a 10 - 20 timespan is difficult. There will be breakthroughs we don't conceive of. We know that machine learning/AI is gaining momentum and perhaps quantum computing will come within reach (and understanding) of the majority of developers. We'll have more out of the box solution and more things -as-a-Service but if 25 years of professional development has taught me anything, the more technology we use to solve problems the more technology is needed to maintain the solutions so we're going to be seeing more productivity per developer at scale, but the scale of what's required will grow in proportion.
Distributed storage is always a good idea and is available now within all of the major cloud providers. "Decentralized" storage is a different concept, I think, and one that probably comes with its own pros and cons. A pro because there is access to many nodes and ways to add storage (and people can potentially opt in to the business model, make some money with their extra storage, and that overall means less waste across the Internet) but now you are trading some control. A lot of IT want to know who's phone to call when something breaks, and with distributed storage in a cloud provider that's easy. What's that look like when a segment of nodes on a decentralized storage system fail?
In terms of languages across the .NET ecosystem, some would say VB.NET is going to be more core functionalities (legacy?) versus a language like C#, which MS seems fully invested in. Most universities (that I know of) are teaching more Java/Python. How does MS break into the educational realm, so that students can gain experience in moving to Enterprise vs. the startup world. The Imagine program is good, but are there other initiatives? Learning things like SSRS, AS, IS are skills employers seem to want. Essentially it seems like you need to keep developers trained on the .NET platforms/languages so they use them, or the numbers would diminish.
In high school I studied Pascal. In college in the 90s we were using Fortran, years later it was C++ and my first paid job was using a midrange computing language called RPG. I share this because I don't think the language you learn in college/university matters as much as learning how to program, and I think as much as they teach about systems at scale there is still no substitute for hands on experience. I know we are making initiatives like the Azure University Tour, providing student subscriptions, etc. to help students on board. I do believe now that .NET is open source and .NET Core is cross-platform you'll see .NET languages making their way into curriculums. It may not be the right language choice for statistics or machine learning (hence Python) but it's possible to supplement your education with a variety of activities. This is why I believe the key is:
- Internships - to learn what challenges are faced by enterprises
- Conferences - to learn and network with other experienced developers
- Bootcamps/Code Academies - for a formalized/deeper dive into the language you are looking to master
This is where I see a lot of those I know who are experienced with SSRS, etc. learn and grow.
Microsoft Azure is an open, flexible, enterprise-grade cloud computing platform. Ask us anything about cloud computing!
The all-in-one cloud platform developers & their teams love. Get started free for 60 days.Learn more
6 Reasons to join Hashnode, now!
- Friendly and inclusive
- Ask questions, Read blogs and share news
- Voice your opinion without being judged
- Question everything and quench your curiosity
- Earn appreciations and be the coolest nerd
- Hang out with smart developers from across the world