Framework or not?
Things to think about when starting a project
Things to think about when starting a project
When starting a new web application the first question to ask is what technology to use. That question encompasses both the programming language as well as any libraries and frameworks.
Unfortunately in the most cases, that question is not even considered. Because of the default is the easiest, which means what one knows the best. But it may or may not be the right one. As with everything, it depends on the exact circumstances.
Both language and the framework (or lack of it) influence the process of building a web application.
First and foremost the technology, for the most part, doesn’t matter for the end users. As long as it fulfills the requirements it’s irrelevant. Or more precisely, it doesn’t matter directly. But indirectly it will influence things which users and project owners care about. Things like the speed of adding any new features, the security of the application, how rich the UI can be.
From the technology, the language itself is of a secondary importance. With the modern web development what’s requires is being proficient in it. As long as the language itself is popular enough for the web everything should be fine.
But the idea of choosing an unfamiliar language for a new project, although tempting, in the most cases, will not help to bring the project quickly to the finish line. Such exercise should be left for times of learning and exploration.
The more important part of the technology stack is the underlying framework, or more precisely, the question which happens before it: should one choose an existing framework or build all the necessary abstractions by hand.
No framework
Not choosing a framework means a lot more work. Especially in the beginning. There’s a need to establish the foundation on which the project can be build.
The biggest advantage of building such foundations will be that they should fit perfectly the problem domain. There’s no need to work around the abstractions provided by any existing framework.
And it doesn’t mean everything needs to be coded from scratch. There’re a lot of libraries which can help with various aspects of the project without imposing specific structure.
Also micro frameworks which make much fewer assumptions can help with the workload. Usually, they abstract enough to be applicable to a much wider scope than full features frameworks.
Framework
Full featured web frameworks in exchange can provide the speed of developing something new. It’s a godsend when prototyping. That velocity can be translated either in a speedier project delivery or developing more features.
Another advantage is having an ecosystem of extensions. A lot of common problems have ready made solution (whether that solution fits perfectly to the problem at hand or not is another issue).
The cost of speedier development is having to conform to the existing structure and way of doing things. It is fine for smaller projects but quickly starts to break and impede progress when the project grows.
Summary
There’s no one right answer which will fit all of the cases. Each project needs to be evaluated on its own. What is important is to be aware of that question when starting and not to blindly follow one’s default. Usually the choice will be between using well known framework which one has enough experience and building something from scratch to better accommodate the requirements.