• Writing command line applications with App::Cmd

    If you write command line applications in Perl, there are certain standards you happen to code everytime, for example the definition and validation of command line options. The new Perl module App::Cmd~rjbs/App-Cmd-0.007/ uses OOP to simplify those tasks and make your code reusable.

    App::Cmd is a set of tools designed to make it simple to write sophisticated command line programs. It handles commands with multiple subcommands, generates usage text, validates options, and lets you write your program as easy-to-test classes.

    With App::Cmd, you write a subclass for every task your application carries out. If we take Subversion as an example, there would be a subclass for checking source code out, one for checking changes in, one for generating changelogs and so on.

    By using base classes, you can factor out standard tasks like displaying help information when the "-h" switch is used.

    It seems to me that App::Cmd makes it easier to write non-trivial command line programs without losing structure and maintainability. I'll give it a try.

  • Shopping in slow motion

    I love the folks from Improv Everywhere. After invading a Best Buy shop with a crowd of seem-to-be-employees, they now slowed time in a Home Depot shop

    We would sychronize our watches and then walk over to Home Depot and shop. At exactly 4:15 we would all begin moving in slow motion. We'd do that for five minutes, and then shop normally for five minutes as if nothing had happened. At exactly 4:25 we would all freeze in place for five minutes. When that was over we would go back to normal and eventually leave the store.

    It's hilarious to see the reactions of other shoppers and the shop employees. I'd love to participate in something like that some time.

  • The basic principle of treating employees

    Unfortunately not every talk with my team members goes "Yes, boss, of course, boss." There always are topics, strategies, solutions that we don't agree upon. What now?

    Well, there's always playing the boss card. Whoever has more power wins. There's two problems with that strategy. First, I hired my people because I think they can do the job better than I can do it myself. So, my opinion may weigh more because I'm the boss, but that doesn't mean at all that I have the the better solution.

    The second problem is that if you always press the "Override" button, your people will start not bothering with making suggestions and offering solutions any more.What's the one thing all of us want from our peers, be it parents, friends, colleagues or bosses? We want to be taken seriously. Everyone of us has his or her special opinions and emotions and we want that the people around us accept and appreciate that. If they don't, we feel refused.

    A part of growing up is learning to deal with such refusal. We start sorting out the people that aren't interested in our point of view from the ones that just don't agree in certain matters and can justify that, too. While we best start ignoring the former, we can deal with the latter by discussing the matter, learning about their approach and sometimes finding common ground to agree upon.

    I love people that don't agree with me and are willing to spar with me about the matter. A sword fight of the mind sharpens my blade, even if I lose. But if I get the feeling that someone doesn't take me and my opinion seriously, I quickly stop wasting my time. I expect my subordinates to do the same.

    So, because I not only appreciate the feedback I get from my team but also depend on it to do a better job, I always ask for reasons and motivations, especially when we disagree. Maybe there's a point one side didn't see, maybe there is more than one solution to the problem at hand. Transparency rules. Even if the final decision doesn't make everyone happy, at least there isn't the lingering feeling of being refused for obscure reasons.

    That doesn't mean that I don't play the boss card at all. There are situations when there's just no time for discussion and a decision has to be made immediately. And management is all about decisions. Sometimes you can't disclose your motivation because of privacy or other reasons. But I always try to make sure that my opposite knows that, under other circumstances, I'd consider his or her approach.

    There are people it's good to take seriously even if there's no point in discussion. No, I don't talk about CTOs. I mean chronic complainers. The people that are moaning and whining and complaining all the time. The weather sucks, management is all morons, the project is stupid and doomed anyway, you name it. Even if all is flowers and sunshine, they find something they can rant over. And they make every effort to do so.

    As Alexander Kjerulf points out in his article How to handle chronic complainers, there's no point in cheering them up, suggesting solutions, telling them to stop, even ignoring them. All these reactions won't stop them, they may even worsen the situation. These people need devotion, and you can give this devotion without chiming in in the complaining: just take them seriously. Show them some understanding that they have a difficult situation. That doesn't mean you have to agree with their view, just let them know that you see they're really having a problem.

    That may not stop the complaining -- most chronic complainers have a hidden problem they aren't able or willing to solve themselves and that problem won't go away only by empathy. But by showing that you see their burden, you at least can prevent a downward spiral that ends at firing someone for poisoning the work environment.

    Taking people seriously means work: you have to deal with opinions, points of view, different solutions, even hidden agendas. But that's exactly the work you're paid for as a manager.

  • Belkin Skype phone reviewed

    Lately, I refrained from writing about newly announced Skype phones. Folks, it's about time to stop announcing and start delivering!

    And yesterday, Gizmodo actually published a first review of the Belkin Skype WiFi phone

    I'm happy that, for a pioneer model of a new type of VOIP phone, the Belkin Skype phone seems to be pretty decent:

    All in all, a pretty good Skype WiFi phone that actually looks nice enough to be carried around with you to work or to connect to WiFi hotspots around the city. Everything's good in this phone including call quality, button feel, and wireless reception.

    I think I know what the handset for our new flat will look like...

    Update: There is one caveat, though: The phone will not be able to authenticate against hotspots that require a web-based login. Unfortunately, that rules out a lot of hotspots in hotels, at train stations or airports.

  • Writing good job applications

    Sometimes I get job applications that make me wonder if the applicant did even read the job description. Those are nothing more than a waste of paper (or storage space) -- and of my time, which is worse. There is only a small percentage of applications that make me curious about the respective person. Most just make me think "Okay, the cover letter is rubbish, but maybe the resume is better. Let's read on for another minute."

    In his blog entry Dear Libby", Guy Kawasaki, former Chief Apple Evangelist, gives an example of "how to write an appealing job application In the article, he refers to a previous blog entry in which he interviewed Libby Sartain, HR chief at Yahoo!, and now he shows how his own application would look if he applied to a job at that company.

    It may be a bit intimidating to see what qualities a celebrity like Guy can refer to, but it's instructive nonetheless. I wish more job applications were as concise as his, even when they don't contain former jobs as a director or CEO.