Thoughts on computers, companies, and the equally puzzling humans who interact with them
Wednesday, July 1, 2015
Monday, June 29, 2015
Half-glassing it
Executive overview for folks who don't work in software: There's a stage in an application's life known as the "Beta." It has nothing to do with fish--not enough "T"s, for starters. Basically, it means that the developers--or at least their managers--think that the code is reliable and useful enough to let outsiders look at it. "Beta" used to come in two flavours:
Anyhoo. I'm the developer for an app. scheduled to go into an invitation-only Beta phase within a few weeks. I'm stiffening my spine by re-reading Eric Ries's The Lean Startup for, like, the 2nd or 3rd time (I forget which). Because, by my usual standards, the code (and infrastructure) quite honestly suck. But by "lean" startup standards, that's absolutely OK. In fact, it's considered optimal.
The "lean" methodology takes its cue from the "lean" manufacturing processes that were all the rage a couple decades ago. And while my view of management-by-fad is not significantly different from my view of kings and queens of centuries past (or not so past) who kept pet astrologers, "lean" management at least admits that it's a calculated--yea, even disciplined--response to certain types of uncertainty.
According to "lean" doctrine, the holy grail of the startup is the "MVP," or "Minimum Viable Product." Interestingly, MVPs can originate from established companies (that haven't ossified to the point of knowing nothing beyond milking the existing product-line or desperately scrabbling for a hold on the trailer-hitch of the the latest-greatest bandwagon). The central idea is that you focus your efforts on the single thing that scratches an itch no one else has been able to reach...at least for your target demographic. Sure, not everyone itches in the same place--heck, some folks really only need a vigorous massage, when it comes right down to it. But the early adopters will give you the revenue and insights you need to go mainstream.
The problem is that MVPs are UGH-lee. Features that should be no-brainers are missing. And features are vastly outnumbered by bugs. Performance is slow...assuming the whole thing doesn't crash altogether. Error-logging is practically non-existent. Cut corners and hard-coded "special cases" are the norm rather than the exception. Customisation? That's done by directly editing the database. And automated build-processes? Puh-leeze--getting a new version out the door would make Rube Goldberg weep tears of blood.
That's excruciating to the software developers who have to hold their noses, grit their teeth, and shove the dewy-eyed Beta version out into the cold, cruel world. There's no post-release euphoria, because the pre-release sprint is merely the warm-up for the iron-keyboard marathon of whack-a-mole bug-fixing and the unholy offspring of Tetris and Calvinball that determines the next set of features.
Example: One of the enthusiastic early adopters wants this one extra feature that will put them eighteen months ahead of their closest competition. And--get this!--they're willing to pay for it. Woo-hoo! Problem is, their pet feature so whacked-out that it will change the overall architecture of the app. Worse, absolutely no one else has asked for anything close to this. Ever. So...do you shut up and take their money? Or do you focus your already-overstretched resources on making the app. more appealing to the mainstream? That sort of thing. Fun times. And just another day in Beta-land. Ah, the sexy glamour of software development...
But subjecting my code (yet again) to the rigours of the Real World(TM) makes me realise that, at some point in its life, code exists in a quantum state. There's the optimism (i.e. glass half full) that it will be "good enough" to add value for its early adopters...and have enough time/resources to evolve for a wider ecosystem. There's also the cringing awareness (i.e. glass half empty) of just how much duct tape tenuously holds together too few features...that all have your name (and reputation) on them.
Typically, that "quantum" state isn't long-lived. Which is a mercy, because it's rather uncomfortable. If I were Schroedinger's cat, I'd be gnawing my way out of the box by now.
- Limited Beta, wherein hand-picked outsiders were allowed access to the application. (Read: Friends/relatives/ex-coworkers were nagged into taking it out for a drive.)
- Open Beta, wherein any interested party had access to the app. with no guarantees that it wouldn't crash their computers and/or eat their pets. (Yay, Slashdotters!)
Anyhoo. I'm the developer for an app. scheduled to go into an invitation-only Beta phase within a few weeks. I'm stiffening my spine by re-reading Eric Ries's The Lean Startup for, like, the 2nd or 3rd time (I forget which). Because, by my usual standards, the code (and infrastructure) quite honestly suck. But by "lean" startup standards, that's absolutely OK. In fact, it's considered optimal.
The "lean" methodology takes its cue from the "lean" manufacturing processes that were all the rage a couple decades ago. And while my view of management-by-fad is not significantly different from my view of kings and queens of centuries past (or not so past) who kept pet astrologers, "lean" management at least admits that it's a calculated--yea, even disciplined--response to certain types of uncertainty.
According to "lean" doctrine, the holy grail of the startup is the "MVP," or "Minimum Viable Product." Interestingly, MVPs can originate from established companies (that haven't ossified to the point of knowing nothing beyond milking the existing product-line or desperately scrabbling for a hold on the trailer-hitch of the the latest-greatest bandwagon). The central idea is that you focus your efforts on the single thing that scratches an itch no one else has been able to reach...at least for your target demographic. Sure, not everyone itches in the same place--heck, some folks really only need a vigorous massage, when it comes right down to it. But the early adopters will give you the revenue and insights you need to go mainstream.
The problem is that MVPs are UGH-lee. Features that should be no-brainers are missing. And features are vastly outnumbered by bugs. Performance is slow...assuming the whole thing doesn't crash altogether. Error-logging is practically non-existent. Cut corners and hard-coded "special cases" are the norm rather than the exception. Customisation? That's done by directly editing the database. And automated build-processes? Puh-leeze--getting a new version out the door would make Rube Goldberg weep tears of blood.
That's excruciating to the software developers who have to hold their noses, grit their teeth, and shove the dewy-eyed Beta version out into the cold, cruel world. There's no post-release euphoria, because the pre-release sprint is merely the warm-up for the iron-keyboard marathon of whack-a-mole bug-fixing and the unholy offspring of Tetris and Calvinball that determines the next set of features.
Example: One of the enthusiastic early adopters wants this one extra feature that will put them eighteen months ahead of their closest competition. And--get this!--they're willing to pay for it. Woo-hoo! Problem is, their pet feature so whacked-out that it will change the overall architecture of the app. Worse, absolutely no one else has asked for anything close to this. Ever. So...do you shut up and take their money? Or do you focus your already-overstretched resources on making the app. more appealing to the mainstream? That sort of thing. Fun times. And just another day in Beta-land. Ah, the sexy glamour of software development...
But subjecting my code (yet again) to the rigours of the Real World(TM) makes me realise that, at some point in its life, code exists in a quantum state. There's the optimism (i.e. glass half full) that it will be "good enough" to add value for its early adopters...and have enough time/resources to evolve for a wider ecosystem. There's also the cringing awareness (i.e. glass half empty) of just how much duct tape tenuously holds together too few features...that all have your name (and reputation) on them.
Typically, that "quantum" state isn't long-lived. Which is a mercy, because it's rather uncomfortable. If I were Schroedinger's cat, I'd be gnawing my way out of the box by now.
Thursday, June 25, 2015
Debt and currency in the "favour economy"
I owed a former colleague a couple of favours--one of them definitely outsized--dating from more than a decade back. Fortunately, (most) favours don't accrue interest, but when the opportunity came this week to pay one of them back, I was more than pleased.
Alas, "repayment" involved the squirmy discomfort of having to give a thumbs-down review of an interviewee. (I don't like to see anyone stay unemployed, but...daaaaaaaang...) Worse, I'm almost certain that the review was ignored as soon as it was out of my mouth. Which means that a few months (weeks?) hence I'll have to put on my "adult professional" hat and keep the "Neenerneener--told you so!" to myself.
That's when I realised how different "paying it back" can be from "paying it forward." Namely, there's significantly more leeway with the latter. Often the timing and even the coin itself are left to the debtor. That's more than likely why paying it back feels so much more legitimate.
Don't get me wrong--I'm thrilled to (finally!) scratch one off the accounts. I'm never comfortable with debt, monetary or otherwise. Besides, having something to offer can be pretty darned validating. Pretty much any tight-knit community (business, recreational, or otherwise), runs on trust--on which the exchange of favours is of course predicated.
But I suppose the whole uncomfortable experience provides an extra incentive to up my game on the "paying it forward" half of the equation, right?
Alas, "repayment" involved the squirmy discomfort of having to give a thumbs-down review of an interviewee. (I don't like to see anyone stay unemployed, but...daaaaaaaang...) Worse, I'm almost certain that the review was ignored as soon as it was out of my mouth. Which means that a few months (weeks?) hence I'll have to put on my "adult professional" hat and keep the "Neenerneener--told you so!" to myself.
That's when I realised how different "paying it back" can be from "paying it forward." Namely, there's significantly more leeway with the latter. Often the timing and even the coin itself are left to the debtor. That's more than likely why paying it back feels so much more legitimate.
Don't get me wrong--I'm thrilled to (finally!) scratch one off the accounts. I'm never comfortable with debt, monetary or otherwise. Besides, having something to offer can be pretty darned validating. Pretty much any tight-knit community (business, recreational, or otherwise), runs on trust--on which the exchange of favours is of course predicated.
But I suppose the whole uncomfortable experience provides an extra incentive to up my game on the "paying it forward" half of the equation, right?
Tuesday, June 23, 2015
What's wrong with this picture?
Okay, so it’s a dirty little secret that an application’s Admin. pages might not be as polished or as bullet-proofed or as well-documented as those made for the general population. Why? Because Admins are assumed to be more familiar with the interface from day-to-day usage. But seriously, this is just phoned in. "1 to 32" characters when a minimum of 3 different types is required? Bad opensrs.net!
Wednesday, June 17, 2015
The second-best thing #navelgazing
In the past, I've joked that programmers actually work for the fifteen-minute high we get after squishing a software gremlin. That's a teeeeeeensy bit of an exaggeration. The sober truth is that we work to pay the bills, pay for our toys AND for the fifteen minute high we get after squishing a software gremlin. Because gremlin-squishing is The Best, yo.
There's a secondary high, though. It's the resigned feeling we programmers get about having to add tedious "plumbing"-type code to the current project, which is subsequently countermanded by the euphoria that comes from cracking open the pertinent file, class, function, stored procedure or what-have-you and realising that we had already thought of that particular situation or edge-case*. Woo-hoo! No tedious plumbing after all**.
I really could have used Programmer High #1 today [grumblegrumblegrumble...jQuery UI...grumblegrumblegrumble], but I'm perfectly happy to settle for Programmer High #2.
- - - - -
* Because we don't necessarily remember writing that code (even if it was, like, two weeks ago), we pat ourself on the back for our future-proofing prescience. The more likely explanation, however, is that there was nothing particularly interesting in our social media feeds at that point, so we just got stuck in and took care of it just because we were already in The Zone by that point. Which makes a perfectly good excuse to check our social media feeds now, because we're ahead of the game, right?
** In software, there's something called "technical debt," which translates to short-cuts, kludges, and shameless rationalisation (e.g. "We'll never have enough traffic to worry about performance bottlenecks.") that come back to bite. Typically at the least convenient time. As with public debt, it largely originates from wishful thinking at the top and/or the inability/unwillingness at the bottom to say "Nope. That's never going to work under the current budget and deadline."
There's a secondary high, though. It's the resigned feeling we programmers get about having to add tedious "plumbing"-type code to the current project, which is subsequently countermanded by the euphoria that comes from cracking open the pertinent file, class, function, stored procedure or what-have-you and realising that we had already thought of that particular situation or edge-case*. Woo-hoo! No tedious plumbing after all**.
I really could have used Programmer High #1 today [grumblegrumblegrumble...jQuery UI...grumblegrumblegrumble], but I'm perfectly happy to settle for Programmer High #2.
- - - - -
* Because we don't necessarily remember writing that code (even if it was, like, two weeks ago), we pat ourself on the back for our future-proofing prescience. The more likely explanation, however, is that there was nothing particularly interesting in our social media feeds at that point, so we just got stuck in and took care of it just because we were already in The Zone by that point. Which makes a perfectly good excuse to check our social media feeds now, because we're ahead of the game, right?
** In software, there's something called "technical debt," which translates to short-cuts, kludges, and shameless rationalisation (e.g. "We'll never have enough traffic to worry about performance bottlenecks.") that come back to bite. Typically at the least convenient time. As with public debt, it largely originates from wishful thinking at the top and/or the inability/unwillingness at the bottom to say "Nope. That's never going to work under the current budget and deadline."
Monday, June 15, 2015
One thing (a rant)
This will likely come off as whining, but one thing about being self-employed that's taken some getting-used-to is taxes. Not the actual check-writing part so much*. Just the fact that I have to go through all the rigamarole more than once a year now. And, sadly, I'm even pretty diligent about record-keeping, so it's not like it's a desperate, chaotic scramble to pull all the info. together.
But even irritation over busywork pales in comparison to the hypocrisy of our (nominally) elected (so-called) leaders. I'd take politicians rather more seriously if they'd stop pretending that they're geared for any business smaller than a global giga-corporation.
Sure, if you employ other people, regular filings are pretty much required to keep everything on the up-and-up. Fair enough. Heck, I would object much less to even quarterly filings if they didn't expect psychic powers. Having to compute quarterly revenues/expenses fifteen to sixteen days before the quarter is even over is what burns my bacon.
The point is that a freelancer doesn't get to the point of being able to hire other people without slack. Slack is somewhat easier to come by without having to drop everything for inane paperwork four times a year, spank you very much.
So, yeah. Politicians--if you can spare time from your punishing treadmill of ribbon-cutting and baby-kissing and back-slapping and deal-making and poll-watching--howsabout you wrap your brains around the simple notion that businesses generally start small?
Garage small.
Spare bedroom small.
Dorm room small.
Look. I know you want to take credit for the next Irving or Radian6 or Clarity or whatever. But it's more likely to happen if I'm not wasting hours of my otherwise billable time with redundant paperwork. And especially not when Freddy and Ottawa are taking their cut of my revenue before it's even in the bank.
You say you want a business-oriented environment and jobs, Jobs, JOBS. I say put up or shut up. Get just a teeeeensy bit real (for once) about what it's like here in solopreneur land. You want to do one thing to bootstrap the next big thing? Let solopreneurs file once a year on April 30th and let them take care of business the other ~364.242 days of the year. Then maybe--just maybe--I might not roll my eyes at your platitudes and bandwagon-jumping quite so much, m'kay?
- - - - -
* Although the cost of banking is another (cough!) "privilege" (cough!) of being in business for yourself that no one warns you about. Going by the price, the paperstock of business cheques is made exclusively from wood culled from ancient elven forests before being artisanally hand-pulped by craftspeople whose oral history does not even know of a time before they were wood-pulpers. Then the printing-plate for each cheque is hand-engraved by printers selectively bred from the direct descendants both Johannes Gutenberg and Aldus Manutius before being inked with Soviet-stockpiled 1970s-vintage IBM Selectric typewriter ribbons reconstituted by unicorn tears. (Sadly, that's the most rational explanation I have for the cost differential.)
But even irritation over busywork pales in comparison to the hypocrisy of our (nominally) elected (so-called) leaders. I'd take politicians rather more seriously if they'd stop pretending that they're geared for any business smaller than a global giga-corporation.
Sure, if you employ other people, regular filings are pretty much required to keep everything on the up-and-up. Fair enough. Heck, I would object much less to even quarterly filings if they didn't expect psychic powers. Having to compute quarterly revenues/expenses fifteen to sixteen days before the quarter is even over is what burns my bacon.
The point is that a freelancer doesn't get to the point of being able to hire other people without slack. Slack is somewhat easier to come by without having to drop everything for inane paperwork four times a year, spank you very much.
So, yeah. Politicians--if you can spare time from your punishing treadmill of ribbon-cutting and baby-kissing and back-slapping and deal-making and poll-watching--howsabout you wrap your brains around the simple notion that businesses generally start small?
Garage small.
Spare bedroom small.
Dorm room small.
Look. I know you want to take credit for the next Irving or Radian6 or Clarity or whatever. But it's more likely to happen if I'm not wasting hours of my otherwise billable time with redundant paperwork. And especially not when Freddy and Ottawa are taking their cut of my revenue before it's even in the bank.
You say you want a business-oriented environment and jobs, Jobs, JOBS. I say put up or shut up. Get just a teeeeensy bit real (for once) about what it's like here in solopreneur land. You want to do one thing to bootstrap the next big thing? Let solopreneurs file once a year on April 30th and let them take care of business the other ~364.242 days of the year. Then maybe--just maybe--I might not roll my eyes at your platitudes and bandwagon-jumping quite so much, m'kay?
- - - - -
* Although the cost of banking is another (cough!) "privilege" (cough!) of being in business for yourself that no one warns you about. Going by the price, the paperstock of business cheques is made exclusively from wood culled from ancient elven forests before being artisanally hand-pulped by craftspeople whose oral history does not even know of a time before they were wood-pulpers. Then the printing-plate for each cheque is hand-engraved by printers selectively bred from the direct descendants both Johannes Gutenberg and Aldus Manutius before being inked with Soviet-stockpiled 1970s-vintage IBM Selectric typewriter ribbons reconstituted by unicorn tears. (Sadly, that's the most rational explanation I have for the cost differential.)
Wednesday, June 10, 2015
A (wrong) turn of phrase
Today, I was about an hour ahead of schedule for a meeting. I normally can't make enough excuses to visit Moncton's Cafe C'est la Vie, so it's not like I was constantly checking my watch. I'd packed both a tablet loaded with books as well as a treeware one, but instead I ended up mostly ignoring both in favour of the raver conversation going down a few tables away.
The tribulations (or "pain-points," in Marketingese) of being a rave-going millennial actually spawned a business idea. Mind you, it's not the kind that's going to make me dump everything to start hacking out code and recruiting co-founders who grok sales and CSS and mobile and the problem domain, respectively. But it's one that's at least worth exercising my Google-fu. Just not tonight--it's already late and, besides, the current client always takes priority.
But the experience made me question the wisdom of the English cliché, "the idea came to me." Maybe I'm the anomaly here, but generally I have to go to the idea. I just know that this is not an insight I would have had chez fivechimera. 'Nuff said.
The tribulations (or "pain-points," in Marketingese) of being a rave-going millennial actually spawned a business idea. Mind you, it's not the kind that's going to make me dump everything to start hacking out code and recruiting co-founders who grok sales and CSS and mobile and the problem domain, respectively. But it's one that's at least worth exercising my Google-fu. Just not tonight--it's already late and, besides, the current client always takes priority.
But the experience made me question the wisdom of the English cliché, "the idea came to me." Maybe I'm the anomaly here, but generally I have to go to the idea. I just know that this is not an insight I would have had chez fivechimera. 'Nuff said.
Subscribe to:
Posts (Atom)