🤮
some of my notes from the Art of Hiring event earlier today:
@rabois
- don't hire anyone over the age of 30
- recruiters are probably ineffective but still important b/c they drive hiring momentum
- it takes 3-30 mins to evaluate someone (probably 3 though)
- undiscovered talent is mispriced. interns can be MVPs on teams
- people who positively manipulate the world around them are great hires
@bchesky
- goal is to have smallest team possible (i.e. be the Navy SEALs... not the Navy)
- be careful of B players. The old saying "A players hire A players B players hire C players" should go like "A players hire A players....and B players hire LOTS of C players b/c they are so bad"
- be in the details. so much so that people complain. and then be in even more details.
- when hiring someone, they are guilty until proven innocent. someone should be selling their case on why to join.
@eglyman
- looks for "aliens" and/or exceptional candidates with little competition
- ranks candidates "strong no, no, yes, strong yes". won't hire people who have all yeses.
- recommended to read great books on this like: Wooden on Leadership, Insanely Simple: The Obsession That Drives Apple's Success, High Output Management, and The Score Takes Care of Itself
@mike_sheb
- be a broken record. constantly repeat why you are here (mission, goals, etc.)
- sweat the small stuff
- ask candidates if they are in the phase of their lives where they can work like an olympian to help screen people out.
ylorph retweeted
Starting with our 24.10 LTS release, we’re transitioning to a new licensing model: Event Store License v2
This update allows us to continue to provide free & full access to the core product and to invest in continuously improving EventStoreDB
Learn more: bit.ly/3ZG1CVa
Have an Idea.
Share it, let people run with it , try it out .
If it turns out
- a good one praise them
- not a good one, reclaim it , take the blame.
X:
How come you do not guarantee any data loss when the data is duplicated accros datacenter with an ocean in between ?
Me: because of the speed of light
The tool is _never_ the solution or the problem
The _way we use_ the tool is solving problems or causing problems
In a lot of systems using relational DB , I see a lot of business rules hidden as transactions spanning multiple tables .
Random Thoughts : a picture that explains how #EventStoreDB is typically used in applications
( there are variations of course)
github.com/ylorph/RandomThou…
and some text to go with it : linkedin.com/feed/update/urn…
ylorph retweeted
Event Sourcing and Message Streaming are NOT the same things. Kafka is NOT suitable for Event Sourcing. Kafka is suitable for Message Streaming.
There are important reasons why these two different things require *different storage mechanics*. I'm going to simplify this by naming the two different kinds of storage:
1. Event Sourcing requires a *database* to serve as an *event journal*. Events stored for Event Sourcing must be written in a way that enables future reads to quickly assemble small(er) streams of events that belong to the single Aggregate that originally emitted them. This requires a random access index.
2. Message Streaming requires storage that is essentially a *flat file* that logs message elements. The message elements are individually written in sequential order and later read in sequential order. This requires one first-to-last sequential index.
Based on these two fundamental points, I now break this down further into details:
3. Now, beyond Aggregate sub-streams, all events of an Event Sourced domain model are generally consumed as a totally-ordered stream of events in the *time* order that they were originally emitted by Aggregates. To do so *also* requires a sequential index. Thus, an Event Sourcing *database* must support *two* kinds of indexes.
4. Kafka is *NOT* suitable for an Event Sourcing *database*. What is the name of the concept under which *messages* are *logged*? It's a *topic*. Kafka is a message log that can have many topics. Kafka has *one single index*, which is the sequence number of the *totally ordered stream of messages*.
5. Therefore, after writing messages into a Kafka topic, they cannot be read randomly because the random access index doesn’t exist. Kafka was not designed for this.
6. With Kafka, if you need to read the small(er) streams of events originally emitted by single Aggregate instances, you would have to scan an entire topic from the first message to the last message to ensure you didn’t miss reading all events in one of the individual Aggregate streams. This would cause O(N) read time--reads become slower as every new message is written to the topic. You have 1 billion total events and you need to read any 5 of those as an individual Aggregate event stream? "Ain't-gonna-happen."
For the really stubborn people who think they can outsmart physics, I'll add a few more points:
7. "I know, I know! I'll use a different topic for each Aggregate instance!" That's okay if Kafka was designed to support millions to billions to trillions of topics under a single broker. It wasn't.
8. "I know, I know! I'll use a K-Table to maintain snapshots of each Aggregate instance so I can read them quickly!" Reconstituting the state of an Aggregate must take priority over consuming a totally ordered stream of all events. If you try this, your K-Table snapshots will be only eventually consistent with the *real current Aggregate state*--the Aggregate can't reliably read it's own state.
The End.
Random thought: In this day and age :
We need to learn critical thinking.
🤔🤔🤔🤔🤔🤔🤔🤔
It has always been the case
I always loved @conways_law 's take on Brook's "Second System Effect.”
( source : melconway.com/keynote/Presen… p14 & 15)
It takes four generations of experience to learn to build large systems well.
These generations are:
0. Plan to throw one away; you will anyway.
3. Fourth try: A wiser team, having had all this experience, is now ready to build good systems.
source: melconway.com/keynote/Presen… ( page 14 & 15)







