YouTube Channel

Please check my new YouTube channel at “https://www.youtube.com/channel/UCadnfEVO8PD48xbsE2GhxEg?view_as=subscriber. It has examples from my upcoming Creating Business Applications with Office 365: Techniques in SharePoint, PowerApps, Power BI, and More book as well as other programming and application examples.

Subscribe to My Channel

Advertisement

e-Learning Management 101

I responded to a newsgroup post today that asked, “Is there a rate or range of rates that freelance e-Learning contractors typically charge?” It occurred to me that my “e-Learning Management 101 – Estimating, Pricing, and Running Your Business” presentation that I used to give at our e-Learning Authoring Conference could be helpful. So I put it at the URL below and thought I would do a blog post as well.

http://www.plattecanyon.com/documents/e-Learning Management 101 – Estimating, Pricing, and Running Your Business.pdf”

Here is the list of slides:

1
e-Learning Management 101 – Estimating, Pricing, and Running Your Business
  • Jeffrey M. Rhodes
  • Platte Canyon Multimedia Software Corporation
2
Topics
  • General “Wisdom”
  • Figuring out a “billable” rate
  • Estimating projects
  • Pricing strategies for products
  • Joel on Software
  • Running a small business: Q&A/collaboration
3
Track Employee Time per Project
  • Critical to knowing where the time/money went
    • Compare revenue to costs (including support) at any time
    • Absolutely critical when a consultant
    • Can be unpopular with employees
  • Examples
    • Learning & Mastering ToolBook
    • TBCON itself
      • Program
      • CD/Archives
4
Manage Risk
  • Use Ben & Jerry’s or Dave Ramsey Strategy
    • No debt
    • No venture capitalists breathing down your neck
    • Grow Through Profits
  • Avoid Fixed-Price Contracts Like the Plague
  • Don’t “Tinker” Products to Death
  • Focus on Consulting that Either Improves your Products and/or Improves your Skills
5
Use “Responsive Sales”
  • Concept from Eric Sink
  • Customer initiates contact rather than being “sold”
    • Make sure customers know about your product
    • Make sure product is something customers want
    • Make sure they can afford your product
    • Offer a full-featured demo download
    • Answer customer questions
    • Provide a place for community
    • Make it easy to buy over the web
6
The Question is “How Much Do We Charge?”
  • For services, we build up from costs, incorporate risk, and try (depending on the market) to achieve our profit margin
    • acme multimedia training.xls
    • sampleWorksheet.xls
    • sampleBigJob.xls
    • RecentBid.xls
  • For products, the answer depends on the demand
7
How Much to Charge as a Consultant?
  • Start with expected salary
    • $60,000 per year equates to about $30/hour
    • Adjust for marketing/lack of work: Take into account that you won’t be able to bill out 2000 hours/year. Figure out a reasonable amount of off time (proposal-writing, marketing, research, vacation, etc.). 500 off hours for our example. Adjust the base hourly rate to account for this: $60,000/1500 = $40
  • Add in:
    • Employer Taxes (Social Security (6.2%) and Medicare (1.5%)): 7.7% or $3.08/hour
    • Benefits (health coverage, retirement, etc.): 15% – 40%. Use 30% or $12/hour for this example
    • Other overhead (rent, utilities, computers, software, etc.): 30% or $12/hour
8
How Much to Charge as a Consultant?
  • Add a company profit: 10% = $4/hour
  • Add it all together:
    • $40 + $3 + $12 + $12 + $4 = $72
  • Obviously lots of variation and factors here, but this is the general idea.
9
Estimating and Pricing Services 1
  • acme multimedia training.xls
    • A “coverage” approach that focuses on the cost of resources and estimates a project based on the percentage of time by person over a particular time frame.
  • sampleWorksheet.xls
    • A “screens” approach that breaks down a CBT or WBT into the number of screens of varying complexity.
10
Estimating and Pricing Services 2
  • sampleBigJob.xls
    • Another screens approach where the price came out so high that we didn’t even bid. Instead, we sent a letter suggesting a “prototype.”
  • RecentBid.xls
    • Relatively simple estimate to come up with the numbers to bid on a fixed-price, sole source contract based on requirements
11
Pricing for Products
  • The key is demand
    • Supply is basically infinite for software products
12
Pricing for Products (Continued)
  • We set the price and get the corresponding demand
13
What We Need To Know
  • The level of demand
    • How far the demand curve is to the right
    • Reflects the size of the market
  • The price elasticity of demand
    • How much will quantity demanded go up when we drop the price?
    • Shown by the slope of the demand curve
14
The Level of Demand
  • Besides price, what affects the demand for our product?
    • Tastes/Preferences
      • Advertise to boost this
    • Population of buyers
      • ToolBook Companion vs. Programming for e-Learning Developers
    • Buyer’s income/wealth
    • Prices of substitutes and complements
      • Commoditize Complements and Differentiate Yourself
    • Expectations of future price changes
  • Tastes is the only one that you can normally do anything about.
15
Level of Demand: L&M ToolBook
  • Look at each one of these for the Learning & Mastering ToolBook… series
    • Tastes/Preferences
      • Postcards, newsletters, web site, flyers in each box of ToolBook (killed by electronic downloadJ)
    • Population of buyers
      • Greatly dependent on the number of ToolBook developers
    • Buyer’s income/wealth
      • Follows the state of the economy, since the buyers are mainly businesses
16
Level of Demand: L&M ToolBook (Continued)
    • Prices of competitor products
      • Classroom training courses (expensive)
      • Books (inexpensive)
    • Expectations of future price changes
      • If customers expect a sale, they will wait
      • If they expect prices to rise, they will buy now
17
Elasticity
18
What Affects Elasticity?
  • Availability of Substitutes
    • If customers can buy a similar product, then they will go for the lower price.
  • Time
    • Customers can eventually move to other solutions if price is too high (buy a more fuel-efficient car if gas prices go up). So more elastic with time.
  • Proportion of Income
    • More elastic if product takes a big “chunk of change.”
19
How To Determine Elasticity?
  • Pricing of Existing Competitor Products
    • Most Platte Canyon products have had no existing competitor product on the market.
  • Surveys
    • Ask potential customers what they might be interested in paying. We did this with beta testers for L&M Instructor 6.5.
  • Put products on sale and look at the response.
  • Try a “Lite” and “Pro” version.
20
Elasticity of Development Tools
  • ToolBook and our ToolBook products have inelastic demand over a “reasonable” price range
    • Moving to substitutes difficult in the short-run (so more elastic over time)
    • Proportion of e-Learning development costs spent on tools is very low
  • Examples
    • ToolBook 1.5 was $495, ToolBook 10 is $2,795
    • Demise of Plug-In LE
    • Subject Matter Experts versus Programmers
      • Exam Engine versus Question control
      • Training Studio
21
Elasticity of e-Learning
  • The key is the availability of substitutes
    • If the market is big (as for training on Microsoft Office), then there are likely numerous competitors. This will constrain the price you will be able to charge.
    • Need to research this thoroughly before setting pricing.
  • Proportion of income
    • If you are training on an expensive product (sophisticated machinery or software), then easier to command a premium for the e-Learning.
22
Tips from Joel on Software
23
Running a small business: Q&A/collaboration

 

PCI Compliance and Custom Error Pages

Those of us who accept credit cards are familiar with PCI (Payment Card Industry) compliance. In addition to protecting credit card numbers and so forth, your web sites need to tested for vulnerability to attacks and hackers. As part of compliance, your web sites are automatically scanned for vulnerabilities. Our site has always passed, but the report would show various weird vulnerabilities that I put down to being on a shared hosting service (DiscountASP.Net). But this most recent scan failed repeatedly with messages like this:

News database accessible over web (news.mdb) Impact: Attackers may access (read or destroy) application information, and in worst cases may take administrative control of the application. Data Sent: GET /help/trainingstudio/TrainingStudioContentEditor/news.mdb

When I went to help/trainingstudio/TrainingStudioContentEditor, there was no file named news.mdb or anything similar. I contacted the scan vendor (Security Metrics) and Emily evaluated the situation and came up with this explanation.

I have looked into these issues and I believe that each one is flagging because we are receiving affirmative (200 OK) responses for non-existent pages. Our scanner is sending a GET request for a specific page or file that is associated with a vulnerable program (ie. Guppy). The response to that GET request is a custom error page that you have created – but that customer error page’s status code is a 200 OK. The scanner sees the 200 OK and it flags the issue.

Sure enough, we had set up our site through DiscountASP.Net’s IIS tools (shown below) to show a custom error page (error.htm) if there was a missing page. So if the user put in a bogus link like http://www.plattecayon.com/cool.htm, that page would display. But unfortunately that page returned the standard 200 status code. I found this nice tool that shows you the actual status code: http://gsitecrawler.com/tools/Server-Status.aspx. When the scan looked for various rogue files, the 200 response put up red flags.

So what to do?

My first thought was to edit the error.htm page to set the status code to 404 (missing page). I had no luck finding a way to do that though. The next best thing was to use an ASP.NET page as that had the power to change the status code programmatically. Here is the code for missingPage.aspx.

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
	If IsPostBack = False Then
	    Response.StatusCode = 404
	    Me.UpdateRepeaters(linksRepeater, 41)
	End If
End Sub

The important part is Response.StatusCode = 404. The last step was to make this the custom error page for missing pages. This is done in IIS (Internet Information Services) for non-ASP.NET pages and in web.config for extensions handled by ASP.NET. Here is the DiscountASP.Net interface for the IIS setting.

For the web.config, we used this entry:

<customErrors mode="RemoteOnly" defaultRedirect="errorpage.aspx">
		<error statusCode="404" redirect="missingPage.aspx" />
</customErrors>

After making the changes, the site passed on the first try.

I hope this is helpful if any of you run into a similar situation. Note that returning the correct status code is helpful for search engines as well.

Two Great Leadership Speeches

I’ve run into two outstanding leadership speeches recently. The first is by General Welsh, commander of the U.S. Air Force in Europe. It is from a recent speech to the Cadet Wing at the Air Force Academy. I remember some good speeches while I was a cadet, but none as impressive as this. I particularly liked how he called everyone, even lieutenants, by their first names and gave the whole speech without any notes. Kudos to the Association of Graduates for sending out a link with the speech.

General Welsh Speech to USAFA

The second video came via my wife Sue, who in turned got it from her boss Toby. The concept that “people don’t buy what you do but why you do it” is fascinating. There are lots of good examples and anecdotes as well.

How Great Leaders Inspire Action by Simon Sinek

Good Articles About Pricing Software

I was having lunch recently with a fellow owner of a small software business. We were discussing pricing strategy and I followed up with the list of my favorite articles related to pricing software. I have been interested in pricing theory ever since my graduate studies at the London School of Economics and even taught Microeconomics for a time the Colorado Springs campus of Regis University. When it comes to pricing your own software, it can literally be a make or break decision for your company.

The first three links are from Eric Sink. I first read his “Closing the Gap” articles a number of years ago in The Best Software Writing 1 edited by Joel Spolsky. It very closely mirrored by own thoughts on how to run a business and how to sell software without the hype and the pressure that is so often used. Eric articulates his concepts and vision brilliantly. I bought the book mentioned above after reading Joel on Software for years before that. Joel has many great opinions on running a software company and other topics. His Camels and Rubber Duckies is a great article. I frequently tell our propective customers that we proudly post our prices on our site and never use the “How Much Money Have You Got” pricing that Joel picks apart in his article.

Product Pricing Primer: http://www.ericsink.com/bos/Product_Pricing.html

Closing the Gap, Part 1:  http://www.ericsink.com/bos/Closing_the_Gap_Part_1.html

Closing the Gap, Part 2: http://www.ericsink.com/bos/Closing_the_Gap_Part_2.html

Camels and Rubber Duckies: http://www.joelonsoftware.com/articles/CamelsandRubberDuckies.html

Joining the 21st Century

Although I have written three books, presented at numerous conferences, and publish the quarterly EnterPage newsletter, this is my first blog post. My focus will be primarily technical, with (hopefully) interesting insights into .NET, ToolBook, HTML, JavaScript, and Flex/Flash. I will also add some content on topics related to running your own small software company as well as whatever random subjects come up. I hope you join me for the ride.