The Clojure community has a knack for looking at things and distilling them to their essence. I think the recent discussion on whether Clojure needs a web framework is another opportunity for that.
I don’t think Clojure doesn’t need a web framework, because Clojure is a programming language and doesn’t need anything except a nice, warm JVM. Even if you reframe the question, “Do people need a Clojure web framework?”, I still don’t think its asking the right thing. People don’t need a web framework, they need what a web framework provides for them, and different people have very different needs.
If we use the Jobs To Be Done theory we can see what job different groups of people ‘hire’ a framework for:
The business hires a popular framework because
- It offers the promise of quick development on features, with less time spent on the unimportant parts.
- They want the security that their development team are working with something popular that will be supported, maintained, and used by lots of people for a long time.
- They also like the benefit that there will be a relatively large hiring pool of people able to step into their codebase and get up to speed quickly.
Recruiters like to be able to pick out a particular technology and match you to their clients requirements. Like it or not, thats the world that we live in. If there was a common framework that people used, this part would be easier for them and the developer trying to get hired.
The CTO shares many of the same concerns with the business, she also
- Finds the shared conventions (from the framework and the community) useful for eliminating bikeshedding.
- The shared conventions let developers understand each others code more easily.
- Using a popular framework means that they are able to pull in battle tested libraries for critical things like auth, and be fairly confident in their quality.
- Common concerns that every webapp needs, like templating and pluralisation are also built in.
The junior developer
A popular framework is great for a junior developer, they hire it for
- A scaffold of how to build a web application.
- The ability to get a quick win and get a real web application running without spending 10 hours banging their head against the keyboard.
- Lots of standard functionality and third party libraries that they can pull in without necessarily understanding how to do it themselves (i.e. login and authorisation).
- A large amount of documentation to learn from, and usually a community that is well set up for teaching beginners.
- The ability to slot into a larger development team because the work they are doing can be well defined and matched to their skill level.
The senior developer
A framework is least useful to the senior developer, as they are often capable of combining libraries with the functionality they need to build their own webapp. A framework is still useful if it allows them to swap out libraries for their own choice. They may find themselves restricted by the framework if they want to step outside of the bounds that the framework provides.
If you agree with my (crude) characterisations then you can see that a framework provides many different things to many different people. Clojure doesn’t necessarily need a web framework, but in my opinion it does need to satisfy each of the parties involved with the development process if it wants to be used more commonly in web app development.