That simply happened one day, some time back in January. The idea suddenly appeared in front of me, jumped out of nowhere and faced me with the fact. The understanding that I wanted to start my programming blog. Now.
I don't remember exactly what I was doing right at that moment. I could have been at work programming stuff or I could have been on my way to the office or back home. Or it could have been a weekend when I was walking in the park. I’m not sure. I wasn't thinking of blogging at that particular moment. I didn't even think of blogging in general. And almost certainly was I not thinking of starting blogging myself.
I had been programming professionally for maybe like three years by then, had a few projects on my own, but I had hardly been engaged in any public professional activity. I was not writing papers, I was not speaking at conferences, I was not participating in programming contests. I was not commenting on blogs although I was reading them. I was not contributing to open source projects. I was not even writing on StackOverflow then.
And suddenly it struck me.
Being surprised, amused and somewhat perplexed by the idea, I got excited about it for some time, but did not really follow it then.
I contemplated upon the idea for about half a year. I read essays of people who started their technical blogs, I learned their stories and compared them with what I had in mind. I reflected on several arguments that spoke for going along with the idea as well as on few that were discouraging me from doing it. Finally I decided to give it a try. My recent involvement with the StackOverflow project and the community feedback on my contributions have provided the much needed encouragement. So I'm doing it.
I'm not sure though I have any specific or for that matter clearly defined objective I wish to achieve with this project. Well, except for having fun, that is. But that should make for a good starting motivation already.
What next? Right, the technical part. It took me about two months to build a simple blogging engine (more on it later) and now I'm online and ready to begin. I will try my best not to make the audience sleep and you please be patient and indulgent towards me. A deal?
Now, that we have settled this matter, let me try to present my thoughts and explain what drew me to this project and what considerations I had (probably still have them) against it. I know there are many developers out there who are considering the same thing – to start their own programming blog and take the word out to the public or keep silent and avoid the misery of being ridiculed if it doesn't work out. All right, I will add a few arguments to the decision balance.
So why am I doing it?
I love writing
That's for sure the first and the foremost reason. I have always enjoyed writing texts of all types. Except for documentation, naturally. You understand me here, I know. I have written lots of works and texts as part of classes and even more on my own accord while participating in various online communities of all sorts. On occasion they had something to do with programming. But most of them were completely off programming covering various topics from fashion and travel up to relationships and lifestyle. With all of them I enjoyed writing a great deal and even more I enjoyed the feedback the people were giving me. Not sure why I haven't started writing on my own earlier. I suppose the time hadn’t come yet. Now the time seems to be right. Recently a friend of mine suggested that I try writing instead of programming. I think I will try both. A blog with commenting enabled should be just about the right format, this will let the readers provide feedback on my writings.
Away with rules and restrictions
You already know what I am talking about, no doubt. You join a seemingly interesting community and you actively engage in it only to discover later that not all your contributions are appreciated. While you certainly get credit for some, you have the others ignored, criticized or removed if your point of view contradicts the opinion of this community or the team in charge. I got many times suggestions to present my opinions in another place or due to the length and the subjective nature of my writings to publish them in my personal blog. Indeed, why fight unequal force if there is a simpler and a more elegant solution? So I'm going independent now.
Experience and knowledge to share
As unbelievable as it may seem that a single developer may have valuable knowledge to change the world, it is actually often so. Most programmers, even with tens of years of programming career behind them, tend to think they're nothing extraordinary and have nothing to say that has not been said before ten times already. That is as true as it is not. An interesting observation, a thought, a new point of view or insight into a widely known problem may present new options and influence the work of many other programmers who come across it. I’ve certainly had many observations and ideas throughout my time that I just used for myself or simply left behind as unneeded. A pity. What if somebody was looking for just same thing hoping to find a solution I could have given? No, of course, I never shared it and so it was never found by anyone. Nobody learned it and I myself forgotten it with the passage of time. A loss of knowledge. Unpractical. It happened to me multiple times. So I decided to publish whatever ideas I may have now. My recent involvement with the StackOverflow project showed to my great surprise that I obviously have some useful things to say now and then. This community feedback has turned out to be a great motivator and supporter while I was preparing to start my own programming blog.
Preserve knowledge for the future
One of the main interests I had in mind while deciding on the format of this place was the wish to have some sort of a personal online bookmarking system. Yes, I know, there are many places dedicated to online bookmarking, even various social bookmarking services like Delicious. I tried them. I used them. It worked. Until I once forgot my login name and could not find my bookmarks. Right... No, I recalled it later of course but the mere fact undermined my further interest. Also on many computers I used I had a multitude of local browser bookmarks that only naturally all got lost. I tried various other systems for keeping things close at hand but none has worked well for me. So I decided to have my own place to keep all the valuable links and resources I stumble upon.
It goes beyond that of course. Often in my practice I try various things, I experiment, I get interesting outcomes which may turn out to be useful in the future, in some scenario, just not right now. I'll keep them in mind, I've often said to myself, until the time I will have an opportunity to make use of them. Needless to say, when the time came, I hardly remembered them. In the best case when I still had a trace in memory I would go through the same process of digging them out, checking the old bookmarks I still had, experimenting with the things again until I reached the same point. This is highly ineffective, means loss of time and efforts and definitely contradicts the DRY (Don't Repeat Yourself) principle. So I'm going to be publishing these findings directly here, to be able to get to them quickly when needed. Hopefully, they will also turn useful to other people who'll visit my place.
Have something to show off
That one is certainly hard to deny. Yes, I've often wanted to have something permanently available to show to other people. I have needed it several times. It is to a great disappointment when you have to respond that you have nothing to show right now. You know it, people ask you about the projects you completed and want to see them. If you are not lucky to have worked on public projects and completed them, maybe as a freelancer developer or a web designer, you would often have nothing in your portfolio to show except for a login page of a closed customer system. Not impressive. Yes, I did a few projects on my own, but nothing really took off, so I brought them offline soon afterwards. I can talk about them, explain what I did and why but when it comes to demonstrate things, here we have an issue. I can of course pay a hosting for a month just to put the things back online to show them to whoever may be interested in them right now. But I somehow don't feel like doing it. I could keep them permanently online, but that implies continuous hosting expenses with no return. Not an option either. I can mail the project files to an interested party, but we developers are often not fond of how we did things in the past. So, not a good solution. What to do then? To have a project I would maintain genuine interest in on the permanent basis. A personal site in the form of a programming blog will do nicely here.
One remark is to be made. This will only work if you’re into web development. I am. Otherwise developing a web site without prior exposure to that field will be hard. Not that it will be hard to put up a working site. It will not. But creating a good site to be proud of will be hard. And no, getting a pre-built template and putting it online will not count. Neither will creating an account with some established blogging service. A blog with blogspot, wordpress or any other popular service just looks lazy and dull. Unless you're only interested in content. But that's a different motivation and this particular talk does not apply.
How I did it
So I decided to build my own place from scratch. I had been working with ASP.NET MVC for quite some time already so I felt pretty comfortable using it. So I used this framework to quickly put up whatever was supposed to reflect my idea of the place. I suppose I could have taken one of the existing engines and just customized it to my needs. But I didn’t feel inclined to do so. I wanted this place to be completely mine, from the UI design to the database model. I wanted it to reflect my idea and my style. Call it a form of self-expression if you wish. I suspect it could have taken me much longer to customize another project to my format. Anyway, I didn’t really like any of those other projects I had seen.
Having my own place has a significant advantage in my eyes. I know where the things are, where to turn to make the adjustments I need and where to look for problems should something go wrong. Of course this can seem like reinventing the wheel, since the other existing blogging engines already have lots of features implemented and polished that my project will be lacking in the beginning. But to tell the truth, I don’t need them all. I don’t even like them all. I will add whatever I will need as per on-demand basis. Anyway, it is my toy and I don’t have to be reasonable here.
Also working on the project provided me with an extra opportunity to practice my skills. Not that I had lacked practice, quite the opposite actually. But to see a project start with the idea, make it through design and implementation to finally come to life is a great satisfaction. I am a practical guy. I love to get things done. I love to see things done. This luxury is not always available when you work on a long lasting enterprise project where you haven’t seen the beginning and probably won’t see the finish. So here we are, I’m running my own project.
Now, back to our motivators and demotivators. Let’s talk about what made me doubt the idea and take the project success critically. This is likely exactly what you also have in mind.
I won’t have much to say
I was concerned with this one until I realized that my wish to start a programming blog was suggested by all those things I regularly had to say, wanted to say, just didn’t know where, how and whether they would interest anyone. In my practice I regularly discover new and interesting things. I try them out, experiment, research them. Soon I form an opinion about them and wish to invite a discussion on them. Here I have the topics to write about. Even answering questions on StackOverflow provides a regular material to think about. Here it goes further. If I really think about it I realize that there are more things I could write about than I could and even wanted to. Since I do not usually have the right audience nearby to which I could present all that variety of topics that I get interested in, I doubt I will run short on ideas.
Here is to be added that I do not approve writing for the sake of writing. I have seen countless blogs where the authors seemingly did not have anything to say so they were just picking up someone else's writings and commenting on them. Unless it is really a case when you feel compelled to respond in public, avoid it. It looks bad. It is bad. It is an immediate giveaway you're writing for the sake of writing. Those experienced readers will notice it and get disappointed. I know, I did. So I promise to only write about what genuinely interests me and where I sincerely wish to contribute something.
People won’t be reading my blog
It may seem like a valid concern but this is unlikely to happen. Sure, if you think in terms of stable followers reading all your writings, then it may become a difficult task to achieve. But seriously, nowadays, with that sheer amount of information pouring at us every day from various sources, who can be expected to promptly follow a single or several blogs and read every single entry as soon as it is published? I certainly don't have that amount of time. I don't even have that much interest. I read individual writings that interest me, that I find useful, those that I come across when I'm searching for things. So do many people. They're looking for something and they come onto your publications that address the issues they currently have open. With luck they may leave a comment. That's how it works and that's what should be expected. One only has to facilitate the process by making their content accessible and maybe presenting themselves around now and then.
I might look unprofessional
Sure I might. And I probably will. I'm no expert and I will not pretend to be one. But I'm certain I will have useful things to say and ultimately contribute to the collective knowledge. I'm probably pursuing an egoistic goal, but I'm also doing this for myself, for learning, for getting better. When I was considering what format this place should have, in the very beginning I decided to accept comments on everything I write. No, it's not for me to receive appraisals and get into the delusion of greatness, it's for the readers to stir me into the right direction should I be off course. In all honesty, I prefer to make a mistake and get corrected than due to being afraid of getting ridiculed to never say it aloud and stay further in the happy ignorance of being in error.
I won’t find time for that
Here I have a real concern, I’ll admit. Having a full-time job does not leave much time for writings, especially if you use your spare time already to work on pet projects. I have seen many recommendations for those starting their programming blogs to write regularly and at least two or three times a week. I do not believe this is realistic. There is no way I can write a decent text in just two days, no, correction, in just two evenings. If I try, it will almost certainly be some lousy, abstract and a short talk. Readers do not need that. I don’t want to be feeding that to them. If I think about my schedule and the free time I can allocate for writing, I estimate that I will need at least a week to prepare some material. Even that estimate is only valid on the condition I have a run of inspiration right now. Since that is not always present, I would suggest that publishing once every two weeks is of a more realistic estimate. Of course, if I won’t be feeling like writing for a period of time, I will not be doing it. No need to force yourself into it if it doesn’t bring fun and satisfaction.
It may become opinionated not neutral
But this is exactly the point of running a blog, to express your opinions, right? It is not a book where you need to stay neutral, carefully present all options and avoid giving your opinions on them leaving that to the reader. People do not normally write blogs to stay neutral. They do it because they want to share their thoughts, to express their opinions, to provide an output for some emotions and thinking process they don’t find the right context for elsewhere. This is normal. This is what makes blogs so fascinating. The comments that you allow on your writings, the comments that come, together with your publication pursue one goal, to exchange opinions. One often wonders while reading a book what does the author themselves think about this particular feature or technique. I would love to know the author’s opinion on many things I read. But since I probably can’t do it, I will at least express my opinions here. Anyway, even purely technical things I intend to write about will often be based on my experience, so the opinion is already there. And I intend to keep it there.
I will be in crowd
But I already am. There are so many people in the world, and I’m one of them. There are so many programmers, and I’m one of them. And there are a vast amount of bloggers, I’m going to be one of them. No, wait. I’m not going to be just one of many. I intend to be myself. Everyone is unique in their own way. Everyone has something to say. It doesn’t matter how many are there, unless we all start to be thinking and saying the same things. One just needs to go its own way and by doing so to distinguish themselves from the others. I believe there is a right place for anyone, where the wrong person just won’t fit. So, in fact, there is nothing to be concerned about.
So you know now what has motivated me to start my programming blog and what you can expect of this place. I hope that these considerations will help somebody else who has the same dilemma, to maybe start their own programming blog, to be or not to be.
Now that the introduction is complete I will continue on to write something more substantial on one of the many topics I’d very much like to address. Stay tuned. In the meantime I would love to hear your opinions on the matters unveiled today. You can publish your opinion directly here, as a comment, or, if you prefer, write me a message in private.