Some Personal Background
I have been a programmer since I was 13 years old when I took an extra-curricular class after school to "learn how to make my own computer games". Ever since then I have been fascinated with programming and today it is my one true hobby that never dies. I have a rolling attention span, having interest in something for a week or two and then quickly losing interest again, but programming is always there underneath it all. My passion for programming is what keeps me learning and is the whole reason this blog even exists.
I consider myself to be slightly unique within the computer science industry. I am definitely a hybrid personality. I am very logical and analytical which is the root of my love for computers, but stitched closely to that I am also very sociable and emotional. My fiance tells me it makes me a well-rounded person, but sometimes I think it makes me a basket case :P. Because of this combination of very different personality traits I have become a "social programmer". There aren't very many of those today.
Most of the personalities in the programming industry carry some anti-social traits. Speculating from my own experience and assigning a made up statistic to it I would say about 70% of the programming industry is made up of introverts; people who love programming and are either shy or just like keeping completely to themselves. These personalities are good for getting work done, but are not very good at communication with their colleagues, nor are they good at communication with the laymen.
I'd say another 25% of personalities in the industry are self-important and egotistical. These ego-driven personalities are a minority compared to the introverts, but they are definitely a very vocal group; they are the source of the stereotypes assigned to computer science majors by the public. You know the type: Arrogant, egotistical, ill-mannered, and condescending. When I picture the programmer stereotype I envision a huge overweight guy leaned back in his chair with a big gulp and something deep-fried in front of him, feeling superior to both his colleagues and anyone outside of the industry because of his "vast amount of knowledge". Unfortunately while this seems like something from a TV show, I have encountered my fair share of this personality and they are VERY hard to get along with.
I'd say a final 5% of personalities in the industry are outgoing and sociable. Because the number of personalities with these traits is so small I have personally never encountered one. I have never encountered another programmer that cares as much about making friends and mingling with other programmers as I do. I read text books cover to cover and then wish I had a friend to talk about it with. It can be a somewhat lonely position at times but thanks to the internet I have found a few niche communities where I can chat with fellow programmers. But that isn't the same as if I had friends or colleagues that had a similar personality to mine.
Though I don't know any full-blown programmers that share my same passion and also seeks a friend to share it with, I do know a good number of people that want to be programmers. In fact, I'd say most of the non-programmers I've met that have a desire to become one have very friendly personalities. I don't know if that means that only the anti-social personalities seem to have what it takes to actually pursue a programming career, or if somewhere between not understanding programming and being a professional programmer most people transition from one personality type to another. What I do know is that there is a lot more potential talent out there than there is existing talent.
I tend to believe that the sad state of the industry on a social level is what drives a lot of potential friendly programmers away or causes them to harden and become like the rest of them. With some of the abrasive people I've encountered in my time I can understand why one could be doomed to feel forever inferior or shunned by their peers and colleagues. I think I just have a unique perspective on the other personalities because of some personal experiences I've undergone. Most of the way people treat others is a projection of the way they treat themselves. The egotistical person might genuinely believe they are God's gift to the Earth, but I'd say most of them probably hate themselves as much as they seem to hate everyone else. Of course that doesn't forgive their generally bad attitudes and certainly doesn't make it any easier to work with them, but it does make it hard to take what they say too personally.
There are tons of people who love the idea of becoming a programmer. I see it all the time when people ask me about what I do and what it's like to be in my industry. I know several people who obviously have a passion for programming already and they don't even know it because they've never really been exposed to it. It can be hard to know where to begin when you finally do decide to pursue it.
My ultimate goal in my professional life is to improve the state of my industry. I'm not worried about the technological aspects of the computer science industry so much as I am worried about the social aspects. I want more social people to start tipping my made up statistic in the other direction. I want to encounter other passionate and friendly programmers more regularly. Toward that end I have decided to do what I can to help. I know how hard it was when I first started out and I would like to make it a little easier. Sometimes all someone needs is a good tutorial that is well thought out and contains enough detail that most of the reader's questions are answered by the time they are done.
I am going to put together some tutorials to help out others that encounter the same things that I do. It is sad to me how many hurdles are overcome every day by programmers, but are then left behind for another programmer to figure out for himself. I want to teach others what I know and what I will know. I will pick a topic and break it up into parts. Each week I will write a blog covering each part of the tutorial one at a time. I may write them more often than once a week but that's all I'm going to commit to for now.
I will be focusing heavily on Microsoft technologies since that is where my expertise lies and where my programming interests always seem to take me. I should be able to start over the next couple days and have part one of my first tutorial finished. The first topic I'd like to start out with is the .NET framework and what languages support it. I think it's important to have a base understanding of the platform you are coding against so that is where we'll begin.
I look forward to hearing feedback regarding my future tutorials. I hope you enjoyed this little insight into my philosophical background and motivations. See you all in .NET Framework Tutorial - Part I!