Take the 2-minute tour ×

I don't work at a software company, and I'm one of a small handful of people in the company that know anything about programming. I spend a lot of time automating other programs that are used in the office through public APIs, and I've also created a few stand alone applications. I work almost entirely in C#.NET as every application we seem to use in the office seems to have some form of .NET API.

I've had a few people here ask me about learning "how to program", and where they should start. I think it makes a lot more sense to learn a .NET language as nearly all the programs they would want to automate have a .NET API, and it sounds like VBA is on it's way out and being replaced by VSTA.

However, I'm trying to figure out how to explain what .NET is and why they should learn it to a someone that doesn't know anything about programming. It's not really a language, as there are a number of languages that are considered .NET languages. Plus I think there is a distinction between ".NET" and "The .NET framework" as the latter is more about the libraries provided by Microsoft.

share|improve this question

closed as primarily opinion-based by MichaelT, jwenting, GlenH7, amon, Dynamic May 7 '14 at 23:39


Programming should be very separate from .NET; interpreting the 2 as same is like saying the world is ruled by 1 country (no names here :D) –  Fanatic23 Dec 4 '10 at 18:05
If you're dealing with a business person, say it's a "best practice." –  Scott Whitlock Dec 6 '10 at 17:19

10 Answers 10

up vote 14 down vote accepted

.NET for the Non-programmer

Programming - Basically telling a computer what to do and how to do it.

Source File - This is a document written in a programming language that tells the computer what you want it to do.

Programming Language - This is a language that (usually) resembles a mixture of English and math. It is both simple and strict enough for a compiler to understand.

Compiler - This translates a programming language that you can understand into a language the computer can understand, you can call it Computerese.

Library - A collection of useful code that has already been translated into Computerese that you can use in the programs you write.

.NET Platform - A large collection of tools, languages and libraries for writing programs with a heavy emphasis on productivity.

Sure, there's a lot more to it than that. You could tell them about IL and JIT compiling or garbage collection but these details aren't very relevant to a non-programmer.

share|improve this answer
nitpick: Libraries are often not pre-translated into Computerese –  naiad Jan 26 '12 at 23:22


Tell them "C#" and if they follow through they'll figure it out. There's no point in explaining it in a vacuum.

[or tell them "Java" so they won't come to you for help!]

share|improve this answer
I would vote this more :) –  duros Dec 4 '10 at 11:58
+1: It's not important until it's important. By that time there's some base knowledge to draw on. –  Steve Evers Dec 6 '10 at 3:36

Just tell them it is a program that lets you write programs and not to worry about it for the moment. Then start on the programming principles that matter the most at the moment.

share|improve this answer
yea, i'd do that, then I'd hand them books from the head first series. (great beginner books that are easy to learn from and have lots of best practices boiled in.) You could start them on the "Head First Programming" book. Also the 1st 3 chapters of the C# book are free, so you can check out the teaching style: headfirstlabs.com/books/hfcsharp –  robertpateii Dec 3 '10 at 21:26

.NET is a framework which can be used by .NET programming languages. You can use it to write WinForm (non-WPF) desktop apps, WPF desktop apps, Silverlight, ASP.NET, and mobile. So by learning one part of .NET (such as writing desktop apps), a programmer can pretty easily learn how to write other things such as web apps.

I'm a Java developer and similar things can be said for the Java language, but IMHO, features of Visual Studio and .NET (e.g. Visual Studio's GUI editors & wizards, as well as data binding) makes development in .NET a bit faster and easier.

share|improve this answer

Always relate it to something the person can understand. If they do not understand programming then:

.NET is a collection of pre-made stuff. So its like:

  • a whole lot of bricks already put together
  • a pre-written agreement where you just fill in some fields
  • buying a car instead of the individual parts that make up a car
share|improve this answer

It's a Big Fluffy Cloud..

Tell them that Its Microsoft sexy new technology. And that it allows developers from different languages to all hold hands and make super sexy code. Tell them that it auto-magically works on things like PC's, XBOX's and Windows Phone. And also tell them that they can make anything from games to boring business applications with them as well as websites too.

Keep it short:

  • Its a Big Fluffy Cloud :)
  • Its Microsoft Tech
  • Runs on PCs, XBOX, Windows Phone
  • It "understands" many different languages
  • Can make, Games, Businees Applications & websites with them
share|improve this answer
A bit condescending, isn't it? –  Robert Harvey Dec 6 '10 at 17:36
no, not at all, not in the slightest. Any-time I've had to describe /explain technical stuff to people Non techs. I find it best to give the 1000,000000 ft view. WHY? because 90% of the time they just don't give a sh*t about it. They just want it to work. However the 10% that are interested will all-ways ask a follow on, followed by a follow on. This is just the most efficient way of communicating. Start at the highest level of abstraction and work you way done... –  Darknight Oct 19 '11 at 15:47

People, that are non-programmers, are very afraid of special computer terms like "framework", "ASP.NET" and "Silverlight". So let's explain the thing in easy terms:

.NET is a modern programming technology that best used to make business applications, web sites, games and multimedia.

share|improve this answer

I think you're heading down the right path, you have the .Net compilers that translate a program in a specific language into MSIL, then you have the Code library, which is really just a class/code library to make our life easier. If they don't understand what a code library is, not sure what you could do to make them understand that. You can guide them in their selection of C# the same as you did in your question.

share|improve this answer
Yeah that helps. I think part of the problem is I don't have a very good understanding how how .net works my self. Like why do so many programs I work with have .NET APis now. Is it just because it's the hot new technology or is there something fundamental to .Net that makes it better then say VBA or VBScript? –  Eric Dec 3 '10 at 20:35
oh god yes it's better than VBA or VBScript. having a .Net API instead of VBA is like programming in VB6 vs VB.Net. –  BlackICE Dec 6 '10 at 17:24

This looks like an opportunity for you within this company.

As you are becoming known as someone proficient with programming, and people are coming to you for advice/input, it seems like there's a business need for programming in this company in general.

I'd recommend talking to someone in a position of authority that may be able to establish that this becomes part of your role - e.g. you head up the software development efforts, and are recognised accordingly.

If this is possible, you could start the educational ball rolling with a chalk-and-talk session on what is programming, why you program these office apps, etc, and introduce C# as you do this. If this goes well, you probly want to progress to Version Control, leveraging frameworks and nUnit (or similar) soon after.

If there's no opportunity available, a chalk-and-talk session is still a good option as you can disseminate the same information to a number of people, aiming for the average case, and they can then support each other going forwards.

share|improve this answer

"It makes it easier for programmers/software developers make applications for Microsoft products and even some other platforms like Linux."

share|improve this answer
You could say that same thing for a text editor, for autocompletion, for ... for a lot of things. –  Rook Dec 6 '10 at 15:59
