Wednesday, January 25, 2012
What's In a Name?
Gut Reaction: Lie? Wait a minute, what lie?
Yes - it's a lie. Millionaire and high income do not mean the same thing. Millionaire refers to a person with $1 million or more net worth. Net worth has nothing to do with your income.
Gut Reaction: Potato, potato. Does the difference really matter?
Yes. Okay, let's imagine for a minute that the politicians are right. It really takes a huge, six figure salary plus obscene bonuses to become a millionaire. Getting that kind of gig means you know somebody. You, hard working middle class person, will never become a millionaire by yourself. To get more, you need help. So who's going to help little old you?
And in steps the politicians. Give them your submission and they will give you the money. You need them. You cannot do this on your own.
Now imagine the opposite - there is a difference. You become a millionaire by saving money. You sock away a little bit every month over 30 years letting it grow and grow. This scenario requires no special knowledge. It depends on your character, not a politician.
So yes, the difference does matter. It all starts with whether you have hope or despair. Hope comes from power. With hope, I know that I can change the world. I will become a millionaire. The goal is in my power. Net worth grows with hard work, discipline (saving), and divine blessing. Who I am shapes the world around me.
With despair, I can never reach such a lofty goal. If I can't, then those people who do must have some special power. And it must be evil, because I'm good and I can't. They don't deserve good fortune. Dumb luck.
I read a great book called Leadership and Self Deception: Getting Out of the Box. This book posits that we choose first and justify second. (That's a very shallow summary. Read the whole book. It's worth your time.) That is what I'm saying. I choose hope or despair. Then my economic view becomes what justifies my choice.
Now our conversation shifts from money to character. Hope (or despair) rises from our character - who we are at our core. All of the arguing over money hides the real issue - who am I? And do I really want to know?
Tuesday, December 27, 2011
The code uses something called a Business Facade with LINQ for database access. I personally find it very confusing. LINQ abstracts away the database access. In my mind, LINQ just adds another translation layer between me and the goal. My coworker probably feels the same way about Catalyst with DBIC. So honestly, what's the difference?
Abstraction vs. Simplicity
We use abstractions all of the time in real life. Calendars abstract the march of time so that we can see the interactions. We write checks instead of mailing cash. You look at a gas gauge instead of the fluid level right in the tank. Abstractions make our lives simpler. They stand in for messy details.Catalyst does that. It hides the mundane intricacies of web connections. No matter how many web applications you write, parsing the URL happens the same way every time. There is only one right way of parsing CGI. And every application does it the same way. Why rewrite that code over and over and over? Catalyst does it once.
DBIC works in similar fashion for database queries...
- Make the connection
- Generate the SQL
- Join related tables
- And convert it all into Perl data structures
An abstraction should simplify details, not hide them. When the abstraction breaks, you can figure out what's happening.
Good Managers Delegate
Delegation happens every day. Your boss's boss asks your boss for something. Your boss then gives you responsibility for getting it done. You do a spectacular job, hand the result to your boss, who then gives it their boss. This occurs across your entire team. So when the manager delegates work to 8 people, that means he received the work for 8 people. What would you do if someone dropped the work of 8 people in your lap? One person doesn't accomplish the same as 8.Delegation lies at the heart of automation. We delegate work to machines. Machines handle repetitive tasks with aplomb. Humans find them boring. Seriously, I would go bonkers typing in all of our data by hand. The computer doesn't blink an eye when it loads that same data. I delegated my work to the computer and accomplished more by doing so.
Web frameworks are about delegation - not abstraction. A good framework delegates the mundane, repetitive details using a library of proven code. Catalyst delegates the URL parsing to some block of code I have never seen - and don't need to. DBIC delegates table joins to some block of code I have never seen - and don't need to.
Catalyst and DBIC don't hide the details. They tie directly with the lower level details, if you need those capabilities. Both frameworks handle the details by default - helping you the programmer - like a good assistant. Does your framework help?
Thursday, December 22, 2011
Getting the Message Across
What Happened?
So our co-director is estimating the cost of bringing on a new client. Their data is a little different than our normal fare - especially the volume. We don't want to bite off more than we can chew.The prospective client sent one month's worth of information. A quick look revealed records with no useful text. Then we identified a slew that do not fit our profile. Expert data analysts combed the remaining records flagging them as they went.
In our meeting today, the good doctor and I went over the results. We began by recalculating all of the numbers before. Then we adjusted our estimates based on the actual results. Of course, some numbers did not add up. From that, we remembered changes in the filtering. Change the SQL and boom - everything reconciles again.
All through the process, my co-director made notations on the white board. He started at the top and moved down with each calculation. The progression over time provided as much information as the data. We ended with a range of possible outcomes. And somewhere in that range falls our actual experience.
The folks in this department are professional researchers. I worked for a company that said they made decisions with data. These people live, breathe, and sleep data. It's second nature.
What Did I Learn?
First - always build a prototype. Secondly, the prototype doesn't look like the final product.In software development, you never do the same thing twice. Every job has some unique twist. After all, if if the job was the same then I could use the same code. The customer wouldn't need me to develop new code. Prototypes help me provide a more meaningful estimate.
In our meeting today, my co-director and I created a prototype presentation. We put together enough to see if the message comes through. I lose sight of that when developing software, The prototype has a purpose - try some new technology, experiment with a new algorithm, or even just identify nasty, hairy edge cases. I lose sight of the message, and start writing the final product. It's no wonder that the customer's think they see a finished product!
Like a good estimate, a prototype needs rough edges. It should crash. The prototype should say things like Menu goes here. This isn't unprofessional. It's honest. Those blemishes provide visual cues that the product isn't finished. And when the software looks better every time, your customer sees real, definable progress.
This just grates on the perfectionist inside of me. Another character flaw to overcome...
Wednesday, December 7, 2011
It's the Economy
Occupy Wall Street, unemployment, federal deficits, tax the rich, Obamacare, conservatives, liberals, Republican, Democrat, spending cuts, tax cuts, capitalism, socialism, big bad banks, golden parachutes, entitlements...
Socialists want to take money away from an executive making obscene amounts. Conservatives defend that income because, well, the executive earned it. Of course he earned it by making bad loans then selling them to other people who lost their money when the market crashed. Now we're back to punishing this fictional executive. Yet we know that socialism is wrong. But the free market failed. Around and around our argument goes - one big, giant circle.
Sadly, I find myself arguing in circles a lot at work. It's a sure sign that I'm solving the wrong problem. Could that be happening here too?
Socialism is wrong. Theft by the government is still theft. Socialism takes by force money or labor that does not belong to the taker. In theory, the taker gives the spoils to someone less fortunate. Look at socialist countries in the real world. You see that the spoils stay with the taker. I consider that pure and simple theft.
On the other hand, the book of Acts describes the early church practicing socialist policies. There must be something good about sharing wealth.
Capitalism too is wrong. It encourages greed and rewards the dishonest. Absolutely free markets collapse on themselves. Then again, capitalism built airplanes and skyscrapers. There must be something good about rewarding success.
The same dichotomy holds true if you compare democracy and feudalism. Each has shining examples of success. Each also has glaring examples of utter failure. Economic structure does not guarantee success or failure. Political structure does not guarantee success or failure. There must be some underlying factor that brought about the successes.
Root Causes
Proverbs sheds light on the subject...
No one can be established through wickedness, but the righteous cannot be uprooted. -- Proverbs 12:3
The wicked are overthrown and are no more, but the house of the righteous stands firm. -- Proverbs 12:7
Corporations are not the problem. The economic system is not the problem. The political climate is not the problem. Our problem comes from wicked people doing wicked things. People possess a will. We impose that will on the world around us - molding the world in our image. Now imagine that image is distorted, bent. What happens to the world?
The righteous care for the needs of their animals, but the kindest acts of the wicked are cruel. -- Proverbs 12:10
When the wicked rise to power, people go into hiding; but when the wicked perish, the righteous thrive. -- Proverbs 28:28
Her house is a highway to the grave, leading down to the chambers of death. -- Proverbs 7:27
Well, it destroys the world around the wicked. Everything a wicked person does destroys those around them. Even when trying to help, a wicked person only hurts. Microsoft brought personal computers into millions of homes. They also put thousands of people out of work with illegal business practices. They set back the state of the art by decades. They hurt the very people they were helping.
Is it wrong to extend unemployment benefits? It doesn't matter. When wicked people enact policy, they hurt the recipients. Extending those benefits will end badly.
Solutions
The opposite also holds true. Put enough righteous people in power and the world takes a different shape. Righteous leaders surround themselves with wise counselors. They create an environment where righteousness thrives. And it too spreads outward.
In First Break All the Rules, Marcus Buckingham and Curt Coffman discuss the role of talent in our work. Talents represent who we are. As we grow, we learn skills that complement our talents. Righteousness is like talent - it describes who we are, not what we do.
What happened to the discussion of character in political campaigns? I don't mean mud slinging throw around insults and lies. I mean real debate about character. Is a candidate honest? Are they self serving? Who's looking at their record, their actions, their speeches for integrity?
Wait, don't issues matter? Well, no. Remember Proverbs 12:10 - but the kindest acts of the wicked are cruel. So even if a candidate does everything you want, enacts every policy you want, in some way it destroys the world around them.
Consider that next November - how will your vote change the world?
Thursday, August 11, 2011
How much do you really need?
Dad: How does that help them?
Deanna: What?
Dad: Imagine that we can efficiently give our leftover food to a hungry person. How does that help them?
Deanna: They get to eat, duh. (Okay, I added the duh. It fit a 14 year old.)
Dad: True. They eat today. What about tomorrow? What if we have no leftovers. What do they do then?
Deanna: I don't know. I guess they're still hungry.
Dad: So you didn't solve their problem. You just delayed the inevitable.
Deanna: I don't understand.
Dad: Okay, we start a problem by asking five why's. Why is this person hungry?
Deanna: They don't have food.
Dad: Good, good. Why don't they have food?
Deanna: They don't have money to buy food.
Dad: Alright, why don't they have money?
Deanna: Well, they don't have a job.
Dad: Why not?
Deanna: They lost their job, or they don't want one. They're not working.
Dad: Does giving someone food get them working?
Deanna: No.
Dad: So it doesn't solve their problem.
Root Causes
People have many different reasons for not working: lost a job, looking and just in between, can't hold one, or won't hold one. And the solutions are different for each reason. So the question is, do you want to solve the problem?See these one-size-fits-all solutions can't work. Every person has a different problem. It takes time, energy, and commitment to unearth the root cause. Are you willing to pay that cost?
Welfare programs give us an excuse for not caring. Throw something at the problem (instead of someone). That comes from a fundamental disrespect for the people you're helping. I helped and can therefore turn my back on the deeper, more permanent problems underlying the hunger. I don't have to care about you.
Think about that for just a minute: giving away your leftovers can actually be a selfish act.
Deanna: So we shouldn't give food to hungry people?
Dad: No, that's not what I'm saying. Why you give them food matters more than giving the food. Have you spent time with them? Have you learned whether it helps or hurts them as a person? Are you giving them food because you respect their value as a child of God, or because you want them to go away?
You had a good question, Deanna. What can we do to help?
Saturday, July 30, 2011
I need...
I imagine somebody snapping our picture. See that selfish father, eating ice cream while his baby sits there. Doesn't he have enough sense to know that she's hot too?!
And what lesson do you think I gleaned from this imaginary conversation? The difference between need and want. First thing off your tongue, right? I didn't expect so. Let me explain.
I catch myself needing all kinds of things - time away, this or that. After all, if I need it, then I'm justified in buying it. Who can argue with a need?
It's all a lie - self deception at its finest. I truthfully just want those things. Want, however, implies personal responsibility. If I want it, then I chose it. And if that thing is frivolous, more than I can afford, or bad for me, then the consequences are my fault.
Genesis says that God created us in His image. Then He commanded us to subdue the earth and rule over it. He most definitely did not say let the earth rule you. We're not supposed to live from one need to the next. God is sovereign. He did not set the universe in motion and let go. He actively controls its direction - molding it to His desire.
Want does not equal selfishness. Want is what God commanded from us. If you want something, don't lie by calling it a need. Stand up, take control, and want it. Say what's true: I want.
Okay, what does any of this have to do with me not sharing my ice cream with Vania? We really do have needs. Needs are when you die without it. I needed hydration and some minerals. I wanted them in the form of ice cream. Needs are very real physical limitations.
Vania also has needs. Vania needs to avoid dairy. Dairy physically makes her ill. It harms her body resulting in a sick feeling, grouchiness, and general misery. It is a physical limitation. By not sharing, I gave Vania what she needed. I saved her from pain, misery, and illness.
Honestly, I wanted to share with her. What father doesn't imagine themselves sharing an ice cream cone with their kid? The smiles, laughter, and good feeling of sharing. Putting my want over Vania's need is selfish.
And before everyone thinks that I'm a terrible Dad who lets his little girl roast in the hot sun - Vania had a sippy cup of juice. Her favorite juice, by the way. I enjoy meeting her needs with things that she wants.
Tuesday, June 28, 2011
I'm Not Laughing
In the interest of full disclosure, I wasn't in a good mood this morning. So let's talk this through...
The story begins with the husband forbidding her to buy towels. I've had those conversations. And they went about as well as this one. There was a distinct lack of communication. I guess that beach towels don't work well as shower towels. Sorry, as a male my understanding of these things is limited. Her husband suffers the same limitation. First sad thing: husband and wife not talking.
So next, the wife buys a huge chicken. She bought it with the full intention of annoying her husband. There was no love, no honor in that decision. She acted selfishly - no matter how cool a 5 foot chicken is. Sad thing number two.
This starts a passive aggressive fight with each accusing the other of escalating. Does any of this sound familiar? The comments on the blog say that quite a few people have shared this experience. Sad thing number three.
It's normal to fight over purchases, to use money as a weapon, and for husbands and wives to wrestle over dominance. If that's normal, maybe it's better to be weird. Sad, huh?