Monday, February 9, 2009

On Integrity and Learning C#

Yesterday I received an email from somebody who had noticed my frequent participation in online forums asking me to send him some specific code that he could use to turn in as a minor project in school. Of course, I refused. Not only did I refuse, but this student received a lengthy email lecture from me regarding the importance of learning and the purpose behind his attendance at college in the first place. There are few things that set me off more than a student asking a professional to do their school work for them, and there are several reasons for this. As this isn't the first time that something like this has happened, allow me to offer my de-facto standard response to anybody who might ask me to do their homework for them.

Here are just a few reasons why I won't answer homework questions.

  1. It's dishonest. Pure and simply, it's plagarism, cheating, and it's dishonest. There should honestly be no other reason that I should have to give here. This should be enough. It is far more important to have personal integrity than to get the perfect score in class. Your school, career, etc will change, but once you've lost integrity, it is very difficult to get it back, and only a fool goes through life believing that his lack of integrity will never be discovered.
  2. I take a great pride in what I do. I work hard. I expect those who work with me to work hard. I take offense at those who ask me to do their work for them, as it cheapens the value of my own efforts. Programming is a difficult task, and it takes hard work to do well. I've got a bookshelf of books at home that I've read in order to better my abilities, and to ask me to do your work for you is not at all respectful of the things I've personally done to strive for excellence.
  3. Eventually you will have to do your own work. In business, employers want to find people who do their work, and do it well. The success or failure of any endeavor depends on the success or failure of each of it's individuals. When an individual is simply relying on the success of his or her peers, and fails to produce his or her own success, he is bringing the entire system down and is poison to those around him.
  4. There's a great pride in doing your own work. This is true especially for programmers. There's nothing quite like finishing a beautiful piece of object oriented code and standing back and viewing it as a work of art, knowing that it's beauty is completely attributable to your own work.
  5. You are in school to learn. Put simply, you haven't been put in school to ask other people to do your work for you. The whole point of school is to struggle through figuring things out for yourself. If somebody else does your work for you, you are stealing the recognition that doesn't rightfully belong to you.
  6. There are, of course, consequences if you're found out. Yep. People get F's when their plagarism is found out. This is a pretty feeble reason to not do something, but it's still rather compelling, isn't it?
  7. I simply don't have time. Enough said for this one. I have enough to worry about without having to worry about school questions again. Been there. Done that. Got the T-Shirt. Now I'm working for a living.

Sorry for going on the rant, but I believe in education, and at some point, somebody (such as myself possibly) is going to have to rely on the quality of the work produced by those currently being educated to produce that work. Don't short-circuit that learning. Your personal integrity is far more important than getting the perfect score.

That being said, I will help at times. What is the difference between helping and cheating? If I am aware that you are working on your homework, and you post a block of code you've developed so far, but you've hit some snag somewhere, I might pose a series of questions intended to get you to think through why something might not be working, but those questions are intended to teach the mindset of programming, as opposed to simply giving the answer. In other words, I would strive to teach and not answer.

It is the job of the programmer to program. It is the job of the student to learn. Do your job. Work hard. If you need a little nudge to get you over the hump, let me know.