By: Matt Henley, VP of Client Service
This is the first in a series of Twentyseven Global blog posts related to the theme of “building software right the first time.” For this article, we’ll tackle the subject of choosing a software framework.
Prospective clients often come to us with existing applications that require new features, need to scale or are in need of general improvements to usability and performance. Often these clients have invested significant time and money in applications that simply do not meet their needs. Other times clients bring apps that were built with a “minimally viable product,” or MVP, in mind, knowing that the MVP might be a throwaway prototype, needing to be rebuilt when it’s time to add features and/or users. In either case, we’ll begin with an architecture and code review to assess the cost/benefit of fixing the current architecture, or starting over. We’re often left to ponder, “if only they had built this right the first time…”
So why do some applications fall short? While there are many ways to write bad software, the difference often comes down to what frameworks were or were not used as the foundation.
A software framework is a set of software programs, code libraries and tools that can be brought into the code base to lay the foundation of a software application and provide common utilities for routine tasks. These utilities may include error logging, object to relational mapping tools (ORMs), APIs, plug-in architectures, control libraries such as jQuery, configuration, messaging, localization and so on.
What are the main benefits of using a modern software framework?
- The best frameworks force developers to follow good design patterns. For example, Yii (one of our favorite PHP frameworks) will force the user to structure the code to follow the standard Model/View/Controller design pattern—possibly the most critical pattern for creating extensible, maintainable software.
- Frameworks improve security. For example a good ORM framework will provide a more efficient, more extensible and more secure method to access your database, eliminating common threats such as SQL-Injection attacks.
- A framework can significantly decrease the time/effort to build an application. Whereas the common misconception is that it will take more time to implement on a standard framework, using the tools and pre-built code of a modern framework reduces the amount of code that must be written, improves overall quality and decreases defect counts.
- A framework can make it easier to estimate a project because the structure of your code base will be defined, allowing the developer to focus the estimate on functionality rather than technology architecture.
- The predefined feature set allows developers to focus on solving your business challenges rather than reinventing the wheel for common tasks.
- Lastly, a good framework provides for well written code that can be easily transferred to other developers. If a new developer has used the framework before, they’ll immediately “know their way around.” (Example: I don’t know your application, but I know Spring MVC, so I can quickly come up to speed and start contributing to your project.)
What frameworks are Twentyseven Global currently using? Among the many viable choices for the Linux/Apache/MySQL/PHP (LAMP) technology stack, Yii is fast becoming our favorite. It has an elegant code structure, a very mature set of features and performance is off the chart. For Microsoft based applications, it’s all about ASP.NET MVC for producing quality, patterns-based applications. For most Java implementations Spring MVC and Hibernate is still an excellent choice. Rails remains the killer Ruby framework, although there are a host of other Ruby frameworks to consider for various reasons.
Regardless of the language and underlying technology stack, a standard framework can help achieve your goals of a high-performing, extensible and secure application that keeps your developers focused on your business objectives, not reinventing the wheel. Start your development on a good framework, and you’ll stand a better chance of building it right the first time.