Sharing Knowledge is Beneficial
I am what most would consider a non-traditional programmer. What I mean by that, is that I wasn't a computer wiz, math wiz or anything like that when I was in high school. In fact I graduated at the bottom of my class. I was something like 273 out of around 300 students in my graduating class. The few things that I was really good at school were things like shop, drafting and specially art. I got quite a bit of recognition for those things but not for any academics. I wasn't really into things like English and Economics.
In fact I failed a class called current events. Many say that was the easiest class. All you had to do was watch the news during class everyday and then take a test every so often. The truth is that most of the academic classes bored me.
When graduation time came around and many friends were applying for college, I decided to enlist in the Army instead, with the hopes that it would make it easier for me to attend college one day. I never imagined that I would be a programmer much less a "Senior Software Engineer".
After eight years in the military I knew I wanted to go to school. I wanted and education for different reasons. On one hand I wanted to start a good paying career on another I wanted to set the the example for my kids. So after getting out of the Army, I prepared for the college entrance exam and ended up doing quite well. I looked into the careers that were available. I knew I wanted to do something related to drafting or art since I was a descent artist. After seeing that most of the drawing had gone digital, I got the idea of going directly to the source; computer science.
I won't lie, computer science was intimidating. I never even owned a word processor and here I was getting ready to go into the very heart of it all. My army career certainly didn't prepare me for this. I was a 13B (Thirteen Bravo) in the army. That is a cannon-crew member. If you know anything about the army, that occupation is basically a grunt that shoots cannons.
As 13Bs we are normally considered to be not the smartest members of the Army to say the least. I didn't let that deter me though. I figured I would cross the bridges of challenge as they came. The first classes such as FORTRAN and college Algebra seemed daunting at first but I stuck with them. I spent extra time doing everything I needed to do to pass the classes and actually ace most of them. Turn the pages to today, 18 years later, and I've become a decent software engineer with a BS in Computer Science and a Master of Science in Information Systems. I am living proof that even a C average student can do great things.
So enough about my past life. I was telling this story because I wanted to make sure that I provided a little background. The point that I wanted to make was that it can be quite intimidating at times when I am surrounded with really smart colleagues that go way back with computers into their teens, owning TRS-80's and the like. It can be quite intimidating teaching these much smarter individuals what I know. It is intimidating because they learned things in their teens that I haven't even discovered into my 40's. What I find most amazing is how friendly and courteous they can be, in spite of that.
What this post is really about is sharing the knowledge. I really appreciate when someone shares that knowledge with me and I also enjoy sharing the knowledge with others.
Because I spent so much time tinkering with programming, I got pretty good at it. In my first job I worked in a small team with a few other programmers. We all worked on different types of projects. It was fun and exciting to be a professional programmer. It was a dream that I never even imagined.
In that job I was always willing to share what I learned along the way. We all worked great as a team even when we had different assignments. One day, after a few years, two of my colleagues moved on to a job that payed much better than the one we were currently in, working a much more meaningful project.
They got hired on immediately, but in my interview I must have blown it because I didn't get the job. The story doesn't end there though. My colleagues kept pressing their manager to hire me, until one day he did. I didn't disappoint our manager to say the least. In fact after the first year I got one of the best reviews I had ever had, a promotion and a great pay raise. I attribute this to the reputation that I build with these colleagues because of the knowledge and rapport I established with them as a result.
Just to rewind things a little bit, even my first job that I got as a programmer was because the person that recommended me was someone that I had shared some knowledge and provided help to in college. He rewarded me one day by getting his manager to offer me a job. If it wasn't for connections that I made along the way I don't know how easy or difficult it would be to get a job. Every job that I've gotten as a programmer/software engineer was thanks to someone I worked with in the past.
I am not the greatest programmer in the world. I know enough to be dangerous and enough to get the job done. One thing that supersedes my knowledge is my passion for programming. This passion also flows out of me and makes me want to share and teach others what I have learned.
Sharing the knowledge helps me in many ways. Here are a few:
- It helps me understand what I am sharing in better ways
- It helps me articulate what I know. It is not simply what you know but what you can articulate
- It helps me bond with my team mates and colleagues
- It helps the overall performance of the team
- Most of all it gives me a chance to give something back in a small way
- It helps me be a valuable asset in the current organization
- It helps me in having job security even outside of my current organization
People don't share knowledge for different reasons. It can be for job security; they don't want to train their replacement. It may be due to shyness or fear of being wrong. It may be for fear of criticism. It may be for being too busy.
None of these are valid reasons but rather simply excuses. Here is why.
First off, the greatest job security that you can have is that of your own personal brand. What you can do for your employer, current or future, is what matters. Sharing the knowledge puts you out there as a better resource for you organization. This means you become more valuable to your employer and your team.
Sometimes jobs are lost not due to lack of skill but rather business situations such as lack of work contracts in the organization. A person that shares knowledge is likely to have a better networking relationship with former colleagues. That is better job security. This will make it more likely that you can find the next job easier. On the other hand, someone who hoards knowledge is likely to be considered a not-so-good team mate, resulting in lack of good references from former colleagues.
Shyness or Being Timid
Sure, you many not have the confidence to share the knowledge or take on a the next company meeting as an audience but perhaps you can share work related approaches in small group of two or three. Knowing what you are talking about can give you the confidence that you need in getting in front of people. This also helps you create your own personal brand. How will people ever know that you know what you know unless you share it?
Most software engineers dream of becoming lead developers or even software architects. You can never become either those roles and do a good job while being timid. You will have to get in front of people at a moment's notice and explain things. Not only will you have to explain them, you will have to figure out a way to translate them into terms that colleagues can understand. The only way to get good at articulating things is to practice.
There is no room for being timid for a senior software engineer.
"But I'm too busy"
Being a software engineer is a profession. It may not be as important as the profession of being a doctor but in parallels in importance of personal professional advancement. Would you trust a doctor who graduated from medical school 30 years ago and never bothered to invest in their professional advancement since? How will they be able to provide you with the best treatment?
We, as professionals, must invest in our professional advancement. What better way to secure that knowledge than by sharing it with our colleagues.
If your attitude is that you are too busy to invest in your professional advancement one day your skills will no longer be up to par and you will have been to busy to keep your profession.
Fear of Criticism
There is no leader who is immune to criticism. Get used to it. Don't take criticism to heart. Listen to it pay attention to it and if it makes sense, adjust your position. If the criticism doesn't make sense or it is is not good, ignore it. Do what you know is the right thing to do. Don't let criticism stop you. In the end you will grow with or without criticism. It doesn't matter what others think about you. You will only get better by putting yourself out there. If you are really that bad, the world will find out anyway.
We all fear sharing too much of ourselves. Our knowledge is a big part of ourselves. If you don't share because you don't really know, then you should go out and learn what you don't know. In the end if your don't really know, you will be found out.
Sharing the knowledge can be intimidating. It requires a little work. If a C average student can do it so can you.
I hope this helps you reach your goals as a software engineer. Go on and share and don't let anything stop you. Sharing the knowledge will only help you in the long run.