Sonoma Autopsy

My first serious memory failure was in Ft Lauderdale, 2008. Now I often write up events shortly after they occur.

The Sonoma autopsy.

  • no testing
  • no repeatable process
  • no strategic design
  • security on an external AD attribute, an issue for testing and non-AD clients
  • can't create a dev environment.
  • REST-to-REST updating instead of async queues

The test and prod environments were hand-written, so keeping them synced is a problem. No ability to create my own development tier without hours of guesswork. So everyone shared one test tier. YaY!

A hundred security profiles. Instead of one general profile, every. single. piece. has its own special profile. Many are repeats, probably unused but who can tell?

Disjointed security. Sometimes a token, sometimes a password, sometimes stored here, sometimes there. An attempt to standardize it but that almost makes it worse, like a car that starts 95% of the time instead of 50%.

My favorite part was how the server build failure was my laptop's fault.

"The problem is your node.js configuration!".

Why the hell is MY LAPTOP involved in a SERVER build? That happened three or four times before GingerBread Man did a real fix.

I tried to keep a low profile because I got a passive-aggressive attitude from the start... questions stonewalled, or answered incorrectly.

Complex redirection security scripts which rely on my local AWS profile being set to "JSON". Blindsided again for two days.

The CQRS pattern is wrong, it's a performance pattern, not a differentiation pattern. A commercial product with ZERO design to support a commercial product.

Generating a new REST API just to feed GraphQL, negating GraphQL's value and doubling complexity.

Long, fragile if statements chaining two dozen resolvers together instead of simple discrete resolvers.

The existing TypeORM project wouldn't run on the native AppSync data channel and I finally figured out AppSync only accepts an AWS-specific ORM (poor behavior for "standard"). But Gingerbread Man interpreted this as "incompetence" because my hair is gray and his experience is limited.

Cowboy code that will have to be rewritten. Except it won't be. By the 2rd or 3th customer, it will be unmaintainable, quietly absorbed into the parent company's infrastructure, branded a success and mothballed into legacy code.

Hell, it's already unmaintainable.

Developing on Apollo but deploying to AppSync will probably surface compability issues at some point.

I rarely wish ill on other people, I've learned they'll often create their own doom with no help from me. Like Staples and Nike, it was a relief to get away from the bumbling chaos and blindsiding. Overall, the Sonoma experience reminded me of the Cisco experience.

In contrast, in 2018 at Sila I standardized our laptops on Lenovo with Ubuntu to match the AWS host deployment and minimize esoteric bugs. I created Cloudformation scripts for a fully repeatable process and each developer could easily create independent environments. I standardized JSON schemas, created a test suite and merged it into our build and deploy process. I laid out a strategic design, delegated assigned tasks into separate domains to minimize conflict, tied them together by a SINGLE well-defined interface (a message definition and queue for each flow to minimize dependencies).

That's why Sila survived my departure and is still running in spite of idiotic diversity hiring of attractive but minimally competent young women. And of course, the managers had no grasp of what I actually did.