Friday, November 23, 2012

1.0 Scriptural Patterns in Software Development

In the Beginning God

In the beginning was the Word, and the Word was with God, and the Word was God. He was with God in the beginning.
Through him all things were made; without him nothing was made that has been made (John 1:1–3 NIV84).
I love software development. I don't have a bachelor's degree nor do I have any degree in computer science, but for over twenty years I've had the joy of working in the software development industry and I love it. The Logos of God, the full expression of God, God's Wisdom, God's Ultimate Craftsman, the Lord Jesus Christ through Whom the Father created the universe has been at my side that entire time, answering my supplications as I called to Him for wisdom, leading me into all truth and showing me His glory along the way. I am very grateful.

Design Patterns/Pattern Language

Nevertheless, death reigned from the time of Adam to the time of Moses, even over those who did not sin by breaking a command, as did Adam, who was a pattern of the one to come (Romans 5:14 NIV84).
They serve at a sanctuary that is a copy and shadow of what is in heaven. This is why Moses was warned when he was about to build the tabernacle: "See to it that you make everything according to the pattern shown you on the mountain (Hebrews 8:5 NIV84)."
Did God invent pattern language or is it an attribute of His nature? I'm convinced it is an aspect of the Logos of God, but in either case it is a gift from God for software development. I'll admit that I'm often confused and discouraged by design patterns literature, but design patterns give us a way of communicating about software architecture and learning about best practices. I imagine it's been around in one form or another since the beginning of computer programming. The most useful design pattern is a working system, just as the best Bible teaching comes from a life well lived.

Naming The Animals

I had intended to start out with an associates degree in computer science but wasn't interested in Cobol or mainframes. I wanted to work with micro computers. Back in the early 1980s I was warned that micro computers meant micro paychecks, but I was working with Ashton Tate's dBase II and I really enjoyed it. I ended up getting an associates degree in business administration from Anchorage Community College and later took some programming classes at The Evergreen State College where I also took an interdisciplinary environmental studies program that combined marine biology, political science and water chemistry. It was fascinating.

When the marine biology professor talked about the taxonomy (classifications) of marine invertebrates he'd often begin with the phrase "the taxonomy of this is all messed up." The text told us that there are three ways you can come up with a taxonomy: 1) looking at the over-all shape (morphology) of the various species, 2) comparing their DNA structures or 3) assigning points to their various characteristics. The funny thing is that--even though evolution is supposedly the foundation of all life sciences--each of these different methods will lead to different taxonomies. The evolutionist is forced to say, "These two species look very much alike but their DNA is quite different. They must have arrived in similar places through very different evolutionary routes." Sure.

God gave Adam the first scientific mission of all times when He told him to name the animals. A good name captures the essence of a thing. Adam had to study each creature, compare and contrast it with the others and come up with the perfect name. Not an easy task.

At the end of the day, software development is about writing code. The biggest expense associated with that code is the maintenance of it, and maintenance begins long before the first version is ever shipped. The more readable it is the less it costs to maintain. Code that is organized in a reasonable manner with well named variables, classes, methods and attributes is a great asset for the organization that owns it. I'm a maintenance programmer and I've read a lot of code over the years. Naming those animals is still one of the most challenging and important things that we do.

One thing I know for sure, brain-dead naming conventions lead to the worst names of all. Also, I've learned to have a healthy scepticism about names. An object is what it's used for, hopefully the name reflects that, but not always.
A good name is more desirable than great riches (Proverbs 22:1 NIV84)...

A Way that Seems Right

Do not move an ancient boundary stone set up by your forefathers (Proverbs 22:28).
Make level paths for your feet and take only ways that are firm. Do not swerve to the right or the left; keep your foot from evil (Proverbs 4:26–27 NIV84).
Neither do men pour new wine into old wineskins. If they do, the skins will burst, the wine will run out and the wineskins will be ruined. No, they pour new wine into new wineskins, and both are preserved (Matthew 9:17 NIV84).
Wisdom is supreme; therefore get wisdom. Though it cost all you have, get understanding. Esteem her, and she will exalt you; embrace her, and she will honor you. She will set a garland of grace on your head and present you with a crown of splendor (Proverbs 4:7–9 NIV84).
I began working with relational databases on micro computers long before they could legitimately claim to be relational. I suppose Edgar F. Codd may still be looking down wondering if anyone will ever get it right. I've worked with dBase II, dBase III, Paradox, Microsoft Access, SQL Anywhere, Microsoft SQL Server and DB2. I've programmed in each of the databases I've mentioned, Clipper, Delphi, Powerbuilder, Visual Basic, VB .Net, C# and Java. Love me some Structured Query Language, baby. Along the way I've learned the hard way that you can't program in a new language or environment the way you did in the old one. I remember trying to program Paradox the way I did dBase. What a disaster!

It's crazy. I'm a highly intuitive person with an attention deficit disorder. Everything in me screams that I should be able to just envision a system and build it using the simplest of constructs. I can, but only in my dreams. In the real world, I have to research and discover best practices. Approaches that make little sense to me are often the most practical ones. Only after I've used them a few times do I internalize them.
There is a way that seems right to a man, but in the end it leads to death (Proverbs 14:12 NIV84).
Slinging code is a great way to make a living. I hope I can keep doing it for at least another twenty years. Of course, it would be great if I could afford to retire then I could spend more time programming.

No comments:

Post a Comment