TL, DR: There was this software product being developed in my company, I needed to review a lot of the codebase. How do I talk to the development team?
The not-so-short version:
Due to several reasons (which include lack of documentation, not knowing the programming language, travels and vacations making people unavailable), I had decided to do a lot of code studying on my own. Now I need to start communicating more properly with the devs, but I’m unsure what the best approach would be. I’m sensing that “my homework” to understand their codebase is nearly done, with “question-time” approaching.
Without sounding invasive, nor bossy, nor overcriticizing, how can I approach them to:
1-Ask questions about specific code parts (I have a big pile of notes full of them)
2-Inquire about features and parts, which are I believe are mostly unfinished
3-Ask about maintenability concerns I’ve raised.
4-Point out quality problems that might have come from open-source tools.
5-Ask for better documentation.
- I’m suspecting they are overprotective of their code
- I know they are not used to having a manager (not for reviewing/criticizing or pressing for deadlines)
- I don’t know them well personally, and I’m not their boss, we don’t work in the same room nor have lunch together.
- I know they’ve had lot of issues with their development, most is not their fault, yet I’m not exactly there to help.
- They have some limited reviewing process, which basically amounts to checking if the code works on someone else’s machine. They’re not used to someone checking code quality.
- They often give dismissive answers to questions during meetings (“do you have a function for doing X?” - ”We have functions for anything we want.”). Other people have even pointed this out during meetings.
- Their product is severely behind schedule.
- I haven’t spotted any actual bug, nor something obviously wrong. I’m guessing I have nothing helpful to offer them in exchange for their attention. Ideally, an answer that does not involve expecting management to intervene is preferred.
- Most of the parts that would reach the interface between our products are apparently not done, yet they aren't reporting this.
So a few practical approaches could be:
1-I randomly mention pieces of code and bring up questions, as if I was casually walking by and remembered to ask a question. This would sound weird, maybe invasive, and I’d likely receive dismissing answers. Also, they're known to give dismissive answers.
2-I could schedule a meeting with the junior dev, and walk with him through my notes. The meeting setting would provide more focus on the conversation, but I’d understand if he felt like he was being over criticized. I could split the notes over a few meetings, but then every meeting would be harder than the previous.
3-I start posting issues in the versioning tools and/or making silly pull requests to their code base (typo fixes, insert better comments, so on). I guess this would be annoying for everyone, and if they actually rejected or stalled a pull request with no explanation, I’d feel quite offended. But a few of my complaints might call for a “then do it yourself” response.
What I want/need to achieve is: I want to know their code base relatively well and have them recognize this. I need to be able to ask delicate/specific questions and receive honest, concrete answers. I would like them to improve their coding standards and documentation over time.