I am the most senior developer in my team. I help others a lot by regularly sharing with them the things I learn. I like sharing stuff that I learn and am passionate about increasing team productivity. However, recently I have started questioning whether this is the optimal thing to do when it comes to my own career. I don't generally get acknowledgements from other team members that I am helping them out. In performance reviews people are compared against each other so by helping others I essentially improved their performance to my own detriment. I know that my manager would probably want guys who improve team productivity vs. just keep on doing their own work but how do smart people really balance out this double-edged sword faced by an IC (individual contributor)? An anecdote.
If you want to continue to grow as a developer, there comes a point where your individual contribution alone is not enough to continue advancing. Having ever more technical knowledge and solving ever more technically challenging problems are good, but too much of that alone will get you labeled as a cowboy coder. Making yourself irreplaceable by holding knowledge or obfuscating your work may give you job security, but it will limit your advancement possibilities. Eventually, you will be measured by how well you can technically lead a group of developers or set the technical direction that others follow. Being able increase team velocity by mentoring junior developers, sharing knowledge to help overcome impediments or generally improve practice are important components to this.
In short, keeping things to yourself may help you in the short term, but it will limit you in the long term.
I have the answer for you, and it will make your life so much richer, but I am not going to give it to you because you might take my wisdom and answer other questions on this site, and get reputation points that should have come to me. See? That just sounds silly, doesn't it? As if readers are only allowed to vote for a single question.
While it may seem attractive to view yourself as getting ahead by having skills your teammates do not have and keeping them to yourself, you are being very short-sighted. You are correct in the point that they should learn things for themselves, but that doesn't mean you do not have an obligation to help teach them. Put yourself in your employer's shoes: what matters most is that your team produces the product or service you sell, as efficiently as possible. If you have knowledge that helps, but you withhold it, the employer is harmed by your (in)action. You risk losing your job, either because the employer doesn't want to reward selfishness, or because your lack of teamwork can cause lost revenue or higher costs, or both, for the business.
Consider, too, what you will be doing to yourself. If you're the only person that knows how to do X, you will be the only person that will ever do X, whenever X is needed. You will eventually get tired of being called on (midnight, weekends, whenever) to do X. Wouldn't it be nice if there were a couple of others who knew how to do X at least as well as you do? That way, they can share the burden, and you don't have to fix anything when you come back into the office.
Consider again, that as an individual, there is only so much you can accomplish on your own. In your career, you will want to accomplish increasingly greater things. You will eventually need the help of others to do that. If you have built a crocodile-filled moat around your little castle, nobody will be able to come help you, even if you decide you want them to help. Nobody will care. What goes around, comes around.
It is short-sighted to live by the fallacy that to get ahead in your career you must prevent others from getting ahead. It is not a zero-sum relationship. Skill and knowledge can be held simultaneously by everyone at the same time.
If you never teach others to do what you do, you can never be promoted out of that job. And in most evaluation systems "leadership: is a big component and teaching others is one of the better ways to demonstrate leadership. Trying to keep secrets from co-workers is a good way to kill your career.
I believe there was a similar question some time in the past year whose consensus opinion echoed these points.
There are definite benefits to keeping things to yourself. But it's also important to seriously consider the benefits of teaching others:
1 - By teaching others, you organize your own knowledge. Knowing how to do something and knowing how to describe it to others in a simple way are two different levels of understanding. By teaching others, you will solidify what you already know, grow your communication skills, and also find topics where you are weak, enabling you to learn more.
2 - Whether your employer realizes it or not, the ability to make your entire team more productive is one of the most valuable traits an experienced professionals can have.
I'm also a developer, and my mentor was persistently underappreciated by the managers where we worked together. It got to the point where he finally got fed up and left the company. When he did, one of the people who used to work with him who did recognize his talent for teaching offered him a job with better pay and benefits for a major IT corporation you have definitely heard of. Don't make the mistake of thinking that your current employer's opinion of you is the only one that matters. Your smart coworkers can be as valuable to your career as your boss, if you are willing to help them grow.
3 - What feels right to you? It sounds as though you like teaching people and feel like it's the right thing to do in your position. If you teach others, you will go home at the end of the day more satisfied because did your best work. How positive you feel about the work you did when you go home is as much a component of being happy in life as salary and career advancement are. Don't underestimate the value of working in a way that is in keeping with your own values and passions.
One piece of advice though, borrowed and rephrased from the book "How to Win Friends and Influence People" - when you help someone and fear that they (or others on your team) may not recognize the value you have just had for them, feel free to verbalize the situation.
When they ask you a question, and you take a few minutes to explain something to them, they will likely say "thanks." You can either respond the way most people do: "No problem" OR you could say something like: "I'm glad to help, I always enjoy teaching people. I think it's better to help the team become more proficient than to just ignore people struggling in order to get my own work done."
You seem to believe that this is true, so let other people know that's how you feel. It's very likely that you're right, that other people benefit a lot from your assistance, but may fail to acknowledge it. So by simply saying out loud how you view the situation, you can help them to see things from your perspective, allowing you to aid others while also making them see the value you offer the team by helping.
Are you answering specific questions or proactively sharing what you learned?
If you are just proactively sharing what you learned them them maybe you are not getting acknowledgements because they don't value it.
Sharing: "Look in this situation X is 5% faster than Y." OK cool, but right now I am not working on X or Y and just took 10 minutes of my time to share what you learned.
When asked answer but I suggest you cut back on unsolicited sharing.
If you are the formal manager then in a performance review they would not be piers you would be compared with.
Not getting recognized for the good things you are doing, is a common occurrence. But, it is just for a short term. In the long run, it would definitely reap benefits for you.
For example: If you helping an employee in his/her career by sharing knowledge, then he/she would always have a soft corner for you during the reviews and meetings.
And they will definitely help/favour you when you need them. This might not happen immediately, but would definitely happen. People always respect the ones who help them, in both professional and personal life.
So, keep up the good work, and you would definitely reap nice things from that.
How you win when you teach others in a timely and friendly way:
- They are more likely to teach you something new someday. Just because someone is 10 years your junior doesn't mean they can't teach you something. You might have a deep and broad experience with what you're working on, but it's very likely every one of your colleagues know at least some technology, technique, or soft skill that they much better than you do.
- You encourage communication and the skills needed for that communication, which is likely to make for a more friendly workplace. Not everyone will pick up on it, but some will.
- You increase the bus factor and overall team productivity, which is something you can mention in performance reviews.
You sure use the word "I" a lot in your explanation of the situation. While you clearly want to describe something from your own personal perspective and self-references are necessary, you don't come over as the purest team player. Consider the following: as a team player, you don't help out your team mate. You do the work together.
I further notice that in spite of your superior development knowledge, you used StackExchange so far only to get answers and not provide any. That's really not a problem in itself but it might be an indication that your willingness to pass on knowledge isn't as great as you perceive it to be.
All that is really not meant to offend you but rather challenge you in your views.
For example, you describe yourself as the most senior developer in your team. Would your team mates or your manager agree to this view or is this just how you see yourself? Because if this is some sort of official title or, at least, the general perception, I don't think you would have to fear not being acknowledged. A simple "thanks" as acknowledgment by your mates would indeed be sufficient because there already is a clear (implicit) hierarchy between you and with it comes your responsibility to act senior which includes passing on knowledge.
Assuming that is the case and that I put myself in the position of your manager who I assume is not blind nor deaf, why would I risk making you feel less appreciated being well aware of your level of seniority and how it helps the team (us) reach its goals?
Obviously, I wouldn't. And if I would, I would be served right if you started looking elsewhere.
If you're really senior, this should do. If you're not, here are some guidelines to get you further:
- Always be a team player but not at the expense of your own tasks.
- Try to create visibility of your actions. This should be particularly easy as a developer since your code contributions will directly distinguish you from others.
- Don't be too humble during team meetings and speak up. Very often meetings will give you an opportunity to explain how you used your work time.
- Last but not least, if you just can't shake the feeling that your valuable contributions are not acknowledged by your manager, try to engage him. Dependent of your corporate culture, you might have one-on-one sessions every once in a while, or you could just ask him to have lunch with you and then discuss some of your points.
I'm pretty sure you don't need us to tell you that it would be better for your team and your employer if you shared your knowledge and skills, so it seems to me your real question is how you can get appropriate recognition and reward for doing so.
One way of doing this could be to put your knowledge sharing activities on a more formal footing. Perhaps you could start up a weekly or fortnightly seminar with your team, where one of you presents something new you've learned recently, or shows a technical problem they've faced recently and you discuss between how you could solve or have solved it. If you can't take even half an hour out of the work day for this, have it at lunchtime and buy everyone sandwiches as an incentive. Once it's been going for a while, run a survey to ask people whether they've found it helpful. Then you have a concrete achievement to point to in your next performance review: 'Introduced regular technical seminars which 8 out of 10 participants said has helped improve their knowledge and skills.'
Even if doing this isn't valued or recognised by your current employer, it'll be something you can add to your CV when looking for your next job.
If you're actually training a colleague in how to do something, get them to book a time slot for it in their calendar and include it in your weekly or monthly report to your manager.
My personal strategy is to keep most things to myself, the workplace can be competitive, anything that gives you an edge is an asset. Anything that only you can do helps to make you indispensable and therefore worthy of a raise.
In saying that, I am also willing to help others if asked, but I don't volunteer, and I don't do long winded explanations, it's a fine line. I expect others to teach themselves, just as I do. Pool our knowledge when need be, but only if it's a two way pooling.
The other danger apart from the one you outlined is people who will sometimes latch on to you as a shortcut to solving their own problems and making themselves look better. These can suck both your time and your knowledge at no advantage to yourself. It can be bad for you if you're spending considerable amounts of time fixing other people's issues instead of concentrating on your own tasks.
Ask yourself where your ambitions lie, obviously helping less knowledgeable people can help the team, although I'm a big believer in people teaching themselves rather than spoon feeding them. So by doing so you might be deemed a better manager. Although it appears you're not getting credit for your efforts. The team as a whole will appear to perform better riding on your work.
Or you can be more sparing with your knowledge and eventually become a highly prized and highly paid troubleshooter. Which some people would think is the greater prize.
It sounds like you are over-helping people and they realize this and then take the easy way out and keep asking you.
When somebody asks you, and he has a problem A, you should suggest to look into techniques X, Y or Z, but you should not go into lengthy details. Maybe they already checked those paths, and it is wasting your time. Maybe they know about a technique, but forgot to use it here.
If none of that and they don't know that technique, there is always google and stackoverflow! Or they come back and ask a specific about technique Y they didn't understand. Self-teaching and filtering relevant information from a lot of data (blogs, QAs, ..) is part of the job and if you keep going like this, the only thing they learn is to ask you. ;-)
So anything more than giving the relevant hints when they are stuck and you are doing their work instead of yours. Depending on your salaries (intern vs. senior) it might be even harming your company because you probably cost a lot more.
If you keep controlling everything, you soon won't be able to do your own tasks and that will reflect bad on your perfermonce reviews. I wouldn't demand that things come back equally like Kilisi suggests, because if you are a senior developer, they probably might not have a lot to offer, but you should keep the help to a minimum and let them figure out their own problems.
Also you might wanna read Psychopathy in the workplace, that's the people you are probably afraid of and that you should not support. They will abuse anything you give them, climb the ladder, then still fail and put all blame on you. But those seem to be like 5-10% of the people, so wouldn't treat everyone as malificent.
In short, be nice, be helpful, but don't spend too much time on it. If it takes overhand, talk to your manager about this. Tell him you are getting a lot of requests and you are happy to help, but you need to know how to handle those, since they are affecting your performance on the tasks you were given. Either you will be scheduled some extra time for those tasks or the manager will intervene in some way.
But first try to reduce help to the necessary minimum, usually people understand this. And don't spend 3 minutes explaining how much time it takes to help people, it is perfectly fine to answer short or even say no if they keep coming every 5 minutes.
This sort of thing hits home for me, since I'm a developer with only 3 years of experience, and I have thrived under the advice of a more senior developer (and have experienced first-hand what it's like to not have that advice around).
With that, there are some things to keep in mind:
Share tips that are related to a specific problem or concern that another person is having. This will lead to others being more appreciative of the advice.
Don't do it for any sort of gratification. If you're trying to get a pat on the back, then you're helping for the wrong reasons. Help because you really want to, not because you feel any sort of obligation or that you think that anyone needs it.