In software engineering, itâs a quite common problem to pick a tool that doesnât fit properly with a projectsâs purpose. Picking a toolset might seem like a small thing at the beginning of a project, but later can end up being an over-engineered or under-engineered one. And refactoring an already developed app to resolve these issues is not easy at all if not almost infeasible considering the time & resource one has to invest. In denkwerk, we always face such challenge as we step into a wide variety of projects from time to time.
Projects come in with different requirements, goals, deadlines, budgets, etc, which leads us to our thinking table before each & every project. And selecting the right tool demands at least a minimum amount of exposure to all of the available options. For example, weâll share some of our JavaScript teamâs challenges as the JavaScript platforms offer way more choices and often makes the deciding task a bit difficult for us.
There is only one way to tell if a tool or toolset is fit for a project. To try out the tool & understand the pros & cons. No matter how much we read about something or research, itâs always hard to judge a tool or toolset without hands on experience. So, we try our best to do experiments with different tools in denkwerk, especially when we do our in-house projects.
As we think our stronger side is design and frontend development, there are quite a few options in JavaScript to pick from. There are Frameworks/Libraries like â React, Vue, Angular, Nuxt, Next, etc for frontend application development. All of these tools have their own advantages and disadvantages.
For our de facto tool we are increasingly using React more these days because of a few reasons. Technically you can build the same thing with React, that you can build with Angular or Vue, or other less known good tools (and vice versa). But, as a JavaScript team, we just love how React enables us to think purely in JavaScript and giving us almost all of the flexibility the language offers. We donât need to learn much new syntactical sugar to write our applications and focus on writing code. Also, the community and huge support for React makes us trust this tool as a safe bet for a long running project. Having said that, we donât look down upon in any way to other tools, we invite the different ideas into our team or other teams as well to get a sense of the whole environment rather than being tool agnostic.
We tried different tools, for example: we used VueJS for a different team who were coming from a design/template-design background as we thought itâs way more easier for them to catch the pure html like templating syntax in Vue. It made the learning and understanding of a JavaScript frontend framework way more easier for the team rather them make the whole team learn React right away.
Then we were rebuilding our company website and we thought that for this particular project we have a bit different requirements than our other projects. This website needs good SEO, better rendering time than our previous heavy website with a lot design components, will mostly get and show data with a very limited interaction, will host a blog section as well. So, considering all of these, we picked NuxtJS for the project as it offers a good building block for server-side-rendering which solves a lot of the issues related with SEO and gives us all of the flexibility of VueJS framework. Also, as most of the data for the website are kind of static and hardly changes, we thought it would be wiser to use a service like Contentful to store all our data which removed the need to build a backend api service on our own. This reduces the maintenance cost and effort of the project.
So, to summarise this writing, we can say one thing for sure, at denkwerk, we are open to all kind of ideas and technologies and we emphasize a lot on picking up the right toolset for the right job.