development THE OPEN STACK! Open Stack vs. C#/.Net Platform! Focused only on building Web based Startups!Speaker! This Talk:! Bryan Starbuck! ! Video: <Coming>! CEO & Co-Founder – Stealth mode startup! ! Slides: - Former CEO of TalentSpring (Acquired 2010)! www.slideshare.net/BryanStarbuck/presentations! - Former Engineering Managed! Linked-In: Linkedin.com/in/bryanstarbuck! ! March 21st, 2012!
MSFTees often do Well in Startups! MSFTees have Great RAW Potential in Startups:! ! Microsoft interviews ﬁnd great characteristics for startup people: Strong drive, intelligent, great computer science fundamentals, face problems head-on, strong passion for building products and businesses.! ! The Reason for this Talk:! ! In my many lunches with MSFTees wanting to join startups, they are often surprised by many things in this talk! ! Some MSFTees are always looking at the startup space. ! ! A healthy company with 9-year average MSFT employment results in 1,000 people leaving Microsoft every year (@ 90k employees)! ! I want MSFTee to Startup transitions to happen as smooth as possible!Slide 2! bryanstarbuck.tumblr.com!
Ex-Microsoftee Founded Startups! Microsoft Founders of Startups (Acquired, IPOed, or Signiﬁcant revenue):! ! Jonathan Sposato @ Picnik: ACQUIRED! ! Dan Shapiro @ SparkBuy.com (Shell) ACQUIRED! Rev, Acquisition or Market Cap ! Mike Matthew @ All Stars Directory ACQUIRED! Amount:! ! TA McCann @ Gist.com (Exchange) ACQUIRED! $1+ billion: 3! ! ! Joe Giordano @ PayScale! Companies! ! Rich Barton @ Zillow & Expedia IPOed! ! Mike Slade @ Starwave ACQUIRED! $100+ million: ! 6! ! Kevin Merritt @ Socrata! Companies! ! Jordan Schwartz @ Pathable (MSN)! $30+ million: ! Many! ! Bill Bryant @ Qpass, Visio, Mixxer, etc.! ! Hadi Partovi @ Tellme Networks & iLike ACQUIRED! ! IPOed! 5! Alex Castro @ Delve Networks (Shell) ACQUIRED! ! Rob Glaser @ Real Networks IPOed! ! Gabe Newell @ Valve! ! Alex St. John @ WildTangent! Companies! ! Bryan Starbuck @ TalentSpring (Shell) ACQUIRED!Slide 3! are often conﬁdential and anonymized. Numbers Some information came from people in the companies listed! bryanstarbuck.tumblr.com!
Deciding is a BUSINESS Decision! Open Stack vs. C#/.Net Platform! How many startups Decide:! ! Cost to run the company (Often head-count costs)! ! Speed to market! ! No disadvantage competing with competitors!Slide 4! bryanstarbuck.tumblr.com!
Engineering is VERY Expensive! Assumptions: Startup Engineer Salary $80k / year ! Cost to Run company is: 60% of Engineers salary (This is true BEFORE adding big sales teams or marketing costs. Pre-launch and often post-launch for non-VC funded companies)! BLACK is just direct engineer salaries. BLUE is average cost to run the company, pre-big marketing & sales! Important Take Away:! ! Engineering COSTS are often the BIGGEST factor! ! Competitors can win with smarter ! Engineering WASTE will KILL! engineering cost structure!Slide 5! bryanstarbuck.tumblr.com!
Visualize the problem of Costs! Scenario #1: Churning Marketing pages of a Website:! (For SEO, improving Conversion rate, or expanding Marketing information)! ! ! ! $6k to $10k! $0k! ! Requires Dev to Change! Marketing changes w/o Devs! If it requires touching code to change the marketing pages of a website, it can take 1-dev month in a year of normal changes! Scenario #2: Many vs Few dev-days to create each page:! ! If a startup normally wants to add 20 web pages per month (settings, etc.). What is the cost per month?! 1/2 Pages per day! 3 Pages per day! ! ! $15.8k for 20 pages! $2,640 for 20 pages! Inefﬁcient Startup! Efﬁcient Startup!Slide 6! bryanstarbuck.tumblr.com!
Beneﬁts of the! .NET Platform!Slide 7! bryanstarbuck.tumblr.com!
.NET: Incredible DEBUGGER! Big Strengths in the .NET Stack:! 1 The Open Stack does NOT have a debugger nearly as incredible!Slide 8! bryanstarbuck.tumblr.com!
Platform is Smaller & Less Redudancies! Big Strengths in the .NET Stack:! 2 The Open Stack has a long-tail of versions of a COMPONENT for each part of the stack, all varying in quality and levels of support!Slide 9! bryanstarbuck.tumblr.com!
Linux Servers require Time to Learn! Big Strengths in the .NET Stack:! 3 Windows server is simple to conﬁgure. Linux server takes an investment to learn!Slide 10! bryanstarbuck.tumblr.com!
Microsoft has great .NET Local Engineers! Big Strengths in the .NET Stack:! 4 Lots of .NET engineers locally. Microsoft contains some great engineering talent! ! GREAT Engineers are always hard to ﬁnd! ! Some MSFTees (~5% ?) can work without salary for 6-months to a year! ! Enough to scale for quite a while! !Slide 11! bryanstarbuck.tumblr.com!
Zero worry about IP ownership! Big Strengths in the .NET Stack:! 5 No worries on IP ownership! ! This normally isn’t a problem for startups, but this is valuable in some cases! IP & Open Source! ! Almost never a problem! ! Adjustments inside OS ! If running on the server, componets are often not critical doesn’t require disclosing IP! (aka “Redistributable”)! ! Much less problematic than most ! Startups use OS MSFTees realize! components, but APIs ! Not a problem during acquisition! bridge across them! ! Many more reasons…!Slide 12! bryanstarbuck.tumblr.com!
Great for DESKTOP Applications! Big Strengths in the .NET Stack:! 6 Great for Windows Desktop Apps! ! This talk is focused on Website startups! ! It is hard to beat .NET for Windows Apps!Slide 13! bryanstarbuck.tumblr.com!
Beneﬁts of the! “Open Stack”!Slide 14! bryanstarbuck.tumblr.com!
Deﬁnition of “Open Stack”! “Open Stack” ≠ “Open Source”! “Open Stack” ≠ “Linux Operating System”! ! Deﬁnitions:! “.NET Stack”: Components across this stack generally interop together via the CLR, Windows OS COM or ASP.NET generally! ! “Open Stack”: Uses interop across components preferred and common in the open community. (GEM dependencies, apt-get, Rails dir structure, GEMs for API integration, and sometimes linux OS constructs)! ! ! Some components run on Windows OS perfectly (and without Cygwin)! ! Some require Linux (or Cygwin on Windows)! ! Some talk about running on Windows, but production level quality isn’t available! ! Some purely require Linux (or full Cygwin)!Slide 15! bryanstarbuck.tumblr.com!
The Philosophy – of Open Stack ! in the MSFT Ofﬁce Team! I moved to WINDOWS Team! “!The OFFICE team has a SHARED CODE team ! “! I now work with the Windows team’s SHARED CODE team ! ”! ”! “! The OPEN STACK is the SHARED CODE team for the WORLD of open developers !”! DRY = Don’t Repeat Yourself !Slide 16! bryanstarbuck.tumblr.com!
Tour the Stack! High Level View:! External Services! Code Base! Marketing! Ajax Blog (Wordpress) Forums (PHPBB) (Growth) Fast Web Layout Workﬂow (vTiger) CMS (Drupal) Sales - CRM GEMs Cross-Site Auth Billing BUS (RabbitMQ) Email & SMS Hadoop Automated Testing: Cloud Hosting Services MVC Blackbox Automated Testing: Rails Dir Structure Browser Based Localization Package Distribution Systems Linux OS Support Deployment DB Debugger (PHPMyAdmin) NoSQL Database KeyPair DB IT Monitoring Relational Database And Much More Slide 17! bryanstarbuck.tumblr.com!
Work ABOVE the open stack! Writing Code in 2002! Writing Code in 2012! Your Speciﬁc VALUE-ADD! Code you have to write Your Speciﬁc VALUE-ADD! ! Code you have to write Open Stack! ! (World Shared Code team)! Language Libraries Language Libraries Language Language Slide 18! bryanstarbuck.tumblr.com!
MVC and Creating Pages! Goal: Devs can create 3 pages per day, and not ½ page per day! MVC & (Goal for 20 web pages is $2.6k instead of $15.8k)! Page Creation ! This is why Ruby on Rails is used so Heavily:! ! Create Schema: I want a STUDENT record, a PARENT record, a SCHOOL record, and a TEARCHER record.! ! It Auto-magically creates the work in the database! ! It Auto-magically creates the work in the OBJECT MODEL! ! It Auto-magically creates the work in the WEB PAGES! Create Student Page Edit Student Page Teacher Pages View Student Page Life of Students Page School Pages Slide 19! bryanstarbuck.tumblr.com!
Ruby GEMs ! ! ½ BILLION downloaded! ! A HUGE stack inside just GEMs! GEMs ! Are there more GEMs than MSFT SDEs?! ! Get them on your server is easy. Type “gem install devise”! ! GEMs can let you:! ! Site Login, Cross-site Auth! ! Turn addresses into Lat/Long city, state, zip! ! Pack and unpack ZIP ﬁles! The Winner is Determined by:! ! Create PDF ﬁles! ! Security ACLs! By the Size ! Create images programatically! of the Ecosystem! ! And 36,075 more tasks!Slide 20! bryanstarbuck.tumblr.com!
Tour the Behavior: NON Open Stack! Welcome New Hire. Your ﬁrst 3 tasks are: 1) website CREATE ACCOUNT, 2) Create Account with Facebook / Twitter / Google+, 3) Security ACL pages to Accounts CREATE ACCOUNT is now ﬁnished ! “! Manager of non-Open 2 weeks of coding!”! Stack company! I completed Cross-Site Facebook Create New Hire Engineer! “! Account, with authentication code! ”! “! With non-Open Stack 2 more weeks of coding! Background! Security ACL pages to user accounts “! is now complete. ! ”! 2 more weeks of coding!Slide 21! bryanstarbuck.tumblr.com!
Tour the Behavior: Open Stack! Welcome New Hire. Your ﬁrst 3 tasks are: 1) website CREATE ACCOUNT, 2) Create Account with Facebook / Twitter / Google+, 3) Security ACL pages to Accounts. How long will it take you? It will take me 6 weeks, 2 weeks each ! Dev Lead Mentor! “! ”! ! In Open Stack company! 5 minutes later! Are we the ﬁrst website on the PLANET to create this Create Account functionality? Install the DEVISE GEM “! University New Hire! accomplish CREATE ACCOUNT. Install the OmniAuth GEM for FACEBOOK. Install the CANCAN GEM for ACLs ! “! I’m DONE ”! After 8 hours on ﬁrst day!Slide 22! bryanstarbuck.tumblr.com!
A challenge with NON-OS to OS Hires! If we hire you, we need to worry and plan for a 12-month RAMP UP period. Dev Lead Mentor! I can learn a new computer language “! ! In Open Stack company! (ruby on rails) quickly. It will only take me FOUR weeks to learn a language and it’s language library ! ”! Experienced NON-Open “! Stack interviewee! We have three problems with expectations not matching:! 1) Learning a wide range of OPEN STACK will take 6 to 12 months! 2) I need to heavily mentor for him to use the OPEN STACK instead of writing from scratch! 3) BigCo hires and has 12-month transition times. SmallCo needs productivity sooner!Slide 23! bryanstarbuck.tumblr.com!
Building a Startup!Slide 24! bryanstarbuck.tumblr.com!
Let’s Build a Startup WITHOUT Code! Our Startup Will:! ! B2C for Consumers to SEARCH FOR HOTELs. Vertical Search engine for Hotels ! ! B2B for Hotel (businesses) to learn how we send them LEADS from customers! ! Marketing web pages marketing to Hotel Business customers on why to buy LEADs! ! WORKFLOW for 70 employees in a hotel have CRM over leads! Vertical Search Engine! Marketing Pages! CRM Workﬂow!Slide 25! bryanstarbuck.tumblr.com!
SOLR – Powering your Vertical Search! Many sites do a “Search” and show results: (Yelp, Kayak, Google Search, etc.)! ! It supports FULL TEXT SEARCH. It includes “Stemming” (“Running” = “Ran” = “Run”)! ! It includes full BOOLEAN SEARCH – “MP3 Player” AND (“Nike” OR “Reebok”)! ! It supports: FACET Search, or Search Criteria! ! Price between $40 and $100.00! ! Includes POOL! Vertical Search Engine! ! Staying 4 days! ! Includes Geo-Location Search: ! ! Within 21 miles of…! ! 98023, or! ! Mercer Island, wa! ! 123 Main Street, Redmond, wa! ! King County, wa! ! Vancouver, BC, Canada! ! Database SHARDING for multi-database spanning! ! Supports 100s of Terabytes to search! ! Supports SEMANTIC SEARCH and custom search!Slide 27! bryanstarbuck.tumblr.com!
“Workﬂow” – is the Value-Add in Many Startups! 70 Hotel Employees need to work with your data:! ! vTiger gives you the beneﬁt from SugarCRM (tens of millions invested), which is a clone of SalesForce CRM.! ! vTiger is open source and FREE. ! ! Each Employee needs a SEPARATE ACCOUNT with ACL Security. Included.! ! Each data type (Customer, Hotel, Room, etc.) has their own CREATE page, EDIT page, READ page, VIEW LIST page, etc.! ! Full View Reports module.! ! Full APIs for Read/Write of the data.! ! Much, much more. Clone of SalesForce…! CRM Workﬂow!Slide 28! bryanstarbuck.tumblr.com!
Summary! Focus on Business Goals when Selecting:! ! Reducing Costs – and almost engineering costs! ! Speed to market! .NET Platform:! OPEN STACK:! ! Hiring great Microsoft Talent! ! Bigger Stack: No engineering costs rewrite ! No need to learn the OPEN STACK! what already exists! ! Incredible DEBUGGER! ! Get business value often without writing code! ! Great for Windows Applications! ! Open platform integrates with platforms ! Absolute Zero worries on IP! from SalesForce, Google, Facebook and ! Multi-Threaded CLR matches Java non-Microsoft companies! and beats Ruby, Python, etc.!Slide 31! bryanstarbuck.tumblr.com!
THE END! Thanks for Listening!Slide 32! bryanstarbuck.tumblr.com!
Person #1’s Feedback (1 of 2)! The following feedback was from an experienced startup person, and often ex-MSFTee! II spent many years working on the .NET stack at <Proﬁtable seattle startup at ~$15m to $30m in revenues> (as technical co-founder, architect, etc). I have over 15 years experience on the MSFT stack, from VB3 to VS 2010.! ! Last summer, I built a new site using .NET + Entity Framework + ASP.NET MVC3 + Azure. That went nowhere for various reasons, and I started over. (Ill probably push that code to Github at some point)! ! I am working on a new site (since November) that is a bit past prototype phase. I built this on Rails 3.2 + ActiveRecord + Heroku. I also evaluated NodeJS and Python/Django as alternatives. I went with Rails because it was more mature than NodeJS, and seemed more vibrant for web development than Django.! ! Here are some answers to your questions:! ! Strengths of .net & C# stack:! Debugging is far superior in .NET than it is in Rails. ! Intellisense works better in C# than in Rails.! BizSpark gave me a free copy of VS 2010 and Ofﬁce.! SQL Azure is well designed and functions as Id expect it to ! Functional programming is quite clean in .NET.! I have conﬁdence that upgrading major versions of .NET and windows will be relatively smooth. I have never had major issues with .NET stack upgrades (maybe a little from 1.1->2, but that wasnt a big deal)! NuGet is a great idea.! ASP.NET MVC is a huge improvement over webforms.! ! Issues with .net & C# stack:! ! BizSpark Application Process! BizSpark initially rejected me because I didnt have a website (??!) or a business setup. There was all this "get listed in a directory" stuff that was absurd when you are just a dev trying to hack around. Its like they dont understand how this works sometimes. In the end, I reapplied, made up a company name, and put up a fake site on Google Sites. But it took me weeks. I should have been able to signup in 10 minutes.! ! Azure! I chose Azure because I wanted to learn it. I thought it would mean I could spend less time dealing with the OS. That promise was not fulﬁlled, and I actually spent far more time than necessary.! ! With BizSpark, there was a 3 month free window. That was not enough time, it shouldve been at least a year. They should have an always-free window for small apps. I spent way too much time ﬁghting Azure. ! ! Azure is very challenging to get up and running (keep in mind this was last August/September). It was not mature back then, but I had lots of issues deploying.! Here are two examples, that I ended up posting on SO. There were many more that I just struggled through. I calculate at least 2 weeks of a 2 month project on deployment issues. ! http://stackoverﬂow.com/questions/7487285/windows-azure-with-multiple-sites-in-one-role-not-transforming-2nd-web-debug-con! http://stackoverﬂow.com/questions/7592043/web-deploy-error-with-azure! http://stackoverﬂow.com/questions/4483670/how-to-speed-up-azure-deployment-from-visual-studio-2010! ! SOLR! I chose SOLR and SOLR.NET for my search. I actually hacked up a way to host SOLR on Azure but it was painful and probably wouldnt have worked long term. Wiring up SOLR.NET to my framework took me over a week. I guess they probably dont want you to use SOLR. ! ! Dependency Injection / Static Typing ! Dependency Injection frameworks such as Ninject or Castle do not fulﬁl their promise - you have to write a lot of conﬁguration code to get them to work. Your app code gets simpliﬁed but not much. And it isnt completely tooled up for all scenarios. Heres a small example, not a big deal, but just annoying stuff like this slows you down:! ! http://stackoverﬂow.com/questions/7586075/using-ninject-with-custom-webviewpage-type! ! I had to write huge amounts of conﬁguration code in xml ﬁles or in constructors.! ! Entity Framework! Entity Framework is not easy to customize. I often use a schema that has an internal ID key for joins, and a natural key that is either a string or a GUID for external use. This was incredibly painful in Entity Framework !Slide 33! bryanstarbuck.tumblr.com!
Person #2’s Feedback! The following feedback was from an experienced startup person, and often ex-MSFTee!Strengths of .net & C# stack:!Great support in Visual Studio - a fantastic IDE for editing .NET programs with Intellisense.!BizSpark!SQL Server!Many good .NET developers in the local area!Rapid innovation in the language / platform - LINQ, lambda expressions, async, ... Java is far behind on many of these!LINQ - a simply brilliant addition to the language!ASP.NET MVC - embracing the best of what the rest of the world is doing and making it their own!Efﬁcient Garbage Collection tuned to server or client makes GC a non-issue for 99.9% of uses!NuGET package manager and a rapidly growing package library to pick from!Moves by Microsoft to be more transparent in the design and development process (NuGet, ASP.NET MVC, EF, WebAPI, CQRS guidance)!Strong-typing (aka having a choice of types instead of being forced to use just one dynamic type)!You can use Reﬂector to look inside any code you dont understand!You can mix in open source components wherever you like and there are many excellent third party open-source components for .NET, e.g. nHibernate, Autofac ...!You can learn from reading the code in the many great .NET libraries and applications including many recent Microsoft releases like ASP.NET MVC, Orchard CMS, ...!!Issues with .net & C# stack:!Microsoft technologies and documentation tend to be designed for the happy path, e.g. WCF. Makes for great demos but the reality of getting them to work reliably in production is hard.!Microsoft puts security obstacles at every layer (that most people turn off) making it tough to conﬁgure even simple things (e.g. CAS, permissions on servers, ...).!!Strengths of open stack stack:!You dont need Reﬂector to look inside code!Easier to replace code you dont like!Always free (except for support, of course)!Strong community around many popular packages!!Issues with open stack stack:!Fragmentation - you go somewhere to work and they have their own hacked version of some core feature in library X!Figuring out which libraries and which forks of those libraries are the best ones to use!Libraries that nobody is maintaining any more!!Challenges MSFTees often have in the transition:!Lack of awareness of the latest Microsoft .NET technologies, e.g. there are developers at MSFT who havent even used LINQ!!!!Lack of awareness of the many great open-source libraries for .NET!Lack of awareness of modern software practices, e.g. IOC containers!Lack of awareness of databases besides SQL Server, especially highly-scalable ones like MongoDB, and non-RDBMS like graph DBs etc.!Thinking that Microsofts library for X is the best one when there are much better free ones available!Trying to use Outlook and Exchange instead of switching to Google Apps!!Great Solutions to that transition:!Before you leave, start learning! !Never stop learning new stuff.!Its cheaper to learn new stuff while you still have a paid job and healthcare! !Try nHibernate, MongoDB, SignalR, jQuery, Angular.js, Autofac, Node.js, …!Slide 35! bryanstarbuck.tumblr.com!
Person #3’s Feedback! The following feedback was from an experienced startup person, and often ex-MSFTee! Strengths of .net & C# stack:! Great for Windows? Im not sure Ive done anything in .Net and C# that couldnt have been just as easily or more easily done with other technology except when it comes to programming for Windows.! ! ! Issues with .net & C# stack:! Portability (barring the Mono discussion). In many cases, its also not the fastest way to build a solution. And some great OSS uses other languages and frameworks.! ! ! Strengths of open stack stack:! Frequently updated as long as projects arent abandoned. Awesome to have so much available. And its awesome to be able to give back.! ! ! Issues with open stack stack:! Sometimes frequently-updated can cause pain. Progress and bug ﬁxes are dependent on contributors meaning anything can happen.! ! ! Challenges MSFTees often have in the transition:! Realizing that success at MS != success in a startup. Different skills, values, and behaviors are needed. Also, its hard to not have a paycheck and insurance and ofﬁce furniture and ...! ! ! Great Solutions to that transition:! Hacking it! Craigslist, Ramen, etc. OSS, mentors, community like STS, etc!Slide 36! bryanstarbuck.tumblr.com!