In backend web development, choosing the best backend framework may not be as easy as it seems. Here, I'll explain how we approached this issue at Apptension with an exercise case study.Some thoughts a software engineer might have:"There are too many backend frameworks."Or:“Backend developers are too different, only consensus can save us."Here, at Apptension, a primarily frontend software house, there are not many backend developers.Recently, we’ve started a mentoring process and picked learning about backend frameworks as the first meeting topic. Read more about our motivations, the exercise and an office event that we organized.
You are a part of a startup, software house or what-do-they-call-us-these-days.Every IT company will eventually face this problem: engineers with different programming languages or framework backgrounds.You land a new project to build and you get to choose the technology. It requires two backend developers. Let us see… Who is free/bookable right now… Great, one PHP developer and one Python developer.What should you do?You will probably evaluate who is more experienced and choose his main programming language as the implementation language. Or maybe you decide to start with one programmer and wait for another project to finish so that you have two people with the same background?What if you had a cyclic framework choosing process? You wouldn’t have the problem. Benefits:
The downside of that would be the maintenance of long-living projects written in different styles.How could this process look like?It would involve cyclic meetings with all the backend developers to discuss the technology guidelines for your company. Discussions should be preceded with exercising new solutions on typical use cases. You would then test the choices on some small project (preferably for internal use or just as a challenge) to verify applicability of the new guidelines in production environments.Forcing yourself to do everything in one run is the best way to burn everyone out, so better take your time during this process.
What do we need a backend framework for?A router, views, models, database queries, controllers, validation, serializers, tests, configurations, error reporting, integrations, profiling and so on.We focused on the most crucial components and explored them in a new web framework during a programming exercise.We want to enable the developers to test their new and shiny implementations against some specifications. They should create an application container to allow others to check whether their solutions work correctly. Ideally we would also have a list of commands used to generate the application for tutoring other. Finally, we want to put those things in a repository or make a presentation as a discussion opening.Eventually you want to know which implementation is the fastest, right? Well... go for C or Rust then.Just kidding!It is cool when you can deliver something blazingly fast, highly concurrent and scalable but if your client can do without it other factors are more important. Call it deadlines, maintainability or as some proclaim it might be developer happiness.
I prepared a sample exercise called Timetension. Later on the whole backend team created a sensible backend frameworks list and gathered during an office event.The list of frameworks we wanted to explore was chosen using those guidelines:
We had the following agenda for our first meeting.
Rules for our coding phase:
People chose the following languages and frameworks:
Below is the list of programming languages, frameworks and micro frameworks:
Not enough time:For the meeting and for finishing the exercise season.Christmas time hit us hard and now we have hard time going back and finishing the implementations.Three of six guys finished their implementations; the team is looking forward to next meeting about Docker rather than going back because it was so long ago.Next time our exercises will be shortened to the minimum to ensure that everyone finishes with the group rather than alone.Docker takes time:DevOps is very different than writing code and switching context does not help. Having dedicated people doing devops tasks might speed up your development process significantly.Writing code together builds the team:We mostly work in pairs or lonely on projects and coding with a larger group certainly was fun, entertaining and social.One room means better knowledge sharing:It just works.Thanks for reading! Please share this blog post if you liked it. Hopefully you will visit us another time again.