Learnings from two weeks paring at the client site as an Apprentice
This past two weeks I had the opportunity to pair with my mentor at the client site. The code base was the largest and most complex system that I had worked with. This was an incredible learning experience, because not only did I have the opportunity to work with an application of this scale, but I also observed how my mentor interacted with and added value to the client. I would like to highlight a few that would be valuable for me.
Establishing rapport and reputation: I saw first hand what ‘embedded consulting’ means and there are two components to this. The embed facet is to become a part of the client team. To do so, one would have to build rapport and establish trust with the client. The consulting facet is to bring a fresh and objective perspective to the client. My mentor had built a reputation as the go-to person for technical issues for the team and this made him a trusted member of the team. He forged relationships with a variety of stakeholders in the organization which made it easier for him to get things done. Furthermore, he shared recommendations and practices that only an outsider can bring.
Shared Ownership: There were a number of occassions where my mentor would ask the team for input and genuinely value opinions from other devs. The benefit of incorporating feedback from the team as opposed to making an executing decision and moving forward was that it helped build collecting ownership of the code. These small measures can be a great way to show how we are vested and care about the application. Having this mentality will also help build trust with the client.
Organization & Productivity: Juggling multiple priorities, code bases, and QA environments was a real challenge for me. In hindsight I should have been more diligent in updating my gist at every opporunity to digest and organize all the information that is coming. Coming up with a system to digest information and being able to reference later in the future will be vital to keeping a float in a fast paced and complex environment.
Understanding the codebase and its implications: If given the opportunity I would spend time to understand the structure of the code, their dependencies, and the innerworkings of the code. This early investment would be helpful for gaining traction through out the project. Identify areas that I am not comfortable in and then learning about how it works, the underlying fundamentals, and tools behind them will be critical to move forward.
Debugging and troubleshooting: There were a number of situations where we had to troubleshoot issues that arose. Being able to replicate the issue and identify the source of the problem is an important skill. Often times tracing through the problem systematically and ruling out issues will work. However, some problems are easier to pinpoint than others. For the hairier issues, I found that asking the right questions to the right people almost always accelerated the process. The great thing about the work environment was that everyone was helpful and there was little finger pointing when an issue arised. This culture of caring about the codebase, having shared ownership, and minimal blaming can create a productive environment with high morale.
Technical communication: Working in a team requires a lot of communication and being able to communicate technical issues is an extremely important part of the job. Doing so requires a solid understanding of the content, knowing the audience, and delivering what is pertinent in the style of language that is most appropriate.
After hearing a number of people from the client site compare 8th Lighters to other contractors, I was glad to hear that they said we were different because the quality of the code showed that we actually cared about the application and outcome. As 8th Lighters we want to leave the code basing cleaner than it was before we started. This mentality is what differentiates us from the rest of the industry. The apprenticeship had instilled this mentality but seeing it being applied in a real client site was a testament to how valuable it is to sticking to and executing on what we learned as apprentices.