Friday, June 19, 2009

Python for Secretaries

As if I need a new ambition, I've got an itch to create and teach a course called "Computer Programming for Secretaries". Since I got into IT via the secretarial pool, I think I'm the perfect one to do it.

To outsiders, programming has this horribly intimidating aura. You've got enterprisey Software Architects trying to sound professional, academic Computer Scientists telling you that you're oversimplifying the problem, fearsome Hacker Gods strutting their skillz. Lots of people want to make sure you know how smart they are, and that nothing could happen without their planet-sized brains.

but programming is not rocket science

If you want to launch satellites into space, you need to invest your life in the field and be part of a large, well-funded institution. Yes, you can have lots of fun with model rocketry, but you're just playing. You're not actually going to get anything into orbit.

programming is more like cooking

My friend James is a professional chef. Everything he makes involves a bunch of French words, ingredients I've never heard of, and turns out eyes-roll-back delicious. I don't have the ambition to invest the time and effort to cook that well... but I can still roast a turkey. That's what programming is like, especially dynamic language programming. With a lot of skill, you can work miracles - but with a little skill, you can work little miracles. You don't need to go in for the whole hog.

That's what I'd like a class to address. There are programming books aimed at kids, but none that I know of aimed at adult business users. There are people who could write themselves small, useful programs, but who will flee in well-justified terror if you start talking about overriding import hooks. There are people spending hours cutting-and-pasting from one file to another because they don't know how to write a six-line script. There are people could replace some of their daily tedium with just a little dose of Python. There is Resolver One, which is a fantastic way to integrate tiny dashes of Python with everyday spreadsheet work, but it's being used by thousands instead of by millions.

So... yeah. What should such a class include? More importantly, once I'm ready to teach such a class, where do I teach it?

15 comments:

As soon as I saw your blog post title I thought Resolver One, its a perfect tool for time saving in the office.Most of the time-saving scenarios I have experienced are in data formatting; splitting a name field into first and last, sanitising phone numbers, or complex decision-making/formulas that would normally require multiple extra columns, or deeply nested formulas. Usually this is an intermediate step, eg from a database, to a neat table to be pasted in a word document.

Another personal annoyance of mine is watching people trying to edit word documents (and even programmers editing source code) by selecting/cutting and pasting with the mouse. To me its extremely slow, my solution:http://java.peacocktech.com/Keyboard/ (minor plug)

How about teaching the course at a local community college, or at a university's continuing education program? Teach the course a few times, update the material from your experience, then publish the results.

Perhaps aim it at general business users? ISTM that there aren't that many secretaries any more. There are administrative assistants, but many of those people who used to have secretaries now do most of their own secretarial work. Something like "Computer Programming for Business People" may get you a broader audience.

David - Right, there are no secretaries anymore, just "administrative liasons" and so forth. I still want a title that's totally unpretentious, though, to make a point, get away from that whole I'm-trying-to-impress-you-with-my-professionalism ethos. Really let people know that it's for them, not for the impressive-sounding people they try to be on their resumès. So, maybe, "Programming for Secretaries (and other businesspeople)" or something like that.

Not much point in a perfectly-developed title for a vaporware course, though. :)

I do know some folks at the local community college. I should sound them out on hosting it. Then I'll have to figure out how to publicize it...

I've made an entire career out of fixing what happens when people cookbook business programming.

The essential problem is people don't know how to analyze business issues in terms where programming will help. You wind up with a "productivity paradox," which means people spend a whole lot of time and money on solutions that aren't worth it, can't be used by anyone else, and are not maintainable.

Have an accountant solve her problem, you get a bunch of spreadsheets. Have a secretary, excuse me, administrative assistant solve her problem, you get a bunch of cut-and-paste - automation of manual tasks. Have an old IT guy solve his problem, you get a bunch of DBII style slow-by-slow code. Have a young IT guy solve business problems, you get strange sql-server code.

Just make a community college class about making pretty pictures with apex, and leave the programming to people who have ideas about sets and relational theory.

Programming isn't rocket science. Good programming should be like rocket science.

I love knowing I'm not the only one out there who got into this game via the steno pool (how's *that* for an outdated term?).

There's definitely a place for providing this kind of entree (pardon the cooking pun) into programming for people who are perfectly capable of becoming so-called rocket scientists, but have been too intimidated to try because of that seemingly impenetrable layer of intellectual snobbery.

One thing you could cover would be an introduction to basic database concepts via common office programs - I don't know what the standard is now, but when I was secretary-ing, I used a lot of MS Access and Visual Basic. I think that if you can organize data in a spreadsheet, it's not much of a leap for some people to understand how databases work. (I say "some people" because, frankly, I know some crusty accounting types who I swear would be keeping hand-written ledgers and using adding machines if they thought they could get away with it.)

You might also want to include some practical advice on how to ignore the inevitable blowhards. :)

I think you have a laudable goal, that you *should* pursue, but only because I think you might have a failure people can learn from.

I immediately linked your thoughts with maths teaching (with an ess, I'm English). If I take what I would think of as being an equal idea from mathematics, say, simple calculus, there seems to be

1/ Those that are exposed to it and 'get' it.

2/ Those exposed to it that don't.

3/ Those not exposed to it that might get it.

4/ Those not exposed to it that wouldn't get it or who will not give it the time of day.

I think you would be going after group 3 but would be swamped by group 4. Remember, their are a lot of adults out their that are intelligent useful people in our society with, some are leaders in their fields, but who don't know rudimentary calculus, who would stumble over explaining the distinction between acceleration and velocity for example.

Programming awareness may rankle, but I think the best course is taken by those in the Python community who *are* trying to attract the young and inquisitive.

Catherine, you may want to consider your local library. It never would have occurred to me, but the library near my house has an LED sign out front displaying a variety of courses being taught, including things like basic Excel classes. A library patron might be just the demographic you'd want to target with such a class (which I think is a great idea, btw)

I'm a SysAdmin and some of the most time consuming tasks are the interfacing the results of some query into human readable output. I have simple queries that give me a lot of data. Taking these text strings and automating tasks would save me a bit of time. So yes, I would take this class. You can call it reports for people who are not DBA's... or how to automate computer tasks.

Example: Having the program produce a report, and ask if you want to do X to these ten thousand objects. Do X. Produce a report showing what was changed.

I would question how useful most of this would be when an Office product can do a lot of this with macros.

Jennifer - if your queries are from Oracle or other RDBMS's, you may be interested in SQLPython. You can run a query like "SELECT * FROM accounts" and, by terminating with a special character, then using `>` to dump the results to a file, you can generate instant reports really easily. Examaples:

2) unless you've got infinitely customizable software with 24-7 support, people will have to roll their own solutions.

3) (my experience from the mining community) At 5 PM on a Friday afternoon or 2 AM on Wednesday morning, it's you and you alone who needs to process text, troubleshoot scripts, and move files to avert a $10K, $100K, $1 million dollar disaster. No architect can help you then.

The reason why secretaries end up in IT is because their (mostly computer illiterate) bosses are always letting stuff slip; the secretary needs to save the day. At least that's what's been related to me, and I believe it.

2) unless you've got infinitely customizable software with 24-7 support, people will have to roll their own solutions.

3) (my experience from the mining community) At 5 PM on a Friday afternoon or 2 AM on Wednesday morning, it's you and you alone who needs to process text, troubleshoot scripts, and move files to avert a $10K, $100K, $1 million dollar disaster. No architect can help you then.

The reason why secretaries end up in IT is because their (mostly computer illiterate) bosses are always letting stuff slip; the secretary needs to save the day. At least that's what's been related to me, and I believe it.