Posts

Showing posts from April, 2020

Segregation of responsibilities with the Single Responsibility Principle

Image
T his article, the first of the 5-part article on S.O.L.I.D design principles, is about the “S,”  Single responsibility principle  made famous by  Robert C. Martin  (Uncle Bob)in his paper,  https://web.archive.org/web/20150924054349/http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pd f. S — Single-Responsibility Principle O  —  O pen- C losed  P rinciple L  —  L iskov  S ubstitution  P rinciple I  —  I nterface  S egregation  P rinciple D  —  D ependency  I nversion  P rinciple 4 C’s — Concern, Coupling, Cohesion & Change A concern is defined as a set of information that has the potential to affect, alter, change the state of any entity. In computer science, concerns are everywhere. Logical grouping of operations and data is another definition of concern. Examples include a series of actions to fetch data from a server. A read-write dat...

6 point design guide for Generation Z

Image
T he current generation or demography is known by many names  iGeneration, Gen Wii , etc. In mainstream media, they are widely known as Generation Z, the one following  Gen Y(surprise!) or millennials . Like the demography which preceded  Gen Z, i.e. Gen Y, Gen X , etc., Gen Z has its unique traits, preferences, likes and dislikes, and behavioral patterns. The millennials(Gen Y) were the first to consume digital products the way we see them today. With the advent of the Internet, the millennials adapted to  services, tastes, sharing, brands favored, buying preferences , etc over the Internet in a digital platform. Whether it be booking movie tickets, ordering lunch, filing taxes, etc. digitalization is how the millennials made their lives easier. The behavior of Gen Z For Gen Z, the digital world is what is. B ut For Gen Z, the Internet & the digital world was not about making lives easier. The digital world and its products were not luxury. They we...

Design Thinking

Image
S ome of the most common approaches to solve a problem are situational or context-specific.  For example, in the field of structural engineering, most of the challenges are solved by applying time tested rules in the field of civil engineering . For a problem that is considered less severe, a common approach is a trial by error. Mission-critical requirements and issues are solved by using a well-defined set of steps and strategies. The first reaction to solve any problem is to compartmentalize the problem into something which was solved earlier. The mind likes the comfort of the known after all. This is our primordial nature. These approaches have served us since time immemorial and will continue to do so. A common thread running through all these problems is they are well known, and they have been faced before plus they are well documented In this digital age, when everything is connected, information is available within seconds. Thus ideas and theories are shared and ac...

What are Microservices

Image
M icroservices  are an architectural pattern that classifies and implements an application into a collection of independent services that have a high level of autonomy. Usually, each of these services would be related to a single business group. Since these services are mostly autonomous, they can be built using different tech stacks. Microservice modules can be scaled, unit tested & modified with minimal effects to other modules in the system unlike the  traditional monolithic architecture  which is a collection of all the functionalities/services in one place Microservices extend the principle of Single responsibility by focussing on a single capability or business domain. Which could be department specific, a region-specific, or any other custom business requirement. By decoupling the same from other services, development teams can  iterate, test, build, and deploy  the same in faster development cycles. Thus it's a natural fit for the agile dev...