|
|
|
Back to newsletter 045 contents | All Javva's articles
I came across this fascinating discussion on pricing your product by Eric Sink. It is specifically about software products, though I imagine it extends beyond that. In the section "Complaints About Price", which had me laughing out loud, he points out that whatever the price, someone complains:
If I gave the product away, someone would complain that I am making them buy more disk space to install it.
If I paid each user a hundred bucks to use my product and sent Salma Hayek in a bikini to personally install it for them, someone would complain that they prefer blondes.
This rings true to me. So how do you price your product correctly? The whole article is summarized in two lines which sounds like it gives excellent advice on optimizing your price:
In fact, if nobody is complaining about your price, then it is probably too low. The trick is to tune your pricing until the volume of the whining is just right.
June 16. Committees! They say a camel is a horse designed by a committee. Huh. The fact is that camels are creatures excellently adapted for their environment. My experience is that a committee given the task of designing a horse couldn't have even come up with a rocking horse, let alone a live animal! I have created a Java implementation for a commitee. It works perfectly to model committee actions, right down to the fact that if you remove some unnecessary static, they can actually complete a task.
public class Committee { public static void main(String args[]) { MakeADecision(); } // public static int CommitteeSize; public static void MakeADecision() { CommitteeSize = 2; for (int i = 0; i < CommitteeSize ; i++) new CommitteeMember(); } // //Doesn't matter who is voting or what they vote for, //after all this is a committee. It is only about politics. public static int Votes = 0; public synchronized static void AddVote() {Votes++;} // public static boolean VotingCompleted() {return Votes == CommitteeSize;} } // class CommitteeMember implements Runnable { public CommitteeMember() { (new Thread(this)).start(); } // public void run() { takeMyPosition(); System.out.println("Well, that was quicker than normal"); } // //static and void, two highly appropriate keywords public synchronized static void takeMyPosition() { Committee.AddVote(); while(!Committee.VotingCompleted()) { try{Thread.sleep(1000);}catch(InterruptedException e){} } } }
BCNU
Back to newsletter 045 contents