onsdag 20 februari 2013

Two Facts about Programming


In any project that you are a part of, you will do things that you have never done before

Because if you have done it before, you find your old solution and copy it. If you needed to tweak it after copying to get it to work - congratulations! You just made a new solution that wasn't there before.

This is why estimating how long it will do to implement some particular function in a computer program is so difficult. Programming, by its very nature, will always contain many unknown obstacles that will affect your estimate, usually making the task take longer than anticipated.

If you encounter tasks that tend to be very similar and require little thought, you are either confusing programming with configuration/boiler-plate code (alas hard to avoid), or you are lazy or a bad programmer. Recurring programming problems are solved by refactoring or making scripts that generate the program for you.


Any project will probably involve tasks that no one has ever done before, anywhere

Because if someone has done it before, you will try to find that someone and copy or buy their solution.  Sometimes the price is too high, but more often you will not choose that third party solution because it doesn't do exactly what you want, or it is of poor quality. Congratulations, you are about to implement something that no one has ever done before!

This is why estimates of incorporating third party solutions, or making a completely new solutions, always suffer so hard they're hardly worth the effort. Just start working and see how it goes.

Often the new ground you tread will just seem like a crappy for loop deep inside a crow's nest of tangled programming. You should take the time to look around you, at the vast landscape of code, all around, thousands of man-hours in the making, and realize that here is the apex of this particular mountain of source code. The only one of its kind and never more advanced than right now.


Part of being a good programmer is learning to accept and enjoy these two facts. It's an exciting ride!