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). 

Misconceptions

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. 

Position
Jun 2011
Position
Jun 2010
Delta in Position Programming Language Ratings
Jun 2011
Delta
Jun 2010
Status
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.

Tuesday, May 17, 2011

Los Angeles Startup Community

I was just talking with someone who's new to Los Angeles and wanting to connect into the Los Angeles Startup Community.  I told them that I had recently seen several posts/articles talking about how vibrant the community has become.  As is usual, I couldn't remember where I had seen those posts.  So, I promised I would create this post to help point them in the right direction.  I will do my best to keep this up to date.

Los Angeles Startup Networking

Here are some guides to many of the different networking events around startups, technology, etc.:
and if you want to find informal networking, you might head over to CoLoft, in Santa Monica.
I'd also recommend you subscribe to So Cal Tech Central.  It brings together events and content for Los Angeles.

Los Angeles Startup Community Posts/Articles

Here are some interesting articles and posts on the ecosystem around startups in Los Angeles.

Venture Capital

As long as I'm pulling this together, here are some venture capital firms in Los Angeles that can help get you wired in.

Los Angeles Startup People

Some people to meet in the Los Angeles Startup Community in order to get wired in:
I wanted to put a bunch more, but was hoping I could get some help.  Who are the people you should meet in the Los Angeles Startup Community to get wired in?

Tuesday, May 10, 2011

Visualization of Startup CTO Equity and Salary Data

A long-time friend and colleague, Steve Wexler, who is great at visualization took my Startup CTO Salary and Equity Data and produced a really need interactive visualization via Tableau.  You can find it here:
Interactive Version: Startup CTO Salary and Equity Data (US)
Explanation: CTO compensation and equity at venture-backed companies

Also review: Equity for Early Employees in Early Stage 

Probably the best thing for someone to do is to go to the Interactive Version and look things up using their specific situation.  You can click on the filters such as Founder Status (#3) and Job Title (#4) to filter to that particular data.

You can also glean additional information by hovering over a mark. For example, if you hover over the big circle in California you can see that there were 303 responses for the San Francisco Bay Area.

The larger the circle, the larger the number of responses.
For example, let’s say you are only interested in seeing non-founder CTO compensation for West Coast-based organizations with 50 or fewer employees that have been in existence for seven or fewer years. By selecting different marks and applying the “years” in business filter, you can glean that the average compensation for a respondents fitting into these categories is $201,495.

You will definitely want to choose some of the other tabs to visualize the data in different ways.  One of the more interesting to me was the equity bin analysis:
image
It shows the dramatic difference in equity for Founder/CTO vs. Non-Founder CTO for startups that have raised <$10M and are Series A or B.  Most non-founders have less than 2%.  Most Founders have greater than 5%.  It makes sense and what I suspected, but good to see the numbers are backed up.
Of course, as you would suspect, equity percentages dilute based on years in business.

Give it a try and let me know if you find anything interesting.

Wednesday, April 27, 2011

Hiring a CTO for Your Startup

Several people have recently come to me to help them source and/or hire full-time CTOs for their startup having found me through my post that looks at: Startup CTO Salary and Equity Data

The first thing I do is suggest they explore if they really need to hire a full-time CTO for their startup and if so, what kind of CTO they need.  There's a lot on my blog already around this topic.  I'd suggest: Startup CTO or Developer, Startup Founder Developer Gap, Part-Time CTO, Technology Advisor, CTO Founder, Acting CTO.  In some cases, this changes the conversation from "I need help hiring a full-time CTO for my startup" to "I need help finding a part-time CTO who can direct a full-time developer."

image

But let's assume you really do need a full-time CTO for your startup and you've done the homework so that you know the specifics of what this CTO will be doing for you.  You now have two issues: sourcing and hiring.

I'm not going to spend time on sourcing because I'm really not in that business.  I have a great network of fellow CTOs, especially in the Los Angeles area.  I've organized the LA CTO Forum (a private group of 150+ CTOs in Los Angeles) for 10+ years.  I often will tap into that network to try to help find people for startups.  But that's a pretty small pool and it's really the top end of the spectrum.  There are also a few recruiters that I recommend.  But sourcing candidates is tough.

Interviewing them is also tough, especially if you are not yourself technical.  Get a Technology Advisor that can help.  Even with that help, there's a lot you are going to need to do.  And I've talked about lots of things you can listen for as a non-technical person to determine if this will be a good CTO candidate.  There are a bunch of questions in Startup Software Development – Do Your Homework Before You Develop Anything, Startup Founder Developer Gap,  and in Startup CTO or Developer.  You should be hearing many of these questions coming up from your CTO candidate.

Interviewing and Hiring Process

Get a resume and LinkedIn profile and review both closely:

  • Do they know the world of startup technology?  It's very different than at large organizations.  This is a must.
  • Do they have a solid development background?  A must if you are going to lead developers. 
  • Do they have experience leading developers?  Several years, ideally in a couple organizations.
  • Have they found and hired developers?  Have they worked with outside developers?
  • Have they switched jobs too much?  Not enough?
  • Be on the lookout for words that suggest they were there went it happened, but not really doing the work.  This happens A LOT among technical people.  Words and phrases like: led, directed, knowledge of, assisted with - all suggest that they didn't really do it.  Make sure you plan to drill down to what they really did.

The next step is a phone interview.  Often it's only about 20 minutes.  It will be spent:

  • Finding out more about the reality of their background.  It's often hard to tell from a resume and LinkedIn profile.
  • Finding out what skills they think they have and how they match with what you need.

If this will be a hands on role, then you need to conduct some kind of Technical Screening/test.  If you are a non-technical founder, you will definitely need help to do this.  If this is not a hands on role, then you might be able to get away without it.  But I'd recommend someone technical still interviews them.

Then comes the in-person interviews.  There are lots of good resources on this, especially for hiring technically-oriented people where intelligence and problem solving is a key ingredient:

Just be warned - asking these kinds of hard questions (and doing technical tests) can result in VERY uncomfortable situations.  The candidate clearly doesn't have a clue how to answer the questions.  You can nudge them along to help them get to the answer.  But it becomes pretty clear when things are not working out.  I've seen flop sweat, people who just want to run from the room, and other similar reactions.  You need to be ready to help the person out of an uncomfortable situation.

I do have a question though - how long should the interview continue once it's become clear on both sides that the candidate has completely bombed?  Is it fair to continue?  Should you look for an early exit?  I most often look for a graceful, early exit.  But it can feel like it drags on a bit even in that case.  Any suggestions on what to do?

Make sure you do all the normal things during an interview:

  • Give them lots of opportunity to ask about the business and any other questions they have.  Listen for the right kinds of questions (see above).
  • Make sure you take notes during and after the interview.  It sometimes is hard to remember the details otherwise.
  • Cover all the different aspects of the job: technical, smart, analytical, able to inspire, lead, direct, manage, good communicator, good decision making, etc.

Now you have a couple of good candidates.  They are bright, eager, a good fit.  Make sure you do reference checks.  Most often I ignore the list of references they provide.  If this person is from Los Angeles, I know I can easily find a few people who have worked with them.  Even if they are from somewhere else, I likely can navigate LinkedIn to find people to talk to.  The references they provide are often a last resort.

Okay, they check out.  Act fast.  If they are good, the market right now is HOT for CTOs.  Have your offer together in a formal letter, but call and make the offer by phone.

Once you have an acceptance, please be nice to the other candidates and let them know that you've hired someone else.  Don't burn bridges.  You never know when you will run into those same folks again.  In Los Angeles, the answer is "often."  I personally do this via a quick call and follow-up with email/LinkedIn connection, etc.

I will close with one last thought.  Trust your gut.  Any time I've hired someone who somehow didn't quite feel right, I was sorry later.