Rubyists Should Learn from Ford’s Example

From the moment I laid my twelve year old eyes on the Ford Mustang, I was in love. But even before that, I remember taking road trips to Wisconsin, bouncing around in the covered bed of my dad’s F-150 pickup with my sister. Back then, we didn’t wear seat belts – my parents would lay down a mattress for us to play on in the back, while they enjoyed the eight-hour journey in relative peace and quiet up front.

I’ve been a Ford guy all my life. But in the 90′s, a disturbing trend began. Ford, and indeed most auto makers, started homogenizing their product lines.  As the “curvy design” fad erupted, Mustangs were redesigned to look more like the Taurus. And F-150′s were redesigned to look more like…the Taurus. I hope they saved a lot of money on design work, because everything had the same oval headlights and curved hood. Each model was trying to be everything to everyone.

Just when all looked lost, Ford came to its senses in the 2000′s. They started designing the cars so people actually knew what they were for. The mustang now looks like a muscle car:

mustangs

The Fusion, which evolved from the Mercury Milan, now looks sporty, but efficient:

mid-sedans

The Five-Hundred (which looks better in person) boasted size, style, and luxury:

full-sedans

And finally, the F-150 now looks like the workhorse it was meant to be:

trucks

Rubyists Can Learn from Ford

First, show intent. While code comments can be helpful, they can also be a crutch. Ruby is a wonderfully expressive language, so use it. Spend time naming your classes, modules, methods, and variables with the intent of having them be perfectly understandable to a stranger. When a method has several parameters, wrap them in a hash so developers (yourself included) can better understand what a method call is trying to accomplish. As a bonus, you won’t have to look up the parameter order every time you want to use the method.

Keep your methods small, and remember the old mantra: a method should do one thing, and do it well. But don’t stop there. Controllers shouldn’t be stuffed with dozens of actions; you probably need more controllers that each handle a more specific part of your application.

On a larger scale, don’t limit yourself to just one app. If your company or project is doing lots of different things, it may need several different apps. They can still talk to the same databases when they need to, and they can appear seamless to a site visitor.

Businesses Can Learn from Ford

A lot of businesses also make the mistake of trying to be everything to everyone. I see this a lot with consulting companies in my own industry. In order to cast the widest net, dev shops will take on any type of work, that uses any programming language or technology they have experience with. Sometimes they might not even have that experience, and that’s usually good news for me. Rescue projects are a big part of my business.

I’ve chosen to focus on the Ruby programming language, and I put my money where my mouth is when I chose my business name. That doesn’t mean I stop learning other technologies. It means that I choose to invest my limited time learning the technologies that will make me a better Ruby developer. Currently I’m digging into PostgreSQL, because it has so much more power than just database queries, and this will improve the performance of my Ruby applications. I also have several years of Perl experience, but I choose not to take on Perl contracts.

RubyCuts is relatively new. During the toddler stage, I’m more open to taking on lots of different types of projects. As we grow, we will focus more and more on our core – training, scaling, and rescue. Lots of developers can build basic applications in Ruby, but I want RubyCuts to be the Navy Seals of the Ruby world. I want to help companies solve the toughest problems so their dev team can get back to building money-making features. I want to make it as easy as possible for companies to invest in Ruby.

I think the future of small business is in specialization, solving very specific problems. The trick will be picking the highest value problems to solve. As Ruby gains popularity, I think the increased number of beginners will require an increase in experts. If I’m not successful in five years, you have my full permission to rub this article in my face :)

 

 

All I Need to Know about Business, I Learned on StackOverflow

I recently ran across this light-hearted post on StackOverflow. If you’re not familiar with StackOverflow, it’s a question/answer site for programmers. Users gain reputation points for answering questions from other users, and it can be addictive to grow your reputation over time. I’m in the top 3% of StackOverflow users, myself.

Based on the principal that 10% of the world’s population owns 90% of the wealth, one user wanted to see  how much of the total reputation points were “owned” by the top 10% of users. His initial calculations showed that 95% of all reputation points belonged to this group! It wasn’t long before people started cracking jokes about our economy:

stack overflow reputation comment

and:

stackoverflow reputation answer

Of course, the national/global economy and the StackOverflow economy are two very different things, and I’m not trying to trivialize some very tough problems the U.S. faces. But there’s still a nugget of wisdom here. While reputation points do offer some benefits on the site, they are not “spent”, per se. So your reputation is really a measure of the value you’ve generated.

If you apply this principle to your business endeavors, you might be amazed at how well it works. As a contract Ruby developer over the last seven years, I’ve learned that my success is closely tied to the value I generate for others. I’m not just talking about doing a good job for my clients, though that comes first. I do a lot of things I don’t get paid for, directly:

  • I speak at local Ruby events.
  • I’ve co-organized both the Kansas City and Lincoln, NE ruby meetups.
  • I answer a lot of Ruby questions on Stack Overflow.
  • I’ve contributed to open source projects, including Ruby on Rails itself.
  • When I don’t have the availability to take on new clients, I refer them to other good developers I know.

These things have been very rewarding on their own, but have they “paid off” in real dollars? Absolutely. Fellow Rubyists refer work to me, because I have a good reputation.  One client skipped the first half of their interview process entirely, based on my contributions to Rails. And yes, being a “3-percenter” on StackOverflow has given clients the confidence to trust my expertise.

My advice to any up-and-coming developers is always the same: look for ways to generate value, whether they pay directly or not. If you’re a contractor, you’ll benefit in many of the same ways I do. If you’re a recent college grad, your open source contributions and public speaking will say more about your ambition and talent than your GPA.

In fact, generating value should be the top priority of every business. That’s why the best mission statements tell people what value you provide, not what things you sell. We all like dollars. What sets you apart in business is how valuable you are to the world.