Rails In Action & How To Build An Efficient Empire

Post on 10-Nov-2014

675 views 2 download

Tags:

description

I gave a talk at the Enterprise Lamp group on why our business chose Ruby on Rails and then what practices we used to build our business by 300% in less than a year and still growing. I plan on putting together a book on some of the methods we use to give a more detailed description but hopefully these slides help!

Transcript of Rails In Action & How To Build An Efficient Empire

Rails In Action & How To Build An Efficient Empire

By: Will Bridges

Who Is Will Bridges?CEO / Cogwise Software

Open Source Web Developer & Entrepreneur For Over 10 Years

Why Rails?

• Ruby has a very simple syntax - easy to read, learn and understand with very little knowledge of Ruby

• Fully object oriented

• Dynamically typed

• Encourages good programming practices like MVC and high test coverage

• Convention over configuration

• Good community support

I Love Ruby Becausesome_integer = 50_000_000

class Integer def to_half self / 2 endend

some_integer.to_half25000000 will be the result

And More...

class Integer def method_missing(sym, *args, &block) puts "What kind of method name is #{sym}? Integer #{self} hasn’t heard of this." endend

50.ninja_hiku_kick

The result of that last call will be:What kind of method name is ninja_hiku_kick? Integer 50 hasn’t heard of this.

Who Is On Rails?

• Basecamp - One of the oldest rails apps. Over 1 million users.

• YellowPages.com - Around 25 million views a month.

• Hulu.com - 29 million views a month.

• Twitter.com - 140 million views a month.

• Bumpersticker - A Facebook App created by LinkedIn’s engineering team gets over 1 BILLION page views a month.

Why Not Choose Rails?

• Where are all the Ruby Programmers? It’s TIBOE Rating is 10

• WTF is Ruby and why doesn’t my cousin know it? My cousin fixed my puter’ the other day. He’s so smart!

• Slow?

• Rails can’t scale! Look at Twitter!

Why We Really Chose Rails

• We prefer Mid-Large sized projects over smaller CMS-like sites.

• We love to code in Ruby and being a programmer I was able to really appreciate the simplicity of the language. Simplicity leads to cheaper maintenance.

• The market was less saturated for people looking specifically for Rails Development, giving us a niche

• We know lots of people that know Ruby on Rails

Stop Being Afraid

• Rails can scale and depends on who is doing the scaling and their level of expertise. There are plenty of places to get the information on scaling.

• There are plenty of Ruby on Rails contractors and potential employees out there that would love to be doing this full-time. Know where to look.

• Ruby is not obscure. Ruby is very easy to learn and can be refreshing in it’s elegance and simplicity.

• Many clients do not care about your language framework choice.

Choose a Framework• At least use some Framework for mid-large

projects... it’s 2009.

• Symfony, CakePHP, Django, Rails and Sinatra are all good and modern open source frameworks.

• Ruby is very easy to learn and is well supported by a great community so don’t be afraid to explore.

• If the only dynamic element on the page is the date then you don’t need a framework.

• Stop flaming... a good programmer has many options and picks the best one for the project.

Cogwise Method

• Contractors Over Employees

• The Feudal Structure

• Quick, Agile & Flexible

• Mix Of Outsource, Local Source and Near Source

• Communicate Early, Communicate Often

• Tools That Empower Remote Development

Contractor Basics

• 80/20 structure with intention of no more than 50/50 contractors over employees

• Specialists are more expensive than your average employee but also very much more efficient in most cases

• Employees can be much more wasteful as well and can have hidden costs when you factor in every resource it takes to have an employee

Contractor Tips• Check references... yes, they will only give you the

good ones. Make sure there are plenty recent ones

• If you aren’t a coder have someone you trust and know is competent interview them

• Peer Review and oversight are good practices

• Resourcefulness is more important than raw knowledge

• Keep your contractors busy and you will enjoy a continued relationship with them

• In the end trust your gut and be willing to fail...

Where To Look?

• oDesk

• Job Boards - jobs.rubynow.com

• User Groups & Meetup Groups

• Google Search

Feudal System • Each project manager is technical in nature and

understands the code exceptionally well

• Each project manager is responsible for their team’s productivity and client communication

• A project manager may be responsible for more than one project

• We pass our company standards down the line to the project managers and check in with clients to make sure they are being adhered to

• We review the code randomly to make sure code standards are being adhered to

Keeping Consistency• You cannot build this type of organization without

STANDARDS

• Put those standards in a place where everyone can review them and keep tabs on if they are being adhered to

• Your Project Managers should be a good gauge on how well standards are proliferated in your organization. Meet with them at least weekly

• In place of a daily stand-up meeting you should have your remote devs send in a daily status report

Company Owner

• We are the product owners and partnered with the client to produce quality work

• Our time is not billable as we are the glue that keeps the organization together

• We and the people we trust help to set standards... ie.. the Project Manager

Special Roles

• Quality Assurance - Double check work with a non-programmer

• Code Helper - All the kings men

• Support Staff - Your time is valuable so don’t do stuff that isn’t valuable

Quick, Agile & Flexible• Agile development is smart development

• Value communication over planning

• Leave things pliable as much as you can but don’t hang yourself

• Agree to only what you can do for your compensation

• Treat your client’s sites like they are your own

• Allow room for incremental adjustment

• Mind your budget!

Sourcing

• Outsource

• Local Source

• Near Source

Communication

• Weekly Client Meeting

• Daily Developer Status Update

• Visibility Into Project Management

• Early & Often But Not Burdensome

Tools

• Redmine or equivalent

• Highrise or equivalent

• 14dayz or equivalent

• SCM

My Info

• Business: http://www.cogwisesoftware.com

• Personal: http://www.invisiwill.com

• Twitter: @cogwisewill

• Facebook: http://www.facebook.com/william.bridges