Monthly Archives: July 2009

Grateful Management

This is a reflection about management, particularly the management of people. I have been in management of one sort or another for more than twenty years. As with most of my roles in life, I’m good at some aspects of it and not so good at others.

Somewhere around 1986 my business cards listed my title as “Systems Analyst/Project Leader, Major Projects.” I was not organizationally a manager, but the project leader role was a good stepping stone to having my own budget and doing more than just participate in hiring decisions in future management roles. It was around this time that my company got its first female in a management role in an application systems department in the Information Systems division, although they were not ready to open the floodgates to women, of course. [One of my only exchanges with the VP in my division was when he put his hand on my shoulder and told me he liked my dress. Thankfully my immediate boss, who reported to the VP, told me that I was the smartest person who ever worked for him.] Although I really liked my job, I moved on to another organization as a manager at the end of 1988.

I left working for other people’s companies in 2002 after a couple of different Director titles in two organizations, having served as both a co-located manager of people and a remote manager of people. Being a remote manager was difficult. I could not always make the right pitches to the right people at the right time to get what my team neeeded, but I gave it my best, was an asset to the company, and learned a lot.  Remote people management is harder than onsite management, at least it has been for me. I can come off as more of the B-word, perhaps, when people cannot see my smile and the twinkle in my eye, although I’m quite capable of bringing out the inner-B in person too. I simply try not to do so.

In my role as the Managing Partner of Snupnow LLC, there are no employees, per se, but there are currently 6 active partners with ownership in the company. Two of these partners, Ken H and Sierra Bravo, with Matt being our system administrator there, have put in some significant hours this past week trying to get us set up again after some form of bot attack on various of our linux ports combined with our subsequent decision to bite the bullet and upgrade our database server to Cache’ 2009.1 as part of the effort to get the gateway between apache and our database going again. We were eager to get to 2009.1 for other reasons as well.

In addition to owner-partners, we consider InterSystems a significant partner in our company. They have been there for us many times, with considerable effort put in this past week by at least Derek, Deirdre, and Sudheer putting in time with Ken, Matt, and me. And, yes, that gets us back to me.

I did everything I could to try to delegate the system administration required to get us past this problem, because of my exceedingly poor system administration interest in the details, poor skills, and not-so-great sys admin temperament, as evidenced throughout my career. System administration work is stressful to me. Sometimes I can be helpful in system administration efforts. I recall times in past roles when I have called in the reserves (e.g. consulting companies) or bought meals as a relief to those in the trenches, as well as times when I listened to all information when complex issues arose, netted it out, made the call, and even at times did hands-on work to get the job done. However, I suspect the time I did my best work during a sys admin crisis was when I kept high-profile users at bay, pretended I was unaware of the six pack placed under the cool machine room floor, or when I made homemade mint-frosted brownies with grandma’s recipe.

I have experienced and participated in a variety of management styles. I used to do management by walking around, which is rather out of the question now. It is still important to try to help identify and remove anyone’s obstacles to doing good work, even if the walking around takes other forms. IM and Skype have been good tools for that.

I have experienced management by intimidation, my least favorite management style. I recall watching a VP for whom I worked berating a colleague of mine soon after I started working for a company. I turned and looked him in the eye and said “Just to be clear, management by intimidation does not work for me at all. Please do not try it.” It was about a year after working for him that he lost it and yelled at me in a meeting with one other manager, someone relatively new, so perhaps he was trying to show her who was boss. Afterwards, she asked me how I kept from crying. I told her that when people behave badly, even if they are insulting me when doing so, I just think to myself how I feel sorry for them, they must have some issues in their life. By the way, the next week I was proven right on the issue that prompted him yell at me. Poor bast*rd. :q!  I figure you can be competent and/or you can be kind, but you just don’t get to keep your job if you are an incompetent jerk. He didn’t.

In spite of working to steer clear of managing by intimidation, in prior roles I certainly did more pressure-packed management, pushing toward deadlines, questioning, moving fast, calling meetings, holding people accountable, etc. than I can do with the current sweat-equity scenario.  I don’t know if we would be further down the road if I turned up the heat, but I suspect it would be bad for the long haul. My current intent is to enjoy this job for a long time, and I will only enjoy it if those working with me are enjoying it too.

This last week was not enjoyable. We got there, however, thanks to the work of many people and to Derek having more clues than perhaps the rest of us put together. He figured out that the apache gzip compression was conflicting with the cspgateway (no need to know what that is) after our installation, or something like that. [I try to say things like this imprecisely so that no one ever thinks I am capable of using vi. I used to be in a position to be clear that I should not be included in any meeting where anyone said either grep or RS-232.] We are back up and running. Good deal. ZZ

Yesterday when I cut out for a few hours to run some errands in Sioux City, I used the driving time to reflect on the situation and those working on this problem. l thought about how I feel very, very grateful for Ken, Matt, and everyone at InterSystems who was helping us. I told myself not to be stressed, that we will get there, and I’m lucky to be working with people who have skills and interests that I lack.

For many years organizations like Calvin College, my Alma Mater, and Dordt College, my part-time employer this Fall when I start teaching part-time again, have talked about an appropriate leadership style being that of Servant Leadership. I am now in a position to say that a good management style, at least one to add to those already in use, might be one of Grateful Management. Thanks Ken. Thanks Matt. Thanks Deirdre. Thanks Sudheer. Thanks to others at InterSystems and Sierra Bravo who helped as well. I very much appreciate your efforts over this past week+. And Derek, you da man, brother. Thanks. I am very grateful.

On the Label, Label, Label

Our server is OTL right now after an attack, heavy sigh, but while others were doing some of the heavy lifting at various times, I had a few extra minutes to do some reading. Yesterday I decided to dive into details of interest to me related to html forms. Forms are the face of web pages from a data processing perspective or data processing from a web design perspective.

Regarding the design of forms, I had made a number of decisions early on based on research at the time. These include:

Tabs for Large Forms: Perhaps the most controversial of the decisions is that we would handle large forms by splitting the form fields into logical sections on multiple tabs in a single page. The tabs in any given page are not necessarily just different parts of a form, they could be tabs where the user makes a selection from a table too, for example. The key of this design is not to dump a ton of fields into a single tab, in general, but to split them up to make for a good user experience.

I just filled out a form on a new site where after I filled out one part they popped up another section. It was very cool and rather disconcerting. I had no idea what or how much would pop up. There are advantages to seeing named tabs in front of you, even ones you cannot yet access (at various times).

One of the first responses we got from a developer looking at an early build was that we should have an entire form on a single tab to streamline the user experience. Rats. I’ve been working on that module a lot lately to nail down a good workflow, among other things. Once we are ready for real user experience testing, maybe you will be willing to give feedback on whether the tabs work for you. If they don’t, well, uh, we will work on how to make them work rather than ditching them.  Decisions regarding the overall site navigation strategy, which is likely also controversial, would be easier to change than our tabbed approach.

Labels above input fields, left justified: I did about 1 hour of reading on this tiny topic of where to locate the label, which some of you think was way too much, I’m guessing. I chose labels above, rather than to the left of, input fields. I also decided on no colons after the label text. I spent less than 10 seconds on that decision. A graphic designer chose the font, font size, and font colors that I implemented with css. I will spend no more minutes on these decisions before we are live d.v. A textarea in one of our forms looks like:

field

Input field lengths all the same: There are some exceptions, but having the start and end of each input field be along the same vertical lines as the other input fields helps to minimize visual noise in a form. The alternative is that each length is determined by the developer based on what data is usually placed in the field or perhaps based on some fixed maximum length for the field. Having them all the same has the downside of giving no visual cue as to the anticipated length of a field.

There is another downside. I have spent well over 20 hours, I suspect, trying to get IE and FF input field lengths the same, to no avail. Apparently our toolkit which generates pages with no DOCTYPE, tossing browsers into quirks mode, is just plain not gonna get us there with the packaged components, although there are enhancements in the works that might help. The issue at hand is the dreaded IE box model combined with the old-fashioned table-based layout.

The added problem is that if I get the textareas (such as Street above) and single line of text input areas to have the same length in one browser, they are different lengths from each other in another browser. So it is not just that the lengths are different in different browsers, but that I have to choose one to be both right and left justified and the other to have input controls that have a jagged right hand side. Argh.

From my research yesterday, I have added to these decisions the following:

Labels in sentence-case rather than title-case: Currently our labels are mostly in title case like First Name. We have plenty that are still in developer form like the camel case of FirstName or whatever label the developer feels like putting on a field at the time they code it. So, we need to go through and review all field labels. That is why I decided to study this detail again. I decided to go with what seems to be an ISO standard (who knew?) of using sentence case, such as First name. OK, decision made now on that, but it will require this minor change to most of our labels, so while we are at it, better think about the following too.

Labels as short phrases instead of simple nouns: This is the more complex question for me. Is it a better user experience, resulting in more conversions (as marketing types would say), to have a form label of Enter your password for this site, Password for this site, or Password? I know it would be a better user experience never to ask for any password, but that is beside the point. I read a little and did a few experiments with myself as the user (yeah, I know), and decided that short phrases might very well give a better user experience. Hmmm.

No decision on this yet, but the examples of Street and First name show up a problem with short nouns like this. Even among the English-speaking world, these are not completely clear labels. When you translate such nouns, the problem is compounded. Making a phrase in each language that provides for more clarity might be a good plan.

We can put the power of an entire 1970’s computer room for a large business into a cell phone, but we don’t have names and addresses licked from a data processing perspective. That’s a topic for another day, but speaking of names and addresses, here’s what would seem to be a no-brainer, but is the most important of label standards.

Make trustworthy labels: I’m going to go out on a limb and suggest that we want to be sure that users can trust our labels. Below is a form I filled out early last week with dates from this past weekend (which  I can no longer select, so I’m showing it with next weekend dates). I had July 20 as my Resume Date and had the Post Office delivers accumulated mail checked. When my mail had still not been delivered by 4pm on the 21st, I drove to the Post Office. I told them I was expecting it to be delivered the previous day. They said “Oh, yeah, we don’t do that because you might not be home yet and then it just builds up.”

Of all the various issues with forms and labels, I’m thinking that whether there is a colon or not really doesn’t compare to the issues of labels and fields that give you a completely false impression of what will happen. I’ll have to give the award for my Worst Web Form Experience of the Summer so far to the US Post Office. Their form made a commitment, but they did not deliver.

Hard to see the problems with this form, but...

Hard to see the problems with this form, but they didn't deliver

Hey, Here’s an Energy-sucking Feature

I use this software, also known as a web site, named WordPress. You knew that, right? It was working well for me and it didn’t take much to set it up, so I set up a blog for my husband at wordpress.com too (http://twolthuis.wordpress.com). That’s when it stopped working for me. I know, I know, it still works the same and it should be easy for me to adjust, but…

Since my husband writes with even more typos than I do, I am his first line of editing after he makes a post (why edit before posting, eh?). He posts almost daily. I don’t do a great job, but I try to get in there and make a few fixes each day. I log in as him to do that. Then if I go to any other wordpress.com site, such as THIS ONE, and I try to be the administrator so I can write a new post, it signs me into my husband’s blog. I’ve written and deleted a few posts there. Argh.

This one tiny, little adjustment where I have to notice which blog I’m in as the administrator, then log out if it is the wrong one, then switch again to the other one that same day, is enough to discourage me from writing posts.

Now doesn’t that seem a tad bit unaccommodating of me, the end-user of this site? Doesn’t it seem like I should be able to adjust and just log out and log back in repeatedly each day? Yeah, it does. It seems like I should, but that little act of logging in and out just sucks my energy. I don’t wanna do it, so I don’t.

I’m wondering now which features we have in SnupNow that might suck energy from our users. Oh, that’s right, we have no users. Heavy sigh. Time for me to get an energy boost, I guess. Maybe meeting a friend at the closest Mexican restaurant in a few minutes will do that for me.

I wonder if there is an antidote we can put into software to offset any energy-sucking features? How can we keep from having energy-sucking features? What would an energy-giving feature look like? My current bedtime reading is the book

Instant Appeal: The 8 Primal Factors That Create Blockbuster Success

There are some tips in here that just might help answer this question. For example, there are words that boost people, such as “Hey”.

MJ to JC, God’s DRY Humor

Michael Jackson was remembered this week, having died last week at the age of 50. John Calvin was born 500 years ago this week. He died when he was 55. Both of these men were odd ducks. (Trust me, I knew them both very well.) It is a stretch to fit them into this blog entry, but I’m not so much crafting these entries as shedding them from my brain when they arise.

I’m not sure how much MJ and JC have in common. I started a comparison list that made me laugh, but I’ll save you the effort of trying to figure out my humor and save myself the shame of not being able to pull of what David Letterman does. While the exercise gave me some of that We are the World sense of unity, thinking about these two men also brought to mind how God must use the Don’t Repeat Yourself (http://en.wikipedia.org/wiki/Don’t_repeat_yourself) approach to the construction of humans. At the very least, thinking about MJ and JC together made me appreciate the sense of humor of the Divine.

My next door neighbor is writing her dissertation on Calvin’s view of the body. You might wonder what the odds are that I would live next door to another Calvinist, but around here the odds are very high (I was going to write “good” but…). I live in a city with a population around 6,000 and at least 10 churches of Dutch Calvinist descent, right here in the heartland of America.

As an aside (as if the rest of this were not), while the popular press often highlights Irish-American, African-American, Italian-American and other ghettos, rarely does the national press pick up on stories related to Dutch Americans. Except in a few odd places around the country, we are a people who fade into the backdrop, or equally likely, step up to the plate looking like the average American. In some ways, we are a good example of the melting pot at work.

In the popular press, Calvinism has typically taken abuse in those cases where I have noticed it was referenced during my adult life. I would have no problems taking a few jabs at this “-ism” myself, since I consider it descriptive but not prescriptive for myself (this is where another blog entry might go off on a data schema tirade, I’ll stop myself here), but most of what I have heard has simply been inaccurate.

Calvinism is now getting some revived popularity. Bill Clinton mentioned recently that he was “too much of a Calvinist…” regarding his work ethic (http://video.aol.com/video-detail/clinton-not-a-house-husband/1604078481) and someone just pointed me to this more recent post too http://news.bbc.co.uk/2/hi/europe/8140821.stm. There is a New Calvinism discussed in religious circles, even if among a group more conservative, it seems, than I (those apposed to women in church offices, for example). I wonder if it will ever be cool to be a Calvinist?

I have gone off on quite a tangent here, but let me talk about one tiny place where I would like to see a revival. I have several cases where the use of a DRY approach to coding would suggest factoring out some similar code. In particular, I have a tab 6 in one web page that should be almost identical to tab1 in another, with a few differences. Right now I am going to specify these pages in XML by cloning one to seed the other. Cloning and changing is part of the lifeblood of developers, but unless the changes are significant, it should also prompt one to try to figure out how to not have to write and maintain the same or similar code in multiple places, how to write DRY code.

In our framework there are several ways to reuse code. In this particular case I do not think any of the approaches of which I am aware would be quite right. This is not a good case for subclassing a superpage. Taking the contents of an entire form and other components from a page and rolling them into a single component would also make for unnecessary complexity. Additionally, the use of iframes has pros and cons and we have avoided them to date for such purposes. This isn’t a good case for making new aggregate objects, more shared methods than already planned, nor even for a good old-fashioned shared subroutine.

You know what would work in this case? A simple insert or copy code with a code fragment, in this case a piece of xml that might not even be well-formed (the start of the xml differs in each case), that is simply inserted into each of these classes at the right spot. That isn’t a hip way to employ DRY programming tactics, but it has served the discipline well for years in many places, from COBOL copy books to server-side includes for html. I’m missing that feature right now and I would like to have it.

I would ask, just to make sure that I am correct in thinking I do not have this option with my toolset, but I have other dumb questions to ask so I won’t waste a chit on this. Plus it’s Saturday, so maybe I’ll bake this gluten-free Bob’s Red Mill chocolate cake and decorate it with R.I.P. M.J. and Happy 500th J.C. Maybe I’ll just google to see if anyone has made a John Calvin moonwalking video instead.