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.

  • 3
    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, 2010 at 18:05
  • If you're dealing with a business person, say it's a "best practice." Dec 6, 2010 at 17:19

10 Answers 10


.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.

  • nitpick: Libraries are often not pre-translated into Computerese
    – amara
    Jan 26, 2012 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!]

  • I would vote this more :)
    – duros
    Dec 4, 2010 at 11:58
  • +1: It's not important until it's important. By that time there's some base knowledge to draw on. Dec 6, 2010 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.

  • 1
    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 Dec 3, 2010 at 21:26

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

.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.


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
  • 1
    A bit condescending, isn't it? Dec 6, 2010 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, 2011 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.


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.

  • 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, 2010 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, 2010 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.


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

  • 2
    You could say that same thing for a text editor, for autocompletion, for ... for a lot of things.
    – Rook
    Dec 6, 2010 at 15:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.