The one where Kamil sees problem with typical software development approach

Let's look at the typical development process of a new web application.

When I start programing new app in Java and Spring / Spring Boot (for other technology stacks like ASP.NET, node.js ect. this process looks the same more or less) I can use Spring Initializer to bootstrap my dependencies configuration: I pick which libraries I will use in my project and then I end up with empty project ready to begin with. At this point, let say I would like to start with defining access restriction and login mechanism to my app, there is Spring Security library coming to help me, but I need to:

  • Implement a user model: create database structure for the user, implement database access functionality to retrieve user data.
  • Connect Spring Security "user" with my previously created user model.
  • In case of using Json Web Tokens for authentication I have to implement Authorization and Authentication filters.
  • ect..
My point is, there are a lot of steps for basic application needs - in this example creating barebones functionality for letting user to log into your application. When you create a new app, you need to go through this process again and again.

Another point is UI - in older days, backend developer got html templates from graphics designer and was dynamically generating HTML page on each browser request. Today, established approach is to divide web application into two parts, frontend typically written in one of the Javascript / Typescript frameworks like Angular / React / Vue and backend in Java or other technology. This leads to either:
  • backend developer has to be full stack and be able to program frontend apps, or
  • you need another frontend developer in your team.
What I would like to have is an ability to reuse my already written code from other projects. I don't want to repeat myself, if I already have written for example login functionality in one app, why I have to recreate it in another event if it's mostly copy-paste-rename. The same with reusability of common basic enterprise apps use cases, for example excel import / export, report generation etc. 

I would like to have a framework which would allow me to:
  • outsource to it common tasks like security, user management, login, registration, password retrieval - it's common, so why I have to recreate this more or less from scratch in each app;
  • allow me to reuse once written "blocks of business code" across different apps
  • allow me to create nice looking ui fast, if I have defined how my data model looks, all I want to "say" is: "hey form, I want you to display fields for model 'client' and save it if user clicks 'save' ", I don't want to laboriously connect each text input with model field, send it to ClientService on browser side, which (after manually defined validation) will pass it to server, where I need to provide another "data holding structure" (rest endpoint DTO), again write validation for it, pass it to service which stores the data in database.
My next posts will be about designing and creating such a framework (based on Spring Boot / Java)
Cheers! 

Komentarze

Popularne posty z tego bloga

The one where SinnoFramework was revealed

The one where Kamil says hello