Developer Interview with Jason Lengstorf
I was working at IBM on a product powered by a µ-services architecture. We were seeing _tons_ of duplicated code between µ-services, with a lot of it being confusing proxy wrappers around other APIs to guard against unexpected breaking changes in the upstream API. It was... gnarly.
Tell us about yourself. How did you get into GraphQL?Anchor
I was working at IBM on a product powered by a µ-services architecture. We were seeing tons of duplicated code between µ-services, with a lot of it being confusing proxy wrappers around other APIs to guard against unexpected breaking changes in the upstream API. It was... gnarly.
We did some internal discovery work to compare solutions, and GraphQL was looking really good as a way to solve this problem. After some pilot projects, we ended up creating GrAMPS, which gave teams the ability to publish their GraphQL endpoints as packages that we could aggregate and serve from a single API endpoint.
It made building UIs fun again, which is a big part of why it saw success and adoption inside IBM's teams.
How would you describe GraphQL to someone who has never heard of it? Or someone who only knows REST? (Metaphors are welcome!)Anchor
I don't really have a good one here — I usually end up drawing pictures or doing a quick walkthrough demo. ?
What was the main GraphQL selling point for you? Was there a specific problem you were trying to solve?Anchor
It created a cleaner separation between what front-end teams and back-end teams were building. There was a lot of ambiguity and duplicate effort before, and this meant that front-end developers were suddenly in a world of Node, NGINX, setting up proxies, and even trying to manage Kubernetes — that's not their job, and shouldn't be a requirement for building a UI.
Give us a short description of the project(s) you built using GraphQL. Was it a company/team/solo effort?Anchor
GrAMPS was a team effort. I described it above. Jumped the gun a bit. ?
How has your approach evolved since you first started using GraphQL?Anchor
Gatsby has a really unique way of using GraphQL that goes beyond the common uses I've seen. We're using it to query the filesystem, for example, and leveraging it for build-time work.
What was your first major challenge with GraphQL and how did you go about overcoming it?Anchor
Understanding resolvers is hard. The mental model for GraphQL is a bit convoluted at first, especially on the server side. Trying to understand how a query gets mapped to the resolvers, and further how the resolvers get to the data, is a little mind-bendy at first.
Knowing what you know now, what advice would you give others who are just getting into GraphQL?Anchor
Embrace the weirdness. It's a mental shift, which makes it uncomfortable at first. If you can push through to the aha moment — which happens faster than you might think — GraphQL opens up a lot of new and powerful possibilities.
Do you see any fascinating trends regarding GraphQL? (i.e. CMS switching to GraphQL)Anchor
There definitely seem to be a lot of companies working to release GraphQL APIs. It's also been interesting to see people using GraphQL for things that aren't immediately obvious, like managing design systems for development or — like I mentioned before — Gatsby querying the filesystem.
What's next? What project are you working on now or plan to start?Anchor
Gatsby themes and the underlying data customization work we're doing is really powerful, and I can't wait to see what people build with it!
Are there things you wish were possible or could be improved in the GraphQL specs?Anchor
It'd be nice if you could set number ranges in the SDLs (e.g. allow integer values between 1–5). I was really gung-ho about namespaces back when I was at IBM, but there are good arguments against that — ultimately it would be cool to see more support for composability between GraphQL schemas that aren't maintained by the same team. Kind of like a schema plugin system.