Today We Are Rails Developers! Pt. 2: Choosing Your Project

So you’ve got joined a ruby club, installed the software,  signed up for github and Heroku, and finished some tutorials. Where do you go from there, Rails Developer? It is now time for you to choose a project to work on.

Projects are best way to learn a programming language because it forces you to apply your knowledge. Memorizing the API is all fine and good, but it’s not going to matter much if you can’t orchestrate it into something tangible. As I said, it’ll become your resume when you want to use Ruby on Rails professionally. Furthermore, the market for subscription-based web software is exploding right now. Your project has the potential to make you rich. Even with a small customer base of, say, 200 customers paying $20 a month, you are bringing in 6 figures of revenue with almost no marginal cost for more customers. Watch this presentation by DHH if you need more convincing.

The project I’m working on (for the purposes of this blog series, at least) is called Dramathea. It’s a website where community theater companies can promote their shows online. I plan to monetize it by selling preferred access to the front page and taking online ticket sales. It started out a few years ago as a PHP project, but now that I’ve discovered Rails, I think it would be a great way to learn the framework. Here are some tips that will help you choose your own project to work on.

1. Keep it Simple

37signals is making millions right now with this philosophy. Your project shouldn’t be complex, even if you are planning to monetize it right out of the gate. No one is going to use your software if it has the learning curve of a Boeing 747. This is probably the hardest guideline to follow because any application can turn into an over-bloated mess within a 10-minute requirements meeting. Have a core function, like listing plays in a certain city. If your users demand more features, by all means, add them, but make sure your site still does that one thing it was supposed to do.

2. Tempt Failure

The rush of gambling doesn’t come from winning alone. Losing a grand at blackjack and then doubling down is the experience that practically built Las Vegas. I don’t know if Dramathea is going to make any money. Community theater people are known for being cheap, so why would they spend money on my site when they could advertise on facebook for free? Then again, what other website is completely dedicated to community theater? What if my site is the easiest to use? I don’t know what’ll happen when I ship this site, and that’s all part of the fun.

3. Solve Your Own Problem

Many web app success stories come from people solving their own problems. My problem is finding live theater in the Fraser Valley. What’s yours?

3. Follow the Stress

If you can’t think of your own problem to solve, look around you. Listen.  It could be in conversations with your friends and family. It could be on threads in Reddit. Keep an eye out on fmylife.com. Wherever you find stress, headaches, and inefficiency, you will find your project.

5. Don’t Worry About People Stealing Your “Idea”

Industrial progress is being held back by myths like the Coca-cola formula and KFC’s 11 secret herbs and spices. You can’t really own an idea any more than you can own the equation, “2+2=4″. What you can own is the work that makes the idea a reality. You have to maintain the data, manage hosting, market to your initial user base, and yes, code the thing in the first place! Anyone who says you can make money from your ideas alone is probably selling you something.

6. Ship

As you can see from Facebook CEO Mark Zuckerberg’s l337 coding skills in 2001, it doesn’t matter where you start on the programming totem pole. You’ll be known by your time spent with the framework and the code you post on the internet. Those faltering first steps will only serve to inspire the developers yet to come.

Feel free to post links to your projects in the comments.

Here is the address for Dramathea: http://www.dramathea.com

Here is the github repository: http://github.com/jstrocel/Dramathea