One of my company's initiatives for the first half of 2020 is to increase our focus on documented goals for employees and the company. As part of this initiative, I set a goal for myself to share more of my technical knowledge, either by writing a technical blog post or by presenting on a technical topic at a team meeting. As a "beginner", it's hard to figure out the best way to feel comfortable sharing my knowledge when so many people know more than I do.

I recently had what I thought would be a great opportunity to share some new technical knowledge with my teammates. My team uses a library called React-Router to control the routing in our applications. While I was searching for more information about something I was trying to understand in our codebase, I discovered that a recent release of React-Router includes something called hooks, which allow developers to access various props from the routing without having to wrap a component in a higher-order component (which is how it worked in previous versions and how the component I happened to be working with when I discovered this was designed).

I know that we use hooks from other libraries as part of our applications, so I wanted to explore whether it would be a good idea to incorporate this library's hooks into our codebase where possible. I contemplated presenting more information about these hooks to the team at our a team-wide meeting, and after a conversation with my manager (who agreed that it was a good idea), it was decided that I would present at the following week's team meeting. One of the ideas we discussed was finding some areas in our codebase where I could implement these hooks and then showing that to the team.

I started to look through our codebase for components where I could implement these hooks ... and I discovered that the hooks were being used pretty heavily in our code. In fact, almost all of the components that could easily use these hooks were already using the hooks. I was happy to see that my teammates were keeping up with and implementing the latest changes to the library, but I was also a little disappointed to learn that my new and exciting discovery was neither new nor exciting. I considered giving the presentation anyway, but ultimately decided that it wouldn't be a good use of the team's time.

During our next one-on-one meeting, my manager and I discussed my decision to not present at the meeting, and she asked if I was still interested in writing a blog post about it (which is something we had also discussed in our earlier conversation). My answer was yes. Discovering that my team already used these hooks may have dissuaded me from speaking about them to the team, but I enjoyed learning about them and decided that I did want to put my new knowledge in writing and share it with the world. In fact, I wrote an article with some basic information that I've learned about these and how I suggest adding them to a codebase.

While I didn't come out of this experience having shared my new knowledge with my team, I did gain new knowledge and have an opportunity to share it with others, which is always cool. One of the reasons why I was so excited for my current job is that we try to incorporate new technologies into our codebase where appropriate, and I'm excited to do that with this new knowledge (in fact, I've already done it once). I'm also excited to start incorporating this new knowledge into my personal projects (whenever I get back to doing personal projects...). In addition to the joy of learning something new, it also feels good to be confident enough in my knowledge to share it with the world, and I'm glad I was able to do that in this situation. I'm hoping to eventually have the opportunity to share something new that I've learned with my team, but until then, I'm excited to be able to write technical blogs on new topics I learn and reinforce and share that knowledge through my writing.