The worldwide #COVID19 #CoronaVirus pandemic has made social distancing a need of the hour, to contain the spread. In that context, #WorkFromHome is a great solution.
However, working from home (or just WFH) is attractive for other reasons too. In this post, we shall see how #Xsemble helps productivity in #WorkFromHome setup.
Advantages of Working from Home
Working from home (or just WFH) is a great idea for many reasons. The current virus pandemic necessitates it for social distancing. Apart from that, it has other benefits that stem from elimination of commute.
For the employee: it saves the commute time and cost. The saved time may now be used productively. There may also be an added flexibility of work hours. Being there when children / elders in the family need you is an added benefit.
For the company: It climbs up on employee satisfaction chart and saves resources. But not just that, a company which is ready for #WorkFromHome may be able to make use of talent found remotely.
For the society: Less traffic on the road leads to less congestion, lower pollution, lower fuel consumption. Increased family time helps reduce some deeper social issues.
Tools for Working from Home
There are many articles such as this one which enlist the tools that can be used for remote working. Further, in view of Corona virus pandemic, some companies have started donating collaboration software to help out.
Challenges in Software Industry
If spite of all these advantages and tools, practising effective #WFH has many impediments. Some of these impediments are specific to industry. Specifically in the software development field, #WorkFromHome is still not the norm in spite of the availability of state of the art collaboration tools. This is because the way we develop software involves a lot of dependencies on one another. There are umpteen times a day that one needs to go to someone else’s desk for something or the other.
Xsemble – The Solution
How does the use of Xsemble help this situation? By reducing these inter-personal dependencies, using three mechanisms:
Clean separation of design from development
Crisp work assignment to programmers
Isolation of programming work
They are explained in detail below.
Clean Separation of Design from Development
The designer, known as the Assembler in Xsemble parlance, is someone who creates the flow diagram specific to the application, something like this:
In this diagram, the black arrows represent the control flow (what is invoked after what) and the dashed blue arrows represent the data flow (setting the values of variables and getting them). The circles represent individual variables, and the shape which intuitively shows a combination of circles (node “credentials” in the above figure) is indeed a group of multiple variables. The values are set and got by other nodes which take part in the control flow. One may see that there are various shapes indicating various types of nodes taking part in the control flow. While we do not need to get into these types for our discussion, one interesting type is the one represented by the orange box (node named “User Validation” in the diagram). This is a subproject node, which in turn represents some other project (another flow diagram). As you may imagine, you could have multiple subprojects, then subprojects within subprojects, to create complex applications.
Now, many of the nodes in this diagrams are actually instances of reusable components, and a designer needs to create such a component definition first before its instance may be created. Creating a component definition involves thinking through the different ports that it is going to use to connect outside. As an example, shown below is the dialog that edits the definition of the Logout component, clearly indicating the in and out arguments (the connections to the data nodes) and the exit paths (control flow outlet).
The two points that we are making here are:
Designing involves creating component definitions
Designing is a non-programmatic activity
Without Xsemble, the functional experts have to stop at creating/ reviewing the screen designs. Now, they can further get into the creation and review of the design (in terms of the flow diagram). What’s more, it is not necessary that this application flow be discussed with the programmers at all. This creates the point of isolation between the designers and the programmers.
Crisp Work Assignment to Programmers
The programmers are focused implementing one component at a time. They do not need to understand the overall design of the project to know how their component will be used. This narrow focus is good in a way as a component that is implemented well may be reused in more than one projects.
The component definition created by Assemblers gives rise to a code template for a component. For instance, here is the code template (in Java language) generated for the Logout component.
By comparing this code with the definition dialog above, one may easily see how the in arguments, out arguments and exit paths figure out in the generated code template.
This template is the starting point for the programmer, and the task is to add the implementation code corresponding to the functional expectations from the component.
These expectations from the component are the only input that a programmer needs. Thus, while training a programmer in a domain (as is conventionally needed) warrants much more time and interaction, these component level specs –being small and crisp– may be passed on easily and remotely.
Isolation of Programming Work
Because the components are isolated, it follows that they can be worked independently by different programmers, without having to interact with one another.
The work being individualistic, each programmer can practically do #WFH, working on their individually assigned components.
We saw how the #Xsemble approach to development brings down the interaction points so that the designers and the programmers are able to work independently. In practice, complete isolation is not achievable and not needed; but whatever little interaction is needed, those needs can easily be fulfilled by collaboration tools.
What do you think? Use the comments section below to let us know what you think. Get onboarded with Xsemble if you want to practise this in your organization.