Monday, June 27, 2011

Introduction

Most of you will probably skip this entire post, since you don't really care why I am doing this blog. Since it doesn't contain any useful information, most of you will probably find this pretty boring (I am not reliable for any of you who fall asleep in their chairs while reading this). 

I guess there are already many blogs about programming topics, so you may be wondering why this guy (aka "me") started one too. At first, to be honest, I didn't want to do a blog, but I will get to that a bit later. Before I do that, I want to tell you how this blog is going to be different from other ones on the same topic.
I intend to discuss some common topics that every programmer sooner or later is bound to come across. Low to mid level stuff. If you are expecting dynamic programming and minimum cost maximal network flow, you may be looking in the wrong place (even if at some point I may get to those topics too, it's not anywhere in the near future). To get a better idea, one of the first few topics you will find here is going to be about simple data structures like lists, arrays and hash tables. Mostly, tips and tricks I picked up over the years, or just plain stuff that most people (think they) know, but since almost everybody takes these things for granted, almost no one writes them down.
I read quite a few books in the computer science field, but none so far approached programming from this perspective. While some of them covered a particular programming language from a beginners point of view (and assume you will learn a few programming tricks while learning the language itself), others already assumed that you have a good knowledge of a programming language and give a good algorithmic programming background. Even if I am pro algorithms and I consider them the basis for any good programmer, I don't intend to write much about any specific algorithms. At one point, I wanted to write this blog in order to convince a people to engage in programming contests. I cannot help myself, but here is a good argument in that direction: I consider that participating in algorithmic contests doesn't only polish your algorithmic skills. There are several skills that also benefit from that competitive environment. Practice enough and you will see that debugging takes a lot less of your time, particular cases won't sneak by you so often... overall, your coding certainly improves because in programming contests you need to implement code that is very sensitive to details. Most programmers out there will never require that level of detail in their day to day work. Or at least, programming contests will require an "expertise" in a very wide area, while a programming job is usually a much smaller area (most of the times, depending on the job, that small area is not even covered in programming contests).

Back to the topic of the post. Initially, I wanted to put all these thoughts in a book, but I changed my mind while looking for the software to write it. Not because I couldn't find any suitable software. It's because I realized a couple of things. First one is that I don't really have the discipline to write a book (trust me: sooner or later, you will agree with me on this point). Second, if there are people that will benefit from these paragraphs, they will most likely appreciate a blog more than a book. A book will imply publishing costs (and people to buy it in order to cover those costs) and it has to be all in one piece. That last part was the decider: you can write a book over a year, or spread it out over a dozen blog posts so it's available to those who are interested as soon as it's ready (bonus: faster feedback from your readers). Plus, you can write a blog in a more relaxed manner. A book has several structural rules that you must obey. A blog is a more informal conversation with your reader.

Anyway, this post is long enough... I hope that some of you will get a few helpful insights from this blog. Since this is the first time I write a blog, any hints are useful, especially constructive criticism.

No comments:

Post a Comment