views:

399

answers:

9

I develop code in our proprietry system using a scripting language that is unique to that system. Our director has allowed us to request enhancements to this language, which currently lacks user definable arrays. I need to write a concept brief on why we need arrays and how they can benefit us, however I need to explain it in a fashion that someone who has no understanding of code will understand. I'm a programmer, therefore I suck at documentation and explaining things in a non-technical manner. I tried banging my head on the desk to see if anything useful would come out but it hasn't. Can anyone help?

+12  A: 

I love analogies.

Much easier to have a 100 DVD holder that sits neatly on your floor and holds 100 dvds in order than 100 individual DVDs scattered around your house where you last used them

Especially relevant when you need to move the collection from one place to another or share it with a friend.

Tom Leys
+5  A: 

What's your application area? To speak the users' language you need to know that. Suppose it's stocks trading: then what to you is an array, to the users may be a portfolio -- get the quotes for several stock at once rather than having to do it repeatedly for one at a time. If your application area is CRM, then the array will let the users check on a group of customers at once, rather than do it one at a time. And so on, and so forth.

In every application area there will be cases in which users may want to deal with a bunch of things at once, it being easier than dealing with one thing at a time. Phrase it in the appropriate vocabulary, and you have the case for arrays!

Alex Martelli
+1  A: 

The benefit is that it makes the code shorter, and thus less money is spent coding and debugging. You can then present some example code that you could make it shorter had the language supported arrays.

eed3si9n
I agree, I understand that your user is non technical, but why don't you show a big ugly chunk of array-less code (with a time estimate) and a small and elegant array-enabled code (with a time estimate). Even a layman will understand at once!
tekBlues
+1  A: 

Sounds like you've been asked to create code in the past (or anticipate having to create code in the future), where your job would have been faster/easier/cheaper if the system that you used had arrays.

That's the issue: you want to do more for your director and you need arrays to help you.

Your director will understand the business benefits of you having a better toolkit--you'll be able to do more for him or her. And that's how you increase business efficiency.

Tell your director: I want to improved my productivity for you and our team. To do so, arrays would be very helpful.

Larry K
A: 

I think to fully realize the potential of arrays, you must somehow mention two things:

1) Array Algorithms Sort, Find, etc. All the basics. Equate this in your business brief as structured data that can organize itself. No extra query language. No variable naming conventions. All you need is good standards.

2) Multi-Dimensional Arrays The power of arrays seems fully realized to me with matrices. With these you can practically hold limitless data.

Plus, depending on the power of the propriety language you are using, arrays can store objects.

Brian
+4  A: 

You might want to see if you can move the business away from your custom scripting environment and into a standard scripting environment like LUA or Python. You might be surprised at how much easier it is to get LUA up and running than it is to :

  1. Support an in house system
  2. Create tools for it (do you have an IDE?)
  3. Train new programmers in it
  4. Live without modern features that you lack the time/skills to impliment.

Key to getting that to happen would be to make LUA interoperable with your standard scripting system or writing a translation from your old scripts to LUA scripts.

Tom Leys
That link should be http://en.wikipedia.org/wiki/Lua_programming_language
Dennis Palmer
Ta - Thanks for that.
Tom Leys
A: 

The power of an array is that it allows you to put a group of things together so that you can perform the same operation on all of them with less code.

Sorting is one example of an array operation, and is like having a box of index cards that you are putting in order.

Or if you had a collection of letters that need to go out, being able to write a loop that stamps each letter and then sends it is better than writing out Take first letter, stamp it. Mail it. Takes second letter, stamp it, Mail it.

Basically anything you'ld use to refer to the first, second, third, fifth, etc, is basically like an array.

And then indexed/hashed arrays are like having an index in the book - you know the author describes the Defenistration of Prague somewhere in the volume, but looking in the index shows that it's on page 255.

John Fiala
So... nice to treat data as uniform so you can process each item the same way in a production line
Tom Leys
A: 

Here's the easiest-to-understand benefit: It lets you refer to things by a number. Try to emphasize the importance of this.

rlbond
Could do that by creating variables widget_119, widget_120, etc. Ah, so you meant by a variable holding a number eh?
Tom Leys
+1  A: 

I like Alex's answer - it has to be put in terms of the user's problems. What problem (that they care about) can they do with it that they cannot do without it?

I used to teach introductory programming in college, and arrays are simply not something that comes easily to non-programmers. They need to understand some other basics first, like the sequential nature of programs, the lego-block way programs are constructed, the idea of run-time (as opposed to write-time) and really importantly the concept of a variable as a container of a value, and how that is different from its name, and how its contents changes with time while its name does not.

I found a useful way to get into this area is to let them program a very simple, decimal, simulated computer, in "machine language". They get the notion of memory address vs. memory contents, and that address is just a number. That makes it a lot easier to introduce arrays in a more "real" language.

Another approach is to have them work on a kind of problem where they really start wishing they could invent variables on-the-fly. Like they don't want to just have a variable A, but they feel a need for A1, A2, etc. and then they would really like to say Ai where i is a another variable. Once they feel the need for that, then they will grasp arrays. (For example, they could take a simple program that asks for their name and has a simple conversation with them, and then extend it to talk to two people at once, then three, and so on.)

Then, a useful next step is "parallel arrays" which can serve as rudimentary arrays of structures. i.e. N$(i) can be name of student i, while A(i) can be age of student i. This makes the idea useful.

Only then would I dare to start to introduce algorithms like sorting, merging, table lookup, and so on.

Mike Dunlavey