No matter how much knowledge we gain over our careers, our real impact on the world is measured only by the meaningful things we create. However, when faced with a blank page, many of us have a hard time figuring out where to begin. That's where rubyproblems.com comes in handy.
On this website, you can expect to find realistic problems similar to what you might run into in day to day work. However, the difference between the problems you'll find here and the one's you'll encounter in your day job is that each one of these problems has already been solved.
Knowing that you are working on a solved problem takes away the fear of being sent on a fool's errand. With that in mind, it is possible to relax a bit and focus on the practical experiences that come about when working on interesting problems. While there are some concrete goals in our challenges, the most important thing is to find an enjoyable path to your desired outcome.
The problems we post here can be solved by anyone with at least a baseline understanding of Ruby and programming in general. But if you're focusing on whether you can solve the problem, or how difficult it appears to you on the surface: You're doing it wrong.
We feel that our problems will teach different people different things, depending on their level of experience and interest. That said, the act of solving these problems is sure to be instructive for almost every active Ruby developer, regardless of what your particular background is like.
If you've read Gregory Brown's Ruby Best Practices book, you might be interested to know that rubyproblems.com is a direct descendent of it. If you haven't, the whole book is open source now and you can grab a free PDF download to get a sense of what the writing style of our solutions looks like.
We've extended the case study format of RBP into something a bit more interactive, giving readers an opportunity to solve the problems themselves before taking a look at our approach. As in the book, our solution discussions are less about the raw "how to" aspect of things, and more about the reasons why we took the path we chose.
Because of this shift in focus, you won't just learn how to solve a given problem, but instead, you'll be exposed to the thought process of professional Rubyists in the context of a problem that you've already put some effort into. After you've come up with your solution and had a chance to read through ours, you'll be able to access a discussion thread where you can compare notes with us and others who have worked on the problem.
In the end, there is a good chance that we'll learn as much from you as you do from us, but we hope that you'll enjoy our content nonetheless.
By purchasing our solutions, you help keep this service alive and available for the benefit of all of our users. The overall time cost of running this service is very high for us, so by charging we hope to be able to offset some of those costs and keep things running sustainably.
The content for this site is produced primarily by Gregory Brown, author of the book Ruby Best Practices and maintainer of Ruby's PDF generation library Prawn. Gregory has spoken at Ruby conferences and users groups throughout the United States, and is an active trainer, blogger, and open source hacker.
Brad Ediger is also helping with content and overall guidance. Brad is the author of Advanced Rails and the third developer to join Prawn's core team. He is also the founder of Madriska Media Group, Inc., the company which is currently paying the bills for keeping this site afloat.
Most of the site itself was built by Jordan Byron, who has been Greg and Brad's go-to-guy when it comes to Rails apps off the ground in the blink of an eye. Without his efforts, it probably would have been a long time before this site went live, if it launched at all.
Between the three of us, we think we've got you pretty well covered when it comes to creating a great learning experience backed by years of professional and personal experience.
We'd be happy to answer any question you have about our service, or accept any feedback in general. Please send us a message and we'll be sure to respond promptly.
Great! Have a look at the list of available problems, find one you like, and get hacking.