So, how much do you want to make?

DollarsSalary is a big deal for a lot of people. In fact its such a big deal for some people that they will sacrifice themselves or their coworkers to squeeze just a little more $/hour. In general I think its safe to say that most people work for money. Right? Generally, people work to make money, and by that what I really mean is that people work to make enough money so that hopefully someday they will not have to work anymore; at that point they hope to enjoy living off the interest accrued from whatever retirement package they choose to use when they started working.

Well, what is money? What are those greenishCreative Commons License photo credit: hickoryhollow113 pieces of paper or numbers on a bank statement? They are just a means to achieve an end; in other words, retirement. Sure you go on vacations, buy big houses, marry someone, but if you take a step back and look at the purpose of these little bills to any civilized human being on the planet you will see that it all leads up to the point where all of a sudden there is no reason to continue working anymore because you have enough invested that even 4% return will pay your salary each year.

Ultimately these pieces of paper are your retirement, nothing more. They certainly do not represent any real wealth, as millions found out last November. Do not get me wrong I am not going to discuss what some call “The Federal Bank Conspiracy.” Which includes theories explaining the devaluation of the dollar, global government, criminals in fancy suits (although you would do yourself a favor by learning a little bit about the origin and meaning of those green bits of paper). I am just going to explain some of my own reasons for not defining my life by my eventual retirement.

I will start by saying that I work for no one but myself. When I am looking for work I want to know two things, is the job interesting, and will it challenge me. The prospective job must have both these qualities or it would just turn into a job I do for money, which as I have already established is not what I am after. I do not mean this in a strictly programming sense either. A job can be interesting in many ways, in general, if I will learn something interesting from the job, then its interesting. If a job presents many challenges that require unique solutions, involves traveling to different places, meeting many different people, exploring the inner workings of many different organizations; these are all examples of something I personally would find interesting. Of course its not a complete list, but the general idea of one. Also its worth mentioning that I am not some complete snob who does not give the time of day to any proposition that does not entertain me every second of the day. I am only saying that I am not the type who sits at a desk for years never asking questions and never adventuring farther than the water cooler.

In my opinion there are two different types of programmers. There are the builders and the maintainers. The builders are the guys you hire to come in, design a system, layout the ground work, the algorithms, the design and in general build at least the foundation of the actual application. Most of the time the builders stick around for the entire project; well, I would at least. Once the application is done the builders move on, they seek new challenges, new opportunities, new excitement, etc. There is nothing to be gained from sticking to the same product for years, that is the job of the maintainer.
The maintainer by contrast does not design, build, or care about the project at all. He sits at a desk and makes sure that no one touches the code base without his approval and only after a year of testing has been cleared. He is your typical white collar just-waiting-for-my-retirement guy. He does nothing interesting, indeed, he wants nothing interesting to happen. He does not want the chore of having to think, so he sits and grows old waiting for the day when he can sit on the beach at Maui all day and really enjoy the last 20 years of his life. (note – dramatized for effect)

If you can sense my obvious bias in these two paragraphs then you can obviously guess which group I file myself into. I am a builder, through and through. Throw me a nifty bone in the form of a challenge or opportunity every month or so and I will be happy as a clam.

To make a position challenging by my definition would be to consistently test the limits of my knowledge. It is no fun constantly solving problems and puzzles with an understanding I gained from the first of such problems. I enjoy conversations and problems that sit right on my boundary between the known and unknown. In my never ending quest to learn everything about everything; constantly testing the limits of my knowledge plays a key role in expanding my expertise. Sure, I may do something wrong or admit that I am unsure of something, but that just means I will have to do some research and learn.

If you work for a big company you might say, “Well, we are only interested in the person who knows the spec like the back of his hand.” I would like to discuss this thinking. Firstly, there is a big difference between knowledge and understanding. I think everyone can agree that knowledge is good. Knowledge means that when you open visual studio you can write a program to fork a new process, print hello world, write to a shared memory location, parse a text file and handle windows messages all from your head. That is great! But do you understand how any of that works?

Having knowledge is good, that is a given.  In my opinion though, having understanding is better.  Lets say someone absolutely knows Perl.  He knows every character, every function, every trick, etc.  He knows Perl, but he does not understand Perl.  If you have a very important Perl project to accomplish this guy sounds like the perfect match right?  Consider this, have you ever heard these words from your programmer “No, that is not possible”?  That is the mark of someone who has knowledge but no understanding.  He knows that within his knowledge there is no way to do such a thing, therefore there is no way to do it.  He does not understand the fundamental building blocks so if something comes up that does not fit in the right hole he says you are SOL.

Someone with understanding however would know how to rearrange those blocks to achieve your result.  He may make a mistake, he most certainly does not know ever nuance of the technology, but he understands how it works, and therefore he knows what is good and what would be a bad idea.  Not only that, he also understands potential problems before they happen.  I will try to paint a picture here.  If you imagine your project as a flow of water, probably a river of some sort.  Someone with knowledge will attempt to navigate down your river using the same boat for all your rivers.  He does not understand how the boat works, he just knows that given enough time, energy, and money he will eventually reach the end.  Someone with understanding on the other hand can see the whirlpools, branches, fallen trees in the river; he will design a boat on the spot to perform under those exact circumstances.  If he gets hung up somewhere or it is not going as planned, he will make an adjustment and start again.  He understands the technology, so learning and implementing the framework is simply an exercise in patience.

I am going to get a little stereotypical here, but I already have so if you are still reading I am going to assume you do not care. The difference I just illustrated is the difference between someone who graduated high school, college, whatever, with a 4.0 GPA and the person who graduated with a 3.0 GPA. While trying to stick to the topic here, I think we can all agree that school is just a dump truck full of knowledge. The standard curriculum contains no material that teaches understanding. And I am going to blow your mind here and say that that is GOOD.
My views on public schooling really deserve their own post, but so you can sleep tonight I will explain what I mean. Understanding should not be taught in a class of thirty other students. In that scenario you are simply trying to tell a group how to think, which simply does not work. Well.. it does work for those ‘A’ students. Which is why you see the ‘A’ students dropping out of college and/or jobs and the ‘B’ students graduating with honors. In high school they have the mistaken concept that understanding should be taught and so they try to stress what they call ‘Critical Thinking Skills.’ Which are nothing more than ‘Try and Guess what I Mean’ quizzes. The students who willingly surrender their mind and identity to these people end up getting the ‘A’s, then, they get to college and all of a sudden the teachers do not give a damn about their mind. Here is the student, saying “Here! This is me, this is my mind, take it and inject your thoughts and programming into it so that I can score 100% on the test” and the teacher completely ignores him. They do not give a damn about his understanding, they are paid to talk for an hour and talk is all they do. By the way, these are the kids who grow up to be the maintainers. I am really getting off topic here so I will leave that for you to mull over.

Ok so back on topic, money, ok. In my entire article so far I have not addressed the main issue. So, if you feel like you understand my position a little better now how would you pay me? You do not know right? That is because money is irrelevant. I mean sure, it helps buy certain necessities and what not, but I hold practically zero interest in it. I work to be challenged, to learn, to expand my knowledge. If there were a job out there that would guarantee me all these things every minute of the day I would gladly pay to work there.
Now I do not mean to say that you can get away with paying me half of what everyone else makes. I do enjoy getting paid, its just not nearly as interesting as my own self improvement. If you put a stack of money in front of me, along side a problem of equal proportion, I would choose the problem every day of the week.

So I guess it all boils down to one point. I would argue that you should pay me exactly what you think you should pay me. If I do a crappy job, pay me less, if I design something that saves the company millions, then by all means pay me more; I promise I will not hate you for it.
This seems odd to most managers for some reason. Usually you get a salary employee that you expect to pay so much a month, the cheaper the better. My views could not be more different. I will not demand a high salary, I just demand that you pay me what you feel like you should pay me. If you are sitting in a dark lit room snickering about this programmer who you hired for super cheap and does the work of five of your regular programmers then you are doing it wrong. Talent deserves to be recognized, and incompetence deserves to be punished. Its really as simple as that.

Tags: , ,

Charles Solar is Stephen Fry proof thanks to caching by WP Super Cache