Any organization, that designs a system, will produce a design, whose structure is a copy of the organization's communication structure. ~Conway law
Recently, I had a 'co-working' debugging session at work. We started using Azure Key Vault instead of Google Key Management. One of the projects, our team is responsible for, needed a code update for this.
I usually understand the backend code by going through the endpoints and seeing how the data gets transformed at each step. My co-debugger instead went from input - this function in another project does the same thing, so we just need to figure out how to use these in our code.
We did not end up with a solution, but I still commented in the end, that it was interesting, because I got to see a different approach to the code.
He agreed. But what I did not expect is a comment, that they only recently noticed this. They implied, that for years, they were convinced, that in computer science there is one true path to the solution. But now noticed with sessions like inside in our team, that there could be different ways to solve the same technical problem.
I could notice this in my first months of working. My first 'team' leader (is it a team, if there are just two of us?) had different ways of working than my second one, which was still different than the first person that joined us (3 probably do make a team). So I am a bit interested, what causes people to not notice these differences?
But these are just personality differences in how to we do attempt the coding. Relationships factors also play a role.
So, our unsuccessful attempt was communicated to the team, which is also responsible for the infrastructure of our product. Their solution was, that we should integrate with their part of the product - which we currently do not do since it is just an internal tool to help us. Apparently otherwise we could have potential problems with the security certification audit in the future.
Fine, I accept their reason. But I still noticed how I started arguing against their solution. But then I paused and tried to figure out why. TI do not trust them to come up with will not cause more problems for us. And I really, really, really did not want to work for them. I have some unresolved emotional problems related to this.
Once I noticed, these are the reasons, the solution was simple. Ask my team leader to put me off this task (which he agreed with). With this mental baggage, I should not be part of this decision. But that made me think, how much do decisions like that have an effect on the code we write?
I mean, I can see a big difference in communication inside the office, in the time, where there were 7 people in the Ljubljana's office, and now, where my team, which is just one of the engineering teams, have 6 members.
For one, it used to be that the entire office went for lunch at the same place. If I had the question, I could get to customer success managers or engineers in other teams, I would see them at least once per week on lunch. I could get the feel of problems and success from just passing comments.
Now it frequently happens, that only our team goes for lunch. I do not have the feeling anymore, of what is happening with the company or with the people in it.
I used to be able to differentiate customers inside my head. Most of the customers we got in the last half a year... I honestly do not know what the difference between them is. In some cases apparently, even if we do something for them, this was never communicated. And since the customer success is now in Germany (?)... I can not even start to try and debug the problem there. Maybe I just need to get used, that this is how things are in companies, that are big enough to have their own legal department.
I was going to end the article with no idea, how would I even attempt to deal with this. Except just be more aware... But between starting o write this piece and finishing it, I saw an article in my RSS, that might point me to one piece for the last part.
Since we increased the size of my team, I am no longer part of the support rotation. I do not remember this ever being discussed. I just noticed this at one point, and I sometimes think, that I would like to do some support tasks. Maybe I just need to ask to be put back on the support rotation? This should give me at least some feeling for the customers back. Hopefully. Though, I hope the support handling did not change at this time.