my developer credo
WHAT I DO..
I develop gnu type licensed open source. You may have heard of ‘open source’- this is that kind of thing. It means people in my tradition treat computer programming as science- much as you would treat medicine or car repair.
When you break a leg, the science behind repairing that bone is not top secret. It’s not a patented method. If you needed medical assitance and went to a doctor whose methods were secret to them only- and no other doctor had ever heard of how they do what they do, and if they saw it they could not understand what they did and why it worked or if it really worked.. Would you trust this doctor to take care of your sick child?
Same here.
As I said, people in my camp treat software programming as science. But, but.. how do you make money? Are doctors starving?
How is it possible that so much money goes to pay for hospitals and doctor care when none of what they do is secret, or patented proprietary methods?
Because you trust what they do- because we understand what they do- Because what one doctor and hospital does is under the scrutiny of other doctors and hopitals in the field.
Similarly, when I code open source type software- other coders can look at exactly what I am doing and how. And if it’s messed up, they will know- and they will tell you.
Hopefully- they will tell me first- so I can fix the s**t and issue a release overnight.
My software is mostly not user ready.
Most of what I do have APIs for other posix coders.
It’s stuff that makes coding more convenient- or let’s you do something faster or easier. My work speeds up human work- and slows down computers.
FOR MY PEERS
I develop for posix. I do not develop for mswin platforms.
I have received on many occassions, “bug reports”, complaints, and inquiries about people trying to run my projects on non-posix systems. Why won’t PDF::OCR2 work on my XP server?
No attempt will ever be made on my part to make any of my projects run on non posix systems. If you don’t know what that is, you’re probably not running one.
HOW I DO WHAT I DO
There’s difference between a programmer and a developer.
A programmer likes to code. A developer wants to make s**t work.
A dev does not care if the solution was made by somebody else, there’s no ego.
If somebody elese made it, better! Now we don’t have to redo it!
Reasons to redo something: To learn. Or maybe the old one truly sucked- and the dev was unresponsive to requests and inquiries.
Some of my practices..
Testing
I love testing. I must have testing. Tests will be present in my modules, always.
Test, test, test. If you have tests, you will save yourself the headache of untraceable horror.
I can’t tolerate lack of testing.
Syntax & Grammar
I need syntax. I do not, will not, have variables like $path, even that is a strech. I need $abs_path or $rel_path. Don’t even talk about variables like $a2 or $pel.
Namespace is one of my peeves.
I format code for human legibility.
I excuse tests that have messy code, but modules and scripts must have clean human legile syntax.
Pragmas
Now, I code perl. Perl is freaking wild. At least if you’re used to something like c.
Perl will allow you to code like a mad baboon on speed. Perl will allow you code as if you are coding php. Yes. That bad.
That said, I believe in strict. I have been deviating from ‘use warnings’, I don’t plan a u-turn at this point. Some of the stuff I do really would be a pain with warnings- would increase the length of the code.
But controlling scope is imperative. I don’t care who you are and what you know. Declare your s**t. Use strict.
Peers
First and foremost- I have a solid respect for peers and my elders. If Ikegami or Schartz say X, I will consider X.
I trust those who came before me, and I treasure my peers.
“Other people” is where all this magic came from. It can be tough to spend a month of a snippet of code and then be told by someone that you could simply have done it with this one line, or with somebody else’s code.
Hopefully most of the time we can swallow our pride, open our ears, and learn. Those of us who do, coupled with a passion for code, may come up with some cool stuff down the road. If we don’t.. well.. then I guess we’re just stuck being high tech users. Key word is user- you’re still a user.
About CGI..
I refer to all cgi as a wui, as- (w)eb (u)ser (i)nterfaces.
I believe in CGI::Application.
A web application is just a gui to a backend.
If I develop a ‘web application’- I develop an application that passes tests and cli usage. Lastly, comes a web interface, which is CGI::Application.
I wouldn’t mind another interface, if somebody else would like to code it.
But a web application should really just be an interface.
It took me years to learn that.
Linux/Open Source/GNU
I pray to Richard Stallman. Although I may not study his prophecy enought or follow the creed to its truthmost.
I will grow and die by Linux. M$ is for users.
pid
