Clippings of 2019 Jul
Table of Contents
- Change Pro-Tips Change Management
- A different kind of new manager checklist: The 4 essential questions to ask yourself as a leader - Know Your Team - Blog Management
- Jeff Weinstein on Twitter: "A year in, here are the top 10 things I appreciate about Stripe and I’d suggest mimicking." Company Job Career
- Tyler Treat on Twitter: "Let's talk about code reviews (again). I usually encounter two camps when it comes to code reviews: those who think they are necessary and good and those who think they are an unneeded process that slows people down (or a less efficient alternative to pair programming). 1/" CodeReview
- Why extends is evil - JavaWorld OOP
- Domain-Oriented Observability Testing Mock Observability
- GOTO 2019 • Deliver Results, Not Just Releases: Control & Observability in CD • Dave Karow - YouTube Observability ContinuousDelivery DevOps
- Aim Small, Miss Small: Writing Correct Programs by Stuart Halloway – Deconstruct SoftwareEngineering
- How to Run a Post-Mortem (With Humans, Not Robots), Velocity 2013 Meeting Management PostMortem
- "Agile" is short feedback loops for everything getting done in your org. Agile Feedback
- One Technique to Being Awesome You Aren’t Using Enough: Questions - kate{mats} Management Question
- Pivot or Fail? – AVC Startup
Change Pro-Tips Change Management
Change Pro-Tip: Lining Up The Betters - GeePawHill.org -- Helping Geeks Produce
- The four ubiquitous “betters” are
- better according to my idea.
- better according to some company’s idea.
- better according to a team’s idea.
- better according to an individual’s idea.
- As a general rule, all four of these betters are different in the beginning.
- To align four "betters"
- For me, it starts at the bottom of the pile: with an individual human.
- Once we get past the individual, to a relationship or a team or a company, it’s even easier: those lists are usually gigantic, with many possible better “selves” implied.
- If I can find the overlap, it’s all over but the crying.
- when you give people a new experience that tickles their “better”, you have changed the world very successfully.
- The four ubiquitous “betters” are
Change Pro-Tip: What We Can’t Change - GeePawHill.org -- Helping Geeks Produce
- We can’t (purposefully) change what we don’t sense,
- We can’t (purposefully) change what we don’t talk about,
- We can’t (purposefully) change what we assume can’t be changed.
-
- Procedural, Given, Sweeping, Final
- Procedural
- her plan focuses most heavily on a kind of org-as-machine view
- Given
- her approach involves her giving us the system she has in mind
- Sweeping
- The changes will touch on every aspect of the org
- Final
- It will be the last change, because it's perfect there, there's no need to change
- Human, Taken, Local, Iterative
- Instead of a procedural focus, I propose a human one.
- Instead of giving the change, let's try taking it.
- Instead of sweeping change, let's try local change,
- instead of final change, let's iterate.
- Procedural, Given, Sweeping, Final
A different kind of new manager checklist: The 4 essential questions to ask yourself as a leader - Know Your Team - Blog Management
- How can I create an environment for people to do their best work?
- How can I create as much clarity and coherence about what needs to get done and why?
- How can I personally model the behavior I want to be true across my team?
- How can I see things for what they are, instead of what I want them to be?
Jeff Weinstein on Twitter: "A year in, here are the top 10 things I appreciate about Stripe and I’d suggest mimicking." Company Job Career
- Every company is a ~disaster. The question is,
- is their disaster actionable?
- do you want to action it?
Tyler Treat on Twitter: "Let's talk about code reviews (again). I usually encounter two camps when it comes to code reviews: those who think they are necessary and good and those who think they are an unneeded process that slows people down (or a less efficient alternative to pair programming). 1/" CodeReview
- code reviews, when taken seriously, are important to any team for a few reasons.
- Code quality
- level up teams in a way that scales by fostering a culture of continuous improvement.
- when done right, code reviews promote a culture which separates self from code.
- code reviews are critical for regulatory/compliance purposes.
- How to avoid rubber-stamping or people not engaging in code reviews? -> Build it into your org's promotion process!
- One tactic I've found to be effective is periodic group code reviews, especially for large/important things.
- code reviews are only effective if you pursue them with purpose.
- If you're just going through the motions, they merely become red tape for getting code merged.
- They aren't magic, nor is anything else.
- The only process that really matters is one of continuous improvement.
Why extends is evil - JavaWorld OOP
Improve your code by replacing concrete base classes with interfaces
Good designers write most of their code in terms of interfaces, not concrete base classes. This article describes why designers have such odd habits, and also introduces a few interface-based programming basics.
Domain-Oriented Observability Testing Mock Observability
This post not only explains how to add instrumentation to your application code in a domain-oriented way, but also gives great examples of how to write domain-oriented tests with mocks. More importantly, this way of structuring and testing can be applied to other areas out of instrumentation, too.
Domain Probe
class DiscountInstrumentation { constructor({logger,metrics,analytics}){ this.logger = logger; this.metrics = metrics; this.analytics = analytics; } applyingDiscountCode(discountCode){ this.logger.log(`attempting to apply discount code: ${discountCode}`); } discountCodeLookupFailed(discountCode,error){ this.logger.error('discount lookup failed',error); this.metrics.increment( 'discount-lookup-failure', {code:discountCode}); } discountCodeLookupSucceeded(discountCode){ this.metrics.increment( 'discount-lookup-success', {code:discountCode}); } discountApplied(discount,amountDiscounted){ this.logger.log(`Discount applied, of amount: ${amountDiscounted}`); this.analytics.track('Discount Code Applied',{ code:discount.code, discount:discount.amount, amountDiscounted:amountDiscounted }); } }
GOTO 2019 • Deliver Results, Not Just Releases: Control & Observability in CD • Dave Karow - YouTube Observability ContinuousDelivery DevOps
- It's not about the pipeline, it's about the payload
- Control of Exposure
- How do we decouple deploy from release, revert from rollback?
- Observability of Exposure
- Who have we released to so far? How is it going for them (and us)?
- Takeaways
- Decouple Deployment from Release
- Deploy is infra
- Build-In Observability
- Know what's rolling out, who is getting what, and why
- Align metrics to control plane to learn faster
- What two pieces of data make it possible to attribute system and user behavior changes to any deployment?
- unique_id
- timestamp of observation
- Going beyond MVP yields significant benefits
- Build for scale: solve for chaos
- Make it trustworthy: make it stick
- Design for diverse audiences: one source of truth
Aim Small, Miss Small: Writing Correct Programs by Stuart Halloway – Deconstruct SoftwareEngineering
- Aim
- Thought
- Plan
- Write it down
- Hammock Driven Development - Rich Hickey - YouTube
- Small
- Simplicity
- Generality
- Simple Made Easy - Rich Hickey
- Miss
- Evidence
- Use persistent data structures
- Log
- Git
- Small
- Scientific method
- Debugging with the Scientific Method - Stuart Halloway - YouTube
- Why Programs Fail: A Guide to Systematic Debugging: Andreas Zeller: 9780123745156: Amazon.com: Books
How to Run a Post-Mortem (With Humans, Not Robots), Velocity 2013 Meeting Management PostMortem
- What is a Post-Mortem?
- Something you do when your company has badly screwed up
- What To Do in the Post-Mortem Room
- Challenge: Get team out of moral mindset
- Fundamental Tool: Make 'Em Laugh
- Tips
- Share Your Personal "Bad Things"
- Mock Hindsight Bias To Its Face
- Relish Absurdities of Your System
- "Broadest Fixes" vs. "Root Causes"
- Corrective Actions / Remediations / Fixes
- Require Small Steps From Your Team
- "Automation" vs. "Tooling"
- "Automation"
- Humans Cause Your Problems
- "Tooling"
- Humans Solve Your Problems
- Read this
- How Complex Systems Fail - Richard Cooke
- Amazon.com: How the Mind Works eBook: Steven Pinker: Kindle Store
- Thinking, Fast and Slow: Daniel Kahneman: 9780374533557: Amazon.com
- The Field Guide to Understanding 'Human Error': 9781472439055: Medicine & Health Science Books @ Amazon.com
- Complications: A Surgeon's Notes on an Imperfect Science: 8601417061220: Medicine & Health Science Books @ Amazon.com
"Agile" is short feedback loops for everything getting done in your org. Agile Feedback
This is what I always tell anyone who'll listen. "Agile" is short feedback loops for everything getting done in your org. https://t.co/mw8RuIDV3X
— Steve Purcell 🇪🇺 (@sanityinc) July 16, 2019
One Technique to Being Awesome You Aren’t Using Enough: Questions - kate{mats} Management Question
- Your real understanding at work can come from asking good questions.
- Dealing With Challenges
- Working with a Team
- Making the Most of a Mentor
- Teaching Your Team
- Asking Good Questions
- Instead of just asking the first question that comes to mind next time, remember: phrasing, timing, and consideration can have a huge impact on the response you receive.
- Asking questions is a way of letting people know that their opinion is important to you
- You can categorize your questions for best results by breaking them down into four distinct types
- #1 Questions that give you perspective
- These questions help you clarify, and can keep brainstorming sessions and meetings moving forward
- #2 Questions that help you evaluate
- Evaluation questions get you concrete answers and narrow your focus to one goal.
- “Which of these features will be the fastest to produce?”
- “Why were your traffic numbers down last month?”
- “What members of your team have the most experience with UX design?”
- #3 Questions that lead to action
- This kind of question is your lead-in to making changes, motivating teams, and setting future directions.
- “How can we ship this product in [X] weeks without bringing on new staff?”
- “When will the team complete this new feature?”
- “What strategies will you implement to ensure your team is aligned?”
- #4 Questions that lead to knowledge
- Gathering information about current projects, past projects, goals, and technical processes
- “Can you explain to me how [xyz] process works?”
- “What results did we achieve with the last email campaign?”
- “What is our customer profile?”
Pivot or Fail? – AVC Startup
- It may be better to let the failing startup fail and start over again from scratch.
- If that idea fails and you pivot into a new idea, you will take all of those investors, team members, and dilution with it, whether or not they are excited about it.
- The harder path is often the best path. And the easy path is often the harder one.