Tuesday, December 16, 2014

the story behind the code


Hearing your joke about how the birds lost their teeth
Saying that it was commented out in the genetic code
I think about all the comments in the computer code
That I have worked on for the past 24 years.

We use the same word in different contexts
To mean something similar.  In both cases
The code contains instructions in a different kind of language
And the code evolves as new needs and better methods emerge.

Some of the comments in my code include my initials and a date
And at least a hint of an explanation for the change.
That’s good form when you are editing computer code
Something I learned when other programmers joined me.

The genetic code researchers don’t find any comments like that.
They have to piece together a timeline when the code branched
Based on shared attributes with common ancestors
And differentiate what is convergent development.

We programmers have our separate project branches, too
But we incorporate those branches back into the head code
Merging the differences into the latest deployed version
Knitting together something like the image of a neural network.

***

When I was a boy I wanted to be an architect.
I liked to imagine buildings and then draw the plans
Sitting at my drafting board using a T-square and triangles
Then making cardboard models like a kind of dollhouse play.

When I served as the chairman of the village planning board
I saw that real world architecture is constrained by politics
And permits and finance and topology, too.
There are no such constraints on software architecture.

Writing computer code is absolutely free.
You don’t need anyone’s permission to write whatever you like.
The only barrier you face is whether the code works
Whether it does what you wanted it to do error free.

Getting paid to write computer code is another matter.
Now you are serving the purposes of your paymaster
And if the programming is going to put people out of work
I want no part of that.  I want my work to benefit others.

And so I drove a UPS delivery truck for 18 years
Providing a useful service to others, appreciated
While I interacted with everyone in a community
And grounded myself in learning about their lives.

                ***
And yet I can see in retrospect how I prepared the way
To change mid-life to computer technology work
Programming an application to help the helpers.
The job found me as I worked my daily route.

I learned how to fix personal computers
Talking to technicians assembling them at a pickup stop.
I learned how to work with software programs
Using copies customers gave me when I asked.

I had my own personal computer I got at a discount
From a stop where I would wait at the end of the day.
Over the years I found that everything that interested me
Could be found if I looked somewhere on my route.

One day I helped another worker with a grievance
A single mother who wanted to work less overtime.
And she won but I got punished as retaliation
With 16 hours of work on my truck the next day.

The next morning my reward came and my life turned.
The director of a social service agency came to my truck
Asking who I knew who could take care of their computers.
That’s when I asked, “What about me?”

                ***

After all, I thought, I can teach myself to do programming.
It’s algebra in a way.  It’s logic.  I can do that.
Not knowing what I couldn’t do, I set about the task
Creating an enterprise application while doing PC support.

As luck would have it, the system architecture was Unix
Long before Linux existed, back when everything was Microsoft.
And the users did their input on legacy dumb terminals
Not the latest local area network workstations with graphics.

Luck because I could use multiplexers and centrexed phone lines
To create a wide area network across multiple worksites.
Luck because my thin client application could be converted
To be the back end behind a modern web browser interface.

And so it came to be that my office hosted three servers
For three social service agencies, providing software as a service
Before the SaaS acronym was heard on anyone’s lips
Operating a cloud infrastructure before the buzzword began.

And when two young guys discovered what I was doing
And saw the potential to grow it into a software company
And liked the purpose of the application serving those in need
That’s when the convergence began, doing well by doing good.

                ***

Now there are 17.4 million lines of code.
No one person knows all of it without reading
To find the block that determines what happens.
So we work on modules, adding and improving.

The way to do it remains the same as ever.
Understand what is needed by asking questions.
Figure out how to extend and repurpose the functionality.
The application evolves through incremental changes.

The solution begins with data modeling.
First you need to understand the discrete entities
And how they relate to each other
When you design a database to store information.

I have enjoyed making something that draws praise
From the users making their work easier.
I have enjoyed the satisfaction of solving problems
Expanding the scope of what the software can do.

What started as 4 dumb terminals at one site serving 100 people
Now has 46,000 logins with 3,200 users online in 27 states
Who connect from 16,000 day programs and residences with 118,000 beds.
Today there are 860,000 enrolled people getting their services documented.

                ***
I’m ready to retire as I approach 70 years old.
With more than 50 people working in this company
I can let go and get out of the way
So that younger smarter people can have their day.

“It’s your world now.” is what I say to my coworkers.
“You can do this without me.”
It’s time to turn the page and innovate
To adapt the software to a changing world.

There will be new paradigms in programming.
There will be new database engines.
There will be new approaches to navigation
And new devices to access the data.

There will be new models of service delivery
And new approaches to funding those services.
All these changes are an opportunity.
Learning new ways to do things will keep you thinking.

The world will become ever more connected
And you will be there engaged making it happen
Influencing what happens in your way
Determining what is possible by what you create.