What is .NET? The infamous question to land a .NET Developer job!
Posted by Kevin Kelly on 08/4/09 | DotNet
The pressure is on; you have a phone interview tomorrow for a Sr. .NET[i] developer job at “HealthyBank”. Being a savvy professional you know these screening interviews keep the posers from showing up for the in-person interviews, only to be shown the door after several hours wasting precious staff time.
I've done hundreds of these screens, over as many years (ok, less than a hundred) and one of the tactics I've found works well, is to ask the most obvious interview question and see how well the candidate does. You find out fast who can't see the forest for the trees or who has memorized arcane detail over learning core concepts. Sometimes you even find the person who makes up a complete wrong answer, admittedly, pretty rare in my experience, but it does happen!
So, back to tomorrow’s interview for that .NET Developer job, what are you going to say when the interviewer asks "What is .NET? Can you explain it to me?"
My advice – Simple is better. Clarity is King!
First, picture in your mind who you're speaking with. You can't know the level of expertise on the other end of the phone, and you don't have time to find out. You don't care if the interviewer is a Senior Technologist or a freshly minted HR professional, answer the question the same...as if you’re at the family table for the Holiday feast and your favorite Aunt or Uncle just blurted it out. That's the test.-
Do you know .NET well enough to explain clearly, and in the time it takes the potatoes to make it all the way around the table?
Second, pick a few of the talking points below, find an anecdote from your own experience and mash them together into your own story. You don’t have to use them all, pick one or two that you’ll be able to remember easily under pressure. Remember, simpler is better, clarity is king.
What is Microsoft .NET and What You Need To Know To Land That .NET Developer Job!
Think of .NET as Microsoft’s platform for Windows applications. It provides a robust execution environment (common language runtime) for applications to run in, isolated from the Windows operating system and from other applications. It organizes the vast lower level Win32 API into a coherent framework (the.NET Framework).
Consumers of .NET applications can move applications from one version of Windows to another without having to recertify them. This is a subtle, but important, boon for organizations that build, deploy, and support an application over many years, while deploying PCs or Servers running different versions of Windows over time. The application is portable across all versions of Windows.
The core of the .NET platform is called the Common Language Runtime (CLR). The .NET platform allows programming language developers to add different programming languages to the environment. You’ll see everything from COBOL and FORTRAN to Visual Basic and C#. As the name befits, the CLR provides services to all of them. The CLR takes care of low-level details such as memory management, creating application domains, threads and object context boundaries, and performing various security checks. The CLR composes two critical components you should know about. The Common Type System (CTS) describes all the possible data types and programming constructs supported by the runtime. The CTS effectively enables systems of .NET components to be much more robust while communicating with each other, even when the components are written in different programming languages. The Common Language Specification (CLS) defines a subset of common types and programming constructs that all .NET programming languages can agree on. You’ll need in depth knowledge of the CTS and CLS if you’re going to implement a custom programming language or .NET Framework library.
The second major component of the .NET platform is the Base Class Library (BCL). The BCL is available to all .NET programming languages it encapsulates various primitives such as threads, file input/output (I/O), graphical rendering, and interaction with various external hardware devices. It provides important common services, such as structured exception handling, required by real world applications.
That’s it. .NET, the platform, is the CLR and the base class library. But as the late Billy Mays might have yelled “But, wait! There’s more!”
In addition to the base class library, Microsoft packages a comprehensive class library of literally thousands of classes and methods for developing Windows applications. Referred to as the Framework Class Library (FCL), it is a superset of the BCL classes and includes support for Windows features such as WinForms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation among others. Depending on release cycles you’ll see updates to the FCL for new Microsoft technologies, such as Silverlight, as they become available.
The Microsoft integrated development environment, Visual Studio, is tightly integrated with .NET and provides great tools for navigating the FCL, writing code in the .NET language of your choice, and helping you debug your applications. You can write .NET applications without using Visual Studio, but most people don’t. And you can still use Visual Studio for native code development in C++.
Besides helping solve the problems of API complexity and application robustness, .NET is also a response to the threat to Microsoft of Java as a competitive development platform. The Java language is syntactically similar to Microsoft’s C# and both share a common C language heritage. The Java platform provides common runtime and shared libraries for developers targeting non-Windows platforms. Marketers will shout (Billy Mays again) “faster, stronger, cheaper!” to try and differentiate the two. Technologists will dither in the arcane details of programming language constructs and design patterns. But the differences all boil down to the Microsoft vs. non-Microsoft platform choice. Be very skeptical of architectures that span the two.
Language choice and application deployment models are evolving. With the growth of Web 2.0 style applications has come the use of dynamic languages like Rails and Python. .NET is being extended to support application development with Dynamic Languages. The technology is aptly named the Dynamic Language Runtime (DLR) and of course runs on top of the same CLR as the rest of the .NET platform. Look for it in the Visual Studio 2010 release.
About Kevin Kelly
Kevin Kelly , program and product manager on Microsoft engineering teams from 1995 to 2009, contributed to the Visual Studio product line. Kevin currently serves as consultant to SetFocus on curriculum development for their .NET Master’s Program and on the application of VSTS and agile software development practices across the SetFocus product portfolio. Check Kevin out on LinkedIn and at his blog!
Kevin Kelly on LinkedIn
Kevin Kelly's blog
.NET Training and "How to" prepare for your next .NET Developer job
If you are considering a position as .NET developer and need the background and experience to be able to answer the questions posed above, consider SetFocus to train for the next step in your career and to network with companies seeking .NET developer talent. SetFocus offers a number of ways to learn .NET and become a .NET Developer.
[i] At the risk of being truly pedantic C# is pronounced “see sharp” and .NET is “dot net”.