January 28, 2021
Key Decision Criteria for Selecting a Development Framework
Selecting a software development framework is no arbitrary decision: features, strategic goals, availability and experience of talent, and countless details all come together to inform the decision-making process.
Whether you opt to start from scratch, rebuild an existing solution, or update a legacy system, there are some things you should know before you commit to a framework.
In this article, you’ll hear from 3pillar experts who share their insights and advice on choosing a software framework. But first, we’ll briefly define software development frameworks and explain why it’s so crucial that you make the right decision.
What is a Software Development Framework?
A software development framework is a platform for developing applications that offers generic features/functionalities that can be modified/customized by developers.
For example, instead of building an app from scratch, developers can start with a framework that offers built-in templates, paste in code for generic menus, buttons, galleries, etc., then customize the code based on project requirements.
Additionally, as Javier Trevino points out, “frameworks aren’t just about simplifying development. They’re about enforcing development patterns and best practices. Frameworks are used for integration, security, efficiency, and scalability. Engineers need to first understand how to use any given framework before they can leverage its tools to simplify development.”
Angel Almada points out that whether you’re using a high-level or low-level programming language factors into your selection, too. For example, .NET can be used to handle memory management with the garbage collector, while Rust can’t.
While development frameworks come with many advantages, they also come with some drawbacks you should be aware of before committing to a solution.
For instance, some frameworks offer simplicity at the high cost of locking you into their set of rules, decisions, processes, and conventions. For this reason, organizations need to take software design and architecture seriously when making the decision to use a framework for any app development project. Ideally, you’d select an architecture that allows you to separate your business logic from the framework code as much as possible.
That separation will make it much easier to replace individual elements of your system in the future–if needed.
Development Framework Selection Criteria
Choosing a software development framework ultimately boils down to three key factors: the business strategy, the team experience, and the end consumer. These factors are of equal importance, and failing to consider any of them will doom the project to failure before it gets off the ground.
Team experience is crucial when it comes to solving new problems, serving up the best possible user experience, and delivering products on time. Many companies deliberately stick to proven or even old-fashioned development frameworks, because they work and get things done without delaying major releases (or potentially breaking things down the road).
Slack, for example, uses PHP in its backend along with Hack HHVM. While many might say that this is an odd choice for a real-time messaging app, it works for their team.
Facebook uses Symphony, a PHP framework to facilitate development for its Facebook Ads API.
To date, Facebook apps are among the best examples of successful React Native apps. Naturally, this makes sense because Facebook created React. That level of familiarity with the framework makes it easy for Facebook engineers and developers to leverage all of its capabilities and fix issues when they arise.
At the same time, it’s critical to select the best framework for the job, not just the one that’s most familiar.
For every innovative product released on older frameworks, there are many more cases where
new frameworks offer significant advantages over existing ones, and teams will need to overcome the learning curve and become proficient using them.
Francisco Carvajal says, “When selecting a framework, balance out new technologies with those that have proven themselves over time. PHP works in many cases because it’s been around for decades, with tons of libraries available.”
Still, there’s a trade-off.
He adds, “Look at Python. It’s more likely to be taught in schools than PHP. The language is much simpler, and it allows you to do more with fewer lines of code. While the benefits might come at the cost of stability for large-scale projects and access to fewer libraries, there’s also the possibility of getting feature-breaking releases (think Python 2 to Python 3).”
In some cases, a new framework can help you get started fast, and that’s valid. Be aware of the fact, however, that you might need to switch to a more mature technology as you scale.
It is true that some languages offer new and exciting features and that you can take advantage of new ideas. Keep in mind that the less mature they are, however, the higher the risk of needing to change to a more mature technology down the road.
What is your goal/use case/target outcome? How will X product or Y upgrade move the needle on achieving your goal? In short, select a framework that best supports your target objective. Are you building a mobile app? A web app? Will it require cross-channel functionality?
3Pillar’s Angel Moreno says, “for all cases, a clear understanding of all functional and non-functional requirements is required. If rebuilding a new application, a clear understanding of the current state of the overall solution is also required. Once all business requirements and existing solutions are understood, it becomes critical to design a high-level architecture. From there, you start making decisions about the tech stack based on the availability of current talent or even preparing a new technical team to take on the project.”
Long-term, you’ll also want to continually evaluate the software development framework to assess whether it still serves the strategy. If it does not, you might need to move to a new framework better-suited to achieving the most current set of goals.
As an example, Twitter was initially a Ruby on Rails web app. Later, it began migrating parts of their stack to Scala and Java. That change was driven by a real business need–improving the in-app search function–and the decision was backed by the team, who understood the limitations of RoR and the need to pivot to a solution better equipped to handle new needs.
3Pillar’s Rodolfo Carmona says, “one of the most common issues I’ve seen is that companies migrate to a new framework before defining a vision for the future. Then, they’ll be forced to do a second migration in a short amount of time to course-correct, making it hard to envision future upgrades/feature releases from a technical standpoint.”
He adds, “if the business team isn’t involved in creating a complete picture of how this project aligns with their core objectives, or how it can be modified in the next five years, they’ll likely change to a completely new solution when they reach the limits of their initial solution.”
An example comes from Airbnb. They made the decision to sunset React Native and, instead, focus on reinvesting their development efforts back into building cross-platform native apps that share a single codebase.
The company found that React Native wasn’t the best software development framework for achieving their organizational goals and came to the conclusion that native would allow them to work faster, maintain quality standards and improve the developer experience. Unfortunately, the decision came after investing a considerable amount of time and resources into React Native.
Perhaps the most essential consideration when selecting a software development framework is the end consumer. Who will be using the final product? How will they use it? How do you want them to use it?
3Pillar’s Henry Martinez advises organizations to “start with the customer. Get the requirements right and let customer needs drive the infrastructure options rather than choosing a DevOps framework first that could end up constraining the customer experience.”
Shopify is another example of a company using an older development framework to achieve a specific outcome. The e-commerce service uses Ruby on Rails, despite many experts advising developers against using RoR to build large, web-based apps—and their experienced team of RoR engineers find that the framework allows them to write code faster, eliminate bottlenecks, and as a result, offer a great customer experience.
Will You Rebuild from Scratch or Gradually Replace Aging Components?
Once you’ve defined what it is you hope to achieve and who you’re building this solution for, you’ll need to look at what it takes to get there.
Are you replacing some but not all features or systems? Gradual replacement can be a cost-effective, often necessary strategy. In many cases, it also means that you could be waiting a long time to achieve ROI or meaningful business value. Additionally, if you’re updating legacy systems, it could limit your options.
If you’re rebuilding from scratch, make sure that you have a good reason for taking on the expense, risks, and challenges—reasons might be anything from scalability to storage to improved performance. Whatever the motivation, it should align with business goals and offer measurable benefits.
As Francisco Carvajal notes, “a robust framework could do the job but could be slower than some of the more lightweight options available.” He also mentions that there are many points to evaluate and every project is different, meaning you’ll need to review frameworks on a case-by-case basis.
If you do decide to rebuild an application from scratch, you’ll have a lot more freedom when it comes to selecting a framework.
We recommend choosing the framework with the most active community. Opting for this route, you can learn from others who have experienced the same problems and developed solutions.
What Resources Do You Already Have?
Knowing the specifics of your in-house team’s experience, what your outsourcing partner can offer, and the capabilities each team member brings to the table are also critical considerations you’ll want to nail down before making the final decision.
Ask yourself the following questions as you begin evaluating your options:
- Who is involved in this process?
- What kind of experience do they have?
- How does the framework support your development team?
- Does the framework support them?
- If developers are unfamiliar with the framework, what kind of learning curve are you looking at?
- Does it make more sense to outsource this project to a more experienced team?
- Can you achieve the desired outcome using a different framework?
- If you choose to go with an alternative option, what will you lose (or gain) by “settling?”
Stability and Security
Stability of the development framework is another big consideration when it comes to making a selection.
This is typically measured by a few key metrics. These can include questions such as how many companies are actively using it, how many bugs have been reported (and fixed), and how long has this framework been around?
Essentially, you’re looking at the framework’s reputation.
Read case studies, articles, developer forums, etc. that provide insight into the performance and security of the framework.
In the end, the best software development framework is one that closely aligns with your team’s experience and capabilities. It should make it easy to achieve your business goals while also providing your end-consumers with a valuable solution for reaching their own objectives.