Saturday, June 2, 2007

Adventures of a Programmer: What is a Programmer?

I recently found myself asking this question. Is a programmer just someone who writes programs, or is there a better definition? I thought a great deal about it, and came up with some answers that satisfy me.

A programmer does write (hopefully good) code. But this is not all a programmer is.

A programmer is also a problem solver. When a client comes to me with a situation or concern, it is up to me to find the solution. That is why (at least in my opinion) that Visual Studio calls new applications "solutions".

A programmer is a detective. A good programmer is able to detach himself from the machine and get to the real meaning behind project proposals. When a client asks me to write an application to solve a particular problem, the problem may not actually be the real problem. Ask why they need this particular utility. Keep asking "why" until you get to the root of the problem.

A programmer is a translator. I have to take the project specifications and craft a solution that meets the specifications. However, if I just follow the specs, I will deliver a solution that is technically correct, but unacceptable. It always comes down to the infamous statement: "Yes, that is what I asked for, but what I meant was (fill in the blank)".

These are just a few of the hats a programmer must wear. What do you think?

Tuesday, May 29, 2007

Adventures of a Programmer: You're a Programmer!?!

When I tell people that I am a programmer, I usually get "the look". Programmers know the one I mean. The look that reflects the uninitiated's memory of The Matrix, Hackers, Bait, and Swordfish. They have no concept of what either a hacker or a programmer is. To them, they are the same thing: people typing arcane incantations on the screen that makes the computer do stuff.

Following "the look", I get "the question". Again, programmers (and hackers) know the one I mean. "Can you hack into (insert insane and illegal request here) for me?"
The answer I always give:"No, that would be illegal and I don't know how to do that."

Let's explore the differences between hackers and programmers.

Definition:


  • Hacker: A person who enjoys exploring the details of computers and how to stretch their capabilities. A malicious or inquisitive meddler who tries to discover information by poking around. A person who enjoys learning the details of programming systems and how to stretch their capabilities, as opposed to most users who prefer to learn on the minimum necessary. (http://www.tsl.state.tx.us/ld/pubs/compsecurity/glossary.html)

  • Programmer: A programmer is a person who masters software engineering and writes source code in the course of software development. In language-oriented development, the programmer has to learn the details of the domain to be able to write a direct solution. In domain-oriented development, the programmer writes code for a generator instead of a direct solution. (http://intentsoft.com/technology/glossary.html)


  • Computer languages:

  • Real hackers usually learn several very different languages, mostly open source.

  • Programmers usually specialize in one or two related languages. These languages can be open source or proprietary.


  • Intent :

  • Hackers want freedom of information. They use their skills to find information and make it public stating a right to know.

  • Programmers are about protecting their information from hackers. They use the best security methods at their disposal to protect a client's information from unauthorized access.


  • Diet: No difference. Mountain Dew, coffee, Pop-tarts, and pizza.

    Views on "suits": No difference. Both view upper management with a degree of contempt.


    Monday, May 28, 2007

    Adventures of a Programmer: Initial Post

    Hey everyone! I have started this blog as a kind of therapy to help with the stress of my job. As any programmer knows, our jobs can be very demanding and we sometimes wish we had taken a different path. This does not mean that we hate our jobs. It means we don't like the stuff that we have to put up with to do our jobs.


    A list of things we could do without:

  • Deadlines. No programmer likes to be up against a tight deadline. We accept them as a part of doing business. We don't like it, but we have to put up with it.

  • Managers: These are the people that are the link between us and the users. The users ask for (sometimes) ridiculous features that have no purpose in the grand plan of an application. The managers promise the users that the features will be implemented. Manager tells programmer about the feature. Manager goes home to hot meal and bed. Programmers order pizza and catnap at desk.

  • Testers: I spent a great deal of time writing this code and you want to tell me there is a bug? I don't think so. You just don't know what you're doing.

  • Long. drawn-out projects: I hate being the only developer assigned to a big project. This means I will be working on the same code every day for months. Give me variety! It's not my fault I'm borderline ADD.

  • Other programmers: There are some times that I hate working with others. Usually, it happens when the other programmer uses another language to write their code. I use VB.NET. That is what my company chose for their platform, so that is what I use. I am good at it. Just because I don't write in C# or C++ does not make me less of a programmer. I just use different tools. I can write in C# and C++. My boss says I have to use VB, so I use it.

  • There are other things I don't like about my job, but these are the things I like the least. That does not mean I don't like my job in general. I love the fact that I am getting paid to write code. I spent years doing it for free and I would still be doing it for free if I didn't have this job.

    I love my job.