Hacker News new | ask | show | jobs
by Fradow 2654 days ago
Been there, done that. Little story time: I co-founded a startup (as technical co-founder obviously) straight out of education, and never really had any mentor. 6 years later, I've certainly done lots of mistake, but no critical one, and I can count on one hand the mistakes that had important consequences.

Now, here are what I think is the most important: experience, planning and critical thinking. Experience you gain overtime, there is no shortcut. But you can plan from the beginning, and think hard before you commit.

You're already asking yourself the questions. The internet is vast, there are lots of answers. And guess what, someone's best practices are someone's else bad practices. It's about your company trade-offs.

Since you are in a startup, you'll probably need to do lots of modifications on your business logic. That means for you, API development best practices includes planning for the future, so probably having versionned API. Is your business logic mostly about CRUD? Read up about REST. Or mostly about RPC? Might want to read up about SOAP.

You also need to know what's the time expectency of your code. Is it just a POC? Go ahead with the fastest, dirtiest way to do it. Is it a MVP that is going to change quite a bit? A bit cleaner, but you can get away with a few shortcuts. Or are you building a well-defined product that isn't going to change much? Document, test, and do it as clean as you can. You are still going to need to refactor a bit every year or two anyway, when you get more experience.

Keep at it long enough, while thinking about better ways to do things every day, and eventually you'll learn all you wanted to know. Don't worry, you'll still have a ton to learn, given the opportunity.

1 comments

> Or mostly about RPC? Might want to read up about SOAP.

Why would one use SOAP over grpc in a new stack? Understandable in an old stack though.

Rest is gold.

'Those who do not learn history are doomed to repeat it.'

Also, we don’t always get to choose the technologies of 3rd party providers with whom we are required to interface.