Thursday, October 11, 2007

What did I learn today?

I'd like to say that today I picked up some new ultra-snazzy techno skill. I successfully refactored the web app I'm doing to use LINQ. Or NunitAsp. Maybe got the back end to multi-thread successfully.

Alas. No luck. Today was much more pedestrian. Requirements and test data.

Requirements:
Shadow IT development is a kick. In the pants. (The trick is for it not to be a kick in YOUR pants.) I'm guessing a fair number of developers got their start in shade tree IT development. (Hey, that's my foot in the door too, so please don't slam it!)

I want to do the best job I can. And I'm blessed (no, really) with both the perspective of a few years of QA ("is it testable? did you build it to spec?!") as well as systems administration. ("Whaddaya mean there's no support?! Who do I call when this breaks? Where's the documentation on how it's supposed to work? No...1/4 page of fragmented english and a screenshot of a dos command window doesn't cut it..")

And I realized today that, while I've been functioning well enough with some 10,000 foot fuzzy requirements for the proof of concept it's time for some more detailed stuff.

(also because I'm floundering like a beached carp wondering what to do next.)

Should I tackle
  • The parser for the peoplesoft-generated text file containing user location data?
  • The multi-threading back end so the .exe called by the web app (on the web server) doesn't hog response time.
  • Ooohhh...or the user authentication piece. Gotta get that in.
  • What about a command-creation factory?
  • Umm...logging functionality to record what the users did?
  • Oh yeah, and I need to make sure I get some sort of reconciliation doohicky to pull data from VistaPlus (the reports distribution tool), parse it, and compare it to the (several) other "sources of truth" we have available.

Yeah. What's most important?

What do I do _now_? (analysis paralysis, anyone?)

So I started augmenting and cleaning up the schedule I started several weeks ago. And as my fingers wandered aimlessly across the keyboard, I actually managed to see patterns of responsibility and logical progression.

And the logjam in my head started to free. Imagine.

On to testing.

Ahhh....test data. We hardly knew ye.

Well, actually we know ye too d### well.

My current assignment is a web app to help folks manage permissions in our corporate reports distribution tool. We use this for everything from Oracle Financials data to Peoplesoft reports to...well, a lot of stuff.

Anyway. When store managers move around (I work for a large retail organization) or their mgrs, etc, it's not uncommon for it to be weeks or longer before they can get their financials for their newly assigned post.

This is a Bad Thing.

The process by which the tool is updated evolved (you guessed it) in a rather organic fashion. As these things do. Folks did the best with what they knew and had. So we have a process by which emails are forwarded between 3-5 people, in no standard format, and get processed in a batch when there's time.

Where was I? Test data. Oh yeah.

I'm getting to the bit where I actually make the (7-10) changes necessary when someone moves, and I realize I have no data.

None. Nada. Zip. Zilch. Zeeero.

And developing a solution against a "test" database that's populated with 10 records...well...it's just not where I want to go.

So today was spent exporting a copy of (safe!) data from our production server and getting it imported into my little-ol test server.

What did I learn? I (re)learned just how valuable my "keep everthing INCLUDING the kitchen sink in subversion!" habit can be. Instead of being a multi-day process, I just hitched on over there, looked in a few previous project directories (I've worked with this app before) and before you know it, I had found scripts I'd written long (1.5 years or so) ago. Specifically to pull data from this app and load it into another system.

It still took a little tinkering, but in the end it was a couple hours vs. a couple days.

Life is good.

0 comments: