Sunday, March 21, 2010

Microsoft Certified Office Developer?

I've kicked this idea around for years, and I've seen other MSO geeks talk about it in the abstract, so I'm hoping to re-kindle the debate. The Microsoft Office Specialist/Certified Application Specialist is the single-celled amoeba of the MCP food chain. I can live with that. I'm used to it.

But some MSO geeks, present company included, do a fair amount of VBA development for Microsoft Office, and I think we deserve some recognition for it. We're a different breed of dog from the other MSO users; not better or worse, just different.

So my thought is, have a new MCP certification called the MCOD - Microsoft Certified Office Developer. It would consist of two tests: one on core VBA and programming fundamentals, one on your application of choice. I'd probably start the testing/certification with Access and Excel for starters.

The Basics Test/Class

The VBA basics class would be called something like "Fundamentals of Programming Using Visual Basic for Applications."

The topics covered by this test and class would be some basics. Very little programming knowledge is assumed; instead, it's assumed you have an advanced understanding of the application in which you wish to do your development. Topics might include:
  1. Control structures: For-Next, For-Each, Do-While, Do-Until
  2. Conditional logic: If-Then, If-Then-Else, Select Case
  3. Basics of objects, properties, methods, events
  4. The VBA IDE
  5. Variable types: numeric and string, and in between
  6. Error messages: some of the more common ones, and what do they mean?
  7. Error types: Syntax errors, logic errors, and runtime errors
  8. Error trapping: How can you validate user input to ensure that your assumptions and dependencies have been satisfied?
  9. How do you deploy/install your solution on another user's computer?
  10. How do you support your newly built application?
The Fundamentals Test: Part 1
To test something like this would require two parts, for my money. Part 1 is a multiple-choice exam where you answer questions like this:
  1. You have the following VBA code. When you run it, you get an error 1004. Why?
  2. Your program keeps getting stuck in an infinite loop. Identify the problematic line of code.
  3. What is a "Type mismatch" error, and how can you prevent it from happening in the future?
  4. How can you make sure that your end user only enters in a 10-digit number into your form field called Ticket Number?
  5. Write pseudo-code to iron every shirt in your closet that's a dress shirt and isn't ironed already.
The Fundamentals Test: Part 2
Using your knowledge of VBA, write pseudo-code to perform an everyday household task, choosing from the following list (doing laundry, dishes, taking out garbage, mopping floors, whatever)

The Program-Specific Tests
Who writes the tests? How about some of the MVPs in the respective disciplines? Have guys like Walkenbach, Pearson, and Umlas write the Excel course and test, and Dev Ashish write the Access test. The test would be a mix of:
  1. What's wrong with this code?
  2. What does this code do?
  3. Write some code that solves the following problem
  4. Record some code, then make it run faster
  5. Record some code that's specific, and make it general
I'd call the MOC class for this something like "Developing VBA Solutions for Microsoft Access" and "Developing VBA Solutions for Microsoft Excel," respectively.

The Access Test
How about three parts on this one:
  1. Subroutines that are executed, usually by the OnClick event of a form control's button
  2. Custom functions
  3. Userforms, which would have subparts design and functionality
  • Create a form to check for all the orders between date x and y.
  • Create a custom function to update the Geographic, based on the Country.
  • Create a custom function to calculate sales tax.
  • Create a subroutine to delete all records associated with an individual user.

The Excel Test
For this one, I'd probably follow the same pattern as the Access test, but place less emphasis on user forms, and more emphasis on custom functions.

Ideas might be:
  • Write a custom function to convert centimeters to inches, Farenheit to Celsius, miles to kilometers
  • Write a custom function to calculate the state, based on its capital
  • Write a subroutine to update all of the sales records for Nancy Davolio in Brazil to be the existing price + 10%
I'm just trying to get the ball rolling on this one. Anyone else have any ideas? Let me know. Until we meet again, be well.

No comments: