Application Development: Online collaboration tools as new quality of communication
What is the criteria for professional software developer? One of the best answers to this question is “to be smart and get things done” [http://www.joelonsoftware.com/items/2007/06/05.html]. On the other hand, emotional intelligence is very important. Software developers should be in contact with all stakeholders of the project, like clients, UI/UX designers, testers and even other developers. There are pretty specific forms of communication in Application Development as a process. It should be effective at line of share knowledge, catch problems, prioritize features to implement.
Share the document
In case of remote collaboration, first of all, it needs to have ability to work on the same documents and artifacts. Google Docs is a set of online office applications, that may be treated as substitution to standalone MS Office package. It allows view and edit formatted documents and spreadsheets remotely by distributed teams online with adding comments to appropriate places in the document.
Share the desktop
The most effective way to describe a bug or case is to reproduce it visually. There is no problem to look at screen if 2 or even more persons are in the same office place. It’s not so easy to provide demo remotely. In this case developers use online screen sharing tool. There is well-known GUI tool Chrome Remote Desktop [https://chrome.google.com/webstore/search/remote%20desktop] by Google. It’s implemented in the form of browser extension, so it’s available for all platforms. It’s very similar to Windows Remote Desktop. Windows Remote Desktop was designed a lot of years ago for remote access to Windows Servers and PC’s, but Chrome extension is for online screen sharing among 2 users. Skype messenger also provides this functionality. It’s possible both to view a remote display and grab keyboard or mouse input.
GUI is not only the form of computer output. There is a pure text interaction in console mode via SSH. Such approach is very popular in the Linux and OSX desktops and servers, which are without GUI components at all. Terminal multiplexers like screen and tmux have ability to share terminal session.
Share the code
Sharing whole desktop may be inappropriate in some cases at line of security. If you need just to discuss a small snippet of code, it doesn’t need to provide full access to your system. There are online services to browse and edit the code in some kind of text editor similar to IDE. Usually, such services are free and have syntax highlighting. E.g., http://collabedit.com or very popular amoung web developers https://jsfiddle.net.
Code review and pull-requests
Code review is one more form of communication in Application Development. To provide the best quality of design and implementation a developer looks into changes produced by another teammate before actually applying new code into whole solution. There would be incorrect design or implementation, lack of tests, problems with guidelines, specifications or even bugs. Well, it’s not a catastrophic situation, but rather daily routine. GitHub service [http://github.com] provides source control system as a service. It has very useful feature — pull-request. By git-flow, each new feature should be implemented in separate branch. We call it feature-branch. Thus, it have to be merged into master or dev branch. As team practices code review, a merge have to be done via pull-request. Author of the feature assigns a pull-request to the lead or another programmer. Reviewer checks all the diffs (changes) and provides the coder a feedback in the form of messages with references to appropriate places in the code. After all things are fixed, the commits of the feature may be merged. Providing comments in pull-requests is the most efficient way of communication in Application Development process.