Loose coupling in application programming: Effects and side effects
Sambprasad Kuvalekar
Managing Director Prismatic Softwares Private Limited|Technopreneur| BFSI| Low Code | Healthcare | Manufacturing | Power | IoT | AI
Technology has been changing leaps and bounds. Last 20 years, post internet, technology has traveled a long distance and has crossed new milestones - every 5 years. I would like to bring up some key points around application programming space in this article.
After the thunder of Y2K got over; the first decade of 21st century enjoyed the progress of web frameworks in different programming paradigms. The focus was on streamlining server side frameworks and hence MVC design pattern became a buzz word. By the time, server side frameworks with MVC settles down, integration frameworks like spring in Java have taken a center stage .The second decade gave birth to mobile programming and a different world of frameworks opened up. Another movement of social media platforms started in the same decade and then data handling, its storage became a night mare for existing patterns, frameworks and architectures. Hence along with big data at back end layer, revamping of cursed scripting language JavaScript became a prime contributor to the current revolution in the open source space. This off course has strengthened the browsers who started handling much more logic and data.
As an aftermath of browsers’ strength, javascript became an important technology component. The loose coupling of server side has been mapped or made analogues to client side also and then frameworks like angular, extJS, backbone were born. This is a very thoughtful, progressive loose coupling of application programming segment. Client side programming also split into processing logic, routing and presentation layer. Let’s discuss the effects and side effects of this revolution. Some of the key positive effects are as follows.
1) Loose coupling of front end development and middle layer development allowed project work to be divided in different teams, parallel execution thus reducing total time of development.
2) The spaghetti UI code now started looking much more structured.
3) It provided more tricks to optimize performance as browser can cache lot of data and server trips made unnecessary for every call.
4) It perfectly fits into Agile thought process of development where flexible approach can be adopted which can impact fewer regressions.
5) The era of RESTFUL web services or even micro services these days allows no changes in back end if client channel gets changed from web to mobile. This again saves lot of time and cost.
6) On the other hand, the same client channel tomorrow can consume different server side technology web service without change. For example, if client side is written using AngularJS and server changes to .NET from Java, no client side changes are needed.
However it is more interesting to see the side effects which probably prove to be de-merits of this progression.
1) Since the application programming splits into 2 different skills sets, front end programmer does not look into back end woes and vice versa. This is creating barriers in teams and hence losing the cohesiveness or overall responsibilities of feature development.
2) It also creates skill discrimination or divides in the industry as some of the front end frameworks are new to the market and hence UI programmers suddenly are in demand, expecting exorbitant salary packages.
3) The ownership also is getting divided and maintenance becomes costly.
4) End to end completion of features sometimes gets delayed due to wrong handling of dependencies or less availability of one of the resources.
5) Managing more skill sets in the project creates more trouble for Project Managers.
So, what is the midway here? Well, creating a culture of full stack programming could be one of the options. This will start giving complete benefits when all the developers in the project are full stack programmers. To implement this, some of the steps mentioned below could be useful.
1) Awareness of technology evolution among the developer community can be established and hence some of the senior programmers can be possibly converted as full stack ones. This can be done via some training sessions or personal coaching during appraisal sessions.
2) The fresher community should be groomed towards full stack programming right from the day one.
3) Align the training programs around this strategy.
Again it is much easier said than done but this will resolve some of the side effects mentioned as de-merits and then IT service organizations can reap the fruits of loose coupling.