Space & Time

This is not about aerospace or getting people on Mars (that stuff is easy). It is about how to create an environment where people help each other out. If you maximize utilization. Set absolute deadlines. You set up your team to be self centered, stressed out and in a mode of self preservation.

If you are in an organization were teams are expected to collaborate and share extensively, you shouldn’t do any of the things above. If you want sharing and collaboration, that is something you have to take into account when planning. You can not have your cake and eat it.

By giving your team time and space, you are more likely to have a team that aggressively shares and collaborates. It is no silver bullet, but without time and space the team is not in a position to fulfill the objectives you set out.

You can not blame teams for not sharing or collaborating if you create and environment where it is not possible. That is tittel on you as a leader. You are the one

This is not about aerospace or getting people on Mars (that stuff is easy). It is about how to create an environment where people help each other out. If you maximize utilization. Set absolute deadlines. You set up your team to be self centered, stressed out and in a mode of self preservation.

If you are in an organization were teams are expected to collaborate and share extensively, you shouldn’t do any of the things above. If you want sharing and collaboration, that is something you have to take into account when planning. You can not have your cake and eat it.

By giving your team time and space, you are more likely to have a team that aggressively shares and collaborates. It is no silver bullet, but without time and space the team is not in a position to fulfill the objectives you set out.

You can not blame teams for not sharing or collaborating if you create and environment where it is not possible. That is tittel on you ad a leader. You can create an atmosphere were the team can fulfill what’s expected of them. You can’t blame them, when the environment they operate in is toxic.

Culture For Collaboration

“It is so cumbersome to have go round talking to people and submitting pull requests. Can’t we just go ahead and just duplicate or do whatever we want?”

Yes, working together and collaborating is hard. It requires a willingness to listen to others and learning about different points of view. This is of course something which takes time to get right.  Because it is about people and dealing with people is different each time and for each interaction.

The past few years there has been a tendency to focus only on a team. The team is always entitled to do whatever they feel is correct and requires at the time. Especially a team should always shy anything that is common. Libraries, frameworks and any common component will only slow a team down. This is the mantra of many agile thought leaders.

Now, if you look at this in a short perspective and with only an isolated project I would agree. However if you are looking at this from cultural and a human level, I disagree. If ever team shy away from anything created by outsiders, how can you create a sense of community? A Not Invented Here on a team level will really hurt a company. It makes collective code ownership almost impossible of course.

Having a culture for collaboration does not equal a culture of building massive frameworks and over engineered architectures. I think it boils down to making choice based on the common good and not what is fastest or easiest right then and there. It is about taking into account how you can make things better for the next person being in your position. 

It is kind of like the boy scout principle on a team level. When a team encounters an issue: a library which is outdated, some code which needs refactoring or a module which isn’t quite generic enough for their use case. The team tries to see how they can improve it and still get things done. Naturally there will always be a balancing act, but the instinct should be to seek to improve the whole.

Never listen to thought leaders

The mantra of the thought leaders tend to be quite the opposite. They have one great enemy, the software architect. In order to conquer this nemesis they say that all developers should go choose what’s best for them and it will always be the best solution. To me, that is someone speaking who haven’t been staying with a company for very long. It is a short sighted approach, to instruct teams to build walls around them. That kind of strategy works really well for contractors and especially when you have fixed price or goal price style contracts. You deliver really quickly and reach your targets, without the slightest thought about those who’ll be living with that code when you’ve left. 

Embrace openness

Having a culture where teams embrace openness and which tries to reach out to improve the whole will prove beneficial in the long run. It will help you build an organization which will gradually improve and continuously build with better quality and quantity. 

A collaborative game?

image Photo by Michael Heiss

A popular mantra the past few years is that “software is a collaborative game”. However in a large organization or project, is this really possible?

When things get big and the number of communications lines exceed what is possible to handle for an individual, is it really possible to collaborate?

A behavior of teams when things get clouded is to construct a world which is tangible and possible to manage. They try to isolate themselves and put up mechanisms to detect breaches of their perimeter.

Architecture in such projects have a characteristic that there are numerous anti corruption layers all preventing a fail fast type approach. Each one added by the team which needs to have control over their domain. The result is that you get an architecture riddled with safety mechanisms you have a really hard time figuring out what went wrong when it does. Failing gracefully is good, but adding these mechanisms all over tour stack spells trouble.

There are of course other issues with teams moving into isolation. Collaboration with teams who’s main focus it to stay independent is challenging. How can you achieve a common understanding with protectionism as the strategy? Should you just accept the fact that teams need to isolate when things get complicated?

Optimizing the whole When everyone tries to create their own walled mansion with safe guards and security systems, how can you achieve a common way of doing things? Can you optimize the whole when everyone that would effect is only focused on their isolation?