Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

Subtitle: When Communication Fails

A year ago, I had a project dropped in my lap: write a CGI script that lets a user enter certain values and upload a file. After verifying the data and the file, email it to a certain address.

The project had been in discussion for 18 months, going through the prioritization, budgeting, overall design, and other administrative processes endemic to large corporations and their resource planning infrastructures. The original developer assigned to the task had, during that time, left the company. Due to other changes going on, so had the backup person.

This meant that there was one person left who had any interest or experience (heh) in writing CGI scripts. Me, who doesn't even belong to IT or IS. (I work for Marketing, which is another story itself.)

Thus, the project was dropped in my lap with a two week deadline. Naturally, I have zero access to the servers hosting the company's CGI scripts. Also, this is my first "real" Perl project.

I cobble something together within the deadline, test it on the server hosting my personal websites, and submit it to TPTB. Yay...successful completetion, right? Hah.

The project sponsor does some testing, asks for some enhancements, and starts trying to get it deployed on the company's servers. I quickly make the changes.

Interlude: I find the Monastery and begin to learn just how awful the original implementation is. I desperately want to rewrite it to make it better.

Three months later, Corporate says they're ready to test. And, oh, could I make a small change? Sure, no problem. Done, documented, zipped, and sent. I'm also able to slip in a couple of key changes. Lots still to do, though. But, I leave it alone as it at least works.

Four months after that, Corporate asks where the files are. I tell them I already submitted, but here's the ZIP file again, just in case something happened in transit.

In January, the new Product Manager asks me to attend a meeting on getting the project finished and deployed. (The original sponsor having left the company some six months before.) I attend, finally learn who all the players are, and am finally able to talk to the actual administrator who's just been hired to handle this stuff.

He asks, "What do I need to do to deploy this?" "Well," I say, "if you check out the README file, there's a pretty detailed list of configuration changes that you'll need to make, since I didn't know the names of the servers and no one wanted to tell me." (Okay, I was a little more diplomatic than that, but...that was was gist.) While we're discussing this, I hear confusion in his voice.

"Tell you what," I offer, "why don't you give me a week to see if I can't make this easier on you? This will give you some time to install some CPAN modules you'll need. There's a list in the README."

"Okay," he says. "That'll be fine." We tell the product manager and I finally have some time to make the improvements I've been wanting. Yay. I'm happy.

I clean things up, separate the configuration, add file locking, etc, etc. It's much better. I revise the documentation (ripping out some ten pages in the process), package things up, and send it off. I feel much happier thinking that the script is closer to what we like to see in such things within these walls.

Things languish in limbo for a time, in part because the Product Manager goes on extended vacation without telling the rest of team. I keep tweaking, just in case another chance to update appears. One does; I do so. It's still not perfect, but it's defensible. Once again, I revise the docs and sent it off.

A month later (today), I hear the Admin has finally gotten the modules installed and that we're finally ready for testing. ("Excuse me?" I want to scream, "Haven't you heard of -MCPAN?" I restrain myself...barely.)

During the same meeting (a conference call split across three cities), I observe that the:

  1. Product Manager has no clue who's responsible for what or what needs to be done to do it.

  2. Server Administrator has run into problems without consulting with Development (me). Furthermore, he blows off all meetings regarding the project.

  3. Security Administrator knows how to implement .htaccess and SSL, but has no idea how to deal with Perl or CGI scripts.

  4. HTML Designer is capable, but powerless because he has to beg Security for the URL's, server names, and other administrivia needed to connect a link to a CGI script.

  5. Development finally gets authorization for shell access to the deployment server.

The morals of the story are many, as are the mistakes (including many of my own). However, this is worse than any Keystone Kops flick or Fox "reality" show. Please notice the ones relevant to your work and take steps to avoid these types of problems.

Here's the main ones from my point of view:

  • Foster an environment of communication.

  • Clearly document (and make available) the names, phone numbers, email addresses, and responsibilities of the team members--especially if you're working with other teams that are not located in your offices.

  • Give people very clear guidelines of your expectations and needs.

  • Don't be afraid to ask for help, nor to kick some fannies to get things moving.

  • Give your people the training they need to do their jobs properly. At the very least, when approached by someone who wants to help with any problems, take them up on the offer.

  • Don't get so paranoid at avoiding social engineering that you exclude internal people trying to learn and work with your security practices.

Sorry...I just had to rant.


P.S. I got dinged on my performance review because this project is now a year late. No matter that I had my piece completed on time and under budget. G-r-r-r-r-r...!

In reply to A Cautionary Rant by footpad

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others musing on the Monastery: (6)
    As of 2018-03-24 16:56 GMT
    Find Nodes?
      Voting Booth?
      When I think of a mole I think of:

      Results (299 votes). Check out past polls.