Successful Freelancing With Ruby On Rails: Workflow, Techniques And Tools

Advertisement

Warning: Freelancing Is Not for Everyone

A freelancer is a self-employed person who pursues a profession without a long-term commitment to any particular employer. Your curiosity in this opportunity was probably sparked by posts marked “Freelance” or “Work from anywhere” on the myriad of job boards around the Web. Freelancing is equal parts freedom and responsibility. While you have the freedom to choose when you work, where you work and what you work on, you are also responsible for everything: deadlines, finding work, the quality of your work, communication and so much more.

1
Photo by Dmitry Belitsky2

Ruby, with all of its frameworks and libraries (such as Rails3, Merb4 and Sinatra5), is a practical tool to use in your freelance Web development career because of its focus on clean code, object-oriented syntax, efficient development practices and strong community (whether a simple IRC chat room or large conference). For all of these reasons, I find that it is also quite fun to use and exciting to be a part of.

So, your skill may be in Ruby and your approach is to freelance, but it’s not that easy: freelancing is no walk in the park. It could become a living nightmare if you’re not able to use your time efficiently and remain focused and motivated until a project comes to a close. It could also become a nightmare if you market yourself poorly, are constantly desperate for work or surrender too much power to a client, putting you in the position of a monkey-worker responding to petty demands.

Over the four years that I’ve been freelancing, I have figured out the intricacies of it and grown to completely love it. I cannot envision myself working any other way.

Pros

6
Photo by Giorgio Montersino7.

Be your own boss.
Report to no one but yourself. You are at once king, countryman, peasant, squire, blacksmith and merchant. You will work on excruciatingly boring tasks, grand and exciting ventures and everything in between. You will have very tough times and very beautiful times.

Enjoy your freedom.
You have the freedom to work when and where you please, the freedom to structure your day as you please and the freedom to fail. Structure and discipline can be daunting and intimidating but also rewarding and empowering.

Choose what to work on.
Want to spend 50% of your time on open-source projects? Interested in building your own Web app? You have the power to make that a reality. Want to work exclusively on projects in social media? Make it happen.

Set your rates.
Value is both a reflection of how you perceive yourself and how others perceive you. Are you capable of meeting deadlines, communicating well and delivering quality code? Charge what you think that is worth. Often the market will decide. If you are just starting out, charging $80 per hour will be hard; you have to earn that rate over time and with experience.

But what’s to stop you from charging $80 per hour after just a year of full-time freelance work as a Ruby developer? Only yourself. You will have to be confident, and I suspect that most people reading this article do not charge that rate. But if you truly feel capable, then by all means.

In sum, you will experience highs and lows, but with the right attitude, the lows will always pay off.

Cons

8

Selling yourself
Many dislike the notion of having to sell themselves. That’s understandable: the task is certainly not without its unpleasantness. If coding is an art, then like any good artist you’ll be critical of your own work. But maintain perspective. Recognize that you have to take responsibility for the quality of your code, but also understand that your clients probably won’t be programmers themselves. Hacking together something that works will be okay in many cases; and if it breaks because it was poorly written, offer to fix it for free.

When you write code that is efficient and powerful, explain as much to the client in vocabulary that they will understand; something like, “I changed the application so that it can perform × task at twice the speed.” Remember that your clients will likely not be developers and that in the freelancing game communication skills are often more important than programming skills. Be aware of yourself, be realistic in your expectations of yourself, be humble yet straightforward, and understand that if you truly believe in yourself, selling becomes easy. You are just being honest when you say to someone, “I’m good at what I do.”

Responsibility and discipline
No one will prevent you from procrastinating. No one will stop you from meeting with a friend in the middle of the day for lunch or a walk. No one will tell you what to do or when to do it. This may sound amazing—and it is if you’re disciplined—but discipline becomes rarer as we get increasingly overloaded with details that demand our attention. (In my opinion, discipline is one of the most important traits any freelancer can have.)

Time management
Manage your time as if each hour were a brick of gold. Time is more precious than any other resource. Tools are out there to help you become aware of how you spend it and that help you figure out where you are going wrong and right. Harvest9, Trails10, Tick11 and a slew of other applications are all designed to help you understand how you spend your time.

Emotions
The freelancing life is often isolating and can get lonely. It has often been said that running a small business is an emotional roller coaster: well, it is. Fight the inclination to stay cooped up and out of touch with the world. Get out and meet people; it could save you from serious bouts of depression.

Ultimately, freelancing is not for the faint of heart, but that doesn’t mean it isn’t worth your best shot!

Tools Of The Trade

Plenty of tools will help you get your projects done, but the best ones help you complete your projects effectively. We all work differently, and numerous tools are at our disposal that will help us accomplish the same task in different ways.

You’ll find a lot of discussion12 on the Web (some of it bordering on holy wars13) about the relative merit of Vim vs. Emacs, Prototype vs. jQuery, Haml vs. ERB. But it doesn’t matter what you use: results matter. Properly caring for your code will help you grow, so use tools that allow you to craft the best possible code. Tools are always relative.

Text Editor (Vim, Emacs, TextMate, IDE)

MacVim screenshot

As with most other tools, choose a text editor by trying it out. I used TextMate14 in the past and now work in Vim15 most of the time. Some folks prefer Emacs16 or big IDEs such as RubyMine17. You can try all of these just by downloading a trial version. You’ll know when you’ve found your favorite.

*Nix Server Management and Working in the Unix Shell

Many useful resources on Linux server management are available in various Slicehost articles18. You’ll also find a lot of info about working in the command line at commandlinefu.com19. Beyond that, let Google guide you.

Ruby Will Become Your Best Friend

Ruby

Yukihiro Matsumoto (a.k.a. Matz), creator of Ruby, said that he wanted to minimize his frustration with programming, minimize his effort in programming and have fun with software development. In fact, Ruby was designed to make programmers happy. But while Ruby is simple in appearance, it is complex inside, like the human body.

As hard as it is to believe, Ruby has been around for 15 years. As the years go by, more and more people see the beauty in this language and become passionate users. Today, Ruby is the language of choice for hundreds of thousands of developers worldwide. Several lively Ruby conferences take place each year around the world. And big corporations use Ruby: Microsoft and Sun have created their own Ruby interpreters (IronRuby, jRuby), and Apple now includes Ruby with OS X 10.6. Countless Ruby developers are hired every day on every continent.

The community around a language is one of my primary considerations in deciding whether to learn that language. Ruby’s community is vibrant and growing; it is friendly to people of all skill levels and comprises both online communication such as chatting and mailing lists and in-the-flesh interaction at meet-up groups and conferences. Ruby and its frameworks—especially Rails—have become their own sub-culture; full of life and passion and changing every day.

A very useful resource is confreaks.com20, where you can watch videos from great Ruby-related events such as Rubyconf21, acts_as_conference22 and more. Highly recommended.

Popular Ruby-related resources:

  • The official Ruby website23
  • Ruby mailing list24
    A useful place to get help or advice from those active in the Ruby community.
  • Ruby Inside25
    A Ruby blog with daily news, links, code and tips. Claims to be “the #1 Ruby programming blog.”
  • RubyFlow26
    A community-driven Ruby links website, with more than 1000 members. Posts are made by members of the community. Enjoy the links and leave comments.
  • RubyForum27
    Helpful forum for Ruby and Rails.
  • Ruby Learning28
    “A thorough collection of Ruby study notes for those who are new to the Ruby programming language and in search of a solid introduction to Ruby’s concepts and constructs.”
  • Planet Ruby29
    RSS aggregator of top Ruby-related blogs.

The Ruby on Rails Framework (and Alternatives: Merb, Sinatra, Ramaze, Rango)

Rails is my MVC framework of choice because of its ease of use as well as the vast community of passionate users who stand behind it. If you’d like to learn it, a great starting point is Agile Web Development With Rails30. UC Berkeley has a series of intensive Ruby on Rails classes on YouTube31, which are rather useful. And a lot of screencasts32 are on the Web. I also like confreaks33 (already mentioned but worth a second push); it delivers videos from large Ruby conferences, and I’ve learned a lot from the talks.

Railsguides34

Some general Rails-related resources:

Some more specific tools for Ruby to check out:

  • The Ruby Development Tool42
    An IDE consisting of Ruby-aware features and plug-ins for the Eclipse platform.
  • Watir43
    An open-source (BSD) library for automating Web browsers. It allows you to write tests that are easy to read and maintain. It is at once flexible and simple.
  • Radrails44
    A Ruby on Rails IDE, either standalone or as an Eclipse plug-in. Free, open source and cross-platform, Radrails includes an integrated shell console, rich code completion for Ruby and Rails, an integrated debugger and cloud deployment options.

    Radrails45

  • Heroku46
    An online Ruby on Rails cloud platform-as-a-service. A “fast, frictionless and maintenance-free Rails hosting platform” with a free plan. The platform is effective, though not invincible.
  • Capistrano47
    An open-source tool for running scripts on multiple servers, most commonly used to deploy Web applications. It automates the process of making a new version of an application available on one or more Web servers, including support for tasks such as changing databases.
  • The Ruby Toolbox48
    Provides an overview of tools available to Ruby developers. Tools are sorted by category and rated according to the number of watchers and forks in the corresponding source code repository on GitHub, so you can easily figure out your options and which are the most common ones in the Ruby community.

    Rubytoolbox49

  • RailRoad50
    “A class diagrams generator for Ruby on Rails applications. It’s a Ruby script that loads the application classes and analyzes its properties (attributes, methods) and relationships (inheritance, model associations like has_many, etc.).”
  • Instant Rails51
    “A one-stop Rails runtime solution containing Ruby, Rails, Apache and MySQL, all preconfigured and ready to run (on Windows, OS X, Linux and BSD). No installer—you simply drop it into the directory of your choice and run it. It does not modify your system environment.”
  • Ruby on Rails Toolbox52
    A list of 20+ tools to help you with your Ruby on Rails coding.

TDD and BDD

Test-driven development (TDD) is a software development technique that involves repeating a very short development cycle: the developer writes a failing automated test case53 that defines a desired improvement or new function; then they produce code to pass that test; and finally they refactor54 the new code to meet recognized standards.

Behaviour-driven development (BDD) is an evolution of the thinking behind TDD55 and acceptance test-driven planning56. It brings together strands of TDD and domain-driven design57 in an integrated whole, making the relationship between these two powerful approaches to software development more evident.

Cuke Logo

BDD helps focus development on the delivery of prioritized, verifiable business value by providing a common vocabulary (also referred to as an “ubiquitous language”) that spans the divide between business and technology.

Cuke screenshot

HTML, CSS, HAML, SASS, LESS

Nothing can be done on the Web without hypertext mark-up. Every page has its own mark-up and style, and you have to know the basics in order to work with mark-up. Learning HTML basics should take about an hour, and becoming a CSS expert a lot more time, but everything starts with your first step. Once you know how each works, diving into tools that simplify them, such as HAML60, SASS61 and LESS62, will be enjoyable and rewarding.

VCS (Version Control Systems)

Version control is essential whether you work alone or on a team, because it tracks all significant changes you have made to a project (called “commits”), and you can easily save the project’s growth history, make new branches to test new functionality, jump back and forth through changes and distribute those changes to others involved in writing the code. I prefer Git and use it most often. It’s fast and reliable, but other systems offer their own functions and strengths. “7 Version Control Systems Reviewed66” covers the spectrum of options.

Git Logo

“Git is a free distributed revision control, or software source-code management, project, with an emphasis on being fast. It was initially designed and developed by Linus Torvalds for Linux kernel development.”

Wikipedia67

Here is a list of helpful resources to help you jump into working with Git:

Finding Clients

You’ve weighed the pros and cons, and the pros won. You’ve learned enough Ruby and Rails to start looking for work. Now, where do you find clients?

Finding clients is a big topic, so I’ll stick to the basics for now and leave out details on marketing strategies and brand development.

Communicate with potential clients first through simple emails. Write your thoughts in short and effective paragraphs; be selective with your words, and get to the point quickly, mindful of the time people are spending reading your message. You will not only deliver your message effectively but show that you are focused on important matters and that you avoid wasting people’s time.

If you have no portfolio, you may have to do work for very little pay—or even for free—to entice prospects. As you develop your portfolio, describe each project very briefly (one to two sentences), and then start adding these summaries to your emails. The inclusion of references to real work greatly increases your chances of securing more work.

In your search, follow up on every interesting job posting that you’ve found, mentioning your professional experience, technologies you know and your professional qualities, such as being responsible and being able to deliver projects on time and on budget. Ideally, you would show testimonials from previous clients.

Job Boards

Workingwithrails Job Board Screenshot73

A lot of freelance job boards74 are around. Here are the ones I know of and have used successfully:

Contributing to Open Source

Github80

If you want clients, you need to prove yourself. Nothing speaks better of developers than their code (although technical skill is only part of the puzzle).

Choose projects that interest you; you’ll get better results. Choose projects that give you a chance to learn and grow. But be careful: your learning should not prolong project deadlines. I find that the best projects are those in which I can work with a passionate team and learn new things along the way.

Learn How People Hire

Read articles that explain how to hire developers for insights into the hiring and hunting process. Articles such as these:

Get Your First Project

If you have no previous development experience, create some first. Write tests for open-source apps, fix bugs, put together a simple Web app: over time you will have developed a portfolio and eventually become confident enough to take on client work.

One way to start: choose a project on GitHub and learn its internals; offer help by writing tests and fixing bugs. Over time you will learn how to work as a team player and how to read code written by others. This knowledge will help you tremendously.

Focus on Building Your Profile

Linkedin87

This could be the first thing people read about you, and first impressions count. Make this impression as good as possible, and use all of the best-known networks: LinkedIn88, Working With Rails89 and GitHub90.

Create a Website or Blog

You should have your own website or blog because that’s expected in the Web development field. On it, you can describe your professional experience, new technologies that you have been working with, book reviews (this might also bring in new readers from search engines) and interviews with people you find interesting. Include productivity tips and personal thoughts on things you’re interested in. Remember, describe your own experiences and show your face. Be authentic. Read about writing for the Web on useit.com91 and A List Apart92 (the writing section93).

Get Involved in the Community

Railsbridge94

Make something useful for yourself and people like you. This could be a library or plug-in, an article or a tutorial—anything usable. Writing documentation for RailsBridge95 will surely increase your understanding of Rails, too.

Write a Lot of Emails to Employers

If all goes well you might have a pool of a few jobs to chose from. Choose wisely, and then work vigorously to deliver something great—on time! When you reach out at first, don’t expect many responses. If you get only a few clients from 50 emails that you send, you’re doing good. Now you need to get things done, and that takes time and a good process.

Working Process

There are many well-known methods of working, and each offers a different approach to solving the same problem: how the heck do I get things done effectively?

Here are the two techniques I follow:

Getting Things Done96 (GTD) is a method created by David Allen97 and described in his book of the same name. GTD relies on the principle that a person needs to move tasks out of their brain by recording them externally. That way, the mind is freed from having to remember everything that has to get done and can concentrate on actually performing those tasks. Check out the interesting introductory video by David Allen on YouTube98.

GTD is an easy step-by-step and highly efficient method of achieving this relaxed, productive state. It includes:

  1. Capturing anything and everything that has your attention;
  2. Categorizing actionable tasks discretely as outcomes and concrete next steps;
  3. Organizing reminders and information in the most streamlined way, in appropriate categories, based on how and when you need to access them;
  4. Staying current and “on your game” with appropriately frequent reviews of the six horizons of your commitments (purpose, vision, goals, areas of focus, projects and actions).

The Pomodoro99 Technique is a way to get the most out of your time. Turn time into a valuable ally to accomplish what you want to do, and chart continual improvement in the way you do it. Francesco Cirillo created the Pomodoro Technique in 1992. It is now practiced by professional teams and individuals around the world. A great way to learn it is through this cheat sheet100.

It can be described simply in five steps:

  1. Choose a task to be accomplished;
  2. Set the Pomodoro (i.e. the timer) to 25 minutes;
  3. Work on the task until the Pomodoro rings, and then put a check on your sheet of paper;
  4. Take a short break (about five minutes);
  5. After every four Pomodoros, take a longer break.

My own productivity method mixes these two techniques. I break big tasks into smaller chunks, and then I write them down in a Pomodoro-like table101 and work on them for 25 to 30 minutes, with 5 to 10 minutes breaks.

Getting Perspective

Get Some Rest

Rest102
Photo by Dmitry Belitsky103

Rest is just as important as work. They are a yin and yang, work and rest. Rest both your body and mind. No one can work much more than 40 hours per week and still be productive.

Here are a few tips to rest the right way:

Take a break.
If you have worked on the computer for more than an hour, switch your focus. Go exercise, wash the dishes or take a walk. Attend to something that doesn’t involve staring incessantly at a screen. When you get back to work, you will find your mind relaxed and rested.

Meditate.
Meditation comes down to us from the ancient sages as a method of training the mind to be at peace. It helps you to relax your mind and body and become at once joyful and calm. There are a lot of different techniques of meditating; try the simplest one, making it a part of your daily routine. This is a great
article on meditation
104 because it relates to creative fields, but the principles apply to any profession (and who says good code isn’t art, anyway?).

Go for a walk.
Walking is a great way to calm your mind, exercise your body and take in fresh air. Integrate walking into your daily or weekly routine, too.

Don’t overeat.
Overeating takes blood away from your brain and moves it to your hard-working stomach to help it digest all that food. This makes you tired and less focused. Food is great, but don’t overdo it.

Take up a non-computer-related hobby.
We should all find something that keeps us away from our computers for a while. If you live alone and work as a freelancer, you can lose yourself for weeks, working too hard and forgetting everything else. Jamis Buck has some great advice105 on the subject:

“You should be well balanced. Computers are great and everything, but you should definitely have hobbies that are completely unrelated to computers. In the last two years I’ve taken up both wood carving and string figuring, and they have helped me immensely in recovering from burn-out.”

Success

  • “Everything you write is crap, so always try to improve yourself.”
    Dirkjan Bussink106.
  • Hard work is the secret to success.
  • Passion is critical; it makes or breaks any endeavor.
  • Love what you do.
  • “Never let anyone (yourself included) convince you not to do something that will make you happy or fulfilled.”
    Yehuda Katz107

Video Resources

Parting Thought

Decide how good you want to be. Do you want to master the craft or just fulfill the basic needs of employment? As a freelance developer, you might find yourself in a constant struggle. You could be forced to produce code that you are dissatisfied with because of a tight deadline or unforeseen problems with other parts of the project. Be patient and relentless. Know that you will become more skilled over time, and trust that you will eventually—even if it takes years—be proud of your abilities.

(al)

Footnotes

  1. 1 http://www.flickr.com/photos/daim/2054793485/
  2. 2 http://www.flickr.com/photos/daim/2054793485/
  3. 3 http://rubyonrails.org
  4. 4 http://merbivore.com/
  5. 5 http://www.sinatrarb.com/
  6. 6 http://www.flickr.com/photos/novecentino/2340521934/
  7. 7 http://www.flickr.com/photos/novecentino/2340521934/
  8. 8 http://ncwinters.com/comics/?album=5&gallery=5
  9. 9 http://getharvest.com/
  10. 10 http://trails.es/
  11. 11 http://tickspot.com/
  12. 12 http://blog.obiefernandez.com/content/2008/11/smackdown-at-pro-rubyconf-08.html
  13. 13 http://en.wikipedia.org/wiki/Holy_war
  14. 14 http://macromates.com/
  15. 15 http://en.wikipedia.org/wiki/Vim_%28text_editor%29
  16. 16 http://en.wikipedia.org/wiki/Emacs
  17. 17 http://www.jetbrains.com/ruby/
  18. 18 http://articles.slicehost.com/
  19. 19 http://www.commandlinefu.com/commands/browse
  20. 20 http://confreaks.com/events
  21. 21 http://rubyconf2009.confreaks.com/
  22. 22 http://aac2009.confreaks.com/
  23. 23 http://ruby-lang.org
  24. 24 http://www.ruby-lang.org/en/ml.html
  25. 25 http://www.rubyinside.com
  26. 26 http://rubyflow.com/
  27. 27 http://www.ruby-forum.com/
  28. 28 http://www.rubylearning.org/
  29. 29 http://planetruby.0x42.net/
  30. 30 http://pragprog.com/titles/rails3/agile-web-development-with-rails-third-edition
  31. 31 http://www.youtube.com/watch?v=LADHwoN2LMM
  32. 32 http://rubyonrails.org/screencasts
  33. 33 http://confreaks.com/events
  34. 34 http://guides.rails.info/
  35. 35 http://guides.rails.info/index.html
  36. 36 http://railsbridge.org/
  37. 37 http://edgeguides.rubyonrails.org/3_0_release_notes.html
  38. 38 http://rubyonrails.org/screencasts/rails3
  39. 39 http://ducktypo.blogspot.com/2010/06/new-ruby-ecosystem.html
  40. 40 http://www.railstutorial.org/
  41. 41 http://www.rubyonrailstutorials.com
  42. 42 http://sourceforge.net/projects/rubyeclipse/
  43. 43
  44. 44 http://www.radrails.org/
  45. 45 http://www.radrails.org/
  46. 46 http://heroku.com/
  47. 47 http://www.capify.org/index.php/Capistrano
  48. 48 http://www.ruby-toolbox.com/
  49. 49 http://www.ruby-toolbox.com/
  50. 50
  51. 51 http://instantrails.rubyforge.org/wiki/wiki.pl
  52. 52 http://mashable.com/2007/09/30/ruby-on-rails-toolbox/
  53. 53 http://en.wikipedia.org/wiki/Test_case
  54. 54 http://en.wikipedia.org/wiki/Code_refactoring
  55. 55 http://behaviour-driven.org/TestDrivenDevelopment
  56. 56 http://behaviour-driven.org/AcceptanceTestDrivenPlanning
  57. 57 http://behaviour-driven.org/DomainDrivenDesign
  58. 58 http://behaviour-driven.org/
  59. 59 http://cukes.info/
  60. 60 http://haml-lang.com/
  61. 61 http://sass-lang.com/
  62. 62 http://lesscss.org/
  63. 63 http://git-scm.com/
  64. 64 http://subversion.tigris.org/
  65. 65 http://mercurial.selenic.com/
  66. 66 http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/
  67. 67 http://en.wikipedia.org/wiki/Git_(software)
  68. 68 http://book.git-scm.com/
  69. 69 http://progit.org/book/
  70. 70 http://gitcasts.com/episodes
  71. 71 http://gitcasts.com/git-talk
  72. 72 http://www.youtube.com/watch?v=4XpnKHJAok8
  73. 73 http://workingwithrails.com/browse/jobs/telecommuting
  74. 74 http://freelanceswitch.com/finding/the-monster-list-of-freelancing-job-sites/
  75. 75 http://www.workingwithrails.com/browse/jobs/telecommuting
  76. 76 http://jobs.37signals.com/jobs
  77. 77 http://www.authenticjobs.com/
  78. 78 http://jobs.rubynow.com/
  79. 79 http://ruby.jobamatic.com/a/jbb/find-jobs
  80. 80 http://github.com
  81. 81 http://blog.ritirisi.com/2008/06/17/15-questions-to-ask-during-a-ruby-interview/
  82. 82 http://www.rubyinside.com/11-tips-on-hiring-a-rails-developer-662.html
  83. 83 http://www.aaronsw.com/weblog/hiring
  84. 84 http://news.ycombinator.com/item?id=965982
  85. 85 http://news.ycombinator.com/item?id=549291
  86. 86 http://workawesome.com/your-job/how-to-get-hired-at-a-startup/
  87. 87 http://www.linkedin.com/
  88. 88 http://www.linkedin.com/
  89. 89 http://workingwithrails.com/
  90. 90 https://github.com/
  91. 91 http://www.useit.com/papers/webwriting/
  92. 92 http://www.alistapart.com/articles/writeliving/
  93. 93 http://www.alistapart.com/topics/content/writing/
  94. 94 http://railsbridge.org/
  95. 95 http://www.railsbridge.org/
  96. 96 http://en.wikipedia.org/wiki/Getting_Things_Done
  97. 97 http://www.davidco.com/what_is_gtd.php
  98. 98 http://www.youtube.com/watch?v=Qo7vUdKTlhk
  99. 99 http://www.pomodorotechnique.com/
  100. 100 http://www.pomodorotechnique.com/downloads/pomodoro_cheat_sheet.pdf
  101. 101 http://www.pomodorotechnique.com/downloads/pomodoro_todo.pdf
  102. 102 http://www.flickr.com/photos/daim/3676004707/
  103. 103 http://www.flickr.com/photos/daim/3676004707/
  104. 104 http://the99percent.com/tips/6314/what-daily-meditation-can-do-for-your-creativity
  105. 105 http://belitsky.info/freelance/jamis-buck/
  106. 106 http://belitsky.info/freelance/dirkjan-bussink/
  107. 107 http://belitsky.info/freelance/yehuda-katz/
  108. 108 http://www.youtube.com/watch?v=85xtN11S-fs
  109. 109 http://blip.tv/file/2733212
  110. 110 http://alohaonrails.hosted.panopto.com/CourseCast/Viewer/Default.aspx?id=bbaed907-ea36-4f1c-8dc0-eae343567434
  111. 111 http://belitsky.info/freelance/successful-ruby-freelancer/

↑ Back to topShare on Twitter

Author: Dmitry Belitsky is a passionate web developer who can't imaging his life without the web. A photography enthusiast, he's shot many photographs while traveling with his wife and daughter. Presently, he's working as a developer and designer for Problem, and writing in his blog at belitsky.info. Editor — Consultant: Grayson Stebbins is the founder of Problem, a small design and development consultancy focused on creating simple and usable web applications. He lives and breathes design, has a deep love and appreciation for technology, enjoys writing, music, film photography, podcasting, healthy eats, and a good run.

Advertising
  1. 1

    Nice article. This definitely has a lot of useful resources whether or not you’re a freelancer. I noticed you mentioned a website and blog are a great tools as well. I couldn’t agree more. Strategic and comprehensive marketing strategy will win out in the end if done properly. This article definitely provides a great start for that. Again, nice work.

    2
  2. 2

    This was a good, inspirational read. Thank you!

    2
  3. 3

    Jonas Bruun Nielsen

    October 26, 2010 11:22 am

    You missed one amazing resource guys. Any new Rails developer should dive straight into Ryan’s http://railscasts.com/
    Today it counts 237 high quality webcasts, learning guaranteed!

    1
  4. 4

    This is a very timely post for me, thx!

    0
  5. 5

    Not to be a naysayer here, it used to be that articles on Smashing were rather overall and general. Now we’re getting articles about specific programming languages, which makes the topic and story great for a select few, and of less value to significantly more.

    I’m all for diversity, and when it comes to programming languages, to each his own. But the more articles there are about RoR, the less it pertains to me. Personally, I use ColdFusion, and it’s perfectly suited for what I need.

    …We just never see any ColdFusion articles here.

    0
  6. 6

    Nice article, since I just picked up my first Ruby book and am about to dive in. I am already using Sass, so I figured what the heck.

    And no offense to the above poster at all, but I didn’t even know ColdFusion was still around. Are there a lot of people using that still? I’m now going to go look up percentage of users of specific languages.

    0
  7. 7

    After freelancing with rails for a year or so, I finally gave up. Clients increasingly requested wordpress mods, or they needed development that integrated with existing architecture, which is usually php based. I adore rails, but have not found a practical use for it as a freelancer. I don’t even want to get into the support issues I ran into when the host was upgrading their servers.

    2
  8. 8

    Anyone willing to learn Ruby or Rails will find a lot of interesting (paid or free) screencasts at http://www.learnivore.com (including RailsCasts, PeepCode and all the classics). Disclaimer: I run this site (and also use it a lot).

    0
  9. 9

    This article was about 7 different things that you tried to argue go together, but never explain how.

    ‘Oh, as a freelancer, you’re gonna love ruby, its OO-based and clean!’
    Why does this apply to a freelancer over any other programmer?

    There’s little sections of advice you’ve buried under huge mounds of resources and tools with little descriptions. Sure there are roundup articles, then there is actual meaty articles, but combine the two and I can barely find what you as SM actually have to contribute.

    the article reads like a brainstorming session with a 4 year old on a sugar high.

    0
  10. 10

    Plenty I know of. CF9 is the latest release and as far as I know, there’s plans for a CF10.

    The greatest thing about CF is that it is as it claims to be a “RAD” (Rapid Application Development) It’s amazing how little code it takes (and how easy it is to pickup due to it’s HTML-like syntax with tags) to do tasks that in other languages take so much.

    Each dev has their own preferred language; the coworker we just got in was hired knowing he’d have to learn CF and use it, though he was a previous PHP developer. After a year, he’s able to do everything he’s done in PHP in CF, and even though he won’t admit it, he’s gone so far as to say he’s very impressed with how simple and quick ColdFusion takes care of common functionality.

    0
  11. 11

    Programming languages is just a tool. I think if you want to be a successfull freelancer you have to go use PHP because it’s widely used and requires less hardware resources.

    Sure, developing with Rails is faster and more fun. But IMO it’s suited well if you want to build your own applications/products.

    2
  12. 12

    Another good resource on the RubyLearning blog is -

    1. A series of posts titled “Path to Ruby Mastery” – http://rubylearning.com/blog/2009/01/20/little-known-ways-to-ruby-mastery-by-ryan-bates/

    2. Advice for Ruby beginners – http://rubylearning.com/blog/2007/09/27/advice-for-ruby-beginners-1/

    0
  13. 13

    By the way: What kind of weed dries there in that attic?

    1
  14. 14

    Thanks very much, this article is very useful for me, I think it is more describing a way to do a freelance work in general term, not only in Ruby

    The links, method are very comprehensive (you even mention a link “how to write on web”, nice )., going to check it up :D
    once again thanks

    2
  15. 15

    You’re not completely right.
    This article is about rails freelancing, not general freelancing, meaning that you’d only pick rails projects.

    0
  16. 16

    Thanks! This is a great and very helpful article.

    0
  17. 17

    Really good article, as someone considering going freelance there is a lot of very useful links and info…

    0
  18. 18

    nice article!

    btw.. there’s a typo in the author profile. ‘imagine’ was type as ‘imaging’

    0
  19. 19

    I was mentioned http://rubyonrails.org/screencasts there, and it contains links to the Railscasts as well.

    0
  20. 20

    It is about freelancing in general with overview of some most used Ruby environment tools.

    0
  21. 21

    It is many different weeds for using as tea at the long and dark winter nights :)

    0
  22. 22

    Great that you understand this! Good luck.

    1
  23. 23

    Dude, you hit the nail.
    Your post comes in right time for me. Just getting to know Rails and i needed these kind of information.
    About the freelancer Cons, i don’t have a plant to talk to (as comic shows) but i have cat or my laptop.

    Thanks a lot

    0
  24. 24

    Thanks for your comment. Most of this article not depends on any specific programming language. I want to share my general experience about working as freelancer. Ruby/Rails was taken for this article as most popular trend for last years, and cause I learned it as well. Anyway, I hope you’ll find something useful for you in this article. For instance about rest and meditation. It can be really helpful sometimes.

    2
  25. 25

    Is it me or the Passionate Programmer Video, it’s not playable ? I’m desperate to watch this video.

    0
  26. 26

    Why exactly is “the notion of having to sell yourself” an argument against freelancing? How is that different from being employed?

    Sure, as an employee, you may not be as close to the customer as you are when you’re freelancing, but you can’t keep all your beliefs either. If you care about what you do, that is.

    On the other hand, losing an argument to plants is definitely a sign :)

    0
  27. 27

    Picking only particular projects based on what scripting languages used is sort of too idealist somehow. But some people say none of Rails programmers out there is unemployed. I don’t know if it’s true.

    Anyway, forgot to mention. It’s a nice article, plenty of good tips and resources there :)

    0
  28. 28

    This article was about 7 different things that you tried to argue go together, but never explain how.

    0
  29. 29

    I agree that programming languages are just a tool. My choice of ColdFusion is like saying “I like Brand A for hammers” and your choice of PHP is like saying “I like Brand B for hammers”. Both get the job done.

    But I don’t agree with your belief that in order to be successful that you HAVE to work with PHP. The majority of my clients are startup new projects, and as such, I help them choose a host who is within their budget, but also supports the technology I need, such as ColdFusion, to get the project done.

    In the event I come across a client who has a project on a host who doesn’t support ColdFusion, I inform them that the only way I can assist them is by moving the project to another host. If they say no, I say “thank you for your time”. But by no means am I not successful just because of my choice of language not being PHP.

    0
  30. 30

    Not only extremely informational but truly inspiring read. As a part-time freelancer already I have learned a lot of new tricks and ideas from this post and you definitely ignited the flames of learning RoR more and more as it is indeed a great community.

    0
  31. 31

    Sorry to bring these up, this is really a great article, but these are some minor details that stood out for me… and, well, here you go:

    * Ruby was been bundled with Mac OS X Leopard (1.5.x)
    ** You could mention MacRuby :)
    * You mention two open-source, free editors in the paragraph, but then when you mention you can download trials, it seems to say you can download trials of Emacs and Vim.

    Thanks again for writing this. I’m a seasoned rails developer (and have freelanced successfully), but I think there’s great information here all around.

    0
  32. 32

    Thanks for your comments.
    * Yes, it was. But some people prefer to use system independent environment and some of them use RVM (Ruby Version Manager http://rvm.beginrescueend.com/)
    ** I do only web development, so never used MacRuby :)
    *** RubyMine can be tried as trial version
    Glad that you found useful tips.

    0
  33. 33

    Can you explain what you mean?

    0
  34. 34

    I agree 100%

    Everyone who has hosting, has a standard hosting plan that supports PHP, but hardly anyone has a host that supports Rails. Most people just want a simple wordpress blog that is modified for their own needs.

    I cannot stress how important it is for a client to have a familiar interface to work with on the backend, and if you are creating a blog, why reinvent the wheel?

    For my client projects WordPress and Magento are my two go-to frameworks, then I use CakePHP for the really custom work. Finally, I use Rails when a client is really stoked on the idea.

    0
  35. 35
  36. 36

    Nice.

    Could someone point me to the Vim theme used in the screenshot?

    0
  37. 37

    Great article

    0
  38. 38

    I’ve actually been interested in poking around different languages lately. I specialize in front-end development & WordPress, but have been learning Objective C & Cocoa, poking around ColdFushion and have been dying to get some time to take a look at RoR. It’s a good thing for a freelancer to specialize in one or two areas, but be curious and aware of all of them ;)

    0
  39. 39

    Excellent article.Thank you very much, :).

    -1
  40. 40

    Nice post. You could also use another Web 2.0 languages, very productive too, as Symfony, Zend, Django… Ruby is not the only option for a nice web framework.

    0
  41. 41

    I have very liitle knowledge of ruby on rails, however have been advised that it is the best solution to develop a current project I wish to produce, which is the best way of finding talented ruby developers who will build first version web applications?

    0
  42. 42

    I want to learn Ruby language. Can you suggest books/video tutorials for me( i don’t know any computer languages:( )? Thanks!

    -4
  43. 43

    Amazing set of resources for someone looking to get into Ruby. Thanks for the great roundup!

    1
  44. 44

    Put yourself in the shoes of a shy or extremely humble person – there are plenty of professionals out that are too humble, too insecure, and their perception of their abilities is sub-par. To these people, selling their skills is a challenge and the sales process has a stigma surrounding it. This only encapsulates a very specific type of person.

    Indeed – selling is selling, no matter how you look at it, but not everyone is good at it.

    0
  45. 45

    How dare you condone making an elaborate system for the type of cheapskate who would hire a freelancer

    Don’t be dumb, cheap people hire freelancers. Give them what they deserve.

    -5
  46. 46

    A very informative & nice article.

    0
  47. 47

    I came across this blog post a bit late, thanks google :-). I agree on really everything you said, especially on structure and discipline.

    Well done, really.

    I wonder how many professional freelancers like you give up the freedom of working from anywhere and start a company. Have you ever felt tempted by the idea? Maybe when you meet a client that requires more work that you can deliver alone?

    0
  48. 48

    OMG, what a nice collection of knowledge, thank you so much!

    0
  49. 49

    It’s very generous of you to write such a detailed and complete almost-like manual. I’ve been around long time in the industry, but this is the second time I embark on a project to be independent. After eight years as an employee working at home, I know I should’ve started before, but then, you know, it gets confortable.

    Now I’ve chosen Ruby and iOS to redirect all my career efforts as an independent software developer. I chose the language because it’s been a favorite of mine for almost ten years but I hadn’t had the chance to deploy anything to production.

    Wish me luck, and thanks again for a well written, informative article.

    0
  50. 50

    Really nice and informative article. Keep it up!

    0
  51. 51

    Very helpfull post, thx sir:)

    1

↑ Back to top