Recently due to modern technologies we have been observing the growing popularity of remote working, particularly in the IT sector. Thanks to common access to fast internet connection, appropriate equipment and software people can easily communicate with others via phone calls or video conferences. It would seem that in the case of remote working, the employer has less control over the programmer, which may result in a greater risk of wasting time and inefficient work. However in Flexiana we use appropriate tools for time-tracking and record how much time we spent performing a given task.
I would like to highlight that remote working does not hinder our contact with the client. Even if employees work from the office, they contact the client mostly via email, telephone or Skype. In Flexiana, we work remotely and communicate with each other and with our clients via the Internet, but if necessary, we meet with the client face to face.
This applies most often to the sales department, but there are also cases when developers go to the client for a few days to meet face to face, to recognize his business needs and feelings, to get to know each other better and to tighten relationships. An additional advantage for clients may also be the fact that they have the opportunity to monitor the progress of work under the project on an ongoing basis through the active participation of client programmers in our team’s meetings, e.g. daily stand-ups, status meetings.
Flexiana is a company where we work 100% remotely and this work model works out very well. We have developed effective methods of work management and development of programmers, such as pair programming, 1 on 1 retrospectives or development meetings (Clojure Guild), which allow us to work effectively in this form. Let’s look at them closely:
Firstly, we organize pair programming in Flexiana. The frequency of these meetings depends on the specifics of ongoing projects and is determined on business needs. As part of the programming sessions, two developers work together on a task and together solve the problems they encounter. Sometimes we also organize meetings during which the whole team works together on a given task – also known as mob programming. Thanks to the high availability of programmers, you can contact someone at any time and ask them for a pairing session. Modern technology ensures that when we are working in pairs, we do not have to be physically next to each other and work on one computer to analyze and write the same code. Internet communicators allow us to share the screen and keyboard with our interlocutor. The fast internet connection guarantees that remote pair programming brings just as good results as doing it in one office.
In addition, whenever it is possible, we use Agile methodology in our work and organize our projects into sprints. At the beginning of each, we set work plan, discuss particular tasks in detail, make a reliable estimation, set priorities after identifying the business needs and discuss it with the Customer. At the end of each sprint we have retrospectives when we talk about what we managed to do, where we encountered difficulties and how we dealt with them.
Another interesting way for good organization of remote work used by Flexiana are 1 on 1 retrospectives between scrum master and developer which takes place once a month. This meeting is divided into two parts. During the first one – the same for every developer – scrum master asks the programmer a number of questions about taking care of the quality of the delivered product, writing clean code, taking care of the client’s needs, examining his satisfaction level and overall work evaluation. It is time to reflect on what has been done, what the programmer learned while working on a given task, what mistakes were made and what lessons were learned from them, as well as what difficulties he encountered and how he can deal with them. In the second part of the meeting, the scrum master and developer talk about a topic chosen by a particular programmer. It can be, for example, a conversation about directions of programmer’s self-development and progress in achieving his own goals.
In Flexiana we have a series of monthly meetings called Clojure Guild. During these meetings, developers exchange their experiences from ongoing projects. We talk about the technologies we are working on, the programming tools which we use or the improvements introduced at work. Most often one person (volunteer) presents a selected issue, and the other participants ask questions and discuss a given topic.
As I mentioned, at Flexiana we work completely remote. You can read more about the benefits of working from home in the previous part.