Sunday, March 7, 2010

Do Hackers Sit Depressed at their Desks

(c) amandabhslater (CC-BY-SA)
I aspire to be a hacker. Eric S. Raymond once wrote an essay on being a hacker. It is acceptance by the community through the practice of principles and ethics that build the hacker community to what it is today.  One of the key parts of being a hacker, obviously, is programming. Mike Taylor recently wrote an article (and a follow up post) on "Whatever happened to programming?" Has the fun and invigoration of programming been killed by dictatorial libraries and a new paradigm of efficiency and design? Maybe so, but I believe, even hope, that programming has not been killed just yet.

The argument stands that the excitement and innovation of coding has died out as more and more controlling libraries make there way in. Not to say that libraries and other pre-written code are not useful for a developer as it makes their job easier, but there are numerous libraries or frameworks that are forcing developers into a set state of mind, that they must follow or face severe consequences. In other words, the creative process that once made coding an art is now controlled by dictator-like libraries. As Taylor says, "It's not making." There will come a time when libraries are so controlling over the hackers using them, that there will need to be a custom framework for every single problem type, making programming both boring and painful.

Unfortunately, I have committed some of these crimes myself. My WebApi framework I have been working on lately is extremely controlling, and barely lets the developer do anything. I guess I got carried away with making it easy and efficient to use, that I forgot about letting the hackers do their job. In fact, it was the controlling libraries that inspired me to write the framework in the first place; I got fed up with reading about CakePHP, Django, or any other framework on any other language, that I just sat down and wrote my own, not knowing that others would get the same feeling I did when they saw my code. I admit to these faults. but there is something to be said for frameworks.

In my own opinion, programming is an unrecognized art. You ask somebody on the street what art is, the last thing they would think of is programming. But the fact remains that every developer has their own style and design of how to solve problems, and this process of problem-solving is so unique and artistic you can claim copyright over your code. Furthermore, as long as code is something a developer can be proud of, it must be defended. Despite all of this, there is something about frameworks that I can really sympathize with. And that is the patronization of art.

With paintings, movies, music, and all other types of art, the sole purpose of the work is not just to make noise or reflect colors, it is so other people can appreciate and admire the work. If programming is an art, which I believe it is, then this must be so with code as well. The programming community could learn a thing or two by examining how two or three different people solved the same problem. It is this appreciation of other people's works that makes the hacker community a community at all. So while frameworks may be too controlling over here, or too inefficient over there, it is necessary that people make frameworks that are too much of this or too much of that, because it helps the community as a whole to solve the problems more efficiently and effectively. It is a type of social learning theory, developers can either continuously stab at their own solutions to problems, or they can observe others and make a better program in the next round. We must learn by example.

If there is anything I have learned from writing this post, it is that I am a moron. I have blindly sat by and not seen any of this, only to have an epiphany from one or two blog posts. I guess this is the wonder of the world of technology: it is always changing. But now I realize, and hopefully you will too, that the technology community has been acting more like a lion pit than a community. With Apple stabbing at Google here, people advocating for Python and PHP there, and everybody attacking how anybody else does anything, it is a wonder how you can call us a community. The big tech giants out there really need to sit back, relax, and embrace the community as a whole.

United States Copyright Law was created with the intention of letting owners have rights to their works so that the science and art community could prosper. The government was not thinking of themselves, or of the profit the science and art communities would get. They were thinking of society, and how preserving competition between artists, while maintaining stable relationships, would help the people in the long run. It is this ideal we need to adapt. The next time you sit down at your job and start coding away at some XML script or Twitter API, think not of how others are going to criticize your code, or whether your code is too controlling or not controlling enough for other developers. Just write the damn code, be proud of it, and learn from others mistakes.

No comments:

Post a Comment