OK, this is an entry trying to win $100 worth of software development books, despite the fact that I don't read programming books. In order to win the prize you have to write an entry and describes what motivates
you to do your job well. Hence this post.
First motivation, money. I know, this doesn't sound like a great inspiration to many, and saying that money is one of the motivation factors might just blow my chances away. As if money is a taboo in programming world. I know there are people who can't be motivated by money. Kudos to them. Me, on the other hand, am living in a real world, with house mortgage to pay, myself to feed and bills to cover. So I can't really exclude money from my consideration.
If I can get a large sum of money for doing a good job, then that will definitely boost my morale. I won't care whether I am using an old workstation, or forced to share rooms or cubicle with other people, or have to put up with an annoying boss, or whatever. The fact that at the end of the day I will walk off with a large pile of money itself is enough for me to overcome all the obstacles, put up with all the hard feelings and hurt egos, tolerate a slow computer and even endure long hours of commute.
Those of you who think that I am too money faced, have you ever being subjected to humiliation not because you are lazy or stupid, but simply because your wallet is not deep enough? Have you ever find yourself not being able to pay the bills at the end of the month? Have you ever look yourself in the mirror, wondering what wrong you have done and so now you are making less than half of your friend makes who is not even half of your intelligence, notwithstanding that you put in twice as many working hours as he does?
If yes, you will definitely agree that money is an important factor ( I am not saying that it's the only factor, so don't misquote me) .
Another thing that motivates me is project interactivity. I want instant feedback on my code. Weird as it sounds, it is true that the faster I can know the correctness of my code, the more motivated I am. This is why I prefer Agile Programming over Waterfall model. Knowing well how a long, protracted development process can kill morale, I prefer iterative programming with constant feedback and constant goal realignment. I prefer to finish a project, or a milestone completely. Done must mean done!. It is a very painful experience to revisit old codebase in order to fix old bugs; not only you will lost all the momentum on the new projects, but you also have to refamiliarize yourself with the old codebase, and who knows whether the code is written for testability! Being able to work full speed on a new project is important to keep the momentum going and the fire burning.
Working with code that has unit test coverage is also a major motivation. I guess this is the result of being test infected. I consider my day job and personal projects interesting, simply because I write unit tests for my code. Unit tests give me full confidence when I change my code. It can get me in the zone! And of course, with Typemock, it becomes so easy to mock dependencies and write granular tests and that increases the fun factor as well. A lot of times I would deliberately leave one or two broken tests unsolved before I called it a day. This was done so that I could begin the next day by solving the broken tests and hence get myself up to the full speed in terms of development.
Some people consider a long vacation a major motivation factor, some want private office, or nice chair. For me, these things are nice to have, but they won't motivate me much. Private office, nice chair are good, but I would rather have a nice house and a comfortable chair at home, thank you very much. Vacation is great as well, but you can have all of them when you retire, right?
Developers are usually introvert, so they want politics out of their way. And developers have big egos, they want to be respected. If their points are not properly respected, or if dirty office politics get in their way, then they might get discouraged. I was used to be like that. But somehow, some point in the past I learned that politics are inevitable. And no, there will be times when you won't get respect even though your points are fully valid. I have since then learn to live with them and do my job. I will not allow office politics to affect the quality of my work, neither will I be put down by undue respects or recognition. There are so many injustice in the world, there is no point to grieve over my mistreatment if there is any.
So, to recap, here are the steroids that will boost my morale, ranked in a descending order:
- Project interactivity
- Test coverage