10 June 2019Comments are off for this post.

How to do code reviews and keep good relationships with co-workers?

Code Review is one of the most important steps in the process of creating clear and high quality software. What do you define as your goal when, as a software developer, you start to verify the code written by other team members? Is it bug hunting? Maybe quality control? Or perhaps learning? Have you ever thought about code review as one of the communication channels and possible ways to build relationships in your work team?

During my conversations with other programmers, especially those who are just starting their programming career, I often hear them talking about stress related to code review. For them, code review is seen as a critique which looks for mistakes in their work. Of course they see the value behind the verification of their code by the people who are not its authors. They also realize that this is a chance for them to learn and improve their qualifications.

At the same time, the code review reminds them of school exams and assessment by other people. These situations are accompanied by the thought that it's not only the code, but also their professional judgment that is being evaluated.

Humanity in code review

Let's be honest - code review is a type of feedback and evaluation. Exactly like in any other type of communication, we have the sender and the receiver. We provide information and we expect some effects. But the effect can not just be well-written code, but also a well-coordinated team satisfied with their work.

How to achieve it? There are 5 simple steps:

Do not talk to the author

When you are directing a message to the author, it becomes more personal. You stop evaluating only the code. You’re starting to judge the person. You point out their mistakes, which they may perceive as undermining their competence. Please note that when you write "typo" it sounds less friendly than writing "person => person". It is better to write "maybe we can change the name of this function" than "change the name of this function".

As I mentioned earlier, one of the main concerns of people asking for a code review is precisely that they are the object of evaluation. And you do this when you are directing a message to the second-person singular - you are talking about the person, not about the code.

Instead of ordering, suggest and request

This is a great way to show your respect to the author of the code. Then you do not assume that your way is better than theirs or their approach is wrong. When your message looks more like a suggestion or question it sounds more tactful, and you and the recipient are then equal partners of the conversation.

"Rename this function" sounds like an order. You become a supervisor, not a partner. You also suggest that the author did something wrong and it is obvious, with no opportunity for any discussion. By changing this comment to the form of the question: "Could we change the name of this function?", you give the author space to answer and justify their choice.

Also, notice that by giving someone an order you take away their autonomy and the authorship of their code. It's not their choice anymore, it's yours. If the author had a reason to write the code in a certain way and would like to defend it, then the conversation may take the form of an argument,

For example, "I do not want to change the name of this function, because it complies with our convention." We will reply to the form of the question "I used this name because in my opinion it complies with our convention. Can you justify your suggestion? "

Give a reason

When you are suggesting a change, also add justification for your proposal. Why should we change anything? Of course, this is not about things like a typo or a missing comma. But if you propose a change in the approach or the solution, please also write why you think it will be better. Is it related to optimization or an accepted convention?

You can also provide links to some articles or documentation. Show that your suggestion is not only your personal opinion. Maybe the author does not know something, maybe he did not take something into account.

Come, call, talk

If you do not understand  or if you have doubts or you suggest a very big change, you don’t have to limit yourself to a comment. If the author is sitting nearby, go to them. If there is a bigger distance between you - call. During a verbal conversation it's easier to explain everything and have a proper conversation. You will have greater confidence that you understand each other and achieve the expected code review effect.

Praise

Have you ever praised anyone during code review? If not, it's really worth trying. For the interns or juniors it would be nice to write at least that their code is getting better and better. You can praise them for an interesting solution or code readability. Think about how you would feel if another team member praised your work. Wouldn’t it be nice to know that you are doing something right?

Our culture is more focused on looking for things to improve. That's why you rarely hear the words of appreciation. And these words are really valuable for teamwork. Hearing words of appreciation for their own efforts can make people feel valuable members of the group, which builds their motivation and loyalty. Believe me - praise is not something difficult or which requires a lot of effort. However, its effects can be amazing.

Recap

Sometimes simple changes can bring  great results. Look at the code review not only as a method to look for errors, but also as another channel of communication with other team members. As with any communication method  our information is essential - it's obvious. But also the manner in which we provide information is very important. It is necessary for effective work and achieving great goals.

Your project deserves significant code
Check what we can do for you!

20 March 2018Comments are off for this post.

How I embrace tech in my teaching – English lessons at a tech company

One of the many advantages of working for Setapp is the chance for all employees to improve their English with free English lessons with a British native speaker.

That English teacher is me, and back in September 2017, I was lucky enough to be welcomed into the family at the home of significant code. I have to admit, my initial decision to join was largely influenced by the location of Setapp HQ, set within the luxurious City Park complex. But I was quickly pleased to discover that the impressive architecture was equally matched by a positive and progressive vibe in the company. Things are happening here.

English lessons at Setapp are designed to:

  1. give everyone the opportunity to improve their English skills
  2. build confidence to use English regularly
  3. have a positive team building effect in a fun way

Mistakes Are Good, Problems Don't Exist

Lessons are conducted twice a week in small groups averaging 4-5 people. A nice size for everyone to get the opportunity to speak during a 50-minute session. The teaching philosophy is founded on the belief that mistakes are like gifts that help us to improve. We can always learn from our mistakes, and so Carol Dweck’s concept of developing a growth mindset (as opposed to having a fixed mindset) is consistently encouraged for everyone to move forward.

The words we use can be a reflection of our mindset. For example, the use of the word “problem” can reveal a fixed mindset and serve as a barrier to get better. People who say, “I have a problem with grammar/speaking fluently/listening/vocab" invariably have a problem with those skills, a type of self-fulfilling prophecy. Using phrases like, “I need to improve my grammar" or “I'm learning more vocab" are more positive, much less restrictive and have the ability to set the learning process free.

Tech & VR For English

As a teacher, I also believe that it is equally important for me to learn from my students, respond to their needs and provide lessons in an agile way. At Setapp I’m surrounded by tech experts, so I can happily take advantage of this by learning more about using tech in my classes.

We have experimented with different types of technology to assist the English learning process, and VR has proved to be the most impressive in that regard. After teaching English in Poland for over 11 years, I’ve discovered that a person's confidence to use English is just as important as a person's knowledge of grammar, vocab or pronunciation. Fear of sounding silly or making mistakes can be the biggest obstacle to getting better, especially when you come face-to-face with a big bad native speaker. Fluency occurs when you’re not worried or thinking intensely about what you want to say.

This is where the likes of VR comes in, it's immersive power can take you to another place and allow you to talk about your new environment without the pressure of being visibly judged by an English teacher or others. Just having a VR headset on allows a person to focus on what they see and to describe things in a more relaxed way. So you don’t really need to know much about how to use it, just allow your student to browse what’s there and allow them to go on a journey of discovery.

VR in the classroom

One of Peter's student playing with Google Earth VR to strengthen communication and team-building skills in his classroom.

The Virtual Bomb!

After some cool advice from Michał Wróblewski, Setapp’s head of VR development, I decided to try out the game ‘Keep talking and nobody explodes!’ After some experimenting, I came to realise that this is perfect for communication and team building for groups of around 4 people. It targets skills such as describing things in detail under pressure (you have 5 minutes before you virtually explode!) and using specific vocab. Meanwhile, those not in the headset need to ask specific questions whilst reading a detailed user manual, before relaying instructions about how to defuse the bomb back to the player. It really does tick all the boxes and is a lot of fun.

I’ve also been introduced to the world of Kahoot, which is an online quiz maker with a difference. It is best used with a projected screen and requires players to use their smartphones in order to answer the questions. It's good for revising past concepts and again this can be a lot of fun and can provide a healthy competitive spirit in the classroom.

English For Specific Purposes

We also focus on improving English for job-specific purposes, which can enhance professional development. Everyone is encouraged to give a presentation in English in order to show off their confidence and skills. Students can also learn better writing with all types of company texts.

I have also started to oversee the English used in company meetings like Sprint Reviews as part of the Scrum framework and would like to extend this service. Also, the offer is always on the table to help anyone who would like to pass an English proficiency test like FCE or CAE.

English In Reality

English at Setapp is alive and happening on a daily basis, so let’s hear the opinions from the some of the people who matter, the students:

Ada Dymek, a Recruitment & Employer Branding Specialist, whose dream it is to be able to speak about any subject imaginable in a natural way says “I like the atmosphere during our lessons in which we aren’t afraid to make mistakes and thanks to that I feel more confident talking about any topic I want to.”

Rafał Araszkiewicz, a .NET Developer who wants to gain more fluency points out, “my fluency is improving because I can talk freely in English under the safe and watchful eye of our teacher.” 

Marcin Domański, one of Setapp’s Web Developers adds, “Peter always points out easy fixes to improve our English, especially the most common mistakes made by Polish people”. 

As an English teacher, I'm really pleased when I hear someone improving in the classroom, but small talk on the corridor or in the chill room is like gold to me and proves that people are really capable of using English in actual reality in a natural way. As one famous advertising campaign once said, “just do it!”.

If you would like to know more about how we do things at Setapp or you would like to discuss or exchange ideas about using Edtech or using VR in the classroom, then feel free to drop me a line at peter.jones@setapp.pl or on Twitter.

2 November 2017Comments are off for this post.

Four good communication practices for distributed teams

One of the biggest, and yet common, issue during a project within distributed teams is communication. If you are working with Scrum or any other Agile development methodology, you have probably realized that having conversations every day is a valuable step in the process. This is because the team’s productivity and the product’s success are partly based on it.

Communication challenges facing distributed teams

“Communication is critical for the entire team to be able to understand the common goal”, says Scrum Master Raj Kasturi, and he is entirely right. I don’t think that there has ever been a team (whether co-located or distributed) that has reached their common goal without constant and effective communication. Maybe they got where they wanted to be, but it would take much more money, resources and time.

Therefore, I spent some time researching about what other agile teams do regarding ensuring productive and efficient communication, and I also asked some team leaders here at Setapp what they considered to be the best communication practices.

I’ve listed four of them that you should take into account if you are going to start a new digital project with an outsourced development team:

1. Face-to-face communication

Face-to-face communication is considered to be the most efficient and effective method to deliver any message to and within a development team. It is even more so when you make use of whiteboards, index cards or flip charts, etc. This type of interaction should be handled virtually if distributed teams are spread across different locations. So setting up regular conference video calls (e.g. using Skype or Google Hangouts) will create space for scrum team members and product owners to come together, collaborate, and work on the common project goals.

Additionally, It's essential to physically visit the rest of the team during the vital points in the project.  These may include but are not limited to the beginning and planning phase of the project. It’s also an excellent opportunity for team members to get to know each other better. This simple step can result in building trust and relationships. Especially if off-hours social events are planned as well.

2. Real-time communication

Who wants shorter and faster conversations and clarifications? Everyone! Real-time communication helps to overcome “communication-related problems”. Such as relying on the team hierarchy or waiting until the next planned meeting to address an issue. If you add this practice to your communication strategy within your team, you will be able to respond more quickly to unexpected situations and bottlenecks.

An example of a tool that allows real-time collaboration and communication is Slack. Since it is a chatting programme, you can have different one-on-one and group conversations. Just like on any other application of this kind. You can also set automatic reminders to other members, and integrate it with your Project Management Tool (e.g. Jira or Bitbucket). Once you do this, you receive instant notifications when someone is working on or is finished with a task.

Time doctor suggests in their post some other practices and software tools which can help streamline your communication.

As long as you make sure to establish some general rules, this tool can prove invaluable. Therefore, you should define the availability of team members during the week. As well as ask all the team members to remember that they should be available when agreed and follow everything that happens in the defined communication channels.

3. Frequent calls and meetings

Do you want to keep transparency at the core of your team? Then make sure that your team members add the practice of routine calls and meetings to their communication flow. Constant and active interaction allows team members to respond fast to any obstacle during development. It also keeps everyone in the loop. Furthermore, frequent communication between stakeholders, product owner and software development team, can prevent the “us versus them” attitude in the team during the cooperation.

Daily Scrum meetings/calls are a perfect example of good practice in communication. During such meetings/calls the scrum team, the scrum master and the product owner are all involved. They provide information about the team’s progress and obstacles during a given period. Moreover, you and your dev team should identify a person (for example a scrum master) who is responsible for intervening in situations when someone in the team is not responding to emails or messages or is simply absent during work hours.

4. Shared information repository

Having a shared information repository that all team members have access to can help reinforce how team members communicate information.

For a distributed team sharing information that is visible to everyone is a fundamental practice. It ensures transparency and can enhance communication at all times. Everyone in the project should know about this information storage.Equally important is that it should be clearly defined how to access it and what the conditions to add, edit or delete any information that it's already there are.

What is more, teams should consider the need to share information in a more formal, structured, and scheduled way. This helps everyone to understand what is being communicated and actually done without the need to call someone for clarification.

Common tools which you can use to do it are for example Jira or Trello. They are perfect for sharing task-related information within your team. Another useful tool you can try when it comes to sharing project-wide information is Confluence (or any other wiki-based documentation systems that exist).

You and your team will have all kinds of information and data available at all time, and anywhere you are. Having a repository is very beneficial when/if:

  • some team members are not around at the same time,
  • you want to check the status of a particular task that your colleague is doing, or
  • you’d like to share a document with all team members.

Summing up.

I hope these four tips were a good reminder of what good and effective communication within a distributed team should be like. By just being aware of such easy and necessary communication tactics you can already be sure that you’ll be able to troubleshoot whatever challenge comes your way. At the same time having continuous improvement in every aspect of the product development.

Keep in mind that focusing on and improving communication should be your priority throughout the whole product creation process. In this way, the team can deliver the highest business value in the shortest time and reach the objectives of the project.

 

setapp career

OUR OFFICE

Wojskowa 6, 60-792 Poznań, Poland
+48 506 798 998
office@setapp.pl

OUR OFFICES

POL: Wojskowa 6, 60-792 Poznań, Poland
+48 506 798 998
office@setapp.pl

ISR: 220 Hertzel Street, 7630003 Israel

COMPANY DATA

Setapp Sp. z o.o.
VAT ID: PL7781465185
REGON: 301183743
KRS: 0000334616

PRIVACY POLICY

OUR OFFICES

PL: Wojskowa 6, 60-792 Poznań, Poland
+48 506 798 998
office@setapp.pl

ISR: 220 Hertzel Street, 7630003 Israel

COMPANY DATA

Setapp Sp. z o.o.

VAT ID: PL7781465185
REGON: 301183743
KRS: 0000334616

PRIVACY POLICY

OUR OFFICE

Wojskowa 6, 60-792 Poznań, Poland
+48 506 798 998
office@setapp.pl

COMPANY DATA

Setapp Sp. z o.o.

VAT ID: PL7781465185
REGON: 301183743
KRS: 0000334616

PRIVACY POLICY

 COMPANY DATA

Setapp Sp. z o.o.
VAT ID: PL7781465185
REGON: 301183743
KRS: 0000334616

PRIVACY POLICY

OUR OFFICES

POL: Wojskowa 6, 60-792 Poznań, Poland
+48 506 798 998
office@setapp.pl

ISR: 220 Hertzel Street, 7630003 Israel

COMPANY DATA

Setapp Sp. z o.o.
VAT ID: PL7781465185
REGON: 301183743
KRS: 0000334616

PRIVACY POLICY

OUR OFFICES

PL: Wojskowa 6, 60-792 Poznań, Poland
+48 506 798 998
office@setapp.pl

ISR: 220 Hertzel Street, 7630003 Israel

COMPANY DATA

Setapp Sp. z o.o.

VAT ID: PL7781465185
REGON: 301183743
KRS: 0000334616

PRIVACY POLICY

OUR OFFICE

Wojskowa 6, 60-792 Poznań, Poland
+48 506 798 998
office@setapp.pl

COMPANY DATA

Setapp Sp. z o.o.

VAT ID: PL7781465185
REGON: 301183743
KRS: 0000334616

PRIVACY POLICY

klacz
Clutch award badge
topdizajn
svg-image
svg-image
svg-image
svg-image
Instagram Icon
svg-image
svg-image
smart-growth
european-union

©2020 Setapp. All rights reserved.