Building on my Principles for First-Use Tools, I'm thinking about Principles for Express. Express is a tougher job because its customer base spans so many people -- from professionals coding after hours to students to people who aren't developers using it to learn or to accomplish some task at work to people who just want to have fun.
In thinking about this customer base and what makes Express attractive to them, I'm narrowing down on some principles that I'd like to apply to the decisions about which of the VS Standard-and-above features we consider for putting into Express. Here are two:
- Keep concept count as low as possible. I've written before about concept count, but keeping the number of things a person has to contend with in order to accomplish a task low is a major differentiator between Express and the higher-level products.
- Focus on attracting new developers. This means that we'd focus on things that would make the product, for example, attractive to first-time developers or to other people who don't currently program.
There are others I've looked at: limiting download size, price, etc. But in the end those seemd to be more like tactics to achieving these two items.
The challenge, however, is making these concrete. LINQ designers: in or out? Would LINQ lower concept count? Yes, if we were able to simplify our overall data access strategy. Would it attract new developers? Yes, if it weren't positioned as a data access system for brainiacs. So LINQ becomes less interesting as a specific, and having a coherent data access strategy becomes more interesting. And harder.