This blog post is archived. I consider it outdated and not very useful anymore but since there are many who still visit these pages I've decided to keep them up.
How I learned to stop worrying and love my community
How I got started in programming.
I was 8 years old and I was playing little league. For two years I was a member of the LA Dodgers and the Expos. I worked really hard at baseball. But I was no good. I probably held the record for the most walks in the history of little league because I couldn’t hit the ball. Ever. My mother made me an offer I couldn’t refuse. Hit the ball (and get on base) and she’d buy me a Nintendo. I wanted one since the day it came out. I would play Gouls and Ghosts at my friends house for hours on end. But, alas, I still couldn’t hit the ball. During my second year and almost to the end of the season my coach was thrown out of the game. I don’t recall why, but our team had renewed vigor. The next time I was up at bat. I hit the ball. I was shocked. Didn’t know what to do. Finally I ran and made it to first base. My mother was elated.
True to her word she bought me a Nintendo and a subscription to Nintendo Power. My sports life was over. (For the most part) I was hooked on games. Dragon Quest (which came with my subscription) was the first game I truly owned. It was glorious. I made it my goal in life at that point to be a game designer. I wanted to make the next Dragon Quest.
Alas, money was a hard thing to come by in my life. It was 2 years before I was able to buy a computer. I saved 300 dollars and the classifieds yielded my first Windows 3.1 system. Truth be told I almost never used Windows. I was stuck in DOS and QBASIC. I didn’t quite understand what I was doing but I could print to the screen. I bought a book on the subject and started getting lines and colors on the screen. I moved on from QBASIC to Pascal because that’s what LORD was written in. I wanted to write mods. It became such an addiction I would stay up late at night with a blanket over the screen so that my parents couldn’t see the glow of the blue monitor through the door. I even started my own BBS…parents hated when I tied up the phone line. It was a single line BBS but it was fun.
No matter what though, I couldn’t write games. I had some sort of mental block when it came to how they worked. I could write applications. I had a knack for business logic. So I stuck with that. However, I would never show anybody my code. Always embarrassed by what they would think of it. I never felt I was good enough. A couple of my friends were really smart and that didn’t help. Most of them would always understand something before me or they were developing in c++ or already writing Windows applications. Here I was stuck in QBASIC/Pascal.
But I persevered. I trudged on. I wasn’t discouraged from programming. It just made me work that much harder. I started learning PHP, Visual Basic, Borland C++ but I never really did anything that I considered great. It was great fun. I knew this was my future. I started work at a background screening company in ~2005 and that’s where I really began to focus on business. I had a lot of great internal projects and they were great in terms of getting work done but I was embarrassed by the code. We didn’t have code reviews in this shop. So it wasn’t much of an issue. I would sometimes share my work with a co-worker (long time friend of 18+ years) but I would always try to keep it to myself. I was usually proud with the outcome of my code but not with the code itself.
I started to go public
Economy tanked. I lost my job. I didn’t have any “contacts” to call on for help and see if there were any openings. That’s when I decided to start a blog. This blog. But what would separate me from the rest of the programming blogs out there? I needed something big to get attention. I just started looking at the Razor Engine by Microsoft for ASP.NET MVC. There was no editor for it available. I thought I could make a highlighter. That would rock.
I had no clue what I was doing. Visual Studio Extensions were the worst thing I’ve ever seen in my life. But somehow, I wrote it. I pushed it out there and it was loved…people were asking me for the source. Oh god. I couldn’t share my source. I don’t know what I’m doing. I’ve only been developing for 20 years. They’re going to laugh at me. I delayed it as much as possible. As soon as the official MVC 3 release came out I wouldn’t have to share my source since nobody would care. That worked for a while. A month after release I went to a webcamp at Microsoft in Los Angeles. Phil Haack was going to be there. He’s popular. I thought if I showed him my syntax highlighter he might be impressed and something magic would happen. I didn’t know what that would be but I had to try.
Things got interesting
That magic didn’t happen. But there was this one guy sitting off to the left. I didn’t know who he was but I was content to talk to him while I waited to talk to Haack. I forget how the conversation went but I ended up showing him my blog and he was my first ever follower on twitter. That man was Jon Galloway. Awesome!
This chance meeting forever changed this developer’s life.
Immediately I felt comfortable sharing with him. He encouraged me to join some open source projects. I really wanted to start with ASP.NET MVC but he suggested I start smaller. I continued to focus on just snippets of code. Nothing ever huge. I would submit a patch here and there nothing ever big. Then one Stackoverflow question set afire an idea for my first open source project. What became of my answer was RazorEngine. Galloway encouraged me to release it to the public. I started a series of posts on how this RazorEngine worked. I couldn’t believe the support from random internet people. Nobody said anything bad. All positive. It was even featured on the asp.net Daily Spotlight. I couldn’t believe it.
Eventually Jon Galloway invited me to contribute to the then MVCConf and talk about Razor. I was all ready to do it and I came down with the flu. I was relieved. I couldn’t stand the thought of people laughing at me while I made a fool of myself trying to explain Razor. I kept working on my projects. Kept releasing my source. It helped that whenever I showed Galloway one of my ideas he had nothing but good things to say. Always encouraging. It got to the point where I was finally ready to speak. Jon had a lot of advice as to how to proceed. I took the plunge. I signed up as a speaker for SocalCodeCamp.
I wanted to quit. Wanted to cancel for some reason. I never told anyone I wanted to cancel but Jon still encouraged me; probably assuming I had jitters. It was a disaster. I had a demo fail. I had some questions I couldn’t answer. I had some people up and walk out on me. It was heartbreaking. I assumed I was horrible. I was never good at explaining things but I tried anyway. That code camp I met other devs such as Hattan Shobokshi and Dustin Davis. They were both encouraging. They explained their first time. Hattan gave me some advice related to his own personal experience. (Paraphrased) “You never know why they’re leaving. They might have a phone-call or have to go to the bathroom. I had one guy not pay attention the whole time. I thought I blew it but it turns out he was just tired but he heard every word.”
These people gave me more of a support structure. People that were encouraging and selfless in their willingness to share their knowledge and experience. I’ve since given that talk twice. The second time was great. I had so many people asking questions. They were engaged. They were actually interested in what I had to say. It was amazing. Some even stayed late during their lunch break. Very encouraging. So much so that I am planning a third session and a collaborative session with Hattan at the next SocalCodeCamp.
During the time between RazorEngine and now I’ve released many open source projects. Some are good, some are bad. But I no longer worry about it. I don’t worry that people will laugh at me or berate my code. The programming community that I think I’ve grown to be a part of has been nothing but supportive. I haven’t received a single drop of discouragement.
I’ve tried to take my experience and help others. I hope that I’ve accomplished that with some of you and continue to do that in the future. I want to try and give others the same chance that I’ve been given. I may not work for Microsoft or have 50k followers on twitter. But I’ll still help out when I can.
If you’re just starting out or you’ve been programming for 20+ years it can be scary to share your code with others. I hope I can encourage some of you to share your code. Share ideas. Make friends. Take that step. You never know where it might lead but it will lead nowhere if you don’t take a chance.