Effective software development is an effort of the entire team and sometimes might be a real challenge. But what does this really mean? Successful cooperation with each other and with the client to deliver product efficiently are determined by several factors.
We wrote about the Actify project and relations with the client here and here. It's high time to pass the voice to insiders: Tomek Wąsiński - Tech Lead, Artur Łągiewka - Backend Developer and Tomek Timoszyk - Project Manager share their thoughts and experience about working on wellbeing solution for the Netherland’ client.
• What is important for the project to be successfully delivered from the team' perspective.
• What skills and experience can be gained in long-term cooperation with a foreign partner.
• What team members value in contact and agile and scrum work with the client.
• How they manage challenges and expand their competences.
• How they motivate each other and "make each other's day".
Would you like to learn more about project management itself? Read one of our recent blog posts:
Role of Project Manager in Software Development
Areas of our discussion: contribution, challenges and opportunities in the project, teamwork and communication.
Tomasz Timoszyk: There are three essential elements: customer and team satisfaction, which lead us to the second element: a good atmosphere in the project. And last but not least: precise management of the project budget. These are my Top 3.
Artur Łągiewka: The most important for me is knowing that I bring positive value to the project and that my work serves a purpose. I like to identify with the work I do, and positive feedback is a very motivating factor.
Tomasz Wąsinski: There are three elements, in my opinion as well:
1. Challenges and development opportunities that means:
- using new technologies and space for applying the knowledge that I gather in my after hours.
- features that require thinking and discovery, not simple CRUDs ;)
- team members and the client challenge me and ask wise questions about technological decisions (based on trust and competencies limitations).
2. Good atmosphere in the team and contacts with the client
Credit of trust manifests in acceptance of time and scope estimations and being honest with performance and mistakes communication.
3. Influence on the project and a large dose of autonomy
No micromanagement and no telling how something should be implemented. Also, I value having a relationship with the client closer to partnership and trusted independence than just executing direct instructions as a subcontractor.
Artur: When I joined the project, I was starting to work on my DevOps skillset. The customer’s team planned to migrate their services to Azure cloud environment, which allowed me to test and improve my skills by preparing and deploying those services in Kubernetes.
Tomasz T.: During a few years of the Actify project, I've noticed a few areas I performed progress and see the difference. Working closely with the client increased my self-confidence in the use of English. I also feel more comfortable with my soft skills. I notice the change, especially during retrospectives, when I discuss with the team, solve a problem, or support team development.
Tomasz W.: There were a few things: one of my lessons learned was that microservices might be challenging. Recently, I dug deeper into the domain-driven design and modularising the monolith. Also, I realised that I have still a lot to discover about proper object-oriented design.
It is impossible not to mention the continuous improvement in a better understanding of the client's needs.
I believe it's essential to speak the same language, have a common sense of what is actually happening in the system, the used model, limitations, and if it matches the client's perception of the system. That's why each meeting polishes my ability to properly convey technical complexities in the project so that the client understands what is going on.
Tomasz W.: Our contact's as sound as a bell! We have a lot of occasions for discussions about new features together. I appreciate team engagement, lack of micromanagement, willingness to understand needs from both sides.
We've implemented 3-week sprints, with a 1.5-hour refinement call for the whole team each week. When the tasks are precise - we estimate them; in case of ambiguity, we score them, propose potential solutions and park the topic for the next week.
We usually start with a dedicated internal meeting to discuss difficulties and possible resolutions in very complex features. Then we return to the client with it. At the same time, we make sure we understand the purposes and way of work of the given functionality. Sometimes we recommend holding or rephrasing the element that does not make sense in our opinion.
For example, one of the challenges was to convince the client to refactor a massive part of the system, which accumulated technological debt, and implementation of new features was simply difficult and demanded a lot of work.
We found a joint solution with the Actify team- the refactoring doesn't block work on the system in any way, at the expense of extending the duration of this process.
Tomasz T.: I have direct contact and a good relationship with the PO. Our connection is beyond the project. Many discussions gave us space to get to know each other and sometimes raised topics not only related to the project. However, we're professionals, so we make sure not to burn too much time on small talk.
Artur: The client with which I’m cooperating has a lot of IT experience and is sensitive to problems that come with software development. By applying good practices and agile project methodology, we’ve created a friendly work environment, which favours achieving customer’s desired business goals efficiently and minimises the risk of falling behind schedule with delivered functionalities. We actively care about good relations with the customer’s team. Our communication is very casual, and we truly feel that we’re working together as one team.
Tomasz T.: The retros, refinement, and feedback sessions positively affect everyone working on the project. Improving skills are more manageable with a two-sided feedback loop and creating action items based on output from that process. The team works proactively, freely asks questions, good ones. Not without significance is the fact that all of us identify with the product. They are remarkably motivated and do their best. I know it may seem like painting grass on the green, but it's true.
Artur: Scrum rituals force the team to take regular breaks and sync-up. We’ve noticed many times that those breaks are essential and allow us to gain a new understanding of what we currently do. The risk of making errors due to miscommunication is minimised, and regular meetings help build good relations. When the amount of work in a sprint is overwhelming, those breaks help evaluate the tasks from a fresh perspective and confront our ideas with the rest of the team.
Tomasz W.: 1. Team autonomy. 2. Retro: as in every project, sometimes we experience a stressful situation. Retros are our safety valve. Besides reducing tension in the team, it's our water cooler moment when we can take actions to prevent repeatable inconveniences.
Artur: My team is very open to communication, and usually, if anyone feels the need to talk something over, we schedule short meetings ad-hoc and catch up.
Tomasz T.: There is no need to make any effort or take action. The team is very transparent and precise communication. Maybe at the very beginning, they may have been less talkative, but it changed after a few calls with the client. I'm proud of them.
Tomasz W.: I say it's for our good:) For example, it is better to say that it's impossible to deliver or clarify consequences about implementing some features (because of lack of consistency and bugs) than to commit and build them with a lot of internal frustration and errors that the client won't be satisfied with.
Tomasz T.: In fact, there is no such need - morale is very high.
Tomasz W.: Caring about morale seems natural. Transparency is crucial.
The team must feel being heard and ownership regarding implementation and deadlines. My responsibility is to make sure that the team has such a feeling and the client is aware that it is crucial.
Autonomy and development opportunities are the next. We share tasks as evenly and fairly as possible that everyone is satisfied and not that someone (e.g. me) takes the most exciting assignments.
Moreover, as a tech leader, I feel the duty to share the hottest solutions, exciting technology, system design approach, or methods that improve the development process. Also, people are satisfied when they can test something cool, different, do something in a better way than they did yesterday.
Artur: In my opinion, a good team should consist of people who enjoy working together. A casual atmosphere and mutual respect can build a good team spirit despite any project related difficulties or going through so-called crunch time.
Artur: We discuss each difficult topic before we start working on it. We try to minimise the risk of creating a problematic situation because otherwise, we only gain unnecessary stress.
Tomasz W.: Our primary practice is no blaming. In such situations, we're looking for solutions, not superficial ones. We focus on processes or dig and get down to the deeper level of the problem.
Tomasz T.: Basically, everything in such matters is solved by open and honest communication. There is always a moment of reflection and looking for the best solutions.
Tomasz W.: We just get along well, have the enthusiasm and still want to add innovative solutions to the project. And sometimes, we even have the green light for it from the client.
Tomasz T.: The most tremendous potential is that they are a collective and have a common goal. It seems irrelevant, but team chemistry turns out to be crucial to the project's success (or win in the football match or other team players game). Moreover, we feel very welcomed from the client's side. We act as one "monolith" crew.
When it comes to the project potential, apart from the excellent idea itself, the huge potential lies in the B2B version, and we're working on it currently. The business solution has comprehensive perspectives and will allow reaching a broader group of customers, in my opinion.
Artur: Both the team and the project are very mature, in my opinion, and can serve as a successful example of applying both project management and software development methodologies.
Tomasz T.: These moments sometimes happened at the very beginning. They were mainly language-related difficulties and the work approach differences. Nevertheless, I look at it with satisfaction. Transparent and honest communication was the solution. Currently, there are no incidents or situations that shove me from a solid path.
Artur: As a software developer, I have to continually learn new standards or technologies or a new project’s business domain. We can rarely allow ourselves to build a “comfort zone”, and my experience tells me that doing so only creates unnecessary problems for the future. I generally try to avoid making a “comfort zone”.
Tomasz W.: Well, the most challenging was at the beginning. I used to run away from a stressful situation (like talking with the client) to coding. I needed to change my attitude: from a person who had barely not contacted the client in previous projects, and suddenly I had to become a frontman. It took me a moment to walk the path, but it's great now, and I can't imagine an otherwise situation - having direct contact with the client makes work easier.
Communication with the client improves mutual understanding, builds trust, and allows to achieve "an extra mile" with more influence, autonomy, and more profound relationships.
Tomasz T.: They "make my day" all the time because of their efficiency and professionalism.
Artur: Whenever I receive positive feedback about my work, I consider it a good day. In general, I enjoy my job and usually have a positive mindset.
Tomasz W.: Every day is something that positively blows my mind. Only a few examples that made my day:
• Krzysiek started the project exceptionally efficiently from day one.
• Artur implemented innovations immediately after entering.
• Paweł often improves my designs.
• Kacper surprises everyone with his ease of communication with the client.
• Janusz is always motivating the team and has a great sense of humour.
• Piotr is spotting the unspottable and very empathic.
• Kamil is a valuable asset, and I'm delighted about working with him.
I’m proud of the team.
Author: Katarzyna Leszczyńska-Bohdan