Hacker News new | past | comments | ask | show | jobs | submit login

I love Malte's take on what makes a senior engineer with regards to API design:

> The way I would talk about myself as a senior engineer is that I’d say “I know how I would solve the problem” and because I know how I would solve it I could also teach someone else to do it. And my theory is that the next level is that I can say about myself “I know how others would solve the problem”. Let’s make that a bit more concrete. You make that sentence: “I can anticipate how the API choices that I’m making, or the abstractions that I’m introducing into a project, how they impact how other people would solve a problem.”




I think "How confusing is this going to be to the one consuming this" (assuming you're not writing the front end as well) is the more important question to ask


This way of thinking was my main motivation behind Grip [0]. Use Readme-driven development and "play" with the API--whether it's in the form of a CLI, a library, or web API-- through usage examples.

I've found this to be a wonderful way to get into the heads of dev users before you approach them directly.

[0]: https://github.com/joeyespo/grip


And the one most rarely asking in my experience too


In my opinion, asking this question is the key benefit of test-driven development. You get to be the consumer, write down your expectations, and then work backwards from yours-as-consumer expectations.


I find the opposite tends to happen in Java. In the pursuit of testability, people make libraries much harder to use and understand.


Writing good tests is a skill that has to be developed, just like anything else.


It should be, but too often people write bad tests that test whst they wrote and not what it’s supposed to do.

Writing good tests is a skill and most developers don’t seem to be as skilled in it as they think.

The same concepts power much of Agile too though: XP & Scrum both complement this.


Isn't that basically what he said? :)


> I can anticipate how the API choices that I’m making, or the abstractions that I’m introducing into a project, how they impact how other people would solve a problem.

I feel like if you take "API" out of this sentence, this is really the benchmark for any senior developer.


yep.. a very refreshing descriptor of a senior level dev. It is also a very intuitive notion of the behavior of a senior level dev, even if not frequently articulated as such. I'm working with a fellow dev right now, where this notion of empathy is lacking.


Yes I loved it too, and it is super relevant. I've had my fair share of team swaps, both from backend to frontend, and it is always very interesting to see how engineers who have been on a specific team/role for a while tend to lack empathy and forget that other engineers who end up using their APIs don't share the same context and knowledge (or worst, sometimes it just comes from laziness).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: