Until April 2020 we had mainly worked for our own customers on long-term projects. Recently we have been hired for several jobs, on which we have worked together with agency employees and freelance software developers. In the following, we would like to point out the experiences gained in this context and the challenges we have overcome.
To get to know
The first important step in such a “threaded” team structure is getting to know each other, usually as part of an onboarding process. In the best case, sympathies are immediately shown to each other and common values for software development are found. However, you also have to adjust to different opinions and interesting characters and try to get along as well as possible with all personalities in the team. Efficient and targeted software development is only possible in a well-functioning team. The exchange with changing team members can expand the personal wealth of experience in many ways.
Another essential tool for effective and efficient work is a good, smooth and complete communication. Ways and channels must be found that allow every team member to connect with the right person at any time. A daily virtual meeting where everyone describes their progress in the project and the hurdles to be overcome can be very helpful and a good starting point. But even during development, there must always be the opportunity to communicate open questions or ambiguities and to clarify them together spontaneously or by arrangement.
Project management and coordination
It is important that one or several project managers take over the coordination and structuring of the overall task. However, one major finding from our mixed projects is that the “simple” team members also have to play such a role, especially when it comes to networking the frontend and backend. In the previous in-house development, such challenges did not exist because we either had very short communication channels and/or developed full-stack projects, i.e. both the frontend and the backend were the responsibility of one developer. With the division, coordination and communication become even more important.
New tools and policies
When planning, designing and developing your own projects, tools such as IDEs, deployment platforms, versioning software, coding guidelines and frameworks can be freely chosen. Often tools are selected which the team already had good experiences in advance with, or ones that one considers up-to-date.
If these decisions are taken over by external people, it can happen that you are confronted with completely unknown new topics. You have to be flexible in order to get used to things quickly and not need too much time to familiarize yourself with it.
Especially with regard to the coding guidelines, you are sometimes “forced” to adapt to the circumstances in the project and to “sacrifice” your own coding style for the greater purpose. This does not only have disadvantages, on the contrary: With every guideline that you learn, you can expand your own repertoire and use it for the future.
The challenges that are always present in software projects are significantly increased in mixed teams with external management. However, if you maintain good communication and quickly find your way into new experiences, they can be mastered well. After a short period of familiarization, you sometimes don’t even notice that you’re working on an external project. The exchange in the team can also be very enriching.
All in all, it can be said that external projects represent a small additional burden on the one hand, but on the other hand, and this side predominates, they represent a good opportunity to develop oneself personally and thus also the competence of the company.