query Comments {
user {
posts {
comments {
message
}
}
}
}
But later on, you decide you want to allow a user to load their comment history directly: query Comments {
user {
comments {
message
}
}
}
In the first example, an equivalent REST API might load comments via something like posts.preload(:comments), and when the second query is built you'd use user.preload(:comments). But the way to solve this problem in Graph is batch resolution - get a list of comment IDs you want to load, then call Comment.where(id: comments_ids). Your comment loading is now context agnostic. 1. How much control do I have over the clients
2. Are the primary consumers native mobile applications
3. Is flexibility important
4. Will API documentation be required
It's usually people. Sometimes it's opportunity. But it's usually people.
I've ended up with a lot of thoughts on the topic, but I'm not sure how best to convey them, so I'm doing to rant in dot points:
- People rarely leave because of technical decisions. Most people are appeased when you can explain the rationale, even if they disagree
- Good leaders make or break an organisation. They inspire people, they give them a cause to rally behind. A lack of good leaders will kill culture within a year
- Good leaders own problems and will find a way to solve them, they won't accept the status quo
- Bad leaders will tell you why a problem is not their fault, and do nothing to fix it
- Good leaders need good leaders - it starts at the top. A good CEO will change your worldview
- Good leaders-of-leaders know everything is kind of fucked, and appreciate leaders who are actually trying to improve things, without expecting they're going to get everything right
- Leaders need to really believe in their cause. People know when you're faking it
- Culture is not a by-product. It's the product. You work hard to create a good culture, and it can disappear very quickly. Building good culture is how you build good teams. You can't work around a bad culture
- Most of being a good leader is just turning up. Be there for your people, listen to them, try to make their lives better. Make time for them. Show them you care
- Regardless of all of this, people will leave. Sometimes because the company isn't a good fit, sometimes because they're at a different point in their career. Attrition is healthy, you just need to keep a pulse on whether it's happening for unhealthy reasons
In summary: yes, it's pretty much always people. Building software is easy. Building a healthy work environment is hard. Most people focus on the easy problem.