PTom Logo

Software & Me

Heads Up

If you're looking for my credentials and qualifications, head on on over to my resume. Otherwise, this page is about my personal history and relationship with software development as it came to be, and where I think it's going.


Origins

I have no idea just how much sheer voltage has passed through me over the years. I started tinkering with available bits and pieces of discarded appliances and gadgets when I was very young, worked up to more intricate and sensitive electronics over time, and went from there into willful reconfiguration and repair instead of dissection and diagnostics.

Parallel to that, and perhaps starting even earlier, I had access to a computer in the home at the leading edge of the Personal Computing revolution due to my father's affiliation with universities for his work. My computational tinkering was less invasive (to begin with), focusing on the software side. Eventually the two disciplines intersected and I started building Frankensteinian PCs out of scrap: caseless, wall-mounted mainboards, or hard drives bolted to the side, the works (and managed to only once accidentally discharge a CRT's capacitors through my person).

Did you know PnP abstraction around the ATAPI standard allowed for late-binding encapsulation of IDE interfaces? It's possible to hook an IDE hard-drive through sound cards, the ones which included their own 40-pin port for driving CD-ROMs just between the time where sound cards and CD's were commonly bundled together out of necessity (and usually as SCSI pairings) and convenience (CD-ROMs started growing up and being useful in their own right and made use of the more ubiquitous interface). The transfer speeds were terrible, and coaxing drive letter assignment took a little OS tormenting, but it was possible; one more place to wrangle scrounged storage into the system. Pardon my nostalgia.

Similar inventiveness allowed me to piece together functional machines on a budget out of spare parts left over from upgrades and hand-me-downs while servicing other people's machines, and to squeeze every ounce of utility from the resulting Millennium-Falcon-esque boxes (percussive maintenance and all). Software was not exempt from its own variant of invasive and frequently unconventional adaptation, and on the way to making these tortured circuit heaps useful I learned a thing or two beyond my penny-ante tricks of ASCII animation, undeserved high-score domination (my poor siblings!), and access manipulation; enough to begin shifting my interest progressively deeper into the programming side (which was also cheaper).

The Web

Moving from BBS's over a 2400 baud connection to a PPP account over a 2400 baud connection was amazing: the limitations of a single board's resources vanished, congested modem banks and endless redials trying to get into them evaporated, replaced with a single connection over which countless destinations could be reached. 192.168.89.61 was a favorite of mine, the telnet gateway to NASA, correspondence with whom netted me a nice stack of maps, charts, books, and glossy probe images from interplanetary surveys. Telnet, along with gopher, archie, and FTP, were my windows to an exploding world.

As typically happens, something changed. I was introduced to NCSA Mosaic, a "browser" application promising to make information navigation more intuitive and powerful, and putting a higher emphasis on graphical interface than was otherwise available (well, outside of RIP vector exchanges). I thought the whole thing inane: having to acquire this separate helper application to render and read documents? New image formats, and rigid markup language instead of communicating directly with applications' IO? Having to support different operating systems, to boot! Not only was Mac vs PC unresolved, but OS/2 and Amiga were still in the running for consumer desktops, and the fragmentation was sure to destabilize efforts at standardization. Oh, and that prefix! "double-u-double-u-double-u", for the cutesy "World Wide Web." Doomed to failure, said I.

I don't recall exactly what changed, but I think it started when I cracked open some web pages and thought (with a dismissive noise), "I could do that." Most of the examples weren't even very good, either syntactically or aesthetically (inside or out). The web was ugly, but the potential and tools were there. I started tinkering, and applied some very rudimentary design elements to great effect and high praise. My online world got much bigger very quickly, soon incorporating CGI (more recognizable as Common Gateway Interface than Computer Graphic Images at the time). New languages, new tools, new opportunities spiraled virtuously and away I went.

Growing Up

I've slung code in many different environments, and continue to add new ones even now. I did servers, terminals, desktops, even mobile back when it was called "portable" or "embedded", but the web is where my coding abilities and discipline really grew up - it was there that I first connected my programming with a less technologically literate audience in volume, and to purposes other than academics and idle fascination. Meeting the new challenges this exposure represented, and with such a dynamic feedback loop to my customers, the reasons behind the code matured rapidly and the bar for success raised equally quickly (and became oddly squishy: vague, elastic, and frequently in motion). Funding my food habits was one thing, but being able to hit these targets also meant the much higher stakes of furthering my exposure to more new and interesting problems. Drive plus curiosity is a potent mixture.

My spheres of influence and concern expanded, as did my peer groups and responsibilities. I learned much from good mentors, learned to mentor others, and continued to liaise with my business and non-technical customers and counterparts. I honed the programming side of my work to the point where understanding the deconstruction of problems into architecture and code ceased to be the limiting factor: instead it was processes, relationships, and whether the right problems were being considered in the first place. I was a crack shot with a keyboard, but the rest of the logistical train needed help identifying targets and terrain, and marshaling its specialists. I moved into management, learned and polished the people and process sides of those sets of equations, then into senior managment, then into strategy and executive leadership roles.

Enough of the hard facts and horn-tooting are in my resume, which is worth a read (at least, I think it is) to see where some of these threads play out. These days software's still my bread and butter, but is focusing a lot more on long term analysis and vision, and on creating and influencing culture as a dominant source of effective teams and sustainable workplaces. There's no succinct carrier for the thought which doesn't sound buzzwordy, but I'll try: how people feel about each other, where they work, and why they work there, have more to do with figuring out team fit (and it really is all about teams these days - see How NASA Builds Teams, and Team Geek, etc.) and therefore productivity, quality, and the raw ability to express talent, than almost any other factor. Bad hires are disastrous, good hires poorly engaged are just as bad.

Learning to solve these challenges keeps me busy, even when the rest of strategy planning and keeping-the-lights-on operational stuff aren't clamoring alongside it. I'm still keeping the contents of the toolshed cleaned and sharp though, largely by combining programming as my force-multiplier of choice to neuroscience (via VR projects) and physics, and the occasional prank. I like my profession, and am immensely grateful for it and the (sometimes bumpy) road which brought me here.

What's Next?

Probably puttering around suitsville a while longer, maybe break through the C-level ceiling at some point. I'd like to finish writing my book on the subject, "The Pragmatic Divide: Effective Software Development in Business Environments", but out of the office I'm more occupied with family and with tinkering, and while said tinkering may involve software it's different enough from the management practices to be a break (whereas focusing and distilling those same practices into book form is... somewhat less relaxing). I might try a career change in another decade or so, especially if I get a solid enough footing in physics as a discipline; but really, who knows? And no matter what I do, I'll still be writing software - just different software for different reasons.