Ruby on Rails: The Radial Advantage

At Radial, we’re fanatical when it comes Ruby and Ruby on Rails. We have been a development firm emphasizing the advantages of RoR for quite some time - it’s what we have been working with the longest! Rails provides a fantastic set of tools that allows you to deliver more features in less time. In fact, using Rails is so clean and easy, it is our go to choice for many of our projects and production.

The Ruby on Rails core team is constantly on the pulse of the industry. This allows them to understand what needs developers have when creating applications using Ruby on Rails and create new features and tools that are “out of the box ready”. As a result, not only do they have a strong open-sourced framework that is used globally, but they are able to build a strong foundation for their community to lean on.

Pretty much every major city in the world has a Ruby on Rails community with regular meetups and developers are more closely aligned around the rules of responsible development; they are passionate about good code that is scalable, maintainable, and has strong standardization and quality.

Agile

Radial implements agile by emphasizing small, easily defined and delivered tasks over giant, monolithic features. We break large features into a series of discretely-defined small tasks, which can be built and delivered as a series of specific features.

Testable

When consulting with a client to build an application, we listen to understand the specific features they’re looking for. As we work on these, we run tests to make sure that they do the actions that fit their purpose; our code isn’t arbitrary. Then when we show the client how our code performs, the client can feel confident that they are getting exactly what they want.

Test-driven development (TDD) and Behavior-Driven Development (BDD) processes produce the most accurate code. When we deliver a product to our client, we confirm that it is the best version that it can be by testing it beforehand. By result, there is no question that it works the way that it should. This adds credibility by demonstrating you are telling the truth with what you built.

Core Principles

Fundamentally, software development is difficult, and at Radial, we do our best to remove as much of our clients’ risk from the process as possible. We believe that almost all software projects are fundamentally entrepreneurial in nature, and the application of a process designed to help software entrepreneurs succeed is a benefit to our clients. We believe in validated learning, well-designed metrics, continuous improvement, and relentless delivery of user-ready software.

Our Ruby on Rails work is intrinsically a feedback loop. We plan, deliver, and validate, forever.

Why Rails?

Delivery

It is often difficult to get to the core of what a client wants. Failing to get to this point can result in miscommunication and bad outcomes. We are invested in having hard conversations with clients early on in the process and throughout the development process. This helps ensure understand of their business needs. It also allows us to resolve issues early, before they balloon. We also are willing to own our mistakes, and we will work hard fix them. This results in a client relationship strong in trust, with a focus on delivering features that solve real problems.

Our Process

Our process is rooted in the concepts of agile development and scrum-based project management. For large projects, we work hard to break difficult, long-term tasks into a series of smaller, more directly deliverable tasks. By breaking monolithic projects and features into a series of two week development “sprints,” we always work on short-term, achievable goals, with a great deal of accountability, ensuring that we always deliver what we promise. Radial’s process, with the developer lead at the center, is designed to build trust, create predictability, and minimize risk.

Our Culture

Radial Development Group builds software within the paradigm made famous by Eric Reis, in his book The Lean Startup. In this book, he details the manner in which many successful software ventures have applied the lessons of Toyota’s manufacturing methods to their businesses. This process is founded on the scientific method: always attempting to understand assumptions and to test hypotheses with collected data in an effort to eliminate uncertainty and risk from software development. At Radial, we mitigate the risk inherent in software development by breaking large challenges into small tasks; cycling through a process of planning, delivering, and validating our work; and adjusting our, and our clients’, assumptions and designs. This helps us create a virtuous cycle in which clients receive regular delivery of a constantly-improving project.

We also work hard to apply this same process to our own culture and process. It’s not always a client project that can be interatively improved. It’s also our own team.

Ruby on Rails: The Radial Toolbox

The Rails community is large and we work with a huge array of tools, but often we find ourselves using and recommending the same core set of tools. Whatever your needs, it seems like there is a community-based package that can help you meet your needs. We love this about Rails and we contribute and participate when we can, and the high quality of Ruby gems is one of the things that makes Rails one of the best tools for prototyping and building amazing software.

Our Project Standards

While we definitely work with many many versions of Ruby, Rails, and various gems, Radial certainly has some preferences. These are just a few of the major gems that we consistently come back to.

  • Devise - for user management, there is simply nothing better for getting started.
  • Pundit - for access control, this is a powerful and flexible tool
  • Postgres Relational Database - We use MySQL as well, but Postgres provides some interesting flexibility for non-SQL datatypes and is our standard tool
  • Redis/Sidekiq - Sidekiq is an amazing tool for doing queue-based tasks
  • SendGrid - For transactional email there isn’t a better tool
  • Stripe - Easily the best early-stage tool providing financial integrations with credit cards for one-time and subscription purchases.
  • Heroku - DevOps as a service, at a price that is difficult to beat until a company has reached a very large scale
  • 12 Factor Applications - we’re very large fans of decoupled single page web applications with strong separation between SPA JavaScript and Rails backends.

How We Test

Radial believes strongly in automated testing. TDD/BDD is a strong paradigm that contributes to code quality by strongly defining feature requests in well-definted terms. It also ensures that changes and new features don’t create regressive bugs, breaking pre-existing features.

At Radial, we belive in writing tests in a user-oriented manner, with an emphasis on feature and data testing - mocking user behavior and ensuring resulting data matches expected behavior.

  • rspec - as a test-oriented domain-specific language, there simply isn’t a better tool for testing.
  • Capybara - for performing user-facing testing, Capybara allows us to automate the testing of complex user stories.
  • FactoryBot - there isn’t a better tool for mocking data.
  • Faker - when it comes to creating a myriad of test-only fake users for a system, adding random addresses, or other fake data needs, Faker is an amazing tool.
  • Mocha/Chai - for front-end JavaScript testing, we like Mocha and Chai (we also like Enzyme and Jasmine, too).

Our Project Standards

At Radial, we strongly believe that all systems with which we work need to be simple, and well defined for developers to create their development environments. Projects will always have setup and deployment instructions, with the expectation that a new developer can have a project running on her system in under 30 minutes. We additionally document our language standards, and pull-request expectations in each project.

Additionally, Radial believes that our clients are best served by a comprehensive peer-review process for all pull requests made by our team. By enforcing a strong culture of code review, we are able to ensure concise, maintainable, intentional code, which helps to avoid code debt and ensure long-term maintainability for our client’s code.