What Makes a Good Web Development Framework?

Hosted Software, Project Management No Comments »

I recently started using Blueprint, a CSS framework “which aims to cut down on your CSS development time”, for a Web development project. I have found I can whip up a nicely laid out site that works across all browsers *much* faster with Blueprint than I could without it. As a result, I spend more time on creating business value and less time dealing with the many obscure bugs in Internet Explorer 6.

Having said that, I’ve had the opposite experience with other frameworks. This got me thinking, “What makes a good framework?”

Note: In the below examples, I compare Blueprint with Microsoft’s ASP.Net. Admittedly, this is sort of an apples-to-oranges comparison: ASP.Net is for server-side Web development whereas Blueprint is for client-side Web development. Nonetheless, they are two frameworks I am actively using and hence enable me to give personal examples.

Note 2: Even though I seem to suggest otherwise below, much of ASP.Net is great. In fact, we use it to power
Faves.com. We just stay away from the parts of the framework that violate the following criteria.

With that out of the way, I think a good framework is one that ultimately saves time and/or cuts costs in meeting business objectives because it

  • Avoids reinventing the wheel: This is arguably *the* point of choosing a framework instead of coding something directly. For example, the Blueprint framework gives me the following that I would otherwise have to create myself:
    • An easily customizable grid
    • Sensible typography
    • Relative font-sizes everywhere
    • A typographic baseline
    • Perfected CSS reset
    • A stylesheet for printing

  • Still lets me do things the “raw” way: All frameworks have their limitations, and I often have to revert to doing something outside the framework. When using Blueprint on a page, I can still mix in my own non-Blueprint CSS styling and layout. On the other hand, if I want to use some of my favorite ASP.Net controls on a page, I am forced to adopt the ASP.Net Web Forms model and its associated evils for the entire page.

  • Takes less time to learn than how much it will ultimately save: Blueprint *is* a subset of XHTML and CSS. ASP.Net, in an effort to make things easy for the novice user, actually makes me understand a completely different model. Ironically, this can make things more difficult for the seasoned developer.

  • Creates consistency across the team: Implicit in using Blueprint is a set of naming conventions. This makes it much easier for a team of developers (or if using a Blueprint with a CMS, the content creators) to specify and read each others’ layouts.

  • Follows best practices: The framework should deliver as is “generally expected”. For example, there are a number of SEO best practices for having your site properly indexed by search engines. But, ASP.Net violates a number of these, including this one. I need to find creative ways to work around each violation, costing me time and money. Ideally, best practices compliance is just included.

  • Lets me view the source code: There are times I need to know what exactly the framework is doing in order to diagnose or prevent bugs.

  • Is high performance: Slow performance is an issue if it *meaningfully* degrades the customer experience or *meaningfully* increases server and support costs as compared to how much time and money I am saving by using the framework.

On Compensation in a Startup

Entrepreneurship 1 Comment »

Disclaimer: I am not a lawyer, and I cannot be held responsible for accuracy of the information below. Use at your own risk.

I get asked from a lot of folks who are considering startup employment if x% is sufficient equity. As with so many things, the answer is, “it depends”. Below is one rough framework for coming to a number. But, you should also seek other methodologies, such as finding averages for comparable roles at similarly sized companies in the same geographic region.

Initial questions

  1. How much cash compensation will you be giving up by working at the startup instead of at Large Company? As this number gets higher, your equity compensation becomes more important.
  2. What do you think the likelihood is that the company will have a liquidation event (e.g. being sold to Microsoft) before your options expire? Note: Stock options often expire as a result of termination of employment.

If your answer to 1 is a high number *and* your answer to 2 is a low number, then think hard about passing Go.

Note: One thing I have not considered in this post is that the acquiring company (if your company is acquired) will often offer lucrative compensation plans to retain the top employees.

Next step: the math

To *roughly* determine your cash payout on liquidation:

Payout = (company value at liquidation – company value represented by option strike price) * ownership percentage * dilution

Then, to *roughly* value your yearly compensation (Note: You should discount future cash payments, but we’ll leave that out for simplicity):

Comp = salary + bonus + (Payout / number of years to payout)

Note the importance of the company value represented by option strike price in the above equations. If the company value at liquidation is not at least the same, you will receive no payout from your options.

An example

  • Marc’s strike price reflects a $1M valuation.
  • The company sells for $40M after 3 years. Marc is still working there, and his options have not expired.
  • Marc’s option package represents 0.5% of the company, but he is only 3/4 vested.
  • There has been an investment round that diluted everybody’s ownership by 30%
  • So, we get:
    • Payout = ($40M – $1M) * (.75)(0.005) * (1 – 0.3) = $102,375
    • Yearly Comp = $85,000 + $10,000 + $102,375 / 3 = $129,125
  • Marc thinks this 3-year compensation package is better than he will get at Large Company, and he looks forward to the learning experience, so he takes the job!

On Packaging: Wordpress vs. Drupal

Hosted Software 5 Comments »

In the past month or so, I’ve spent some time with two content management systems: Drupal and Wordpress. Both products make it easy to build and edit relatively sophisticated Web sites from within the browser.

However, only Wordpress gave me that “Aha! moment” you get when a product so seamlessly fits your functional needs and is fun-to-use at the same time. In fairness to Drupal, this is not particuarly surprising since:

  • Wordpress is designed for a more specific scenario. In Wordpress, you have Blog Posts and Pages. In Drupal, you have a very abstract concept of a Node. While an instance of a Node can be a Blog Post or a Page, it can also be many other things.
  • Wordpress comes pre-packaged with the plugins that meet this scenario. While both products have a robust plugin architecture, Wordpress is good to go out-of-the-box whereas Drupal requires you to install modules (once you figure out what they are) to have a system comparable to Wordpress.

Anyways, the takeaway should *not* be that Drupal sucks. On the contrary, it powers some of the largest sites on the Web, including FastCompany.com. The takeaway here is that there is an opportunity to turn Drupal’s “weakness” into a strength, by leveraging the generic architecture and wide availability of plugins to create Drupal distributions for specific customer scenarios and segments.

One such customer segment is non-profit and volunteer organizations. As an example, I am a fan of Seattle Works‘ Web site. The event planning features of the site are arguably what make the organization so active. For another time, I’d like to see a) if there already is a hosted Drupal distribution that serves this segment as *well* as the Seattle Works site does for its members and b) if not, what it would take to create one.

Project Management: Representing All Views

Entrepreneurship, Project Management No Comments »

I am currently reading Scott Berkun’s excellent book on project management, Making Things Happen and am enjoying it for it’s directness. It goes straight to the essence of being an effective project manager and leaves specific methodologies to other books.

His How to figure out what to do chapter is a good refresher, stating that the best project managers are multidisciplinary and able to synthesize business, customer, and technology viewpoints:

To me, this Venn diagram is *the* measuring stick for project-oriented settings, even when you are not the project manager:

  • When you’re looking for a job: Is the organization setup for success, with strong representation in all three areas?
  • When you’re writing a business plan: Does the plan adequately cover all three areas?  Or more specifically, does it answer the questions that should be asked of each of the three areas?
  • When you’re building a project team: Have you allocated sufficient headcount in each of the three areas?
  • When you’re a programmer at Microsoft (in an ideal world): Are you making engineering decisions with the key business drivers and customer needs & pain points in mind?

Later on in the chapter, he dives into the customer research component, describing how it is often incomplete or outright invalid — with folks ascribing too much importance to a single research method. Customer research experts make use of multiple methods, including focus groups, surveys, site visits, usability studies, and market research to make up for the limitiations in each individual method.

The entire chapter, containing an analysis of each research method, is available online for free [pdf].

Microblogging with Twitter & Faves

Hosted Software No Comments »

I have included widgets from two “microblogging” services, Faves.com and Twitter, in the sidebar of this blog. Not surprisingly, I use these microblogging services to broadcast “stream of consciousness” thoughts whereas I plan to use this blog for hopefully more thought provoking and “on-topic” posts.

But, why *two* microblogging services?

  • I use Twitter to broadcast what I am doing and to watch what others are doing.  It simply helps me be “in the know”.  The no-frills format of a Tweet on Twitter, specifically the 140-character limit and SMS compatibility, is ideal.
  • I use Faves.com to share items such as news articles, videos, and recipes that will be beneficial (educational or entertaining) to others and myself.  The automatically generated tags and thumbnail in a Fave, combined with the rich permission system, make Faves.com ideal for this scenario.

Openads – A Real Life Example, Part 1

Hosted Software No Comments »

I recently setup Openads for Faves.com. Openads is a powerful ad server that lets your manage how ads are delivered on your site. It is similar to Google’s Doubleclick except that a) Openads is free and b) you can host it yourself.

You begin by telling Openads about your inventory. This is done by defining zones and then assigning the appropriate advertising campaigns to these zones. You then customize delivery (i.e. with what frequency or under what conditions a specific campaign for a zone is shown) by defining delivery rules.

While the documentation is reasonably good, I had trouble getting my head around the terminology without a real-life example. So, I am including our configuration, slightly simplified and modified, over my next few posts. Enjoy!

For this post, here is how Openads terminology maps to our scenario:

  • Advertiser: Google
    • Campaign: AdSense
      • Banner: 468×60
      • Banner: 728×90
  • Advertiser: Amazon
    • Campaign: Omakase
      • Banner: 468×60
      • Banner: 728×90
  • Advertiser: AcmeMediaGroup
    • Campaign: FunnyWigs.Com (Direct Ad Sale)
      • Banner: 468×60
      • Banner: 728×90
  • Publisher: Faves.com
    • Zone: 468×60 – Top
    • Zone: 728×90 – Top
    • Channel: shopping - Allows the publisher to request ads specifically targeted to shopping inventory.
    • Channel: nonshopping

In my next post, I will talk about delivery rules. These tell Openads when to show each of your banners.

Design by j david macor.com.Original WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in