My notes from the lecture by David Heinemeier Hansson

I watched a very interesting lecture given by David Heinemeier Hansson on Stanford Entrepreneurial Thought Leaders, and here are the main points I took away.

Lecture title: "Unlearn your MBA"

  • You want to "make a dent in the universe".
  • Great time to start a business cause in times of crisis, there is no option but to start a new business (as there are no jobs).
Unlearn your MBA to startup
  • Unlearn you MBA to start a business (Veer away from heavy management theory).
  • When running a startup, your customers are not going to ask you about which management theory you used and then buy your products. They want the product.
Planning is guessing
  • Startups don't need five year plans, they have no clue what the situation is going to be like in 5 years.
  • Worry about tomorrow. 37signals worries about about 2 weeks, max about 2 months.
  • Most decisions in a small company are incredibly temporary.
  • Just get going with your startup.
Venture capital is a time bomb.
  • You get to play with other people's money and you waste five years of your life. Wasting five years of your life on something that doesn't work is pretty bad.
  • Without venture capital, you would need to prove that your idea is good enough and your business is self-sustainable.
  • When time bomb blows up, the venture capitalists own your company and they're putting you out of business and you have nothing to show for your 5 years.
  • Bunch of entrepreneurs DHH knows says they wouldn't take venture capital again if asked to do so.
  • Once you get Series A, you start looking for series B and spending money on making presentations to get series B instead of concentrating on your business.
Don't play with other people's money
  • You care much much less about other's money. When you spend your money you care much more.
  • When you spend your own money, you can't just put out a product without a price.
  • Being forced to come to this point sooner, is the best thing for a business.
  • You need a sense of urgency which comes from spending and earning your own money.
Playing it small doesn't mean not making money
  • VC says small is a beginning, it is inconsequential, it is a path to a billion dollar business. They are not happy with a business of few million dollars.
  • Few million dollars are lot of money provided the money goes straight into your bank account.
  • Your odds of building a million dollar business are much higher than building a billion dollar a year business. You atleast have a chance to build a small business, which might still involve luck of course.
  • Most big business start small. Very few businesses can become huge in a small amount of time. There are just enough cases for us to believe in making a big business in 18 months (e.g. YouTube). And the VCs also believe this. Hence VC business is a hit driven business. Fund 20 businesses, one might make it big. But they waste the time of those other 19 businesses and their people.
Great ideas derive from well rested minds
  • Misconception that if you want to succeed, you need to be a workaholic.
  • Basecamp was built with DHH spending just 10 hours per week during school.
  • When you spend 80 hours per week, only 5-10% of your work matters.
  • In the industrial age (manufacturing) this might have been true. The more you hammered, the more you produced. But in the software business, the idea, and the "less" execution matters.
  • This comes from a well-rested mind.
  • Many entrepreneurs brag about how less they sleep. This is stupid. When you don't sleep, your mind is not working at peak performance, and you'll develop shoddy products.
Constraints are your friends
  • "I'm going to work 10 hours a week only"
  • No choice but to under-do your competition. You have no chance to out-effort Microsoft and put more programming hours. Thus you don't compete with them, also cause there is no need.
  • Constraints force you to do way less than your competition.
  • Consumers generally love this. They say "we love how simple it is". We love all the things that come from doing less, having fewer features.
Overnight success does not exist.
  • No matter what you do, yo won't be an overnight success. Most overnight successes have been at it for 10 years.
  • Companies take a long time to get to something good. You can either take those 5/10 years at a reasonable/comfortable pace to get to the comfortable place for your business and you are also the owner of your business, or you could take VC and blow up in 5 years.
Questions:
  • DHH started programming with a gaming website (game reviews etc.) and that's how he got started with programming. He was also VC funded and VCs had no clue how to make money out of his idea, but decided to pay him a princely salary.
    He then joined another bad software company and he learnt how not to do things. There was terrible management. Managers who have never worked for somebody else tend to be terrible managers, hence going from college straight to management is a terrible idea. You can't empathize, you can't put yourself in other's shoes and you can't build a good working environment and hence you can't build a company worth working for.
  • He then went to copenhagen business school, he then started collaborating with 37signals. He did basecamp which was the birth of rubyonrails. As there was 7 hour time difference, he didn't waste time in pointless meetings. The only way we communicated was by showing work. Learnt how valuable constraints are. 37signals was built on this, most of the people in Chicago work from home, and the rest are spread out all across the world. Now, they constantly try to go back to this way of working (how did we get stuff done when we were only 3 people)
  • Scalable startup - no correlation between number of (stupid) company policies and revenue growth. There is no one-to-one relation between revenue and number of people, e.g. revenue going up by $500000 doesn't mean you need to hire 2 people.
  • How 37signals got into Basecamp: They were trying to manage projects over email (customer emails, latest version of files etc.) so they built a product for their own needs.

Install Ruby On Rails in Ubuntu Karmic: The Quick and Easy way

I've installed Ruby on Rails in Ubuntu multiple times, and below is the quickest and easiest way I know to get it up and running.

Installing Ruby and Rails
Run the following commands in terminal:

$ sudo apt-get install ruby-full build-essential
$ sudo apt-get install rubygems
$ sudo apt-get install rails
This should install Ruby and Rails in Ubuntu. We still need to setup the database, for which I will use MySQL. You can also choose to install the sqlite3 database.

Installing MySQL database
$ sudo apt-get install mysql-server mysql-client
$ sudo apt-get install libmysql-ruby libmysqlclient-dev
$ sudo gem install mysql
I usually leave the root password blank in MySQL to keep things simple. Of course, don't leave it blank on production databases.

Create the development database

Log into mysql to create the database:
$ mysql -u root 
mysql> create database myrailsapp_development;
Create other databases (test, production) if needed.

Test your Rails installation

To test your Rails installation, generate a new Rails project using the command below. This will also generate a folder named 'myrailsapp' which will contain all your project files.
$ rails myrailsapp
Change the database.yml file under the 'config' folder to match your mysql database settings:
development:
  adapter: mysql
  database: myrailsapp_development
  pool: 5
  timeout: 5000
  username: root
  socket: '/var/run/mysqld/mysqld.sock'
Rails assumes that the MySQL socket file will be found in /tmp/mysqld.sock. In Ubuntu/Debian, this is not the case. Be sure to change database.yml to reflect the actual location of the socket file:
socket: '/var/run/mysqld/mysqld.sock'
Go to the project directory called 'myrailsapp' and start the rails app using:
$ ruby script/server
You will see the url on which you can access your application in the notifications. Your application should now be live on that url.