Category: Tech

  • Outsourceable Software Development Projects for Startups

    Technology startups should make software development one of their core competencies. All too often when talking to entrepreneurs I ask the “how are you building it” question and they quickly say they’re outsourcing it — I cringe momentarily. Most of the time they say they really like their outsourcing firm but that things are taking longer than expected due to a number of factors. Software engineering still has a fair amount of art to go with the science.

    Projects that are fairly small and extremely definable are outsourceable for startups. These projects are almost always complementary to the main product and interface via APIs or some other mechanism. Here are some example projects that are readily outsourced:

    • WordPress plugins (via a WordPress expert)
    • Browser plugins
    • Microsoft Office/Microsoft Outlook plugins
    • Simple smart phone apps (ones core to the business need to be done in-house)

    Any software development can be outsourced but I recommend technology startups do their engineering in-house and only outsource related projects that plug into their core application.

    What else? What are your thoughts on outsourceable software development projects for startups?

  • The Main Challenge with Rapid Web App Development

    Rapid web application development is amazing. You can go from idea to prototype in a weekend and start testing the concept with real users in no time. The time and energy it takes to launch a web app is 1/50th of what it used to be 10 years ago. There’s one main challenge with rapid web app development:

    Product development can easily outpace the customer feedback.

    Think about it: users need time to experiment with new features and provide feedback. With a clean code base, no code debt, and frameworks like Rails or symfony, application development is blazing fast. In fact, it is too fast if you don’t have an opinionated vision of what will be included, and more importantly, what will be excluded from the product. Yes, having a culture of experimentation is great, but that needs to be measured against features that are truly experiments, and will be removed if they aren’t successful.

    The next time you high-five your co-founder due to the awesome features just implemented, step back and ask if the pace of development is in-line with market feedback and the new features will be used by 80% of your desired customer base.

    What else? What do you think is the main challenge of rapid web app development?

  • Two Schools of Thought on Scaling B2B SaaS App Data

    Scaling the data storage for B2B Software-as-a-Service (SaaS) applications typically falls under two schools of thought: one or more fully-contained accounts per database or specialized multi-tenant sub-systems that handle certain types of data. There are pros and cons to each approach.

    Fully-Contained Accounts

    B2B apps are often simpler than B2C apps when it comes to data storage. In a B2B app, one account/user doesn’t need to know about another, whereas in a B2C app accounts/users have to have a global context for all other accounts/users (think Facebook Friend requests). Fully-contained accounts can be on individual databases or multi-tenant such that one or more accounts are on the same database delineated by an account ID.

    One analogy I like to use is housing for people. A fully-contained account on a private database is a like a single family home. Multiple fully-contained accounts on one database is like one building in an apartment complex where everyone gets their own space but there are greater economies of scale having everyone together.

    Challenges for fully-contained accounts in a multi-tenant environment arise when the size of the accounts start changing and growing at different rates. Back to the apartment complex example, one family wants a home gym and decides they want a new bedroom for it, only all the other three bedroom apartments in the complex are full. What does the family do? Well if the family can afford it the tendency is to go to a single family home that is suited uniquely to them.

    A single family home is much more expensive to maintain, on a per family basis, compared to a building in an apartment complex. Services like landscaping, security, and amenities like a gym or pool are much more affordable when spread out over dozens or hundreds of people. A single family home can have all those accoutrements but the cost structure is no where near the same.

    Specialized Sub-Systems

    Now, assume some accounts in the multi-tenant fully-contained database approach grow so large that they need their own dedicated database. With the housing analogy, larger families start moving to single family homes from the building in an apartment complex. Assume the apartment complex didn’t have a pool — the app didn’t have that feature yet. Now, the startup decides a new feature is needed — the equivalent of a pool — and adds it to the application. The pool is manageable in the apartment complex that houses 100 families with the cost of chemical treatments, cleaning, etc spread out over a large number of users. For the single family homes that were created by the accounts that got too large, each now has a pool by the nature of SaaS applications having a single code base for all customers, and those pools all need to be managed. Going from pool to pool, even with automated tools and help, becomes less efficient and more costly to do chemical treatments, cleaning, etc.

    Specialized storage and application sub-systems are designed to solve this problem. Think of a simple survey application. The info for the accounts, users, billing, survey questions, and more are pretty simple and not storage intensive. What is storage intensive is keeping track of all the survey responses and survey respondents. That information is going to grow exponentially compared to the core account data. It deserves a dedicated sub-system.

    Now, back to the housing analogy. Instead of families desiring a home gym moving to single family homes, the apartment complex introduces new buildings in the same complex, only the different buildings serve specific functions like a gym with an indoor pool, parking deck, and storage units for for each family. The individual features and storage needs get dedicated attention such that the regular gym with pool can grow into a 100,000 square foot facility with Olympic-size pool, and all the families can stay put in the apartment building that’s part of the same complex. Areas that change disproportionately can get the necessary attention without affecting other aspects of the application.

    Conclusion

    When starting out, fully-contained accounts is easier to implement and doesn’t require much overhead, making it the right choice for young B2B SaaS apps. If data grows linearly and everything is tightly related, keep it simple with fully-contained accounts. As the application grows, and certain types of data grow disproportionately faster than others, specialized sub-systems scale better and in a more cost-effective manner, making them the right choice for mature, data-intensive B2B SaaS apps.

    What else? What are your thoughts on these two schools of thought for scaling B2B SaaS app data?

  • Application Performance Over Time for Startups

    Application performance/speed is a feature that’s incredibly valuable. Think about it: if a website or SaaS application performs slowly on a regular basis you’re much more likely to start evaluating other options. For a complex, multi-tenant web app the number of moving parts grows over time making consistent, fast performance more and more challenging.

    Here are some items to consider doing on a regular basis:

    • Evaluate raw database size on the filesystem as well as number of rows in the 10 largest tables (e.g. take a snapshot of this in a table or manually put the values in a Google Spreadsheet once per month)
    • Track the amount of time it takes to complete nightly background jobs and record it on a regular basis for time series analytics
    • Incorporate in-app tools to measure database query execution time as well as log slow queries
    • Measure the page load time of the 25 most important user functions with real browser checks using Rigor.com, or a similar tool, on a daily basis

    One of the key factors is measuring the rate of change and growth over time — it’s best to get out of front of potential speed issues rather than deal with them when they arrive. Application performance is a feature and needs to treated as such.

    What else? What are some other items to consider for application performance over time for startups?

  • Notes from the Facebook S-1 IPO Filing

    The eagerly anticipated Facebook S-1 IPO filing is finally available on the SEC’s website. Facebook represents the once-a-decade company that truly changes the world (think Google as another one). The Facebook IPO filing, unlike some of the other companies to go public in the last couple quarters, gets so much attention that the most interesting facts have already been shared. I’ll try to share those items along with some less common items that are still very interesting.

    Here are notes from the Facebook S-1 IPO filing:

    • Mission: make the world more open and connected (pg. 1)
    • More than 800 million monthly active users (pg. 1)
    • More than 425 million mobile monthly active users (pg. 1)
    • 2.7 billion Likes and Comments per day (pg. 1)
    • CEO has control over key decision making as a result of his control of a majority of our voting stock (pg. 5)
    • Revenue (pg. 4):
      2009: $777M
      2010: $1,974M
      2011: $3,711M
    • Net income (pg. 4):
      2009: $229M
      2010: $606M
      2011: $1B
    • Advertising represents 85% of revenue (pg. 12)
    • Facebook has been or is currently restricted in whole or in part in China, Iran, North Korea, and Syria (pg. 15)
    • Culture emphasizes rapid innovation and prioritizes user engagement over short-term financial results (pg. 16)
    • Zynga accounted for approximately 12% of revenue (pg. 18)
    • If Mr. Zuckerberg controls the company at the time of his death, control may be transferred to a person or entity that he designates as his successor (pg. 21)
    • 3,200 employees (pg. 23)
    • More money is spent on marketing and sales than research and development showing that most of their ad sales aren’t done via a self-service model (pg. 40)
    • Early revenue (pg. 43)
      Year 1 – $382,000
      Year 2 – $9M
      Year 3 – $48M
    • $2.4 billion in restricted stock unit expense that hasn’t been charged yet (pg. 48)
    • Unsecured $2.5 billion line of credit that’s unused (pg. 57)
    • Television, print, and radio accounted for $363 billion, or 62% of the total advertising market in 2010 (pg. 78)
    • From 2010 to 2015, the worldwide online advertising market is projected to increase from $68 billion to $120 billion (pg. 78)
    • Facebook stores more than 100 petabytes (100 quadrillion bytes) of photos and videos (pg. 90)
    • Facebook.com is largely written in PHP (pg. 90)

    Overall, the Facebook S-1 IPO filing is straightforward and detailed. The revenue and profit growth of Facebook over the past eight years is astounding. For potential investors. the fact that Mark Zuckerberg single-handedly controls the company makes for an unusual situation. Facebook deserves to be in the 10x revenue club.

    What else? What are your thoughts on the Facebook S-1 IPO filing?

  • Startups Should Default to Laptops for Employees

    Three years ago we started defaulting laptops for employees in place of desktops and we’ve never looked back. Laptops are so cheap, portable, and powerful that there are few reasons not to use them. When a laptop, especially a MacBook Air, is paired with a nice monitor (at least 24″) you have the ultimate modern workstation. Yes, some hard core CPU-intensive applications and games are better for high-end desktops but those are few and far between.

    Here are a few items to keep in mind when you go to a company-wide laptop plan:

    • Conference room laptops should be locked down because inevitably people will forget their laptops at home and borrow it without telling anyone
    • Extra laptops and laptop chargers should be ordered and managed by someone in the event an employee forgets theirs at home
    • Theft of laptops will occur when an employee forgets about it in their car, so be prepared with remote-wipe software and require a password upon machine start
    • Ensure that laptops during meetings are used for notes and not email (do the lunch check: if someone calls someone out for checking email during the meeting and they are right, the person checking email buys the other person lunch and vice versa if they’re wrong)

    Laptops for all employees has worked great for us and I highly recommend it.

    What else? What are your thoughts on startups defaulting to laptops for employees?

  • Multi-Tenant SaaS and Virtualization are Two Different Things

    Saas-Grund mit Plattjen
    Image via Wikipedia

    Recently I talked to two companies that said they were Software-as-a-Service (SaaS). After asking more questions and drilling into details for a bit I came to the realization that what they were referring to as SaaS was independent virtualized instances of their product in the cloud. SaaS, to me, is very different.

    Here’s how I define multi-tenant SaaS:

    • Application servers that support multiple clients
    • Databases that support multiple clients in the same tables
    • Infrastructure (load balancers, fail-overs, etc) to support many customers

    Virtualization of the application delivered via the cloud is essentially a more manageable version of the late 1990s Application Service Provider (ASP) model, and not SaaS. A major benefit of SaaS is the engineering efficiencies and scalability of multi-tenant application services and multi-tenant database instances. Multi-tenant SaaS and virtualization are two different things.

    What else? What do you think of people calling their business model SaaS when it isn’t multi-tenant?

  • The Power of Twitter in Conferences

    Image representing Twitter as depicted in Crun...
    Image via CrunchBase

    Twitter really shines in conferences. Let me explain. Conferences, even with the advent of wonderful technology, are about the sharing of ideas. Some of the best idea sharing takes place between speakers and presentations. That’s right, the hallways and rooms between sessions are just as important as the speakers because it opens up the conference for attendees to talk to other attendees.

    Twitter makes conferences that much better.

    Twitter, combined with hashtags, provides a universal mechanism for like minds to connect more efficiently at events. At recent conferences I’ve attended, people in the audience constantly tweeted, providing their opinion and analysis of the presentation on the fly. With the hash tag of the event, I’m able to follow the conference-specific tweets and reach out to like-minded people in the same room. This then leads to quality conversations with people I might not have met otherwise.

    There’s also better feedback via Twitter to the people that put on the conference. The feedback is faster, the information is more accessible, and the messages can be saved for future reference. As a conference organizer, it’s better to know what’s working and not working while it is happening rather than after the event has already finished.

    Twitter makes conferences better and is a great communication mechanism for events.

    What else? What are your thoughts on Twitter at conferences?

  • Why VCs Won’t Like Fred Wilson’s Valuation Posts

    Fred Wilson
    Image by Lachlan Hardy via Flickr

    Fred Wilson has a rich history of bringing more transparency and understanding to the venture capital world, including the dynamic with entrepreneurs, via is popular blog avc.com. Recently, there have been two especially interesting posts:

    Valuations for startups, other than outliers published on TechCrunch (see Dropbox’s $4 billion valuation on $30 million in revenue), are often a closely guarded secret. One of the big advantages for traditional VCs is the opaque nature of information and the frequency of negotiating deals. Think about it: a VC might negotiate a couple deals per year while a successful entrepreneur might negotiate a few deals in a lifetime. The more information that becomes available results in a more efficient market for VCs and entrepreneurs. While VCs will always have an advantage the dynamic is much more less heavily favored for them than previously.

    VCs won’t like Fred Wilson’s valuation posts because they present examples of high valuations and low VC ownership positions. Entrepreneurs, when they read the posts, are naturally going to think those valuations are representative of their startups. Note that Fred uses terms like category leaders, of which most startups aren’t.

    Also, when he talks about investing $3 million at a $30 million post-money valuation, implying a 10% ownership stake, that’s not a high enough stake for most VCs to get out of bed, unless the startup is at a very late stage. Entrepreneurs expecting these valuations and VC ownership positions are going to be very disappointed. And, VCs aren’t going to like having to deal with the push-back and convincing that these aren’t normal.

    I like VCs and think they are an important part of the eco-system, but I’m sure these posts are going to cause headaches for VCs and entrepreneurs alike.

    What else? What do you think of Fred Wilson’s valuation posts?

  • Every Startup CEO Should Learn to Write Code

    The PHP logo displaying the Handel Gothic font.
    Image via Wikipedia

    When I first started out in December of 2000 my goal was to build a Software-as-a-Service (SaaS) content management system for small businesses (see Iterate or Die). I had been building simple HTML (CSS wasn’t even part of the equation then) sites for three years but didn’t know how to write code. At the time, I enlisted some classmates of mine to be summer interns to build out the product for $10/hour. The thinking was that I could just focus on product management and sales.

    Well, at the end of the summer I quickly ran out of money. Only having a couple customers that paid $30/month wasn’t enough to fund much software development even if it was relatively cheap at the time. Not knowing any better I picked up a teach yourself PHP book and jumped in head-first to writing code. It was one of the best moves I ever made.

    Every startup CEO should learn to write code.

    Here are some benefits of startup CEOs learning how to code:

    • You understand the technical architecture and trade-offs of different product decisions
    • You can call B.S. if a technical person pushes back on something being too difficult/time consuming
    • You become a much better manager of other technical people
    • You never run out of things to do (believe it or not I’ve had non-technical co-founders come to me saying there’s nothing for them to do as they are waiting for the programmers to finish something up)
    • You can better communicate with prospects and clients as you’re not dependent on a sales engineer

    Startup CEOs should learn to write code and become a better leader. Programming, much like finance or logic puzzles, is easy to pick up with some effort and patience. The goal isn’t to become a full-time programmer but rather to be a stronger part of the team.

    What else? What are your thoughts on startup CEOs learning to write code?