Hello guys! Welcome back to my place. This time I want to talk about programming. The reason came from my last class. When I got into the classroom, there was a big quote on the blackboard:
“Controlling complexity is the essence of computer programming.”
My teacher uses to write famous quotes like that in every class, but I must confess this message shocked me deeply and besides, it inspired me to write this post.
Currently, I know the basics of some programming languages, no big deal at all. But now, I wish to learn the secrets behind good programming. I’m not talking about the tips for some specific language or paradigm, no, I’m talking about the essence of a good programmer. It’s like when you see a soccer crack player and you recognize his unique talent, his unique style. Definitely, I want to develop my own programming style… but, how to do that? Is there a real good programmer HowTo?
Ok, I’m a newbie and I need to learn to crawl before learning to run, I’m aware of that. The last two years I’ve been working with Bash scripting, C, C++, python, perl, java, C# and once I “tasted” the surface of assembler for one hour (tough stuff for me).
For now, it seems that I need years and years of practice. Anyway, I don’t care how much time it takes… from the beginning, I want to do things well.
Some of my classmates, believe that the key for being a good programmer is the IDE (Integrated Development Environment). They quit to their responsibility as developers and let it lies on the programming tool. I just can’t agree with this. I understand that a good IDE can help you to get more productivity, but where should be the talent? within the computer or within me? What’s the role of the IDE? The idea of depending on a software specific application to get my first job in some years ahead, drives me crazy! :S I want to develop my own skills as computer scientist and definitely, I don’t want to be a zombie behind a label like Microsoft .NET Framework or something. I want to be hired because my curriculum, I want to get paid because my work and not for the tools I use… too much to ask?
My neighbor Billy, on the other hand, says that the secret about programming is simple: learning the whole API of the language you want to use. He says that if you know all the functions or methods, then you can write any piece of code you need and that makes you a good programmer. Of course, I don’t agree with him. Programming is more about design, otherwise whether everything depends on the API, create a program should be done by another programs and not for human beings. Don’t you think that?
I know that some scientists are working on that way, using Artificial Intelligence (AI) to create virtual developers, and maybe some day, they reach their goal. It sounds awesome, no doubt about it, even more, I can imagine it: high-speed big machines creating algorithms to resolve complex problems in a bunch of nanoseconds. Some of you could be thinking: “that’s not the future, that’s the present!” and I say: yes… but, can they solve any kind of problem? I don’t think so, and far away, I must say: I don’t care. Why? well, in my personal opinion, I feel programming is an art, like writing or painting… it requires you put some of your soul on it. How could a machine do that?
Of course, I understand the market approaching: code lines are just a set of cryptic messages behind the software, and the only point which matters is to sell that software (money talks again). “If it compiles, sell it!” is the favorite quote of my teacher when he talks to us about the way the big software companies work.
To think as an artist when I try to write a piece of code, is a mistake? Who’s a good programmer? That one who creates bigger programs quickly? or that one who writes correct software to solve a problem? What is the key of good software? millions of code lines? Who cares about the beauty of code on this days? If you have any hint about this, please, let me know.
In my programming class, I learned a few things about Software Quality Assurance (SQA). As far as I understood, this technique helps you to detect the errors in the software you are developing, which is good, because I don’t want to create computer programs to cause problems but to fix them. The point is, can be a piece of software either free of errors and ugly code at the same time? I would like to think it is impossible, but I have no enough experience to give a good answer. The only thing I can say is that I don’t want to write ugly code. By the way, who made the SQA test for Windows Vista? Someone did it before Microsoft started to sell it? I still remember reading in Dell’s websites: “Dell recomends Windows Vista” on those days when the whole world started to claim because the unstable product and the terrible hardware support (Vista capable sounds familiar for you?). Marketing is a dark art, isn’t it?
For now, I’m trying to find my own style looking into the code of famous programmers like Linus Torvalds, Alan Cox and Miguel de Icaza. I’ve been studying some of their projects and coding my own small programs, realizing the features they include in their code. The process is slow and I will need my whole life to get high skills, I know that and I have to do it because this is my nature, after all, I’m g33k and I love programming!
If you have any advice for me about this topic, any help is very very welcome 🙂
print “See you later! pals! Time to skate! :P\n”
PS: By the way, I recommend you to read the article “How to recognize a good programmer“. Nice stuff!