Wednesday, June 22, 2011

Visual Basic Reinvented

Back in 2006, I posted about the Promise of Web 2.0 - Comparison to Macros, IDEs, and Visual Basic and pointed out that Visual Basic was a huge innovation that allowed many new developers to build applications.

We've been using Google Apps as the basis for developing some very interesting online applications.  The announcement today Building UI in Apps Script just got a whole lot easier that shows how you can use a drag and drop - Visual Basic like.  It's very crude, but interesting to see.


This is a long way from what you can do with Microsoft Office, Scripting, Visual Basic.  However, because of the cloud nature, this is interesting to see.  That said, it could very well be that Microsoft is able to beat Google to this.

Wednesday, June 15, 2011

Branchout an Example of Viral Spread Opportunity for Startups

imageBranchout, often called LinkedIn meets Facebook, has done a lot in their application to provide users motivation and opportunity to spread the word about the service.  The purpose of Branchout is helping people to network their way to jobs.  However, funny enough, I don't see the job search and showing you who you know at the company as being particularly well done.  As one review put it:

Searching by company to find connections you might have is arduous at best, and in my mind, basically useless.

But that's not the focus of this post.  Instead, I want to look at how they've integrated themselves with Facebook and particularly how they engage users to help viral spread.  And it certainly seems to have worked with reports of:

Branchout has seen explosive growth in January 2011, growing from 10K to 250K monthly users, with a total usership now in the hundreds of thousands.

That's impressive growth!  How did they do it?

Getting Going Is Easy

Branchout has done a great job making registration easy.  You connect with Facebook.  They ask for a little bit additional information and that's it, you are up and going.

They've also done a nice job of importing LinkedIn background information.  It brings in Work History and Education.  It allows you to easily edit items.

You are up and going in just a few clicks.  Of course, there's a lot more on any kind of application like this to really get things setup, but Branchout has done a good job making that happen incrementally.

As an example, they walk you through getting your profile more complete.


and as part of completing your profile, it helps you spread the message around Branchout.


But the next step is a bit questionable.  Is it even acceptable as part of Facebook's Terms of Service to require someone to Like something in order to "complete" it?  This one pushes maybe just a little too hard.  Later in this post, I'll talk about some of the downside of how they've made this viral.


One thing I liked in the design is how they treated completion of the profile:


It's now complete and you just dismiss it from that area.

Primary Interaction - Social Interaction

Okay, my profile is complete, now what?  Well it's interesting that when you look at the home page interface, most of the interface is really about social interaction.  Everything on the left side below your picture is an opportunity to build your network, I've got some details below about a few of them.  The right column also contains opportunities to expand your network.  It does have jobs and companies a little bit, but it's much more abut social interaction.


I'll explore a few of the social interactions that help with viral growth.


I think they did a good job on endorsements.  They use the profile completion to get you to do your first endorsement, so it's more natural to do them in the future.  They have the following information on your home page about what's happening with endorsements to get you into it more often.


When you go into the process of endorsements, they show you your friends and allow you to filter to those who are members and those that have career info.  Once you select someone, it's very easy to add an endorsement.  And, of course, that person gets notified and you can tweet or post your endorsement as well.  When you are done, it asks you to endorse more people.




People can also request endorsements which further promotes this and the interface to provide an endorsement for them is very easy to use.


Network and Connection Statistics

Possibly Branchout focuses too much on your network.  It feels a bit like the early days on LinkedIn.  They definitely push you to be a heavily connected user and give you lots of data.


When you drill down a bit:




I actually think they did badges pretty well.

They give everyone a badge "Early Adopter" and give you an opportunity to post it.  You can also post a Badge Request.


They've made it super easy for you to send badges to other users.  Possibly too easy as it likely devalues them a bit.  More on this below. You can either first choose a badge and then award it or choose a user and award a badge.




Notice also that on the user screen (Alan Edgett), you can give a badge, vote for Alan, request an endorsement, send a message or give an endorsement.  All of these generate social interaction.

I actually think that this particular implementation of badges is a bit weaker than what I've seen in other applications.  If you are looking at how your application can/should use badges, it might be good to review a few other sources.

5 Reasons Why You Shouldn’t Just Add Badges To Any Old Game or Website talks specifically to the issues of being careful about adding badges appropriately and not rewarding just any old action.

A lot of games and services are now copying foursquare to offer badges for actions, and in their rush to get ahead they are offering badges earlier and more often, to make players feel more rewarded. As a reviewer, I play with these services every day and now feel as if a badge has zero positive value, and is just an annoyance.

4 Reasons Marketers Should Add Badges to Social Apps - gives several reasons, but also points out that it's important to show how badges are "earned."  In the case of Branchout, they really are just votes, not as much earned.  There are a few other badges, but it's not clear how you obtain them.

Influence user behavior If users are clear on how badges are earned, badges drive desired user behavior. In our app, unearned badges are obscured visually and accompanied with instructions on how the badge is earned. In the Intel Phone of Tomorrow Challenge, users learn that the Ethernet Badge is earned by successfully inviting three friends to play and the Pocket Protector Badge is earned by commenting on 10 different ideas.


At first when I saw quizzes, I didn't think they would be viral.  Turns out they've done a couple of things to make them viral.


Within a quiz they have a question or two that asks you about your friends and when you choose one, it defaults to sharing this on their wall.  I have no idea how it chose these friends.


They also give you the opportunity to share your results.  They push pretty hard on this by making the little tiny "x" to dismiss and the BIG blue Post to My Wall where you would normally find the default interaction.


They also allow you to invite your friends to take this quiz.  I'm not sure if that really sparks that much interaction, but worth a try.


Hot or Not

As long as we are trying everything to go viral, let's also add in a proven winner - Hot or Not.  In this case, it's in the context of who you would want to work with.


See the little check box on the bottom left.  It's on by default and it shares the result with the winner.  If you uncheck it and begin to go through and choose people, pretty soon you get the following pop-up.  And the word "ignorant" is used to dissuade you from choosing that option.  Having it come up every few times is a bit annoying.


Once I was done going through 30 votes, I then understood what it mean to "vote" for someone which we saw in the interface associated with the user.  I get to see my "Friends with the most Votes".  Of course these are the people who are most connected hence they get the most votes.  So, this is really not quite the same as Hot or Not, but still similar and another way to provide viral growth.


Too Much Social Interaction?

There's been a fair bit of discussion that Branchout is a bit too aggressive in its push for social interaction.  From a post BranchOut, Inherently Viral Services And Customer Acquisition On Social Networks they point to the following kinds of responses that being overly aggressive in pushing viral can cause:





Monday, June 13, 2011

Choosing a Programming Language and Framework for Your Startup

We had an interesting presentation at the LA CTO Forum by the CTO of a startup who chose Groovy / Grails as the framework for their startup.  t prompted a good discussion around how CTOs go about choosing the programming language and framework for their startup.  

Some common themes from the discussion:

Know Where You Are Going

Before you can possibly make a choice around language and framework you need to ask all the important questions that are talked about in Startup Software Development – Do Your Homework Before You Develop Anything and  Startup CTO or Developer.  

Closely Aligned Functional Needs

The most common reason that a language and platform is chosen is because there's an existing set of (often open source) functionality that you can tap into that aligns closely with your functional needs.  For example, you may have content management and community needs that closely align with Drupal.  There are some cautions around these choices, but it is often the basis of a choice.

Similarly, you may also have an existing code base or set of libraries written in a language.  This may push you in that direction.

Of course, if you are developing native mobile apps or building something on top of a particular code base or you need to integrate tightly with something, all of those factors may push you directly towards a particular language and framework.  For example, you might choose Sencha if you are building apps that run natively on several platforms (e.g., desktop, mobile, browser).

Existing People

In many cases, the choice comes more out of who's involved and existing code than based on what the "best choice" would be.  Most of the time, there are people / stakeholders who have a particular skill set.  Or you might have an investor (or founder) who's convinced that you need to work in a given language (some VCs love Ruby right now). 


When I talk with founders and VCs there are often quite a few misconceptions around the choice of language and framework.

Misconception #1 - "You can build things 10x faster in Ruby."

With Ruby/Rails, Groovy/Grails and many other language/framework choices, some aspects of development are significantly faster.  It's way easier to get your pages setup in these languages than by choosing Java alone.  Of course, I'm not sure that anyone chooses Java alone.  They start with lots of other things.  Still there's no doubt that some aspects come quickly.  But if you are building anything with significant functionality to it, then first, don't believe the 10x.  You may get 3x improved speed for roughly 10-20% of the effort of building your site.  The rest is just down and dirty algorithmic programming.  It won't be significantly different in most languages.  Bottom line, you really are not seeing that much different between Ruby/Rails and Groovy/Grails in terms of development speed.

Misconception #2 - "Ruby is the obvious choice."

From Groovy/Grails :: Ruby/Rails :: 2011 State of the framework:

Rails and Grails are both excellent frameworks with their current releases. You really can't go wrong with either. Here are some things I find interesting about them though:

  • Rails (Ruby) does not scale as well as Grails (Groovy).
  • Rails is slightly better with NoSQL alternatives currently, but Grails is catching up quickly
  • Rails has more plugins.
  • Rails is more mature and has more features at this point in time because it's been around longer
  • Rails REST support is amazing
  • There are many more "big" Rails websites than Grails
  • Grails integrates with the JVM better than JRuby

In addition, I'm not quite sure why Ruby has become such a strong brand.  There are LOTs of language and frameworks to choose from.  If you don't believe me, take a look at some interesting data on what programming languages TIOBE Programming Community Index for June 2011 are in use and the current trends. 

Jun 2011
Jun 2010
Delta in Position Programming Language Ratings
Jun 2011
Jun 2010
1 2 Java 18.580% +0.62%   A
2 1 C 16.278% -1.91%   A
3 3 C++ 9.830% -0.55%   A
4 6 C# 6.844% +2.06%   A
5 4 PHP 6.602% -2.47%   A
6 5 (Visual) Basic 4.727% -0.93%   A
7 10 Objective-C 4.437% +2.07%   A
8 7 Python 3.899% -0.20%   A
9 8 Perl 2.312% -0.97%   A
10 20 Lua 2.039% +1.55%   A
11 12 JavaScript 1.501% -0.58%   A
12 11 Ruby 1.484% -0.61%   A
13 9 Delphi/Object Pascal 1.070% -1.50%   A
14 16 Lisp 0.935% +0.28%   A
15 15 Pascal 0.731% +0.00%   A
16 - Assembly* 0.673% -   B
17 21 Transact-SQL 0.651% +0.16%   B
18 25 RPG (OS/400) 0.637% +0.22%   B
19 23 Ada 0.606% +0.17%   B
20 - Scheme* 0.579% -   B


If you look at Ruby's numbers it shows decline which I'm not sure I believe, but I also don't buy into the hype that surrounds it either.  It's a good language/framework, but it's not that savior that some believe.

I would also suggest that languages and frameworks have come and gone for many years.  Right now happens to be one of the most innovative times I've personally seen with new languages, frameworks, etc. coming around pretty much non-stop.   Not all of the newest languages are going to be winners.  If you are planning to build something that will last, I would claim there's risk in choosing something that's the newest thing.

So what's the bottom line?  This is a complex decision.  Get get help (see Free Startup CTO Consulting Sessions).  Get a few different perspectives.  And when a VC asks if you are building it in Ruby - be prepared with a smart answer.