Programming paradigms: Which framework is better?

Programming is a very complex and rapidly evolving field, with new technologies and methodologies constantly emerging. One fundamental aspect of programming is the approach you choose to solve a very specific problem. As software development became a lot more complex than before, we needed a set of pre-built components to help us accelerate our development speed across different projects.

Let's talk about frameworks

To tackle the problem of speed and efficiency, we developed several tools. Components, structures, libraries, and frameworks were all invented to help developers in minimizing time and effort while solving common problems. It's important to remember that we invented every tool to make our lives easier. Those common problems such as database connectivity, user authentication and authorization, and user interface design. We'll get to those later.

Is it reasonable to prioritize speed above all?

Speed and efficiency are indeed one of the most important motives for the invention of programming frameworks. However, there are some other key factors such as standardization and best practices, reducing the risk of errors and bugs, maintainability, reusability, scalability, and consistency. These concerns are critical to the success of modern applications.

What works for you may not work for me

Different projects have different requirements, preferences, and circumstances. As the same concept applies to our daily lives, different people have different stories and preferences. What is right or effective for one person may not be so for another. Think about it. Including work, relationships, hobbies, and health. Some people thrive in high-pressure, fast-paced work environments. Others prefer a more relaxed approach. This concept also applies to programming frameworks. Different frameworks have different abilities, weak points, and design philosophies, so what works well for one project may not work well for another.

How to choose a framework?

While choosing a framework, consider the specific needs and requirements of your project. Some frameworks may be better suited to small and simple projects, while others may be better suited to large and complex projects. Let us question our choice!

  • Do you have a team with specialized knowledge and expertise?

  • Are you a solo developer or a small team?

  • Do you really need amazing architecture before you release your MVP?

  • Does Laravel or Symfony make it easier to find new team members?

  • What about using a different programming language? Should you consider Python: Django or Flask?

  • What about UI? React or Vue?

You can also read "Symfony is not the best framework" which I wrote and believe answered the "Which framework is better" question.

Software engineering is all about trade-offs

This list could go on forever. I've got at least ten more questions. Instead, I'll give you a personal example from my own life. Even though I work as a back-end developer for my team during the week, weekends are a completely different story. I work as a full-stack product engineer on my side project. I'm in charge of all decisions, the design process, and the development progress. I must accept that there will be some trade-offs. Let's talk about it!

  • I only have a limited amount of time on weekends to develop software.

  • I just want something that works; it doesn't have to be perfect.

  • I'd like to get feedback from real users as soon as possible.

  • I don't need a full development cycle, as development teams do. Instead, I can plan a straightforward strategy.

  • I am comfortable with PHP and can work with any PHP framework.

  • I am familiar with TypeScript, JavaScript, and React.

  • I know how to write clean code.

  • I know how to write automated tests.

  • I am familiar with SQL and can create a database.

  • I'm aware of technologies that could be useful for other types of data storage.

Wow, looks like I got all I need in my toolbox to build a product. I'm not the only one. I know so many devs that have a similar skill set. So, let's come back to the main question.

We use Symfony at work, and I love it! As a result, I decided to start my side project with it. With Symfony, I quickly realized that every decision costs me time. As explained previously, I have a limited amount of time on weekends. Symfony's flexibility also takes time to build. Even though it's of good quality and helps you create good software, it wasn't the best fit for my needs. I only have so much time. I started to consider other options, such as Laravel. Even though I didn't agree with everything, I was impressed. It allowed me to build much faster. Will I refactor and switch to something else in the future? That's exactly how it works.

The circumstances of today are not the same as those of tomorrow. It's not always black and white. Usually, I try not to overthink tomorrow's problems. However, I am not ignoring every fact that will cause more problems tomorrow. I would be happy to deliver, refactor, and upgrade my product between now and tomorrow. I would be pleased to have software that both benefits its users and profits. My only piece of advice is to choose a framework that you can deliver over!

Want to read more?

Follow me on Twitter and LinkedIn to be the first to know about my next article!