Thoughts on computers, companies, and the equally puzzling humans who interact with them
Wednesday, March 31, 2010
What they don't teach you about product life cycle management
But one thing that I was certainly not including in the project scope was any change to the underlying database structure. And it had to do less with how things were supposed to be done than the realities of client relations. See, when your management has stooped the the level of even trying to dodge paying the base subscription fee, you can't can't consider yourself a "trophy client" anymore. Which means no more meet-n-greet trips out to your facilities on our dime. No more starting projects before the work authorization is even signed. And certainly no more freebie work, whether to humor you or enhance the infrastructure for the long term. To belabor the point, replacing relationships with transactions has consequences--and some of them I have absolutely no say in.
And I hate-Hate-HATE that! It affects the people who have to use this software day in and day out. People who are too contientious (and, frankly, just too darned decent) to deserve anything but top-drawer service. You can't even make the argument that Accounting doesn't have a line-item for such things. Intangibles such as "goodwill" and "brand equity" are certainly a factor whenever businesses are purchased.
But apart from that, I'm annoyed to discover yet another deficiency in my programmer education, which neglected to mention the impact of the client relationship on the software life cycle. And I think it brings home the point that when you pretend that no value exists outside of the bottom line, you lose more than you could ever possibly gain.
Tuesday, March 30, 2010
Judging a product by its documentation
So I'm hoping for better luck with the documentation for haXe, which was brought to my attention by a pod-mate this morning. For the non-programmers, the premise of learning yet another language (haXe) gives more proverbial bang for the buck by allowing you to compile your source code into multiple languages: Flash/Flex, JavaScript, C++, etc. The documentation's just a small notch below "polished," which nevertheless puts it well into the upper percentiles of quality relative to that of its peers.
What really raised my eyebrows, however, was this little nugget from the project's home page:
1. Discover - Discover what haXe is about, how it works and how it could be useful to you."...how it could be useful to you": What a refreshing attitude when programming language comparisons so quickly seem to degenerate into spitting matches. No, I take that back. Spitting would be too adult. Make that "booger-flicking contests." Granted, I'm less than qualified to give an opinion on the completeness of haXe's features, the quality of its performance, or the reliability of its compiler(s). But I do know that it's a relief to be treated as a discriminating programmer, rather than another Kool-Aid-swilling acolyte. And I thought that deserved a shout-out.
Monday, March 29, 2010
Measuring metrics
A cynical thought from last week: In times of economic uncertainty, it should be technically impossible to go broke selling metrics. Namely because metrics bring back the sense (or, perhaps more likely, illusion) of knowledge, and with it the illusion of control. Problem is, to measure the metrics, you need more data, particularly contextual. And data tends to exist in inverse proportion to uncertainty, cancelling out the desperation driving the "need" for metrics.
Don't get me wrong: I'm not necessarily knocking all metrics, although I fervently believe that anyone who manages by them forfeits her/his title to "leadership." But I do view them with the proverbial jaundiced eye, and the foregoing is a good part of the reason.
Sunday, March 28, 2010
A thought on cross-pollination
Today was the annual meeting of the Wisconsin Honey Producers Association's Western District. The guest speaker from the WI Ag. Dept. asked for a show of hands to get a sense of how many "new beekeepers" were in attendance. Dennis's hand and mine went up--we're just starting our seventh year, which makes us n00bs by comparison to most folks there. But so did the hand of one of the "old timers." Somewhat in jest, certainly, but a recognition of the fundamental truth that if you aren't learning something every year, it's time to retire.
So it was a little depressing when, in conversation, one of the folks present complimented the vitality of the La Crosse Beekeepers and followed it by noting that the beekeepers in his area operate in a spirit of mutal distrust. I sincerely hope that he's just had the (temporary) misfortune of running into one or two bad specimens.
Better yet, I more fervently hope that he will realize it and launch a beekeeping group with those who aren't paranoid. Because beekeeping operations of any scale have many enemies: Pesticides, foreign honey dumped on the market, adulterated or purely fraudulent products, drought, antibiotic-resistant diseases, devastating parasites like the varroa mite, bears, and the incompletely-understood phenomenon of colony collapse disorder. Unless they're actively destroying your hives, equipment or customer relationships, fellow beekeepers emphatically do not rank within that list.
Fortunately, the awesome peeps in this area aren't shy about sharing what they've learned, what they're currently trying, and what they don't yet understand. As I semi-joked to my district-mate, getting some of us to shut up might just be the tricky part. Here we understand that, economically, "live and learn" takes the proverbial back seat to "learn and live." Reading books and trade journals is good, except that honeybees don't necessarily consider themselves obligated to conform to laboratory or academic expectations. And the bees themselves can only teach so much: It's not like they bring back gossip about how other hives and honey-houses are being managed. The only remaining option is to talk to the bees' humans, and thereby ditch the bogus mindset of playing a zero-sum game.
- - -
Full disclosure: No one saw fit to nominate any replacement officers, which effectively continues my regime as District Secretary. Tremble, all ye keyboards!
Saturday, March 27, 2010
Context does matter
It turns out that I was misinformed about the reading assignment due Tuesday. The public library does not have the book. Neither does the dead tree store out at the mall. But by the magic of the internet, I can have it near-instantly in digital format. Imperfect magic, but I won't bore you with my tribulations with Barnes & Noble online.
I'm too much a tightwad to spring for a Kindle or Nook just yet, so the only option is to download a reader application for the PC (there being no Linux distribution, thank you very little!). The software leaves any number of things to be desired: For instance, its window cannot be maximized (thereby allowing more text per horizontal line). In fact, if I try that on my dual-monitor work setup, the text disappears entirely.
But nowhere is the dead-tree mindset more glaringly obvious than in the way it clings to the paper page paradigm. Correct me if I'm wrong, but when you read multi-page text on a computer screen, your instinct is probably to scroll with the mouse-wheel to keep the text at or near a certain eye-level, no? In the reader, the scroll-wheel advances the pages, not the text. Thus I've repeatedly found myself having to backtrack (thereby losing my place and the flow of the content), simply because I've been hard-wired by MS Word, various web browsers, etc., to increment rather than iterate. That, in my line of work, is a glaring usability problem--one that I'm willing to bet is a direct heir to the hide-bound mind-set driving content packagers out of business.
I'll probably manage to train myself to wait until I'm done with the entire page before rolling the wheel. Until I've finished the content, anyway. But it strikes me as arrogant of Barnes & Noble to expect such auto-re-training. Not simply the arrogance of forcing a paper-and-ink paradigm on a digital context, but also that they are clearly not eating their own dog-food at the appropriate decision-making levels. If, for instance, TPS reports were only available to B&N upper management in their reader format, I strongly suspect that a scrolling feature would become de rigeur faster than you can say "wrong cover sheet."
Now, in its defense, the reader's ability to remember my place is appreciated. And--darn their eyes!--once you have a credit card on file w/the B&N website, it's waaaay too easy to click-and-add new titles. If the company manages to scrape together enough of a clue to offer a Linux reader, I could be in serious trouble. But given the experience so far, I'm not particularly worried.
Friday, March 26, 2010
Frivolous Friday, 03.26.2010: Elizabeth and Henry grow up
There's a flaw in our process, dear Liza, dear Liza,
There's a flaw in our process, dear Liza, a flaw!
So fix it, dear Henry, dear Henry, dear Henry, dear Henry,
So fix it, dear Henry, dear Henry, fix it,
But how shall I fix it, dear Liza, dear Liza,
But how shall I fix it, dear Liza, fix it?
Walk the floor, dear Henry, dear Henry, dear Henry,
Walk the floor, dear Henry, dear Henry, walk it.
But what should I look for, dear Liza, dear Liza,
But what should I look for, dear Liza, look for?
Small details, dear Henry, dear Henry, dear Henry,
Small details, dear Henry, dear Henry, details.
But how shall I note them, dear Liza, dear Liza,
But how shall I note them, dear Liza, note them?
With your smartphone, dear Henry, dear Henry, dear Henry,
With your smartphone, dear Henry, dear Henry, smartphone.
But how do I upload, dear Liza, dear Liza,
But how do I upload, dear Liza, upload?
By email, dear Henry, dear Henry, dear Henry,
By email, dear Henry, dear Henry, email.
My inbox will fill up, dear Liza, dear Liza,
My inbox will fill up, dear Liza, fill up!
Then filter, dear Henry, dear Henry, dear Henry,
Then filter, dear Henry, dear Henry, filter.
By what rules should I filter, dear Liza, dear Liza,
By what rules should I filter, dear Liza, filter?
Your objectives, dear Henry, dear Henry, dear Henry,
Your objectives, dear Henry, dear Henry, objectives.
But how do I set them, dear Liza, dear Liza,
But how do I set them, dear Liza, set them?
A task force, dear Henry, dear Henry, dear Henry,
A task force, dear Henry, dear Henry, task force!
But how can I guide them, dear Liza, dear Liza,
But how can I guide them, dear Liza, guide them?
A process, dear Henry, dear Henry, dear Henry,
A process, dear Henry, process.
But there's a flaw in our process, dear Liza, dear Liza,
There's a flaw in our process, dear Liza, a flaw!
. . .
Thursday, March 25, 2010
Living fossils
As further proof that having ideas carries their own punishment, it's put-up-or-shut-up time for me at work. Which means extracurricular meetings and being expected to come up with more ideas. And, oddly enough, reading assignments. Among them is the classic Dale Carnegie "How to Win Friends and Influence People." Somewhere I had the notion that the book was a product of the Fifties--a notion quickly dispelled by the introduction. (Interviews with the Thomas Edison? That didn't involve a Ouija board? Wait--what?") Actually, it was first published in 1936 when America was in the throes of The Great Depression, but bore the central message that ultimately made him wealthy, even by the standards of that bleak time.
After skimming the introduction and contributed piece by Lowell Thomas, I settled in for a slice of time capsule. But the version of the book I had had been updated so many times that it was something more like a living fossil. For a History nerd like myself, the anachronistic hodge-podge is somewhat jarring (reading it in PDF format didn't help, mind you!). And I was not amused to discover that business self-help books have apparently been following the same formula for much longer than I'd imagined--the "formula" being:
- Break the message down into simple, but interrelated semantic chunks.
- "Prove" your arguments with cherry-picked anecdotes.
- Give your anecdotes credibility by quoting famous people. Preferably dead ones.
All that being said, I'm still reading it. More, in fact, than the "assignment" requires. One, that's just how I roll. Two, I'm a sucker for stories. Three, the central tenet of "Get over yourself and pay attention to what's important to others" is a healthy counterbalance to me spouting my semi-informed opinions to the inter-tubes every day. And--though I shouldn't admit this--one of the anecdotes mentioned the town where I grew up (Eau Claire, WI), thus illustrating the book's sub-premise that you'll never lose by mining a prospect's background. Sigh: Sometimes self-awareness sucks. Like now.
Wednesday, March 24, 2010
Will work for stickers
Tuesday, March 23, 2010
When the sequel is better than the original
When the rumors leaked last week of Google shuttering its Chinese branch, I was pleased, naturally. But, to a certain extent, it had the feel of a tactical (maybe even strategic) retreat from a no-win situation. PR-wise, it was a win--after all, who's going to side with a government that will send tanks against demonstrators?
But it's another week, and Google taking on the ridiculous nanny-state censorship of Australia is something I consider a legitimate exercise in speaking truth to power, and applaud it accordingly. Because the most fundamental part of that "truth" is that when allegedly "democratic" governments impose sweeping restrictions on internet content, it leaves zero room for condemning real oppression. It's no different, really, from Western governments insisting on "back doors" be built into protocols to "intercept terrorist messages" or installing thousands of video cameras in the name of "reducing crime." Purity of intent has zero relevance, because the proverbial kitty's out of the burlap at that point: Snooping into the doings of the average citizen has been justified. And--let's be honest--even The Land of the Free and Home of the Brave has produced the likes of Joseph McCarthy, J. Edgar Hoover, and Richard Nixon's thugs. Can you just imagine what any one of them would have done with Carnivore at his fingertips? Pretty scary, hey?
Like Dennis says, if you want to wear the white hat, you'd better make sure it fits. And so I can only give major props to Google for calling out the democratically-elected Australian government for adopting the tactics of a totalitarian regime.
- - - - -
Speaking of transparency, something I should have thought to note with previous posts mentioning Google is the disclaimer that my husband & I jointly own stock in the company. And, if the market--as is its wont--punishes The Big G for doing the right thing, we may well snap up more.
Monday, March 22, 2010
False dichotomies are the most dangerous
Believe it or not, this isn't another slam on Adobe. Ars Technica saw fit to publish something that smells awfully like a press release today: Adobe to unify ColdFusion, Flex, Flash with FlashBuilder4. (My inglorious 13-month "career" as a journalist saw me cleaning up any number of these things--enough to flatter myself that I know one when I see it.)
Anyhoo, one sentence in particular darned near drove me up the half-wall of my cubicle:
Flash Builder 4 includes support for Adobe's still beta Flash Catalyst rapid UI design tool, which, along with Flex 4, will enable designers to work on the front-end independently of back-end development.
When will managers stop buying this snake oil?! Not the product itself, but the notion that you can put the Berlin Wall between designers and developers. Ever. In fact, I posit to my gentle reader that management not only robs its own pocket in paying for such "solutions," but does its end-product incalculable harm by believing that it can structure its process around this alleged "independence" of function.
Understand two things: Firstly, I barely need both hands to count number of graphic artist/designers with whom I've collaborated as a developer--i.e. the-plural-of-anecdote-is-not-data. Secondly, I'm painting with a double-wide brush in characterizing visual designers as right-brain and programmers as left-brain. That being said, fantasizing that UI people and backend people speak the same language (even when working side-by-side) is twenty-four-caret folly--as it is when you mix any pair of complimentary disciplines. Now, the skeptic could make the case, "Eh, so you're gonna lose some nuance. Big deal. That's what review meetings are for--to patch that up." Except that, even in the best-case scenario, a minimum of two review meetings are guaranteed for every "chunk"--however that's defined--of work to be done. How many meetings have you attended where everyone's come out on exactly the same page? Yeah. Me, I'm thinkin' that two is ridiculously optimistic.
The bottom line is that the front-end--meaning the part that users see--has to know what the back-end (the database and the server-side code) is expecting at all times. And vice-versa. Bad juju happens otherwise. Moreover, it greatly streamlines the communication between front-end and back-end when the front-end proofreads/validates data before pitching it over a network connection. Meaning that the UI requires "invisible" code that checks things as such as:
- Have all the required fields been filled out?
- Does this credit card number have the right number of digits?
- Does the expiration date of the credit card fall on or after today's date?
- Did someone try to enter a bogus date like February 29, 2010?
- Does the email address contain an "@" and a dot-something-or-other?
- Are the dollar amounts positive or negative?
- Does the new password have at least six characters and a combination of letters (upper- and lower-case) and numbers/symbols?
- Is a malicious user attempting a SQL injection hack that could be nipped in the proverbial bud?
And that's not even accounting for more esoteric logic specific to the application/organization itself. Generally speaking, you need a programmer's hands in the front-end code to enforce whatever "rules" are dictated by the nature of the data being collected/processed. For that reason (even more than the realities of human interaction), I think that companies peddling the notion of "independent" design and development sorely need to be laughed out of business. And programmers & designers who work for the idiots who buy into the false designer-developer dichotomy should brush up their resumes and find a sane organization to work for.
Sunday, March 21, 2010
Implicit code needs explicit documentation
You'd think that I'd have learned from seeing perfectly valid code subverted time and again by folder/file/database permissions that weren't what I thought they should be. But that's not the only thing that can produce huge disparities between code that seems to be executing and the reality that comes out on the other side.
In today's case, that had to do with the fact that an order submitted into a system was listed as being paid by Visa, regardless of the payment method actually selected on the web page. What was actually going on under the proverbial hood was that the database table was expecting one of a fixed list of specific values (known as an ENUM data type) for one of its columns when the new record was inserted. But the code in question, as it turns out, wasn't specifying a value, and because the table was set up not to take a NULL value for that field, the database--logically, to my way of thinking--automatically picked the first value in the list and ran with that.
Luckily for me, I've already been bitten by auto-magical behavior from other databases, so I had the gut feeling that something similar was afoot. One peep at the database setup and another at the database documentation smoked out the "gremlin." But I wonder how much time a more novice programmer than I could have wasted on debugging--typically a clumsy process in PHP, more so this highly modularized PHP code-base. A little internal documentation would have gone a long way in that case. Even in my case, it would have solved the mystery that much sooner.
Ultimately, documentation is an investment: Spend a little time up front and maybe a little incremental time when code's updated, and the dividend comes every time someone has to make a pass through the code. Which, in my experience, happens more often than when than code's actually changed. Quite typically, the person reading the code just needs to understand what's happening upstream or downstream of what s/he's working on. That alone is enough to insist that any "implicit" code execution--i.e. those auto-magical side effects--be specifically documented. If you don't think that your programmers have time for that, than you'd better allow plenty of time for programmers to scratch their heads when unexpected data shows up in the database.
Saturday, March 20, 2010
How to depress a geek
Friday, March 19, 2010
Frivolous Friday, 03.19.2010: Programmer bar jokes
A pre-1901 UNIX timestamp and a post-2038 UNIX timestamp walk into a bar and ask, “Has anybody seen our dates?”
A foo() walks into a bar()...
A gang of signed integers walks into a bar full of unsigned integers. After a minute, the bartender notices the subdued vibe in the place and wonders, “Whoa, where did all this negativity come from?”
An HTML FRAMESET walks into a bar and orders a beer. The bartender grabs a bottle of the most watery “lite” brew in the place, shakes it vigorously, pours the foam into a glass, and hands the glass to the FRAMESET, who disgustedly asks what the bartender means by that. “Duh, you’re a FRAMESET,” says the bartender. “You’re only supposed to have a HEAD and no BODY.”
A recursive function walks into a bar and asks to use the phone. “Local call?” asks the bartender. “Of course,” says the function...and dials its own cellphone number.
A group of sorting algorithms walks into a bar. The bartender hands them menus, and returns after they’ve pored over them for minutes on end. “Well?” he demands. The rest of the algorithms point at the bubble sort: “Sorry, he’s always slower at ordering than we are.”
A byte walks into a bar. “Are you ill?” asks the bartender. “No,” says the byte, “just feeling a bit off.”
Eight bytes walk into a bar. “Can I do anything for you?” asks the bartender. “Yeah,” reply the bytes. “Make us a double.”
Bill Gates, Steve Jobs and Linus Torvalds walk into a bar. “What is this?” demands the bartender, “A joke?”
Thursday, March 18, 2010
Sign of the times
Welcome to the era of the smartphone--not smart enough, alas, to prevent its owner from jay-walking (and at a leisurely pace). But smart enough to keep her from any real danger of being run over.
Wednesday, March 17, 2010
Shiny *and* a game-changer? I can hope...
Both species of tools are good things--very few professional programmers would argue that. The deal-breaker, though, is that most of them have to be installed on (as opposed to just copied to) a server, preferably an off-site server (or one whose data is backed up offsite). Your typical Tucows/GoDaddy/Dreamhost-type web hosting company--quite understandably--does not respond well to Jane Customer asking them to install any old software on servers used by hundreds, if not thousands of customers.
However, the Zend PHP engine and MySQL databases typically come standard with any hosting package, which is what could make this concept a game-changer for the folks who don't do quite enough moonlighting to justify anything beyond McHosting. If it means source control with more discipline than Dropbox and fewer build steps than home-brew script files, that raises the bar for everyone--never a bad thing.
Again, I haven't done so much as download the software yet, but I'm quite excited by the concept. So, if you'll excuse me, I need to sneak in a little time for what I'm supposed to be doing, so I can play with the new toy and hopefully give my old "roomie" a little QA feedback in the process.
Tuesday, March 16, 2010
The earlier "no" is the kinder "no"
Monday, March 15, 2010
"Upgrading" information
The office bookshelf is located at the back of the "pod" I share with four other folks. Being the bibliophile, I'd say that this is as it should be, except it's really a graveyard for programming books that people (myself among the guilty) are too cheap to just throw away.
Normally, my Frugal Inner Midwesterner would consider a Kindle an extravagance ("What kind of book needs batteries?" it scoffs). But using an e-reader for technical books is one application that makes perfect sense to me. It's not just avoiding the waste of paper. The same obsolescence of technical information could provide a renewing revenue stream for publishers. You, the consumer, pay full price for your first edition of the book, then an incremental cost for updates when you upgrade the software in question and need upgraded information. I can even imagine a scenario that gives you a choice between having multiple versions available (should you deem it worth the disk space) and a seamless upgrade to 100% new content.
In other words, the process of publishing software documentation takes a few steps in the direction of publishing the software itself. Which is ironic, given that (IIRC) the makers of the first serious PC business application (VisiCalc) were paid along the lines of a book-publishing model, mainly because no one knew any better at the time. That didn't work out so well, but that's not to say that bringing the two models closer in this case would necessarily be a bad idea.
Unfortunately, I very much doubt that book publishers (with notable exceptions like O'Reilly Press) would view it in that light. Which is sad, because this solution, to my mind, is pure upside. Most especially for the trees.
Sunday, March 14, 2010
Worse than broken
Well, that's frustrating: No error message in the web server log files to tell me why my sample PDF is nearly blank when it's generated by the test website I set up. (Fortunately, it works just fine on the live system--small mercies an' all...) But, in writing software, there is, in fact, a state that's actually worse than just plain "broken." And that's "broken with nothing to tell you why." One of my former co-workers claimed that the absolute worst is when software works (when it shouldn't) and you have absolutely no idea why. He has a valid point. But tonight, this is plenty of "worse" to deal with, thank you very much.
Saturday, March 13, 2010
Cherry-picking technology
Then I realized that it wasn't just outrage over companies like Nokia and Google going over to The Dark Side. It's also the ridiculous notions that companies are humoring tyrannical governments (or even theoretically democratic ones like New Zealand) in their delusion that they can cherry-pick technology at will. Frankly, it's as stupid as people who use the communiations smorgasbord of the internet as an echo chamber to circulate email and visit websites that reinforce their pet conspiracy theories or find (cough!) "evidence" to support quack notions.
And the bottom line is that there's no having technology both ways. The only real choice is between having technology at all or living in the Dark Ages. Not to go all Godwin, but the argument that following local laws absolved a corporation from charges of collaboration didn't hang in the last century. And if, in future decades, the dissidents (or their families) sue the shorts off the Nokias and Ciscos who dobbed them in to their soi-dissant "governments," I fervently hope that there is no mercy in the settlements. Live by the greenback, die by the greenback, you craven slimeballs.
But if the next global growth industry is technology that allows people to circumvent the snooping of their governments--no matter how democratic--so much the better.
Friday, March 12, 2010
Frivolous Friday, 03.12.2010: A new web comic
So jump back to the beginning and enjoy. Because, after all, any web comic that contains the sentence "It looks like a Rube Goldberg machine as drawn by Escher on LSD" can't be all bad--am I right?
Thursday, March 11, 2010
Shut up and be awesome
He showed me the results of a significant breakthrough he'd made today. "You're awesome," I said in appreciation of his doggedness. Alas, he's not the kind of guy who takes praise well, and immediately started to verbally sidle away from it. "Oh, just shut up and be awesome!" I said, half-laughing with exasperation at this quirk of his.
Come to think of it, it's not a bad antidote to the SXSWi hype this week, with all the launch parties of near-identical apps (fueled by booth babes and free booze). Maybe it's just me, but I'm starting to feel that fin de siecle malaise born of the sense of too many hipster software companies mistaking the zeitgeist (read, narcissism with GPS) for The Next Big Thing. Which, if my gut is correct, means that deep down the hipsters know it too, and much of the noise is them talking themselves out of that.
Or maybe I'm just older and crankier than usual today. That being said, I'd still appreciate some shut-up-and-be-awesome from the zeitgeist. kthxbi.
Wednesday, March 10, 2010
Software tester recruiting: Weer doin it rong
La Crosse isn't large enough that the schools can viably offer programs/certificates in software quality assurance, so screening testers is a bit more challenging. And, sadly, it doesn't seem to be the kind of vocation that kindergarteners aspire to have when they grow up. Rather like taxidermy. And beekeeping. (NQSFW--one effenheimer involved)
But maybe all the trade needs to bring more of the brighter lights to it is the cachet of destroying things--but in a disciplined way. Maybe something on the order of the controlled demolition teams. Or the old adage "Military engineers build bombs; civil engineers build targets." That sort of thing.
The attitude does matter, I think. Case in point: For my very first programming job, I came on board very shortly after the rollout of a new order processing system (a.k.a. "The GUI"), which was a fiasco from the get-go. I wasn't allowed to touch the code, b/c it had been outsourced, and we were making the vendor deal with it. The testing pattern involved me making a preliminary check before installing "The GUI" on the PC of one of the customer service reps, one who was none too amused by its endless deficiencies. But once she saw it as a challenge to "break the GUI," and started taking a certain--completely understandable--joy in it, we made a fair amount of progress. Initially, "the GUI" colored her opinion of me, but once I started addressing her as "Lady M--- GUI-breaker" or "Lady M---, She Before Whom All GUIs Tremble," (with the appropriate courtly bow) we got along quite well--to the point where right before I left on my last day, she called me to gleefully sing, "I broke the GU-I!!!" like a little kid.
And so I think that the Software QA trade needs to emphasize the blowing up aspect of things. Contrary to the notion of what QA people are supposed to be like (meaning, methodical as accountants), you don't necessarily want purely linear thinkers. Why? Because users aren't necessarily linear thinkers. I know that users have occassionally done things with my code that has buried the needle on my "Illogical" meter. For that reason, I think that you need a chaotic subtext to the personality. So why not market the job to the Crazy Harry that lurks inside the mild-mannered software tester?
- - - - -
So. About that hiatus... The cough and congestion I whined about last Thursday blew up into something far more deblilitating. I did make it into work yesterday, but it took pretty much everything for the day. As if I need another reminder that I don't appreciate health and the absence of pain nearly enough.
Thursday, March 4, 2010
Can you solve a problem in shifts?
I'm not knocking outsourcing; it certainly has its place. But the "globalized workforce" notion of round-the-clock teams handing work off between shifts like it's a baton in a relay is--in my less-than-humble opinion--twenty-four-caret hogwash. Bottom line: You're just not going to get a hive-mind level of collaboration in that scenario. If you want an illustration, try this exercise:
- Think of some little feature you wish that your computer, smart phone or favorite gadget could have but doesn't.
- Write down what it should do. In excruciating detail so that even the proverbial dullest knife in the drawer can't possibly misunderstand you.
- Add mockups of screenshots.
- Flow-chart of every possible combination of clicking, dragging, minimizing, maximizing, scrolling, etc. to make sure that you don't have unintended consequences like data loss.
- Have that documentation translated into at least two different languages.
- Make sure that your contractors understand exactly what it is you're shooting for in all that documentation.
- Give the contractors money, sit back and wait for the final product.
Alternatively, you could specify less detail up front, at the cost of making time for any number of review meetings--particularly early in the project--and a certain amount of "slop" in the schedule and budget as things are re-worked and reviewed yet again. Your call.
In all honesty, I won't deny that it just might work for a discrete, highly targeted set of features. Good on you if it does. Seriously. But seeing how much of a communication gap there can be between bright people who have worked together for years, natively speaking the same language...call me skeptical for the larger projects. Even accounting for a certain protectionist bias on my part. Maybe I'm not giving collaboration tools sufficient credit, but I just can't see any substitute for having all the right peeps in the same place at the same time when it counts.
Wednesday, March 3, 2010
Meme hangover
Today I had to dig out a bit of legacy DLL code written in Visual Basic 6. I actually didn't mind the language itself, but boy-oh-boy, do I ever have a problem with its compiler--specifically its little quirk of not unlocking the compiled code file after it's done. To date, my co-workers and I have found but one solution: Reboot. There's no euphemizing: That sucks swamp-water. Specifically, a swamp sandwiched between a swine-farm and a Superfund site.
But in this case, there's a workaround of sorts. Visual Basic 6 has a web language counterpart, VBScript. Think of them as two half-siblings who take after their common parent in looks but aren't as similar as they might be. But the resemblance is close enough that I can copy the new VB6 function into a web page, make a few tactical replacements, cheese out some wrapper HTML code to validate output, and testing is only an F5 key-press away (with maybe a right-click-and-pick-"View Source" tagging behind every few reloads) . When I'm pretty confident that the code's doing what I want it to, it's just a matter of reversing the replacements, and pasting it back into the DLL source.
But the point is that it's ridiculous that I have to do that at all. Mercifully, it's not like VB6 and I are the BFFs we were eight years ago. (Okay, so maybe we weren't BFFs, even Back In The Day. But still...)
Tuesday, March 2, 2010
Shout-out
Monday, March 1, 2010
Matching solvers to problems
But here's the rub: Not all problems are created equal. When the "problem" is rescuing people from their own sloppiness/laziness, pffffttt: fuggeddabouddit. Give it to the "flight" crowd and don't be silly enough to expect enthusiasm. When, on the other hand, the problem approaches the software equivalent of a double-dog-dare, that's a different matter entirely.
In other words, if you want progress, know your "solvers" and choose your "problems" well.