January 9, 2010

Making Sunday School Work


I'm terribly interested in making Sunday School work for my church. Through these small groups we should:
  • invite people to learn about Jesus,
  • discover the great truths of the Bible and faith stories of believers, and
  • connect with each other through fellowship and ministry.
Simply doing stuff together outside of church enables all three of these things to happen. It sounds so simple. Then why is it so hard? It seems that we're all too busy. Or too spread apart. Or can't get a baby sitter. Or can't afford one. Or it's too hard to set something up. Or maybe we just don't care as much as we should... because we don't do stuff together often enough.


Don't get me wrong. My church is just fantastic. There is something going on in every age group almost every month. My friends are great. But it does take some amount of assistance to keep it going and keep it improving.

There are a couple excellent booklets you can buy for $1 each from LifeWay, but they are also free downloadable. The first is the The 3D Sunday School -- invite, discover, and connect. The sequel is I-6 Invite: A Six-Lane Strategy Toward an Inviting Sunday School. From there you can get the links for the Discover and Connect booklets.

December 13, 2007

On Automated Testing

Test everything somewhere. Test nothing everywhere.
                             -- Andrew Fuqua, December 2007

We were talking about automated testing, particularly test coverage, in Agile Atlanta the other day when I coined that aphorism. At least I don't think I've heard it anywhere else before. The concept had been in my head forever and I've worded it similarly thousands of times, but perhaps not so succinctly.

When writing test code it's good to have almost everything tested in some fashion. But there is little reason to test anything multiple times. Just cover everything well, in one layer or another. Any concept well covered in unit tests doesn't need to be tested in higher layer functional tests. Any concept well covered in integration tests doesn't need to be tested in customer acceptance tests. It would be inefficient to cover the same area so many times.

Of course, it's okay to leave certain cases to be tested by hand, as long as they are relatively few in number. Leave what can't be automated easily for manual testing.

June 1, 2007

Down the elevator shaft!

I dropped my keys down an elevator shaft today. I just fumbled as I was stepping off. I hadn't been at work for very long before I realized that I left my cell phone at home. I figured I'd just run home and get it. You should have seen me on my knees looking down the crack to see if I could see my beloved key ring. Nope. I couldn't even see down four inches. Well, my prior experiences prepared me for this day: I had a spare set of keys in one of those magnetic lock boxes stuck to my truck. Ran home, got my phone, came back, and stopped by the building's property management office to see if they could help me. To my great pleasure (sick, I know) this isn't the first time this has happened. Oh, the fee to get the elevator guy to come out and retrieve my keys? Over $100. I don't think I need my keys that bad. Well, I left my name and number and said "no hurry but the next time the elevator guys happens to come around..."

At lunch I drove down to Decatur to take a look at a desk a guy (Jason) was hocking on craigslist. I missed my turn at Clairmont and didn't realize it until I was all the way up to Shallowford. I got cocky and thought I could feel my way to Jason's a different way. Wrong! A few miles later I realized I should just back-track to Clairmont. Oh, the hits just keep on coming. I was a little concerned about missing my appointment with Jason, but when I got to Jason's house no one was home. He said he would be there all day packing up. But he forgot that they were closing on his house about that time. Oh, and he also forgot to tell me that he sold the desk to someone else yesterday.

Chuckle. I've never been so at ease with misfortune. A few years ago my stomach would have been tied up in knots with angst over my keys and phone and this guy Jason. I would have been mad at everything and everyone: the management company for charging me to get my keys, the guy in the car in front of me, my boss for scheduling a 10 o'clock meeting, my kids for not reminding me to take my phone to work. I would have spent half an hour trying to figure out how to break into or climb through whatever I'd have to break into or climb through to get up under that elevator. I would have left nasty phone messages.

But none of this got me rattled. It was a good run of trials today, but God kept blessing me in spades. I didn't get locked out of my truck. I made it back to work in time for my 10 A.M. meeting. I kept my cool in traffic. And later, on my way back from lunch, I got a call from the property management office. The elevator guy just happened to stop by today and retrieve my keys. Cool. Very cool.

It's truly amazing to me how my outlook and my fortune changed for the better once I actually began to walk daily with Christ.

Truly God is good... to those whose hearts are pure. But as for me, I almost lost my footing. My feet were slipping and I was almost gone. ... Then I realized my heart was bitter, and I was all torn up inside. I was so foolish and ignorant... How good it is to be near God! I have made the Sovereign Lord my shelter, and I will tell everyone about the wonderful things you do. Psalm 73

The Lord is good to those who depend on him, to those who search for him.
Lamentations 3:25

November 23, 2006

The Most Rewarding 3-Year Undertaking Ever

Last week I finished studying the Bible all the way through. It took about 3 years (one or two chapters per day) and was very rewarding. I am fascinated about all the things the prophets said would happen that happened. It has really strengthened my faith in Jesus Christ. It's all so clear now.

June 1, 2006

My Testimony

Those of you who knew me in school or at IBM or ISS may be amazed at how I've changed. I'm not referring to physical appearance. I'm talking about my attitude, happiness, outlook on life, health -- that kind of stuff. I've done many things I'm not proud of. I've even been the date from hell at least once. My biggest life-long problem has been controlling my temper and dealing with anger.

While at the University of Alabama, an ex-girlfriend told me "you sure are an angry young man." That was an eye opener. I struggled to change myself for years but had no success.

Somewhere in the early 2000's I started hanging out with a better crowd. Three men in particular had a great impact on me: Eric Smith, Garry Holton, and Carl Jameson. I met these guys at the Atlanta Street Baptist Church. They pointed me back to Christ. I turned my anger problem over to God by renewing my dedication to Jesus Christ. Since then life has been fantastic.

I thought life was good before, but I never knew how great it could be. I couldn't see what I was missing. I'm much more easy going now; full of peace. I'm much happier.

July 26, 2005

Hurricanes and Rockets: awesome power


I had the privilege of watching Discovery rocket off its pad and disappear into orbit. Wow, what a complex and powerful machine! I saw the cloud of smoke engulf the ship. I heard a bang and then saw Discovery lift out of that cloud. The flame from the engines was so bright it hurt my eyes. As its column of smoke grew taller its roar grew louder. 3000 miles per hour now. I could barely see the solid rocket boosters fall off. 5500 miles per hour. It was just a spec. I don't hear its roar any longer; it dissipated as slowly as it grew loud. Then, I could see Discovery no longer as it was off chasing the International Space Station. The astronauts were taking off their orange assent/descent suits before I found my car in the parking lot. 17,500 miles per hour and the astronauts are changing clothes.

A couple of weeks earlier I was at the beach when hurricane Dennis was out in the gulf. Dennis was making the waves pound the shore way over on the east coast of Florida. I was in awe of the power of the waves and even more in awe of the power of a storm having an impact so far away.

Rockets are pretty impressive, but nature can be much more powerful.

I have been reading my way through the Bible for about a year and a half. At the beach I had just gotten to Psalm 93 (New Living Translation);
The LORD is king! He is robed in majesty.
    Indeed, the LORD is robed in majesty and armed with strength.
The world is firmly established;
    it cannot be shaken.

Your throne, O LORD, has been established from time immemorial.
    You yourself are from the everlasting past.

The mighty oceans have roared, O LORD.
    The mighty oceans roar like thunder;
    the mighty oceans roar as they pound the shore.

But mightier than the violent raging of the seas,
    mightier than the breakers on the shore--
    the LORD above is mightier than these!

Your royal decrees cannot be changed.
    The nature of your reign, O LORD, is holiness forever.
Now, that's something to be in awe of.

June 1, 2005

Be specific

We were having a problem at work that we just couldn't solve. I had my best engineers on it. I looked at it myself multiple times. Toby tried lots of stuff, even reinstalling things. We thought about it and worked on it for three weeks. I even got BEA's support staff involved. The application worked just fine on the previous imaged hard drive. We couldn't find anything on the new hard drive image that could break our application. How frustrating. I was feeling like we had gained no ground and were spending all our time on this issue. We finally figured it out, but what's interesting is how:

I prayed specifically to gain some ground on one of two issues we were having. As soon as I was done praying, BAM! God gave me the solution. I walked over to the computer, tried it, and it worked!

Wow.

I believe God answered that one so swiftly because He knew there would be co-workers around that would ask how I came up with the solution -- that He would be praised and so that it could be shown that He is active in our lives and in our company.

I often pray about work. It's generally a generic prayer for help or wisdom or for the lost, but the results are far greater when I get specific.

March 27, 2005

Easter: The Resurrection of the Christ

The Greek historian and physician Luke wrote a fascinating account of the resurrection of the Christ, which picks up where Mel Gibson's wildly popular film The Passion of the Christ leaves off. After his resurrection from the dead, Jesus appeared 11 times over 40 days to more than 500 people! It's a fact. Jesus is alive. Read Luke's account.

Everyone has sinned and the punishment for that sin is separation from God. Jesus took our punishment for us -- he died in our place for our sin. He was separated from God for a short time, but he conquered death because he was sinless. Everyone who accepts this free gift gets to spend eternity in paradise. Everyone who rejects this gift will suffer eternal punishment for their sin. They will suffer eternal separation from God. And that is hell.

There is an afterlife and everyone, including you, will be in it. Where will you be then?

February 28, 2004

Attributes of a Great Manager

I've been thinking about what makes a good software development manager for quite some time. A friend recently asked for my thoughts on this so I thought I'd jot them down. Let me know what you think.

People management is top priority. Developing people is what it's all about. The job is to empower, delegate, motivate, reward and recognize. And it is to be done frequently. And that is all. It's okay to be a customer advocate given spare time, but that should not be the manager's job. It's good to use the application his group is building. And it's good to understand the competition. But QA and competitive analysis is not the manager's job. It's okay for the manager to be a proxy for the customer for a short while, but that's the product manager's job. And the manager can be the benevolent dictator (final arbiter) if there is no one else to do it.

A manager should encourage, reward, even expect continuous learning. This means more than just paying for appropriate books and sending a few employees to training each year. It also means encouraging employees to keep learning and sharing what they learn. Recognize employees that are involved in study groups and user groups. Encourage the use of software development best practices.

A good manager will take time to meet regularly with employees, in small groups and one-on-one. You'll likely find a good manager eating lunch with his employees or chatting in the break room. You may even find him playing video games, ping-pong or foosball. High levels of communication is very important. It's the best way to understand the organization's health, to discover employees' career goals and aspirations, and to find out what type of work they enjoy. Without this understanding, how can a manager mentor and develop his people?

Regularly is also the most appropriate time to give feedback. Managers should comment on good and bad work right away. Don't wait for the end of the project. And certainly don't wait for the annual review.

Perhaps the most difficult aspect of good management for most of us techies, oddly enough, is fostering creativity. We are all pretty creative. But we get in ruts and lose our edge. A good manager spends his time thinking of how to keep our brains creative.

I don't think a manager necessarily has to have been a programmer, though it can help. It helps to be technical enough to be credible, to have something in common with the engineers. And it helps to know when someone is trying to pull the wool over your eyes. It's useful to know how to do all the stuff I say don't do (below), but develop those skills in others rather than do the task yourself.

One of my favorite quotes is from Andy Hunt.
Management's responsibility: remove the obstacle. Team's responsibility: identify the obstacle.

It's the idea of management serving the employees, not the other way around. The employees get the real work done. Managers make sure the right folks are trained and aware of what needs to get done. Managers make sure employees have the information they need to do the job well.

A manager should not spend his time "doing" stuff. Richard Lowe expresses this best: "This means ALL tasks must be delegated, except for those tasks directly related to getting other people to do their jobs." The mistake is "doing actual work instead of managing." If a manager's job is to observe, motivate, reward, develop people, improve morale, and all that other stuff, then, if done well, there will be no time for anything else.

Managers should never make design or coding decisions. Nor should they make architectural decisions except to enforce whatever constraints come from product-family concerns or testability, reliability, redundancy, serviceability, availability, and other requirements of that ilk. But managers often can't resist. Where does this come from?

Often we take good developers and promote them into management. Not because they possess the attributes of a good manager, but for all the wrong reasons. "Fred did a great job on the hoohoppy project. He handled all the technical details. He's our most senior developer and we have this open management position..." This makes about as much since as, well, as me trying to make a weak analogy right now.

Of course it isn't always quite so black and white. Sometimes a manager may find himself in a situation in which no one knows how to do some necessary and urgent task and either the manager has a real junior team or has some seriously tight deadline. In this situation, I don't mind if a manager pitches in to learn how to get this thing done. But it shouldn't become the manager's job. Rather, he should teach someone else to do it and delegate that responsibility.

What about project management? Isn't that a manager's job? I don't think so, though that's where it usually ends up. Good managers should train up their team-leads to handle that responsibility. Managers should ensure that it gets done and should teach others how to do it if necessary. It's the same with risk management. Ensure it gets done, but don't do it yourself. "We need to have more trust in one another," Lou Gerstner Jr in his tenure as CEO of IBM wrote to employees -- "confidence that our colleagues can lead and do the right thing, so we don't have to attend every meeting and check every detail."

There is more, of course. But it all involves thinking about what needs doing, rather than the doing itself.

It should go without saying: Treat employees with a great deal of respect. Treat them like the intelligent human beings they are. Sadly, I've seen a few managers that just don't understand this. Or they never spend time in self-reflection, examining their behavior. So I'll leave you with this thought. Managers, reflect on your organization's effectiveness. And reflect on your effectiveness.

P.S. Before anyone points out that I don't walk the walk, let me add that all of this is very hard. To do it well requires either a tremendous amount of courage or like-minded upper management who will hold us accountable.

April 4, 2002

Iteration Planning – Story Breakdown

There is a certain set of things you should consider during Iteration Planning when breaking stories down into tasks. Here's a short check-list I created a while back to post in the XP-lab as a reminder. Other teams have done the same but with different items to consider. In our retrospectives we notice things we should have thought of and those items get added to this list.

Consider:

  • Acceptance tests
  • Risks
  • DB impacts
  • Design sessions needed
  • ...
  • Error conditions
  • Boundary conditions
  • Time-zero
  • Front-end/back-end impact
  • Permissions
  • Audit logs
  • ...