Helping Other Developers is a Win/Win

My job title is currently "Senior Front End Developer" and it’s true that I’ve been writing web apps for over 20 years. Part of my official job is doing code reviews and approving pull requests. My programming assignments usually involve a lot of problem solving and creating things from scratch.

One of the unofficial parts of my job is mentoring other developers, and this is something I take quite seriously.

I’m on a team with five other senior developers and about 30 "junior" developers. Some of the junior developers could be senior in terms of their skills—but they lack experience. Other developers are quite clearly in over their heads. I probably spend one to two hours per day helping out the junior devs. I think I have a reputation as an easy mark, but I don’t care.

Some of my colleagues (by no means all) are more hesitant to spend time helping out some of the more clueless junior devs. I understand. Everyone has work to do and has their own deadlines. Furthermore, some of the questions can be pretty basic. If a developer has a misunderstanding of basic programming, that can be pretty discouraging to someone trying to help out with a complex task.

I see my value as a developer as being someone who can solve problems. I can solve technical problems for sure, but to me someone with a question is like a puzzle to be solved as well. I try to identify where the person is starting from and work towards the solution with a sense of adventure. Each person and problem presents a unique challenge.

I try not to let my ego as a senior developer get in the way. Something I learned from Zen Buddhism is to keep a beginner’s mind. I may know the answer to a question, or I can work it out, but with a beginner’s mind I can share in the discovery process with the person I’m helping. Sometimes the process helps me discover new insights that I’d previously missed. Richard Feynman once said that the best way to learn something is to teach it, and I definitely agree.

Another aspect of not letting one’s ego get in the way is not judging people for their questions (or at least trying not to). When I had to make the transition from back end app development to front end app development some years ago, I had questions. Unfortunately, in the place I was working at the time the response from the other developers to just about any question was "You’re a senior developer, why don’t you know the answer to that already?". The result was that it took me an half an hour with Google to learn something that another developer could have told me in a minute. I was discouraged from asking anyone for help. As a result of that experience, I try to approach other people’s questions without judgement and without letting my emotions get in the way.

I’m not saying that I don’t evaluate technical issues for their correctness (also a form of judgement), just that I try not to let my emotions get in the way. For example, if I find myself saying "Why is this person wasting my time with this question?" instead of "What is the correct answer to this question and how do I explain it?" then I know I’m letting my emotions get in the way of things. I always try to ask the second question.

At the same time, while one is nice one must not be stupid. If the same developer comes every day with the same problem, perhaps there are larger issues at stake. A lot of beginners don’t know how to use search engines effectively. They don’t know how to read documentation. A senior developer shouldn’t become a substitute for reading or for thinking for one’s self. I have been in situations where a person clearly can’t do their job and I can’t do their job for them. Again, though, getting mad doesn’t help. If I’ve made an effort to help and the other person doesn’t seem to be making an equal effort to learn, then sometimes I have to let nature take its course and let the other person fail. No one wins when that happens, but sometimes failure is unavoidable.

I think an environment where only one senior developer is expected to mentor a lot of junior developers can put a lot of stress and strain on that one senior developer. However, if an organization can encourage a culture of mentorship and spread the load amongst several developers, then things are easier for everyone. Furthermore, as junior developers grow they can take on more responsibility and eventually they’ll need less help. Spending a reasonable amount of time helping others is a definite win/win.



Categories: Development, Philosophy, Work

Tags: , ,

Leave a comment